]> Untitled Git - lemmy-ui.git/blobdiff - src/shared/services/UserService.ts
Changing all bigints to numbers
[lemmy-ui.git] / src / shared / services / UserService.ts
index 8d591cc3ed3c0ffa2466b878683a7c374c227dbd..cc036b498e75c07ff0a8d6f9c45d72ef532d1dea 100644 (file)
@@ -1,12 +1,11 @@
 // import Cookies from 'js-cookie';
-import { Err, None, Ok, Option, Result, Some } from "@sniptt/monads";
 import IsomorphicCookie from "isomorphic-cookie";
 import jwt_decode from "jwt-decode";
 import { LoginResponse, MyUserInfo } from "lemmy-js-client";
 import { BehaviorSubject } from "rxjs";
 import { isHttps } from "../env";
 import { i18n } from "../i18next";
-import { isBrowser, toast } from "../utils";
+import { isAuthPath, isBrowser, toast } from "../utils";
 
 interface Claims {
   sub: number;
@@ -21,8 +20,8 @@ interface JwtInfo {
 
 export class UserService {
   private static _instance: UserService;
-  public myUserInfo: Option<MyUserInfo> = None;
-  public jwtInfo: Option<JwtInfo> = None;
+  public myUserInfo?: MyUserInfo;
+  public jwtInfo?: JwtInfo;
   public unreadInboxCountSub: BehaviorSubject<number> =
     new BehaviorSubject<number>(0);
   public unreadReportCountSub: BehaviorSubject<number> =
@@ -37,46 +36,45 @@ export class UserService {
   public login(res: LoginResponse) {
     let expires = new Date();
     expires.setDate(expires.getDate() + 365);
-    res.jwt.match({
-      some: jwt => {
-        toast(i18n.t("logged_in"));
-        IsomorphicCookie.save("jwt", jwt, { expires, secure: isHttps });
-        this.setJwtInfo();
-        location.reload();
-      },
-      none: void 0,
-    });
+    if (res.jwt) {
+      toast(i18n.t("logged_in"));
+      IsomorphicCookie.save("jwt", res.jwt, { expires, secure: isHttps() });
+      this.setJwtInfo();
+    }
   }
 
   public logout() {
-    this.jwtInfo = None;
-    this.myUserInfo = None;
+    this.jwtInfo = undefined;
+    this.myUserInfo = undefined;
     IsomorphicCookie.remove("jwt"); // TODO is sometimes unreliable for some reason
-    document.cookie = "jwt=; Max-Age=0; path=/; domain=" + location.host;
-    location.reload();
+    document.cookie = "jwt=; Max-Age=0; path=/; domain=" + location.hostname;
+    if (isAuthPath(location.pathname)) {
+      location.replace("/");
+    } else {
+      location.reload();
+    }
   }
 
-  public auth(throwErr = true): Result<string, string> {
-    // Can't use match to convert to result for some reason
-    let jwt = this.jwtInfo.map(j => j.jwt);
-    if (jwt.isSome()) {
-      return Ok(jwt.unwrap());
+  public auth(throwErr = true): string | undefined {
+    let jwt = this.jwtInfo?.jwt;
+    if (jwt) {
+      return jwt;
     } else {
       let msg = "No JWT cookie found";
       if (throwErr && isBrowser()) {
-        console.log(msg);
+        console.error(msg);
         toast(i18n.t("not_logged_in"), "danger");
       }
-      return Err(msg);
+      return undefined;
+      // throw msg;
     }
   }
 
   private setJwtInfo() {
-    let jwt = IsomorphicCookie.load("jwt");
+    let jwt: string | undefined = IsomorphicCookie.load("jwt");
 
     if (jwt) {
-      let jwtInfo: JwtInfo = { jwt, claims: jwt_decode(jwt) };
-      this.jwtInfo = Some(jwtInfo);
+      this.jwtInfo = { jwt, claims: jwt_decode(jwt) };
     }
   }