import type { AuthSessionDto, AuthSessionInput, AuthUser, AuthUserDto, AuthUserProfileDto, RefreshTokenDto, } from '@/type' export function normalizeAuthUser(dto: AuthUserDto): AuthUser { return { channelId: dto.channel_id, coin: dto.coin, id: dto.uuid, name: dto.username, phone: dto.phone, riskFlags: dto.risk_flags, username: dto.username, uuid: dto.uuid, } } export function normalizeAuthUserProfile(dto: AuthUserProfileDto): AuthUser { return { channelId: dto.channel_id, coin: dto.coin, coinBalance: dto.coin_balance, createTime: dto.create_time, currentStreak: dto.current_streak, email: dto.email, frozenBalance: dto.frozen_balance, headImage: dto.head_image, id: dto.uuid, lastBetPeriodNo: dto.last_bet_period_no, name: dto.username, phone: dto.phone, registerInviteCode: dto.register_invite_code, riskFlags: dto.risk_flags, totalDepositCoin: dto.total_deposit_coin, totalWithdrawCoin: dto.total_withdraw_coin, username: dto.username, uuid: dto.uuid, withdraw: dto.withdraw ? { receiveAccount: dto.withdraw.receive_account, receiverEmail: dto.withdraw.receiver_email, receiverMobile: dto.withdraw.receiver_mobile, receiverName: dto.withdraw.receiver_name, } : undefined, } } export function mergeAuthUsers( baseUser: AuthUser | null | undefined, profileUser: AuthUser | null | undefined, ): AuthUser | null { if (!baseUser && !profileUser) { return null } return { ...baseUser, ...profileUser, id: profileUser?.id ?? baseUser?.id ?? '', } } export function normalizeAuthSession(dto: AuthSessionDto): AuthSessionInput { return { accessToken: dto['user-token'], accessTokenExpiresAt: Date.now() + dto.expires_in * 1000, currentUser: normalizeAuthUser(dto.user), refreshToken: dto.refresh_token ?? null, } } export function normalizeRefreshAuthSession( dto: RefreshTokenDto, ): AuthSessionInput { return { accessToken: dto['user-token'], accessTokenExpiresAt: Date.now() + dto.expires_in * 1000, refreshToken: dto.refresh_token ?? null, } }