22 lines
606 B
TypeScript
22 lines
606 B
TypeScript
import { writable, Readable } from 'svelte/store';
|
|
import * as api from './api';
|
|
|
|
const { subscribe, set } = writable<boolean>(false);
|
|
|
|
interface ILoggedIn extends Readable<boolean> {
|
|
fetchIsLoggedIn(): Promise<void>;
|
|
fetchLogin(credentials: ICredentials): Promise<void>;
|
|
}
|
|
|
|
export const loggedIn: ILoggedIn = {
|
|
subscribe,
|
|
fetchIsLoggedIn(): Promise<void> {
|
|
return api.isLoggedIn().then((isLoggedIn: boolean) => {
|
|
set(isLoggedIn);
|
|
});
|
|
},
|
|
fetchLogin(this: ILoggedIn, credentials: ICredentials): Promise<void> {
|
|
return api.login(credentials).then(this.fetchIsLoggedIn);
|
|
},
|
|
};
|