tooot/src/utils/push/updateExpoToken.ts

40 lines
1.2 KiB
TypeScript
Raw Normal View History

import { isDevelopment } from '@utils/helpers/checkEnvironment'
import { setChannels } from '@utils/push/constants'
import { getGlobalStorage, setGlobalStorage } from '@utils/storage/actions'
import * as Notifications from 'expo-notifications'
import { Platform } from 'react-native'
2023-08-16 23:47:00 +02:00
export const toRawExpoToken = (token: string): string =>
token.replace('ExponentPushToken[', '').replace(']', '')
2023-01-15 13:40:12 +01:00
export const updateExpoToken = async (): Promise<string> => {
const expoToken = getGlobalStorage.string('app.expo_token')
if (Platform.OS === 'android') {
await setChannels()
}
2023-08-16 23:47:00 +02:00
const getAndSetToken = () => {
if (isDevelopment) {
const devToken = toRawExpoToken('ExponentPushToken[DEVELOPMENT_1]')
setGlobalStorage('app.expo_token', devToken)
return devToken
} else {
return Notifications.getExpoPushTokenAsync({
projectId: '3288313f-3ff0-496a-a5a9-d8985e7cad5f',
applicationId: 'com.xmflsct.app.tooot'
}).then(({ data }) => {
setGlobalStorage('app.expo_token', toRawExpoToken(data))
return data
})
}
}
2023-03-04 17:37:05 +01:00
if (expoToken?.length) {
getAndSetToken()
return Promise.resolve(expoToken)
} else {
return await getAndSetToken()
}
}