11import type { FirebaseMessagingTypes } from "@react-native-firebase/messaging"
22import messaging from "@react-native-firebase/messaging"
3+ import { useMutation } from "@tanstack/react-query"
34import { useEffect } from "react"
45import { Platform } from "react-native"
56
6- import { apiClient } from "../lib/api-fetch"
7- import { kv } from "../lib/kv"
8- import { useNavigation } from "../lib/navigation/hooks"
9- import { requestNotificationPermission } from "../lib/permission"
10- import { EntryDetailScreen } from "../screens/(stack)/entries/[entryId]"
11- import { whoami } from "../store/user/getters"
7+ import { apiClient } from "@/src/lib/api-fetch"
8+ import { kv } from "@/src/lib/kv"
9+ import { useNavigation } from "@/src/lib/navigation/hooks"
10+ import { requestNotificationPermission } from "@/src/lib/permission"
11+ import { EntryDetailScreen } from "@/src/screens/(stack)/entries/[entryId]"
12+
13+ import { useHasNotificationActions } from "../action/hooks"
14+ import { useWhoami } from "../user/hooks"
1215
1316const FIREBASE_MESSAGING_TOKEN_STORAGE_KEY = "firebase_messaging_token"
1417
@@ -27,14 +30,19 @@ async function saveMessagingToken() {
2730 kv . set ( FIREBASE_MESSAGING_TOKEN_STORAGE_KEY , token )
2831}
2932
30- export const initMessaging = ( ) => {
31- const user = whoami ( )
32- if ( ! user ) {
33- return
34- }
33+ export function useMessagingToken ( ) {
34+ const whoami = useWhoami ( )
35+ const hasNotificationActions = useHasNotificationActions ( )
36+ const { mutate } = useMutation ( {
37+ mutationFn : async ( ) => {
38+ return Promise . all ( [ saveMessagingToken ( ) , requestNotificationPermission ( ) ] )
39+ } ,
40+ } )
3541
36- saveMessagingToken ( )
37- requestNotificationPermission ( )
42+ useEffect ( ( ) => {
43+ if ( ! whoami || ! hasNotificationActions ) return
44+ mutate ( )
45+ } , [ hasNotificationActions , mutate , whoami ] )
3846}
3947
4048export function useMessaging ( ) {
0 commit comments