miniapp: refresh after mutations, activity expand, squash chart palette

This commit is contained in:
2026-03-14 02:40:14 +04:00
parent 1274cefc0f
commit 771d64aa4e
6 changed files with 100 additions and 13 deletions

View File

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