blob: d86829c18a49a89df35a980e9b02dc58025d95d3 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import { browser } from "$app/environment";
import { writable } from "svelte/store";
const storageKey = (date = new Date()) =>
`aprilFoolsExecutiveMode:${date.getFullYear()}`;
export const isAprilFoolsDay = (date = new Date()) =>
date.getMonth() === 3 && date.getDate() === 1;
let hydrated = !browser;
const store = writable(false);
export const hydrateAprilFools = () => {
if (!browser || hydrated) return;
const storedValue = localStorage.getItem(storageKey());
store.set(storedValue === null ? isAprilFoolsDay() : storedValue === "true");
hydrated = true;
};
store.subscribe((value) => {
if (!browser || !hydrated) return;
localStorage.setItem(storageKey(), String(value));
});
export const aprilFoolsVisible = () => isAprilFoolsDay();
const aprilFools = {
subscribe: store.subscribe,
set: store.set,
toggle: () => store.update((value) => !value),
};
export default aprilFools;
|