enh: realtime user record updates

This commit is contained in:
Ben Allfree 2025-01-09 12:42:20 -08:00
parent 95bf887b36
commit 6b9773a23d

View File

@ -99,10 +99,11 @@ export const init = () => {
const user = authStoreProps.model as UserFields const user = authStoreProps.model as UserFields
userStore.set(isLoggedIn ? user : undefined) userStore.set(isLoggedIn ? user : undefined)
isAuthStateInitialized.set(true) isAuthStateInitialized.set(true)
tryUserSubscribe(user?.id)
}) })
userStore.subscribe((user) => { userStore.subscribe((user) => {
console.log({ user }) console.log(`userStore.subscribe`, { user })
isUserPaid.set( isUserPaid.set(
[ [
SubscriptionType.Founder, SubscriptionType.Founder,
@ -158,3 +159,31 @@ export const init = () => {
tryInstanceSubscribe() tryInstanceSubscribe()
}) })
} }
const tryUserSubscribe = (() => {
let unsub: UnsubscribeFunc | undefined
let tid: NodeJS.Timeout | undefined
const _trySubscribe = (id?: string) => {
clearTimeout(tid)
unsub?.()
unsub = undefined
if (!id) return
console.log('Subscribing to user', id)
client()
.client.collection('users')
.subscribe<UserFields>(id, (data) => {
console.log('User subscribed update', data)
userStore.set(data.record)
})
.then((u) => {
unsub = u
})
.catch(() => {
console.error('Failed to subscribe to user')
tid = setTimeout(_trySubscribe, 1000)
})
}
return _trySubscribe
})()