flags-hooks.ts•1.01 kB
import { useSuspenseQuery } from '@tanstack/react-query';
import { ApFlagId } from '@activepieces/shared';
import { flagsApi, FlagsMap } from '../lib/flags-api';
type WebsiteBrand = {
websiteName: string;
logos: {
fullLogoUrl: string;
favIconUrl: string;
logoIconUrl: string;
};
colors: {
primary: {
default: string;
dark: string;
light: string;
};
};
};
const queryKey = ['flags'];
export const flagsHooks = {
queryKey,
useFlags: () => {
return useSuspenseQuery<FlagsMap, Error>({
queryKey,
queryFn: flagsApi.getAll,
staleTime: Infinity,
});
},
useWebsiteBranding: () => {
const { data: theme } = flagsHooks.useFlag<WebsiteBrand>(ApFlagId.THEME);
return theme!;
},
useFlag: <T>(flagId: ApFlagId) => {
const data = useSuspenseQuery<FlagsMap, Error>({
queryKey: ['flags'],
queryFn: flagsApi.getAll,
staleTime: Infinity,
}).data?.[flagId] as T | null;
return {
data,
};
},
};