import { Account, ContactInfo, Gender, Server, UserRegisterInfo } from "@hibas123/openauth-internalapi"; import type { SessionContext } from "./index"; import Mail from "../../models/mail"; import User from "../../models/user"; export default class AccountService extends Server.AccountService { Register(regcode: string, info: UserRegisterInfo, ctx: SessionContext): Promise { throw new Error("Method not implemented."); } async GetProfile(ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); return { id: ctx.user.uid, username: ctx.user.username, name: ctx.user.name, birthday: ctx.user.birthday.valueOf(), gender: ctx.user.gender as number as Gender, } } async UpdateProfile(info: Account, ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); ctx.user.name = info.name; ctx.user.birthday = new Date(info.birthday); ctx.user.gender = info.gender as number; await User.save(ctx.user); } async GetContactInfos(ctx: SessionContext): Promise { if (!ctx.user) throw new Error("Not logged in"); let mails = await Promise.all( ctx.user.mails.map((mail) => Mail.findById(mail)) ); let contact = { mail: mails.filter((e) => !!e), phone: ctx.user.phones, }; return contact; } }