diff --git a/frontend/src/hooks/firebase/useGetToken.ts b/frontend/src/hooks/firebase/useGetToken.ts deleted file mode 100644 index d9221669..00000000 --- a/frontend/src/hooks/firebase/useGetToken.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { useSuspenseQuery } from '@tanstack/react-query'; -import FCMMessaging from 'models/FCMMessaging'; - -const useGetToken = () => - useSuspenseQuery({ - queryKey: ['getFCMToken'], - queryFn: FCMMessaging.getCurrentToken, - refetchOnWindowFocus: false, - refetchOnMount: false, - refetchOnReconnect: false, - }); - -export default useGetToken; diff --git a/frontend/src/hooks/queries/auth/useWebPush.ts b/frontend/src/hooks/queries/auth/useWebPush.ts index 42fcc888..aa59e217 100644 --- a/frontend/src/hooks/queries/auth/useWebPush.ts +++ b/frontend/src/hooks/queries/auth/useWebPush.ts @@ -1,6 +1,5 @@ import { useMutation, useQueryClient, useSuspenseQuery } from '@tanstack/react-query'; import useAddToast from 'hooks/@common/useAddToast'; -import useGetToken from 'hooks/firebase/useGetToken'; import FCMMessaging from 'models/FCMMessaging'; import StatusError from 'models/statusError'; import WebPushSubscribeAPI, { SUBSCRIBE_URL } from 'apis/webPush'; @@ -15,15 +14,14 @@ const useWebPush = () => { const addToast = useAddToast(); const queryClient = useQueryClient(); - const { data: token } = useGetToken(); - - // token이 null인 경우는 알림이 허용되지 않은 경우 - if (token === null) { - throw new Error('알림을 허용하지 않았습니다'); - } - const subscribe = useMutation({ mutationFn: async () => { + const token = await FCMMessaging.getCurrentToken(); + + if (token === null) { + throw new Error('알림을 허용하지 않았습니다'); + } + const response = await WebPushSubscribeAPI.subscribe(token); throwOnInvalidStatus(response); @@ -65,19 +63,16 @@ const useWebPush = () => { return null; }, onMutate: async () => { - await queryClient.cancelQueries({ queryKey: ['getFCMToken'] }); await queryClient.cancelQueries({ queryKey: [SUBSCRIBE_URL] }); - const prevData = queryClient.getQueryState(['getFCMToken']); const prevSubscribe = queryClient.getQueryState([SUBSCRIBE_URL]); queryClient.setQueryData([SUBSCRIBE_URL], () => ({ subscribe: false })); - return { prevData, prevSubscribe }; + return { prevSubscribe }; }, onError: async (error, __, context) => { - queryClient.setQueryData(['getFCMToken'], context?.prevData); queryClient.setQueryData([SUBSCRIBE_URL], context?.prevSubscribe); if (error instanceof StatusError) { @@ -90,7 +85,6 @@ const useWebPush = () => { onSettled: () => { queryClient.invalidateQueries({ queryKey: [SUBSCRIBE_URL] }); - queryClient.invalidateQueries({ queryKey: ['getFCMToken'] }); }, }); diff --git a/frontend/src/models/PushStatus.ts b/frontend/src/models/PushStatus.ts index edbf5c05..b2d7fae1 100644 --- a/frontend/src/models/PushStatus.ts +++ b/frontend/src/models/PushStatus.ts @@ -8,7 +8,6 @@ interface PushStatusState { //[MDN](https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription) // pushSubscription: PushSubscription | null; // 현재 구독중인 service endpoint와 구독 해제 기능을 제공하고 있음. notificationPermission: NotificationPermission; // 현재 알림 상태가 어떤지 - currentToken: string | null; } export const isSupported = @@ -16,7 +15,6 @@ export const isSupported = const initialPushStatus: PushStatusState = { pushSupport: isSupported, - currentToken: null, notificationPermission: 'default', }; @@ -27,26 +25,16 @@ class PushStatus { this.pushStatus = pushStatus; if (pushStatus.notificationPermission !== 'granted') { - this.pushStatus.currentToken = null; await FCMMessaging.deleteCurrentToken(); } } - getCurrentToken() { - return this.pushStatus.currentToken; - } - - setCurrentToken(token: string | null) { - this.pushStatus.currentToken = token; - } - getPermission() { return this.pushStatus.notificationPermission; } async setPermission(permission: NotificationPermission) { if (permission !== 'granted') { - this.pushStatus.currentToken = null; await FCMMessaging.deleteCurrentToken(); } diff --git a/frontend/src/registerServiceWork.ts b/frontend/src/registerServiceWork.ts index c47b81ef..7fd15498 100644 --- a/frontend/src/registerServiceWork.ts +++ b/frontend/src/registerServiceWork.ts @@ -29,7 +29,6 @@ const registerPwaServiceWorker = async (workerPath: string) => { PushStatus.updatePushStatus({ notificationPermission: 'default', - currentToken: null, pushSupport: FCMSupported && isBrowserSupport, }); };