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';
|
2024-02-03 22:47:57 -08:00
|
|
|
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;
|
2024-02-03 22:47:57 -08:00
|
|
|
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]);
|
|
|
|
|
};
|