diff options
Diffstat (limited to 'code/frontend/src/services/abstractions/IAccountService.ts')
| -rw-r--r-- | code/frontend/src/services/abstractions/IAccountService.ts | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/code/frontend/src/services/abstractions/IAccountService.ts b/code/frontend/src/services/abstractions/IAccountService.ts new file mode 100644 index 0000000..d3d48b0 --- /dev/null +++ b/code/frontend/src/services/abstractions/IAccountService.ts @@ -0,0 +1,54 @@ +import type { KnownProblem } from "$models/internal/KnownProblem"; +import type { Writable } from "svelte/store"; + +export interface IAccountService { + session: Writable<Session>, + login_async(payload: LoginPayload): Promise<LoginResponse>, + logout_async(): Promise<void>, + end_session_async(callback?: Function): Promise<void>, + create_account_async(payload: CreateAccountPayload): Promise<CreateAccountResponse>, + delete_current_async(): Promise<DeleteAccountResponse>, + update_current_async(payload: UpdateAccountPayload): Promise<UpdateAccountResponse>, +} + +export type Session = { + username: string, + displayName: string, + id: string, + _lastUpdated: number +} + +export type LoginPayload = { + username: string, + password: string, + persist: boolean +} + +export type LoginResponse = { + isLoggedIn: boolean, + knownProblem?: KnownProblem +} + +export type CreateAccountPayload = { + username: string, + password: string, +} + +export type CreateAccountResponse = { + isCreated: boolean, + knownProblem?: KnownProblem +} + +export type DeleteAccountResponse = { + isDeleted: boolean +} + +export type UpdateAccountPayload = { + username: string, + password: string +} + +export type UpdateAccountResponse = { + isUpdated: boolean, + knownProblem?: KnownProblem +}
\ No newline at end of file |
