import { api_base } from "$lib/configuration"; import { http_delete_async, http_get_async, http_post_async, type InternalFetchResponse } from "../_fetch"; import type { LoginPayload } from "$lib/api/account/models/LoginPayload"; import type { Result } from "rustic"; import { isOk, Ok, Err } from "rustic"; import type { SessionData } from "$lib/models/base/SessionData"; import type { CreateAccountPayload } from "./models/CreateAccountPayload"; import type { UpdateProfilePayload } from "./models/UpdateProfilePayload"; import type { ErrorResult } from "$lib/models/internal/ErrorResult"; export const http_account = { async login_async(payload: LoginPayload): Promise>> { const response = await http_post_async>(api_base("_/account/login"), payload); if (isOk(response)) { return Ok(); } return Err(response.data); }, logout_async(): Promise> { return http_get_async(api_base("_/account/logout")); }, delete_account_async(): Promise { return http_delete_async(api_base("_/account/delete")); }, update_profile_async(payload: UpdateProfilePayload): Promise { if (!payload.password && !payload.username) throw new Error("Password and Username is empty"); return http_post_async(api_base("_/account/update"), payload); }, create_account_async(payload: CreateAccountPayload): Promise { if (!payload.password && !payload.username) throw new Error("Password and Username is empty"); return http_post_async(api_base("_/account/create"), payload); }, async get_profile_async(suppress_401: boolean): Promise> { const response = await http_get_async(api_base("_/account"), 0, true); if (isOk(response)) { return Ok(response.data.data); } } }