53 lines
1.2 KiB
JavaScript
53 lines
1.2 KiB
JavaScript
import { createAtom } from "~/lib/atomic-zustand";
|
|
import { secureStore } from "~/storage/memorySecureStore";
|
|
import { STORAGE_KEYS } from "~/storage/storageKeys";
|
|
|
|
export default createAtom(({ merge, reset }) => {
|
|
const setFcmToken = (token) => {
|
|
merge({
|
|
fcmToken: token,
|
|
});
|
|
};
|
|
|
|
const setFcmTokenStored = ({ fcmToken, deviceId }) => {
|
|
secureStore.setItemAsync(STORAGE_KEYS.FCM_TOKEN_STORED, fcmToken);
|
|
secureStore.setItemAsync(
|
|
STORAGE_KEYS.FCM_TOKEN_STORED_DEVICE_ID,
|
|
deviceId.toString(),
|
|
);
|
|
merge({
|
|
fcmTokenStored: fcmToken,
|
|
deviceId,
|
|
});
|
|
};
|
|
|
|
const init = async () => {
|
|
const fcmTokenStored = await secureStore.getItemAsync(
|
|
STORAGE_KEYS.FCM_TOKEN_STORED,
|
|
);
|
|
const fcmTokenStoredDeviceId = await secureStore.getItemAsync(
|
|
STORAGE_KEYS.FCM_TOKEN_STORED_DEVICE_ID,
|
|
);
|
|
const deviceId = fcmTokenStoredDeviceId
|
|
? parseInt(fcmTokenStoredDeviceId, 10)
|
|
: null;
|
|
merge({
|
|
fcmTokenStored: fcmTokenStored || false,
|
|
deviceId,
|
|
});
|
|
};
|
|
|
|
return {
|
|
default: {
|
|
fcmToken: null,
|
|
fcmTokenStored: null,
|
|
deviceId: null,
|
|
},
|
|
actions: {
|
|
init,
|
|
reset,
|
|
setFcmToken,
|
|
setFcmTokenStored,
|
|
},
|
|
};
|
|
});
|