@leav/ui 1.10.0-7414117e → 1.10.0-8a6786e5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,4 @@
1
1
  export default function useRedirectToLogin(): {
2
- redirectToLogin: () => Promise<void>;
2
+ redirectToLogin: () => void;
3
+ checkAuthOrRedirectToLogin: () => Promise<void>;
3
4
  };
@@ -2,13 +2,41 @@
2
2
  // This file is released under LGPL V3
3
3
  // License text available at https://www.gnu.org/licenses/lgpl-3.0.txt
4
4
  import { isDevEnv } from '../../_utils/isDevEnv';
5
+ import { GLOBAL_BASE_URL } from '../../constants';
5
6
  export default function useRedirectToLogin() {
7
+ const redirectToLogin = () => {
8
+ if (isDevEnv()) {
9
+ return window.location.replace(`${window.location.origin}${GLOBAL_BASE_URL}/app/login/?dest=${encodeURIComponent(window.location.toString())}`);
10
+ }
11
+ return window.location.reload();
12
+ };
13
+ // Avoid multiple simultaneous auth checks by sharing the same promise
14
+ let authCheckPromise = null;
6
15
  return {
7
- redirectToLogin: async () => {
8
- if (isDevEnv()) {
9
- return window.location.replace(`${window.location.origin}/app/login/?dest=${encodeURIComponent(window.location.toString())}`);
16
+ redirectToLogin,
17
+ checkAuthOrRedirectToLogin: async () => {
18
+ if (!authCheckPromise) {
19
+ authCheckPromise = (async () => {
20
+ try {
21
+ const res = await fetch(`${GLOBAL_BASE_URL}/auth/login-checker`, {
22
+ method: 'POST',
23
+ });
24
+ if (!res.ok) {
25
+ throw new Error(res.statusText, { cause: res });
26
+ }
27
+ }
28
+ catch (e) {
29
+ console.error('An error occurred while checking authentication, redirecting to login...', {
30
+ error: e,
31
+ });
32
+ redirectToLogin();
33
+ }
34
+ finally {
35
+ authCheckPromise = null;
36
+ }
37
+ })();
10
38
  }
11
- return window.location.reload();
39
+ return authCheckPromise;
12
40
  },
13
41
  };
14
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"useRedirectToLogin.js","sourceRoot":"","sources":["../../../src/hooks/useRedirectToLogin/useRedirectToLogin.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,kBAAkB;IACtC,OAAO;QACH,eAAe,EAAE,KAAK,IAAI,EAAE;YACxB,IAAI,QAAQ,EAAE,EAAE,CAAC;gBACb,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC1B,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAChG,CAAC;YACN,CAAC;YACD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {isDevEnv} from '_ui/_utils/isDevEnv';\n\nexport default function useRedirectToLogin() {\n return {\n redirectToLogin: async () => {\n if (isDevEnv()) {\n return window.location.replace(\n `${window.location.origin}/app/login/?dest=${encodeURIComponent(window.location.toString())}`,\n );\n }\n return window.location.reload();\n },\n };\n}\n"]}
1
+ {"version":3,"file":"useRedirectToLogin.js","sourceRoot":"","sources":["../../../src/hooks/useRedirectToLogin/useRedirectToLogin.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,sCAAsC;AACtC,sEAAsE;AACtE,OAAO,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAC,OAAO,UAAU,kBAAkB;IACtC,MAAM,eAAe,GAAG,GAAG,EAAE;QACzB,IAAI,QAAQ,EAAE,EAAE,CAAC;YACb,OAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,CAC1B,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAAE,CAClH,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC,CAAC;IAEF,sEAAsE;IACtE,IAAI,gBAAgB,GAAyB,IAAI,CAAC;IAElD,OAAO;QACH,eAAe;QACf,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpB,gBAAgB,GAAG,CAAC,KAAK,IAAI,EAAE;oBAC3B,IAAI,CAAC;wBACD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,eAAe,qBAAqB,EAAE;4BAC7D,MAAM,EAAE,MAAM;yBACjB,CAAC,CAAC;wBACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;4BACV,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;wBAClD,CAAC;oBACL,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACT,OAAO,CAAC,KAAK,CAAC,0EAA0E,EAAE;4BACtF,KAAK,EAAE,CAAC;yBACX,CAAC,CAAC;wBACH,eAAe,EAAE,CAAC;oBACtB,CAAC;4BAAS,CAAC;wBACP,gBAAgB,GAAG,IAAI,CAAC;oBAC5B,CAAC;gBACL,CAAC,CAAC,EAAE,CAAC;YACT,CAAC;YACD,OAAO,gBAAgB,CAAC;QAC5B,CAAC;KACJ,CAAC;AACN,CAAC","sourcesContent":["// Copyright LEAV Solutions 2017 until 2023/11/05, Copyright Aristid from 2023/11/06\n// This file is released under LGPL V3\n// License text available at https://www.gnu.org/licenses/lgpl-3.0.txt\nimport {isDevEnv} from '_ui/_utils/isDevEnv';\nimport {GLOBAL_BASE_URL} from '_ui/constants';\n\nexport default function useRedirectToLogin() {\n const redirectToLogin = () => {\n if (isDevEnv()) {\n return window.location.replace(\n `${window.location.origin}${GLOBAL_BASE_URL}/app/login/?dest=${encodeURIComponent(window.location.toString())}`,\n );\n }\n return window.location.reload();\n };\n\n // Avoid multiple simultaneous auth checks by sharing the same promise\n let authCheckPromise: Promise<void> | null = null;\n\n return {\n redirectToLogin,\n checkAuthOrRedirectToLogin: async () => {\n if (!authCheckPromise) {\n authCheckPromise = (async () => {\n try {\n const res = await fetch(`${GLOBAL_BASE_URL}/auth/login-checker`, {\n method: 'POST',\n });\n if (!res.ok) {\n throw new Error(res.statusText, {cause: res});\n }\n } catch (e) {\n console.error('An error occurred while checking authentication, redirecting to login...', {\n error: e,\n });\n redirectToLogin();\n } finally {\n authCheckPromise = null;\n }\n })();\n }\n return authCheckPromise;\n },\n };\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leav/ui",
3
- "version": "1.10.0-7414117e",
3
+ "version": "1.10.0-8a6786e5",
4
4
  "description": "Shared React components and hooks",
5
5
  "scripts": {
6
6
  "prepublishOnly": "yarn build",