mirror of
https://github.com/whekin/household-bot.git
synced 2026-03-31 21:14:02 +00:00
feat(miniapp): add pending member admin approval
This commit is contained in:
@@ -17,6 +17,13 @@ export interface MiniAppSession {
|
||||
}
|
||||
}
|
||||
|
||||
export interface MiniAppPendingMember {
|
||||
telegramUserId: string
|
||||
displayName: string
|
||||
username: string | null
|
||||
languageCode: string | null
|
||||
}
|
||||
|
||||
export interface MiniAppDashboard {
|
||||
period: string
|
||||
currency: 'USD' | 'GEL'
|
||||
@@ -159,3 +166,56 @@ export async function fetchMiniAppDashboard(initData: string): Promise<MiniAppDa
|
||||
|
||||
return payload.dashboard
|
||||
}
|
||||
|
||||
export async function fetchMiniAppPendingMembers(
|
||||
initData: string
|
||||
): Promise<readonly MiniAppPendingMember[]> {
|
||||
const response = await fetch(`${apiBaseUrl()}/api/miniapp/admin/pending-members`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
initData
|
||||
})
|
||||
})
|
||||
|
||||
const payload = (await response.json()) as {
|
||||
ok: boolean
|
||||
authorized?: boolean
|
||||
members?: MiniAppPendingMember[]
|
||||
error?: string
|
||||
}
|
||||
|
||||
if (!response.ok || !payload.authorized || !payload.members) {
|
||||
throw new Error(payload.error ?? 'Failed to load pending members')
|
||||
}
|
||||
|
||||
return payload.members
|
||||
}
|
||||
|
||||
export async function approveMiniAppPendingMember(
|
||||
initData: string,
|
||||
pendingTelegramUserId: string
|
||||
): Promise<void> {
|
||||
const response = await fetch(`${apiBaseUrl()}/api/miniapp/admin/approve-member`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'content-type': 'application/json'
|
||||
},
|
||||
body: JSON.stringify({
|
||||
initData,
|
||||
pendingTelegramUserId
|
||||
})
|
||||
})
|
||||
|
||||
const payload = (await response.json()) as {
|
||||
ok: boolean
|
||||
authorized?: boolean
|
||||
error?: string
|
||||
}
|
||||
|
||||
if (!response.ok || !payload.authorized) {
|
||||
throw new Error(payload.error ?? 'Failed to approve member')
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user