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

41 lines
1.3 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?.id) {
return;
}
if (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,
});
}
}
}, [serverInfo?.data, server?.features, server?.id, server?.version, updateServer]);
2024-02-01 08:17:31 -08:00
};