Skip to content
Snippets Groups Projects
Unverified Commit aa28bdfe authored by Tasso Evangelista's avatar Tasso Evangelista Committed by GitHub
Browse files

refactor(perf): Use infinite stale time on `useAppActionButtons` (#30085)

parent 84ec7419
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,7 @@ import type { IUIActionButton, UIActionButtonContext } from '@rocket.chat/apps-e
import { useEndpoint, useStream, useUserId } from '@rocket.chat/ui-contexts';
import type { UseQueryResult } from '@tanstack/react-query';
import { useQuery, useQueryClient } from '@tanstack/react-query';
import { useEffect, useRef, useMemo } from 'react';
import { useEffect, useMemo } from 'react';
import type { MessageActionConfig, MessageActionContext } from '../../app/ui-utils/client/lib/MessageAction';
import type { MessageBoxAction } from '../../app/ui-utils/client/lib/messageBox';
......@@ -14,33 +14,30 @@ import { useUiKitActionManager } from './useUiKitActionManager';
const getIdForActionButton = ({ appId, actionId }: IUIActionButton): string => `${appId}/${actionId}`;
export const useAppActionButtons = (context?: `${UIActionButtonContext}`) => {
const stream = useRef<() => void>();
const queryClient = useQueryClient();
const apps = useStream('apps');
const uid = useUserId();
useEffect(() => () => stream.current?.(), []);
useQuery(['apps', 'stream', 'actionButtons', uid], () => {
if (!uid) {
return [];
}
stream.current?.();
stream.current = apps('actions/changed', () => {
queryClient.invalidateQueries(['apps', 'actionButtons']);
});
return [];
});
const getActionButtons = useEndpoint('GET', '/apps/actionButtons');
const result = useQuery(['apps', 'actionButtons'], () => getActionButtons(), {
...(context && {
select: (data) => data.filter((button) => button.context === context),
}),
staleTime: Infinity,
});
useEffect(() => {
if (!uid) {
return;
}
return apps('actions/changed', () => {
queryClient.invalidateQueries(['apps', 'actionButtons']);
});
}, [uid, queryClient, apps]);
return result;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment