67 lines
1.3 KiB
TypeScript
67 lines
1.3 KiB
TypeScript
import {
|
|
clearLoginSession,
|
|
getCurrentUserId as getStoredCurrentUserId,
|
|
getToken as getStoredToken,
|
|
saveLoginSession,
|
|
} from './session'
|
|
import { request } from './api'
|
|
|
|
export interface WechatLoginPayload {
|
|
code: string
|
|
nickname?: string
|
|
avatar_url?: string
|
|
}
|
|
|
|
export interface LoginSession {
|
|
access_token: string
|
|
token_type: string
|
|
expires_in: number
|
|
user_id: number
|
|
nickname?: string
|
|
}
|
|
|
|
export interface Parent {
|
|
user_id: number
|
|
openid: string
|
|
unionid?: string
|
|
nickname?: string
|
|
avatar_url?: string
|
|
phone?: string
|
|
status: number
|
|
}
|
|
|
|
export async function wechatLogin(data: WechatLoginPayload): Promise<LoginSession> {
|
|
const session = await request<LoginSession>('/banban/auth/login', {
|
|
method: 'POST',
|
|
data,
|
|
})
|
|
saveLoginSession(session)
|
|
return session
|
|
}
|
|
|
|
export async function getParent(userId: number): Promise<Parent> {
|
|
return request<Parent>(`/banban/parents/${userId}`)
|
|
}
|
|
|
|
export async function updateParent(
|
|
userId: number,
|
|
data: { nickname?: string; avatar_url?: string; phone?: string }
|
|
): Promise<Parent> {
|
|
return request<Parent>(`/banban/parents/${userId}`, {
|
|
method: 'PATCH',
|
|
data,
|
|
})
|
|
}
|
|
|
|
export function getToken(): string {
|
|
return getStoredToken()
|
|
}
|
|
|
|
export function clearToken(): void {
|
|
clearLoginSession()
|
|
}
|
|
|
|
export function getCurrentUserId(): number {
|
|
return getStoredCurrentUserId()
|
|
}
|