feishin/src/renderer/hooks/use-server-version.ts

37 lines
1.2 KiB
TypeScript
Raw Normal View History

2024-02-01 08:17:31 -08:00
import { useEffect } from 'react';
import { useAuthStoreActions, useCurrentServer } from '/@/renderer/store';
import { useQuery } from '@tanstack/react-query';
import { queryKeys } from '/@/renderer/api/query-keys';
import { controller } from '/@/renderer/api/controller';
import isEqual from 'lodash/isEqual';
2024-02-01 08:17:31 -08:00
export const useServerVersion = () => {
const { updateServer } = useAuthStoreActions();
const server = useCurrentServer();
const serverInfo = useQuery({
enabled: !!server,
queryFn: async ({ signal }) => {
return controller.getServerInfo({
apiClientProps: {
server,
signal,
},
});
},
queryKey: queryKeys.server.root(server?.id),
});
useEffect(() => {
if (server && server.id === serverInfo.data?.id) {
const { version, features } = serverInfo.data;
if (version !== server.version || !isEqual(features, server.features)) {
2024-02-01 08:17:31 -08:00
updateServer(server.id, {
features,
version,
});
}
}
}, [server, serverInfo.data, updateServer]);
};