mirror of
https://github.com/cinnyapp/cinny.git
synced 2025-11-04 22:40:29 +03:00
Place our storage handling into a state module instead and reference it
This commit is contained in:
parent
b972f308f4
commit
b689089599
1 changed files with 32 additions and 0 deletions
32
src/app/state/pushSubscription.ts
Normal file
32
src/app/state/pushSubscription.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
import { atom } from 'jotai';
|
||||||
|
import {
|
||||||
|
atomWithLocalStorage,
|
||||||
|
getLocalStorageItem,
|
||||||
|
setLocalStorageItem,
|
||||||
|
} from './utils/atomWithLocalStorage';
|
||||||
|
|
||||||
|
const PUSH_SUBSCRIPTION_KEY = 'webPushSubscription';
|
||||||
|
|
||||||
|
const basePushSubscriptionAtom = atomWithLocalStorage<PushSubscriptionJSON | null>(
|
||||||
|
PUSH_SUBSCRIPTION_KEY,
|
||||||
|
(key) => getLocalStorageItem<PushSubscriptionJSON | null>(key, null),
|
||||||
|
(key, value) => {
|
||||||
|
setLocalStorageItem(key, value);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
export const pushSubscriptionAtom = atom<
|
||||||
|
PushSubscriptionJSON | null,
|
||||||
|
[PushSubscription | null],
|
||||||
|
void
|
||||||
|
>(
|
||||||
|
(get) => get(basePushSubscriptionAtom),
|
||||||
|
(get, set, subscription: PushSubscription | null) => {
|
||||||
|
if (subscription) {
|
||||||
|
const subscriptionJSON = subscription.toJSON();
|
||||||
|
set(basePushSubscriptionAtom, subscriptionJSON);
|
||||||
|
} else {
|
||||||
|
set(basePushSubscriptionAtom, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
Loading…
Add table
Add a link
Reference in a new issue