diff options
| author | ivarlovlie <git@ivarlovlie.no> | 2022-10-25 11:51:37 +0200 |
|---|---|---|
| committer | ivarlovlie <git@ivarlovlie.no> | 2022-10-25 11:51:37 +0200 |
| commit | 0005595703b2f3f7083ce4ba19bf5770057c75bd (patch) | |
| tree | 193a897f61a9a5e566961601de4cf42ae85984a0 /code/app/src/lib/api/account/index.ts | |
| parent | 585c5c8537eb21dfc9f16108548e63d9ced3d971 (diff) | |
| download | greatoffice-0005595703b2f3f7083ce4ba19bf5770057c75bd.tar.xz greatoffice-0005595703b2f3f7083ce4ba19bf5770057c75bd.zip | |
.
Diffstat (limited to 'code/app/src/lib/api/account/index.ts')
| -rw-r--r-- | code/app/src/lib/api/account/index.ts | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/code/app/src/lib/api/account/index.ts b/code/app/src/lib/api/account/index.ts new file mode 100644 index 0000000..305bd9f --- /dev/null +++ b/code/app/src/lib/api/account/index.ts @@ -0,0 +1,39 @@ +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<InternalFetchResponse<Result<void, ErrorResult>>> { + const response = await http_post_async<Result<void, ErrorResult>>(api_base("_/account/login"), payload); + if (isOk(response)) { + return Ok(); + } + return Err(response.data); + }, + logout_async(): Promise<InternalFetchResponse<void>> { + return http_get_async<void>(api_base("_/account/logout")); + }, + delete_account_async(): Promise<InternalFetchResponse> { + return http_delete_async(api_base("_/account/delete")); + }, + update_profile_async(payload: UpdateProfilePayload): Promise<InternalFetchResponse> { + 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<InternalFetchResponse> { + 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<Result<SessionData, string>> { + const response = await http_get_async<SessionData>(api_base("_/account"), 0, true); + if (isOk(response)) { + return Ok(response.data.data); + } + } +}
\ No newline at end of file |
