Erant-OldApp/src/lib/auth.ts

32 lines
828 B
TypeScript
Raw Normal View History

2022-12-08 23:43:04 +00:00
import type { Models, RealtimeResponseEvent } from 'appwrite'
2022-12-03 09:30:26 +00:00
import { writable } from 'svelte/store'
2022-12-06 21:07:17 +00:00
import { account, client } from './stores/appwrite'
2022-12-03 09:30:26 +00:00
const userStore = writable<Models.Account<Models.Preferences>>(null)
const loadingStore = writable(true)
2022-12-08 23:43:04 +00:00
client.subscribe('account', (response: RealtimeResponseEvent<any>) => {
if (response.events.includes('users.*.sessions.*.delete')) {
return userStore.set(null)
}
if (response.events.includes('users.*.sessions.*.update')) {
return userStore.set(response.payload)
}
2022-12-06 21:07:17 +00:00
})
2022-12-03 09:30:26 +00:00
account.get().then(data => {
userStore.set(data)
loadingStore.set(false)
})
2022-12-08 23:43:04 +00:00
const user = {
subscribe: userStore.subscribe,
logout: () => account.deleteSession('current'),
account: account
2022-12-03 09:30:26 +00:00
}
2022-12-08 23:43:04 +00:00
const isLoading = { subscribe: loadingStore.subscribe }
2022-12-03 09:30:26 +00:00
2022-12-08 23:43:04 +00:00
export { account, user, isLoading }