💪 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.
61 lines
1.9 KiB
TypeScript
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);
|
|
});
|
|
}
|