RocketChat/Rocket.Chat

View on GitHub
packages/ui-contexts/src/hooks/useRouteParameter.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { useCallback, useContext } from 'react';
import { useSyncExternalStore } from 'use-sync-external-store/shim';

import { RouterContext } from '../RouterContext';

export const useRouteParameter = (name: string): string | undefined => {
    const router = useContext(RouterContext);

    const getSnapshot = useCallback(() => {
        return router.getRouteParameters()[name];
    }, [router, name]);

    return useSyncExternalStore(router.subscribeToRouteChange, getSnapshot);
};