a simple web player for subsonic tinysub.devins.page
subsonic navidrome javascript
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 52 lines 1.1 kB view raw
1import { 2 api, 3 setCredentials, 4 createToken, 5 songCache, 6} from "./client.svelte.js"; 7import { loadLib } from "./library.svelte.js"; 8import { syncQueue } from "./queue.svelte.js"; 9 10export const auth = $state({ 11 ok: false, 12 busy: false, 13 err: null as string | null, 14 server: "", 15 user: "", 16}); 17 18export const login = async ( 19 server: string, 20 username: string, 21 password?: string, 22) => { 23 auth.busy = true; 24 auth.err = null; 25 try { 26 if (password) { 27 setCredentials({ server, username, ...createToken(password) }); 28 } 29 await api.ping(); 30 await loadLib(); 31 await syncQueue(); 32 Object.assign(auth, { server, user: username, ok: true }); 33 return true; 34 } catch (err: any) { 35 setCredentials(null); 36 auth.err = err; 37 return false; 38 } finally { 39 auth.busy = false; 40 } 41}; 42 43export const logout = async () => { 44 songCache.clear(); 45 localStorage.clear(); 46 indexedDB.deleteDatabase("tinysub"); 47 if (indexedDB.databases) { 48 const dbs = await indexedDB.databases(); 49 for (const db of dbs) indexedDB.deleteDatabase(db.name!); 50 } 51 location.reload(); 52};