import { writable } from 'svelte/store'; import { OpenAPI, AuthService } from '@odit/lfk-client-js'; import localForage from 'localforage'; export let users = writable([]); export let tracks = writable([]); const store = () => { const state = { auth: undefined, access_token: undefined, jwtinfo: undefined, isLoggedIn: false, refreshInterval: undefined }; const { subscribe, set, update } = writable(state); const methods = { init() { update((state) => { state.isLoggedIn = false; return state; }); }, refreshAuth() { AuthService.authControllerRefresh({ token: state.auth.refresh_token }).then((auth) => { OpenAPI.TOKEN = auth.access_token; const jwtinfo = JSON.parse(atob(auth.access_token.split('.')[1])); state.jwtinfo = jwtinfo; localForage.setItem('logindata', auth); }); }, login(auth, jwtinfo) { update((state) => { state.auth = auth; state.access_token = auth.access_token; state.jwtinfo = jwtinfo; state.isLoggedIn = true; // state.refreshInterval = setInterval(() => { this.refreshAuth(); // 2min }, 2 * 60000); // return state; }); }, logout() { update((state) => { state.isLoggedIn = false; // clearInterval(state.refreshInterval); state.refreshInterval = undefined; // return state; }); } }; return { subscribe, set, update, state, ...methods }; }; export default store();