RocketChat/Rocket.Chat

View on GitHub
packages/fuselage-ui-kit/src/contexts/AppIdContext.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { ReactNode } from 'react';
import { createContext, useContext, useDebugValue } from 'react';

import { UiKitContext } from './UiKitContext';

const AppIdContext = createContext<string | undefined>(undefined);

type AppIdProviderProps = {
  children: ReactNode;
  appId?: string;
};

export const AppIdProvider = ({ children, appId }: AppIdProviderProps) => {
  if (!appId) {
    return <>{children}</>;
  }

  return (
    <AppIdContext.Provider value={appId}>{children}</AppIdContext.Provider>
  );
};

export const useAppId = () => {
  const outerAppId = useContext(UiKitContext).appId ?? 'core';
  const appId = useContext(AppIdContext) ?? outerAppId;

  useDebugValue(appId);

  return appId;
};