diff --git a/src/composables/query/index.ts b/src/composables/query/index.ts index 84f547f..0ae6bd7 100644 --- a/src/composables/query/index.ts +++ b/src/composables/query/index.ts @@ -1,4 +1,5 @@ export * from './use-line-alarms-query'; export * from './use-line-devices-query'; export * from './use-line-stations-query'; +export * from './use-verify-user-query'; export * from './use-version-check-query'; diff --git a/src/composables/query/use-verify-user-query.ts b/src/composables/query/use-verify-user-query.ts new file mode 100644 index 0000000..f5a9a7a --- /dev/null +++ b/src/composables/query/use-verify-user-query.ts @@ -0,0 +1,28 @@ +import { verifyApi } from '@/apis'; +import { VERIFY_USER_QUERY_KEY } from '@/constants'; +import { useSettingStore } from '@/stores'; +import { useQuery, useQueryClient } from '@tanstack/vue-query'; +import { storeToRefs } from 'pinia'; +import { computed, watch } from 'vue'; + +export const useVerifyUserQuery = () => { + const queryClient = useQueryClient(); + const settingStore = useSettingStore(); + const { offlineDev } = storeToRefs(settingStore); + + watch(offlineDev, (offline) => { + if (offline) { + queryClient.cancelQueries({ queryKey: [VERIFY_USER_QUERY_KEY] }); + } + }); + + return useQuery({ + queryKey: [VERIFY_USER_QUERY_KEY], + enabled: computed(() => !offlineDev.value), + refetchInterval: 10 * 1000, + queryFn: async ({ signal }) => { + await verifyApi({ signal }); + return null; + }, + }); +}; diff --git a/src/composables/query/use-version-check-query.ts b/src/composables/query/use-version-check-query.ts index e952873..9ddccb5 100644 --- a/src/composables/query/use-version-check-query.ts +++ b/src/composables/query/use-version-check-query.ts @@ -1,39 +1,24 @@ -import { verifyApi, type VersionInfo } from '@/apis'; +import { type VersionInfo } from '@/apis'; import { VERSION_CHECK_QUERY_KEY } from '@/constants'; -import { useSettingStore, useUserStore } from '@/stores'; -import { useQuery, useQueryClient } from '@tanstack/vue-query'; +import { useQuery } from '@tanstack/vue-query'; import axios from 'axios'; import { useThemeVars } from 'naive-ui'; -import { storeToRefs } from 'pinia'; -import { computed, h, ref, watch } from 'vue'; +import { h, ref, watch } from 'vue'; export const useVersionCheckQuery = () => { const localVersionInfo = ref(); const showDialog = ref(false); const themeVars = useThemeVars(); - const queryClient = useQueryClient(); - const userStore = useUserStore(); - const { userLoginResult } = storeToRefs(userStore); - const settingStore = useSettingStore(); - const { offlineDev } = storeToRefs(settingStore); const { data: remoteVersionInfo, dataUpdatedAt } = useQuery({ queryKey: [VERSION_CHECK_QUERY_KEY], - enabled: computed(() => !offlineDev.value), refetchInterval: 10 * 1000, queryFn: async ({ signal }) => { - if (!!userLoginResult.value?.token) await verifyApi({ signal }); const { data } = await axios.get(`/manifest.json?t=${Date.now()}`, { signal }); return data; }, }); - watch(offlineDev, (offline) => { - if (offline) { - queryClient.cancelQueries({ queryKey: [VERSION_CHECK_QUERY_KEY] }); - } - }); - watch(dataUpdatedAt, () => { const newVersionInfo = remoteVersionInfo.value; if (!newVersionInfo) return; diff --git a/src/constants/query.ts b/src/constants/query.ts index 401b533..a24597d 100644 --- a/src/constants/query.ts +++ b/src/constants/query.ts @@ -1,4 +1,5 @@ export const LINE_ALARMS_QUERY_KEY = 'line-alarms'; export const LINE_DEVICES_QUERY_KEY = 'line-devices'; export const LINE_STATIONS_QUERY_KEY = 'line-stations'; +export const VERIFY_USER_QUERY_KEY = 'verify-user'; export const VERSION_CHECK_QUERY_KEY = 'version-check'; diff --git a/src/layouts/app-layout.vue b/src/layouts/app-layout.vue index 29d2adf..4541d97 100644 --- a/src/layouts/app-layout.vue +++ b/src/layouts/app-layout.vue @@ -1,6 +1,6 @@