as-app/src/stores/fcm.js
2025-07-02 00:54:30 +02:00

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,
},
};
});