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 }
|