feat: reduce server requests

This commit is contained in:
Nevo David 2025-08-02 21:57:21 +07:00
parent 94064dfa78
commit 69082319a0
14 changed files with 129 additions and 11 deletions

View File

@ -228,7 +228,14 @@ export const AddOrEditWebhook: FC<{
},
[]
);
const { data: dataList, isLoading } = useSWR('integrations', integration);
const { data: dataList, isLoading } = useSWR('integrations', integration, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const callBack = useCallback(
async (values: any) => {
await fetch(data?.id ? `/autopost/${data?.id}` : '/autopost', {

View File

@ -176,8 +176,22 @@ export const CalendarWeekProvider: FC<{
return (await fetch('/sets')).json();
}, []);
const { data: sets, mutate } = useSWR('sets', setList);
const { data: sign } = useSWR('default-sign', defaultSign);
const { data: sets, mutate } = useSWR('sets', setList, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const { data: sign } = useSWR('default-sign', defaultSign, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const setFiltersWrapper = useCallback(
(filters: {

View File

@ -12,6 +12,12 @@ export const useIntegrationList = () => {
}, []);
return useSWR('/integrations/list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
};

View File

@ -32,7 +32,14 @@ export const TagsComponent: FC<{
name: string;
color: string;
}[];
}>('tags', loadTags);
}>('tags', loadTags, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const onDelete = useCallback(
(tagIndex: number) => {
const modify = tagValue.filter((_, i) => i !== tagIndex);

View File

@ -22,6 +22,12 @@ export const ContinueProvider: FC = () => {
return list;
}, []);
const { data: integrations } = useSWR('/integrations/list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
const closeModal = useCallback(() => {

View File

@ -160,6 +160,12 @@ export const ConnectChannels: FC = () => {
}, []);
const { data: integrations, mutate } = useSWR('/integrations/list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
@ -223,7 +229,10 @@ export const ConnectChannels: FC = () => {
<div className="absolute w-full h-full top-0 start-0 z-[400]">
<div className="absolute w-full h-full bg-primary/80 start-0 top-0 z-[200] p-[50px] flex justify-center">
<div className="w-[400px]">
<ModalWrapperComponent title="" customClose={() => setShowCustom(undefined)}>
<ModalWrapperComponent
title=""
customClose={() => setShowCustom(undefined)}
>
{showCustom}
</ModalWrapperComponent>
</div>

View File

@ -51,6 +51,12 @@ export const PlatformAnalytics = () => {
return int.filter((f: any) => allowedIntegrations.includes(f.identifier));
}, []);
const { data, isLoading } = useSWR('analytics-list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
const sortedIntegrations = useMemo(() => {

View File

@ -34,9 +34,21 @@ export const Plugs = () => {
load2,
{
fallbackData: [],
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
}
);
const { data, isLoading } = useSWR('analytics-list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});

View File

@ -68,6 +68,12 @@ export const Sets: FC = () => {
}, []);
const { isLoading, data: integrations } = useSWR('/integrations/list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
@ -75,7 +81,14 @@ export const Sets: FC = () => {
return (await fetch('/sets')).json();
}, []);
const { data, mutate } = useSWR('sets', list);
const { data, mutate } = useSWR('sets', list, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const addSet = useCallback(
(params?: { id?: string; name?: string; content?: string }) => () => {

View File

@ -27,6 +27,12 @@ export const StandaloneModal: FC = () => {
data: integrations,
mutate,
} = useSWR('/integrations/list', load, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
fallbackData: [],
});
const { isLoading: isLoading2, data } = useSWR('/posts/find-slot', loadDate, {

View File

@ -102,7 +102,14 @@ export const ThirdPartyComponent = () => {
return (await fetch('/third-party')).json();
}, []);
const { data, isLoading, mutate } = useSWR('third-party', integrations);
const { data, isLoading, mutate } = useSWR('third-party', integrations, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const [collapseMenu, setCollapseMenu] = useCookie('collapseMenu', '0');
return (
@ -141,7 +148,11 @@ export const ThirdPartyComponent = () => {
</div>
<div className="flex flex-col gap-[10px]">
<div className="flex-1 flex flex-col gap-[14px]">
<div className={clsx('gap-[16px] flex flex-col relative justify-center group/profile hover:bg-boxHover rounded-e-[8px]')}>
<div
className={clsx(
'gap-[16px] flex flex-col relative justify-center group/profile hover:bg-boxHover rounded-e-[8px]'
)}
>
{!isLoading && !data?.length ? (
<div>No Integrations Yet</div>
) : (

View File

@ -103,7 +103,14 @@ export const ThirdPartyListComponent: FC<{ reload: () => void }> = (props) => {
return (await fetch('/third-party/list')).json();
}, []);
const { data } = useSWR('third-party-list', integrationsList);
const { data } = useSWR('third-party-list', integrationsList, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const addApiKey = useCallback(
(title: string, identifier: string) => () => {

View File

@ -205,7 +205,14 @@ export const ThirdPartyMedia: FC<{
);
}, []);
const { data, isLoading, mutate } = useSWR('third-party', thirdParties);
const { data, isLoading, mutate } = useSWR('third-party', thirdParties, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
if (isLoading || !data.length) {
return null;

View File

@ -164,7 +164,14 @@ export const AddOrEditWebhook: FC<{
},
[]
);
const { data: dataList, isLoading } = useSWR('integrations', integration);
const { data: dataList, isLoading } = useSWR('integrations', integration, {
revalidateOnFocus: false,
revalidateOnReconnect: false,
revalidateIfStale: false,
revalidateOnMount: true,
refreshWhenHidden: false,
refreshWhenOffline: false,
});
const callBack = useCallback(
async (values: any) => {
await fetch('/webhooks', {