npub.email/src/lib/stores.svelte.ts
Danny Morabito 9b09ddbce2
🚀 Turbocharged Performance 🚀
💪 Major speed boosts and overhaul of letter fetching and decrypting for users with large collections or slower devices.

🧹 Minor code style tweaks and fixes for a cleaner, more polished codebase.

📝 License Update 📝

Added AGPL3 license file to ensure transparency and freedom for our users.
2024-12-05 19:09:34 +01:00

61 lines
1.9 KiB
TypeScript

import { browser } from '$app/environment';
import { writable } from 'svelte/store';
import { NDKNip07Signer, NDKUser } from '@nostr-dev-kit/ndk';
import NDKSvelte from '@nostr-dev-kit/ndk-svelte';
import NDKCacheAdapterDexie from '@nostr-dev-kit/ndk-cache-dexie';
const dexieAdapter = new NDKCacheAdapterDexie({ dbName: 'npub-email-cache' });
const nip07signer = new NDKNip07Signer();
export const _ndk = new NDKSvelte({
explicitRelayUrls: ['wss://relay.primal.net', 'wss://relay.snort.social'],
autoConnectUserRelays: false,
relayAuthDefaultPolicy: async (r) => true,
enableOutboxModel: true,
// signer: nip07signer,
cacheAdapter: dexieAdapter
});
if (browser && localStorage.getItem('useNip07')) _ndk.signer = nip07signer;
export const ndk = writable(_ndk);
export const activeUser = writable<NDKUser | undefined>(undefined);
if (browser && _ndk.activeUser) activeUser.set(_ndk.activeUser);
export const validSortOptions = ['stamps', 'date', 'sender', 'subject'];
export const baseHue = writable(
browser ? parseInt(<string>localStorage.getItem('baseHue')) || 200 : 200
);
// export const sortBy = writable(browser ? localStorage.getItem('sortBy') || 'date' : 'date');
export const dateFormat = writable(
browser ? localStorage.getItem('dateFormat') || 'y-m-d' : 'y-m-d'
);
export const timeFormat = writable(
browser ? localStorage.getItem('timeFormat') || 'h:m:s' : 'h:m:s'
);
export let pageTitle = writable('loading');
export let pageIcon = writable('');
if (browser) {
baseHue.subscribe((value) => {
document.documentElement.style.setProperty('--base-hue', value.toString());
localStorage.setItem('baseHue', value.toString());
});
// sortBy.subscribe((value) => {
// if (!validSortOptions.includes(value)) value = 'date';
// localStorage.setItem('sortBy', value);
// });
dateFormat.subscribe((value) => {
localStorage.setItem('dateFormat', value);
});
timeFormat.subscribe((value) => {
localStorage.setItem('timeFormat', value);
});
}