Refetch labelers on session resolution

This commit is contained in:
Eric Bailey
2024-03-15 16:57:48 -05:00
parent b4bb838d04
commit cccaed6aba
3 changed files with 18 additions and 1 deletions
+8
View File
@@ -29,3 +29,11 @@ export function listenPostCreated(fn: () => void): UnlistenFn {
emitter.on('post-created', fn)
return () => emitter.off('post-created', fn)
}
export function emitSessionResolved() {
emitter.emit('session-resolved')
}
export function listenOnSessionResolved(fn: () => void): UnlistenFn {
emitter.on('session-resolved', fn)
return () => emitter.off('session-resolved', fn)
}
@@ -7,6 +7,7 @@ import {
import {usePreferencesQuery} from './index'
import {useLabelersDetailedInfoQuery} from '../labeler'
import {listenOnSessionResolved} from '#/state/events'
/**
* More strict than our default settings for logged in users.
@@ -28,6 +29,13 @@ export function useMyLabelersQuery() {
const labelers = useLabelersDetailedInfoQuery({dids})
const isLoading = prefs.isLoading || labelers.isLoading
const error = prefs.error || labelers.error
React.useEffect(() => {
return listenOnSessionResolved(() => {
labelers.refetch()
})
}, [labelers])
return React.useMemo(() => {
return {
isLoading,
+2 -1
View File
@@ -14,7 +14,7 @@ import {networkRetry} from '#/lib/async/retry'
import {logger} from '#/logger'
import * as persisted from '#/state/persisted'
import {PUBLIC_BSKY_AGENT} from '#/state/queries'
import {emitSessionDropped} from '../events'
import {emitSessionDropped, emitSessionResolved} from '../events'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useCloseAllActiveElements} from '#/state/util'
import {track} from '#/lib/analytics/analytics'
@@ -413,6 +413,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
`session: reuse of previous session returned a fresh account, upserting`,
)
upsertAccount(freshAccount)
emitSessionResolved()
}
})
.catch(e => {