mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 12:04:02 +00:00
fix(miniapp): wait for telegram init data before blocking
This commit is contained in:
@@ -102,6 +102,29 @@ const demoSession: Extract<SessionState, { status: 'ready' }> = {
|
|||||||
telegramUser: demoTelegramUser
|
telegramUser: demoTelegramUser
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function waitForTelegramInitData(
|
||||||
|
readInitData: () => string | undefined,
|
||||||
|
options: {
|
||||||
|
timeoutMs?: number
|
||||||
|
intervalMs?: number
|
||||||
|
} = {}
|
||||||
|
): Promise<string | undefined> {
|
||||||
|
const timeoutMs = options.timeoutMs ?? 2500
|
||||||
|
const intervalMs = options.intervalMs ?? 100
|
||||||
|
const startedAt = Date.now()
|
||||||
|
|
||||||
|
while (Date.now() - startedAt <= timeoutMs) {
|
||||||
|
const data = readInitData()
|
||||||
|
if (data) {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
|
||||||
|
await new Promise((resolve) => setTimeout(resolve, intervalMs))
|
||||||
|
}
|
||||||
|
|
||||||
|
return readInitData()
|
||||||
|
}
|
||||||
|
|
||||||
/* ── Provider ───────────────────────────────────────── */
|
/* ── Provider ───────────────────────────────────────── */
|
||||||
|
|
||||||
export function SessionProvider(
|
export function SessionProvider(
|
||||||
@@ -146,7 +169,7 @@ export function SessionProvider(
|
|||||||
webApp?.ready?.()
|
webApp?.ready?.()
|
||||||
webApp?.expand?.()
|
webApp?.expand?.()
|
||||||
|
|
||||||
const data = initData()
|
const data = await waitForTelegramInitData(initData)
|
||||||
if (!data) {
|
if (!data) {
|
||||||
if (import.meta.env.DEV) {
|
if (import.meta.env.DEV) {
|
||||||
setSession(demoSession)
|
setSession(demoSession)
|
||||||
|
|||||||
Reference in New Issue
Block a user