aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/services/account-service.ts
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-12-13 14:48:11 +0100
committerivarlovlie <git@ivarlovlie.no>2022-12-13 14:48:21 +0100
commita8219611cbebbd27501d9f30c804979048b98107 (patch)
tree632dbab8b724f0148b06525771d85ad6ddb55e35 /code/app/src/services/account-service.ts
parentdb2d937a38d5c309e3c6aa14f2eaf3cfe58f415e (diff)
downloadgreatoffice-a8219611cbebbd27501d9f30c804979048b98107.tar.xz
greatoffice-a8219611cbebbd27501d9f30c804979048b98107.zip
feat: A whole slew of things
- Use a md5 hash of the session cookie value as key for session validity check - Introduce global state - Introduce a common interface for form logic, and implement it on the sign-in form - Introduce static resolve() on all services instead of new-upping all over. - Implement /portal on the frontend to support giving the frontend a inital context from server or anywhere. - Show a notification when users sign in for the first time after validating their email
Diffstat (limited to 'code/app/src/services/account-service.ts')
-rw-r--r--code/app/src/services/account-service.ts28
1 files changed, 16 insertions, 12 deletions
diff --git a/code/app/src/services/account-service.ts b/code/app/src/services/account-service.ts
index 92c6126..330e588 100644
--- a/code/app/src/services/account-service.ts
+++ b/code/app/src/services/account-service.ts
@@ -1,12 +1,12 @@
-import {http_delete_async, http_get_async, http_post_async} from "$api/_fetch";
-import {browser} from "$app/environment";
-import {api_base, CookieNames, StorageKeys} from "$configuration";
-import {is_known_problem} from "$models/internal/KnownProblem";
-import {log_debug} from "$help/logger";
-import {StoreType, writable_persistent} from "$help/persistent-store";
-import {get} from "svelte/store";
-import type {Writable} from "svelte/store";
-import {Temporal} from "temporal-polyfill";
+import { http_delete_async, http_get_async, http_post_async } from "$api/_fetch";
+import { browser } from "$app/environment";
+import { api_base, CookieNames, StorageKeys } from "$configuration";
+import { is_known_problem } from "$models/internal/KnownProblem";
+import { log_debug } from "$help/logger";
+import { StoreType, writable_persistent } from "$help/persistent-store";
+import { get } from "svelte/store";
+import type { Writable } from "svelte/store";
+import { Temporal } from "temporal-polyfill";
import type {
CreateAccountPayload,
CreateAccountResponse,
@@ -38,6 +38,10 @@ export class AccountService implements IAccountService {
}
}
+ static resolve(): IAccountService {
+ return new AccountService();
+ }
+
async refresh_session(forceRefresh: boolean = false): Promise<void> {
if (!this.session) return;
const currentValue = get(this.session);
@@ -67,7 +71,7 @@ export class AccountService implements IAccountService {
async login_async(payload: LoginPayload): Promise<LoginResponse> {
const response = await http_post_async(api_base("_/account/login"), payload);
- if (response.ok) return {isLoggedIn: true};
+ if (response.ok) return { isLoggedIn: true };
if (is_known_problem(response)) return {
isLoggedIn: false,
knownProblem: await response.json(),
@@ -90,7 +94,7 @@ export class AccountService implements IAccountService {
async create_account_async(payload: CreateAccountPayload): Promise<CreateAccountResponse> {
const response = await http_post_async(api_base("_/account/create"), payload);
- if (response.ok) return {isCreated: true};
+ if (response.ok) return { isCreated: true };
if (is_known_problem(response)) return {
isCreated: false,
knownProblem: await response.json(),
@@ -109,7 +113,7 @@ export class AccountService implements IAccountService {
async update_current_async(payload: UpdateAccountPayload): Promise<UpdateAccountResponse> {
const response = await http_post_async(api_base("_/account/update"), payload);
- if (response.ok) return {isUpdated: true};
+ if (response.ok) return { isUpdated: true };
if (is_known_problem(response)) return {
isUpdated: false,
knownProblem: await response.json(),