mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 19:24:03 +00:00
miniapp: refresh after mutations, activity expand, squash chart palette
This commit is contained in:
@@ -62,6 +62,9 @@ type SessionContextValue = {
|
||||
handleMemberLocaleChange: (nextLocale: Locale) => Promise<void>
|
||||
handleHouseholdLocaleChange: (nextLocale: Locale) => Promise<void>
|
||||
refreshHouseholdData: (includeAdmin?: boolean, forceRefresh?: boolean) => Promise<void>
|
||||
registerRefreshListener: (
|
||||
listener: (initData: string, isAdmin: boolean) => Promise<void>
|
||||
) => () => void
|
||||
}
|
||||
|
||||
const SessionContext = createContext<SessionContextValue>()
|
||||
@@ -114,6 +117,17 @@ export function SessionProvider(
|
||||
const [displayNameDraft, setDisplayNameDraft] = createSignal('')
|
||||
const [savingOwnDisplayName, setSavingOwnDisplayName] = createSignal(false)
|
||||
|
||||
const refreshListeners = new Set<(initData: string, isAdmin: boolean) => Promise<void>>()
|
||||
|
||||
function registerRefreshListener(
|
||||
listener: (initData: string, isAdmin: boolean) => Promise<void>
|
||||
) {
|
||||
refreshListeners.add(listener)
|
||||
return () => {
|
||||
refreshListeners.delete(listener)
|
||||
}
|
||||
}
|
||||
|
||||
const readySession = () => {
|
||||
const current = session()
|
||||
return current.status === 'ready' ? current : null
|
||||
@@ -310,7 +324,11 @@ export function SessionProvider(
|
||||
// Delegate actual data loading to dashboard context via onReady
|
||||
const current = readySession()
|
||||
if (current) {
|
||||
await props.onReady?.(data, includeAdmin || current.member.isAdmin)
|
||||
const isAdmin = includeAdmin || current.member.isAdmin
|
||||
await Promise.all([
|
||||
props.onReady?.(data, isAdmin),
|
||||
...Array.from(refreshListeners).map((l) => l(data, isAdmin))
|
||||
])
|
||||
}
|
||||
}
|
||||
|
||||
@@ -336,7 +354,8 @@ export function SessionProvider(
|
||||
handleSaveOwnDisplayName,
|
||||
handleMemberLocaleChange,
|
||||
handleHouseholdLocaleChange,
|
||||
refreshHouseholdData
|
||||
refreshHouseholdData,
|
||||
registerRefreshListener
|
||||
}}
|
||||
>
|
||||
{props.children}
|
||||
|
||||
Reference in New Issue
Block a user