@contember/react-identity 1.3.0-alpha.15 → 1.3.0-alpha.17
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.
- package/dist/development/components/HasRole.cjs +11 -3
- package/dist/development/components/HasRole.cjs.map +1 -1
- package/dist/development/components/HasRole.js +11 -3
- package/dist/development/components/HasRole.js.map +1 -1
- package/dist/development/components/IdentityProvider.cjs +18 -2
- package/dist/development/components/IdentityProvider.cjs.map +1 -1
- package/dist/development/components/IdentityProvider.js +18 -2
- package/dist/development/components/IdentityProvider.js.map +1 -1
- package/dist/development/components/IdentityState.cjs +6 -1
- package/dist/development/components/IdentityState.cjs.map +1 -1
- package/dist/development/components/IdentityState.js +6 -1
- package/dist/development/components/IdentityState.js.map +1 -1
- package/dist/development/components/LogoutTrigger.cjs +6 -2
- package/dist/development/components/LogoutTrigger.cjs.map +1 -1
- package/dist/development/components/LogoutTrigger.js +6 -2
- package/dist/development/components/LogoutTrigger.js.map +1 -1
- package/dist/development/hooks/useFetchIdentity.cjs +18 -17
- package/dist/development/hooks/useFetchIdentity.cjs.map +1 -1
- package/dist/development/hooks/useFetchIdentity.js +18 -17
- package/dist/development/hooks/useFetchIdentity.js.map +1 -1
- package/dist/production/components/IdentityState.cjs +2 -1
- package/dist/production/components/IdentityState.cjs.map +1 -1
- package/dist/production/components/IdentityState.js +2 -1
- package/dist/production/components/IdentityState.js.map +1 -1
- package/dist/production/hooks/useFetchIdentity.cjs +18 -17
- package/dist/production/hooks/useFetchIdentity.cjs.map +1 -1
- package/dist/production/hooks/useFetchIdentity.js +18 -17
- package/dist/production/hooks/useFetchIdentity.js.map +1 -1
- package/dist/types/components/IdentityState.d.ts +1 -1
- package/dist/types/components/IdentityState.d.ts.map +1 -1
- package/dist/types/hooks/useFetchIdentity.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/IdentityState.tsx +2 -2
- package/src/hooks/useFetchIdentity.ts +18 -17
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
4
|
const reactBinding = require("@contember/react-binding");
|
|
5
5
|
const useProjectUserRoles = require("../hooks/useProjectUserRoles.cjs");
|
|
6
6
|
const IdentityEnvironmentExtension = require("../environment/IdentityEnvironmentExtension.cjs");
|
|
7
7
|
const ProjectEnvironmentExtension = require("../environment/ProjectEnvironmentExtension.cjs");
|
|
8
8
|
const HasRole = reactBinding.Component(({ children, role }) => {
|
|
9
9
|
const projectRoles = useProjectUserRoles.useProjectUserRoles();
|
|
10
|
-
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */
|
|
10
|
+
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children }, void 0, false, {
|
|
11
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/HasRole.tsx",
|
|
12
|
+
lineNumber: 19,
|
|
13
|
+
columnNumber: 49
|
|
14
|
+
}, void 0) : null;
|
|
11
15
|
}, ({ children, role }, env) => {
|
|
12
16
|
const identity = env.getExtension(IdentityEnvironmentExtension.identityEnvironmentExtension).identity;
|
|
13
17
|
const project = env.getExtension(ProjectEnvironmentExtension.projectEnvironmentExtension).slug;
|
|
14
18
|
const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
|
|
15
|
-
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */
|
|
19
|
+
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children }, void 0, false, {
|
|
20
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/HasRole.tsx",
|
|
21
|
+
lineNumber: 25,
|
|
22
|
+
columnNumber: 49
|
|
23
|
+
}, void 0) : null;
|
|
16
24
|
});
|
|
17
25
|
const evaluateCondition = (condition, roles) => {
|
|
18
26
|
if (typeof condition === "string") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HasRole.cjs","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["Component","useProjectUserRoles","
|
|
1
|
+
{"version":3,"file":"HasRole.cjs","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["Component","useProjectUserRoles","this","identityEnvironmentExtension","projectEnvironmentExtension"],"mappings":";;;;;;;AAeO,MAAM,UAAUA,aAAAA,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAeC,oBAAAA;AAErB,SAAO,kBAAkB,MAAM,YAAY,mEAAO,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAAY,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAaC,6BAA4B,4BAAA,EAAE;AAChE,QAAM,UAAU,IAAI,aAAaC,4BAA2B,2BAAA,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,KAAK,CAAM,OAAA,GAAG,SAAS,OAAO,GAAG,SAAS,CAAE,CAAA;AAE5F,SAAO,kBAAkB,MAAM,YAAY,mEAAO,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAF,MAAY,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AACvE,MAAA,OAAO,cAAc,UAAU;AAC3B,WAAA,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;;"}
|
|
@@ -1,16 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
|
|
2
2
|
import { Component } from "@contember/react-binding";
|
|
3
3
|
import { useProjectUserRoles } from "../hooks/useProjectUserRoles.js";
|
|
4
4
|
import { identityEnvironmentExtension } from "../environment/IdentityEnvironmentExtension.js";
|
|
5
5
|
import { projectEnvironmentExtension } from "../environment/ProjectEnvironmentExtension.js";
|
|
6
6
|
const HasRole = Component(({ children, role }) => {
|
|
7
7
|
const projectRoles = useProjectUserRoles();
|
|
8
|
-
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */
|
|
8
|
+
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDEV(Fragment, { children }, void 0, false, {
|
|
9
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/HasRole.tsx",
|
|
10
|
+
lineNumber: 19,
|
|
11
|
+
columnNumber: 49
|
|
12
|
+
}, void 0) : null;
|
|
9
13
|
}, ({ children, role }, env) => {
|
|
10
14
|
const identity = env.getExtension(identityEnvironmentExtension).identity;
|
|
11
15
|
const project = env.getExtension(projectEnvironmentExtension).slug;
|
|
12
16
|
const projectRoles = new Set(identity?.projects.find((it) => it.slug === project)?.roles ?? []);
|
|
13
|
-
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */
|
|
17
|
+
return evaluateCondition(role, projectRoles) ? /* @__PURE__ */ jsxDEV(Fragment, { children }, void 0, false, {
|
|
18
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/HasRole.tsx",
|
|
19
|
+
lineNumber: 25,
|
|
20
|
+
columnNumber: 49
|
|
21
|
+
}, void 0) : null;
|
|
14
22
|
});
|
|
15
23
|
const evaluateCondition = (condition, roles) => {
|
|
16
24
|
if (typeof condition === "string") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HasRole.js","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":[],"mappings":";;;;;AAeO,MAAM,UAAU,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAe;AAErB,SAAO,kBAAkB,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"HasRole.js","sources":["../../../src/components/HasRole.tsx"],"sourcesContent":["import { Component } from '@contember/react-binding'\nimport { ReactNode } from 'react'\nimport { useProjectUserRoles } from '../hooks'\nimport { identityEnvironmentExtension, projectEnvironmentExtension } from '../environment'\n\nexport type RoleCondition = string | ((roles: Set<string>) => boolean)\n\nexport interface HasRoleProps {\n\tchildren?: ReactNode\n\trole: RoleCondition\n}\n\n/**\n * @group Logic Components\n */\nexport const HasRole = Component<HasRoleProps>(({ children, role }) => {\n\tconst projectRoles = useProjectUserRoles()\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n}, ({ children, role }, env) => {\n\tconst identity = env.getExtension(identityEnvironmentExtension).identity\n\tconst project = env.getExtension(projectEnvironmentExtension).slug\n\tconst projectRoles = new Set(identity?.projects.find(it => it.slug === project)?.roles ?? [])\n\n\treturn evaluateCondition(role, projectRoles) ? <>{children}</> : null\n})\n\nconst evaluateCondition = (condition: RoleCondition, roles: Set<string>) => {\n\tif (typeof condition === 'string') {\n\t\treturn roles.has(condition)\n\t}\n\treturn condition(roles)\n}\n"],"names":["this"],"mappings":";;;;;AAeO,MAAM,UAAU,UAAwB,CAAC,EAAE,UAAU,WAAW;AACtE,QAAM,eAAe;AAErB,SAAO,kBAAkB,MAAM,YAAY,uCAAO,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAY,IAAM;AAClE,GAAG,CAAC,EAAE,UAAU,KAAA,GAAQ,QAAQ;AAC/B,QAAM,WAAW,IAAI,aAAa,4BAA4B,EAAE;AAChE,QAAM,UAAU,IAAI,aAAa,2BAA2B,EAAE;AAC9D,QAAM,eAAe,IAAI,IAAI,UAAU,SAAS,KAAK,CAAM,OAAA,GAAG,SAAS,OAAO,GAAG,SAAS,CAAE,CAAA;AAE5F,SAAO,kBAAkB,MAAM,YAAY,uCAAO,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAY,IAAM;AAClE,CAAC;AAED,MAAM,oBAAoB,CAAC,WAA0B,UAAuB;AACvE,MAAA,OAAO,cAAc,UAAU;AAC3B,WAAA,MAAM,IAAI,SAAS;AAAA,EAC3B;AACA,SAAO,UAAU,KAAK;AACvB;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
4
|
const reactClient = require("@contember/react-client");
|
|
5
5
|
const react = require("react");
|
|
6
6
|
const reactBinding = require("@contember/react-binding");
|
|
@@ -21,7 +21,23 @@ const IdentityProvider = ({ children }) => {
|
|
|
21
21
|
},
|
|
22
22
|
[sessionToken, refreshIdentity, clearIdentity]
|
|
23
23
|
);
|
|
24
|
-
return /* @__PURE__ */
|
|
24
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.IdentityStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.IdentityContext.Provider, { value: identity, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(contexts.IdentityMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactBinding.EnvironmentExtensionProvider, { extension: IdentityEnvironmentExtension.identityEnvironmentExtension, state: identity ?? null, children }, void 0, false, {
|
|
25
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
26
|
+
lineNumber: 33,
|
|
27
|
+
columnNumber: 6
|
|
28
|
+
}, void 0) }, void 0, false, {
|
|
29
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
30
|
+
lineNumber: 32,
|
|
31
|
+
columnNumber: 5
|
|
32
|
+
}, void 0) }, void 0, false, {
|
|
33
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
34
|
+
lineNumber: 31,
|
|
35
|
+
columnNumber: 4
|
|
36
|
+
}, void 0) }, void 0, false, {
|
|
37
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
38
|
+
lineNumber: 30,
|
|
39
|
+
columnNumber: 3
|
|
40
|
+
}, void 0);
|
|
25
41
|
};
|
|
26
42
|
exports.IdentityProvider = IdentityProvider;
|
|
27
43
|
//# sourceMappingURL=IdentityProvider.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.cjs","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":["useSessionToken","useFetchIdentity","useEffect","
|
|
1
|
+
{"version":3,"file":"IdentityProvider.cjs","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":["useSessionToken","useFetchIdentity","useEffect","jsxDEV","IdentityStateContext","IdentityContext","IdentityMethodsContext","EnvironmentExtensionProvider","identityEnvironmentExtension","this"],"mappings":";;;;;;;;;AAYO,MAAM,mBAAoD,CAAC,EAAE,eAAe;AAClF,QAAM,eAAeA,YAAAA;AACrB,QAAM,CAAC,EAAE,UAAU,MAAS,GAAA,OAAO,IAAIC,iBAAAA;AAEjC,QAAA,EAAE,iBAAiB,cAAkB,IAAA;AAC3CC,QAAA;AAAA,IACC,MAAM;AACL,UAAI,iBAAiB,QAAW;AACf;MAAA,OACV;AACQ;MACf;AAAA,IACD;AAAA,IACA,CAAC,cAAc,iBAAiB,aAAa;AAAA,EAAA;AAI7C,SAAAC,8BAAAA,OAACC,SAAAA,qBAAqB,UAArB,EAA8B,OAAO,OACrC,UAACD,8BAAA,OAAAE,SAAA,gBAAgB,UAAhB,EAAyB,OAAO,UAChC,+CAACC,SAAuB,uBAAA,UAAvB,EAAgC,OAAO,SACvC,UAAAH,8BAAAA,OAACI,aAAAA,8BAA6B,EAAA,WAAWC,6BAA8B,8BAAA,OAAO,YAAY,MACxF,SADF,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAQA,GAAAA,MAAA;AAEF;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
2
|
import { useSessionToken } from "@contember/react-client";
|
|
3
3
|
import { useEffect } from "react";
|
|
4
4
|
import { EnvironmentExtensionProvider } from "@contember/react-binding";
|
|
@@ -19,7 +19,23 @@ const IdentityProvider = ({ children }) => {
|
|
|
19
19
|
},
|
|
20
20
|
[sessionToken, refreshIdentity, clearIdentity]
|
|
21
21
|
);
|
|
22
|
-
return /* @__PURE__ */
|
|
22
|
+
return /* @__PURE__ */ jsxDEV(IdentityStateContext.Provider, { value: state, children: /* @__PURE__ */ jsxDEV(IdentityContext.Provider, { value: identity, children: /* @__PURE__ */ jsxDEV(IdentityMethodsContext.Provider, { value: methods, children: /* @__PURE__ */ jsxDEV(EnvironmentExtensionProvider, { extension: identityEnvironmentExtension, state: identity ?? null, children }, void 0, false, {
|
|
23
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
24
|
+
lineNumber: 33,
|
|
25
|
+
columnNumber: 6
|
|
26
|
+
}, void 0) }, void 0, false, {
|
|
27
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
28
|
+
lineNumber: 32,
|
|
29
|
+
columnNumber: 5
|
|
30
|
+
}, void 0) }, void 0, false, {
|
|
31
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
32
|
+
lineNumber: 31,
|
|
33
|
+
columnNumber: 4
|
|
34
|
+
}, void 0) }, void 0, false, {
|
|
35
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityProvider.tsx",
|
|
36
|
+
lineNumber: 30,
|
|
37
|
+
columnNumber: 3
|
|
38
|
+
}, void 0);
|
|
23
39
|
};
|
|
24
40
|
export {
|
|
25
41
|
IdentityProvider
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityProvider.js","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":[],"mappings":";;;;;;;AAYO,MAAM,mBAAoD,CAAC,EAAE,eAAe;AAClF,QAAM,eAAe;AACrB,QAAM,CAAC,EAAE,UAAU,MAAS,GAAA,OAAO,IAAI;AAEjC,QAAA,EAAE,iBAAiB,cAAkB,IAAA;AAC3C;AAAA,IACC,MAAM;AACL,UAAI,iBAAiB,QAAW;AACf;MAAA,OACV;AACQ;MACf;AAAA,IACD;AAAA,IACA,CAAC,cAAc,iBAAiB,aAAa;AAAA,EAAA;
|
|
1
|
+
{"version":3,"file":"IdentityProvider.js","sources":["../../../src/components/IdentityProvider.tsx"],"sourcesContent":["import { useSessionToken } from '@contember/react-client'\nimport { ReactNode, useEffect } from 'react'\nimport { EnvironmentExtensionProvider } from '@contember/react-binding'\nimport { useFetchIdentity } from '../hooks'\nimport { IdentityContext, IdentityMethodsContext, IdentityStateContext } from '../internal/contexts'\nimport { identityEnvironmentExtension } from '../environment/IdentityEnvironmentExtension'\n\n\nexport interface IdentityProviderProps {\n\tchildren: ReactNode\n}\n\nexport const IdentityProvider: React.FC<IdentityProviderProps> = ({ children }) => {\n\tconst sessionToken = useSessionToken()\n\tconst [{ identity, state }, methods] = useFetchIdentity()\n\n\tconst { refreshIdentity, clearIdentity } = methods\n\tuseEffect(\n\t\t() => {\n\t\t\tif (sessionToken !== undefined) {\n\t\t\t\trefreshIdentity()\n\t\t\t} else {\n\t\t\t\tclearIdentity()\n\t\t\t}\n\t\t},\n\t\t[sessionToken, refreshIdentity, clearIdentity],\n\t)\n\n\treturn (\n\t\t<IdentityStateContext.Provider value={state}>\n\t\t\t<IdentityContext.Provider value={identity}>\n\t\t\t\t<IdentityMethodsContext.Provider value={methods}>\n\t\t\t\t\t<EnvironmentExtensionProvider extension={identityEnvironmentExtension} state={identity ?? null}>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</EnvironmentExtensionProvider>\n\t\t\t\t</IdentityMethodsContext.Provider>\n\t\t\t</IdentityContext.Provider>\n\t\t</IdentityStateContext.Provider>\n\t)\n}\n"],"names":["this"],"mappings":";;;;;;;AAYO,MAAM,mBAAoD,CAAC,EAAE,eAAe;AAClF,QAAM,eAAe;AACrB,QAAM,CAAC,EAAE,UAAU,MAAS,GAAA,OAAO,IAAI;AAEjC,QAAA,EAAE,iBAAiB,cAAkB,IAAA;AAC3C;AAAA,IACC,MAAM;AACL,UAAI,iBAAiB,QAAW;AACf;MAAA,OACV;AACQ;MACf;AAAA,IACD;AAAA,IACA,CAAC,cAAc,iBAAiB,aAAa;AAAA,EAAA;AAI7C,SAAA,uBAAC,qBAAqB,UAArB,EAA8B,OAAO,OACrC,UAAC,uBAAA,gBAAgB,UAAhB,EAAyB,OAAO,UAChC,iCAAC,uBAAuB,UAAvB,EAAgC,OAAO,SACvC,UAAA,uBAAC,8BAA6B,EAAA,WAAW,8BAA8B,OAAO,YAAY,MACxF,SADF,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAEA,EAHD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAIA,EALD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAMA,EAPD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAQA,GAAAA,MAAA;AAEF;"}
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
3
4
|
const contexts = require("../internal/contexts.cjs");
|
|
4
5
|
const IdentityState = ({ state, children }) => {
|
|
5
6
|
const currentState = contexts.useIdentityState();
|
|
6
|
-
return state === currentState || Array.isArray(state) && state.includes(currentState) ? children
|
|
7
|
+
return state === currentState || Array.isArray(state) && state.includes(currentState) ? /* @__PURE__ */ jsxDevRuntime.jsxDEV(jsxDevRuntime.Fragment, { children }, void 0, false, {
|
|
8
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityState.tsx",
|
|
9
|
+
lineNumber: 13,
|
|
10
|
+
columnNumber: 92
|
|
11
|
+
}, void 0) : null;
|
|
7
12
|
};
|
|
8
13
|
exports.IdentityState = IdentityState;
|
|
9
14
|
//# sourceMappingURL=IdentityState.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityState.cjs","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":["useIdentityState"],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentityState.cjs","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? <>{children}</> : null\n}\n"],"names":["useIdentityState","jsxDEV","Fragment","this"],"mappings":";;;;AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAeA,SAAAA;AAEd,SAAA,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAKC,8BAAA,OAAAC,wBAAA,EAAG,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAC,MAAY,IAAM;AAC7G;;"}
|
|
@@ -1,7 +1,12 @@
|
|
|
1
|
+
import { jsxDEV, Fragment } from "react/jsx-dev-runtime";
|
|
1
2
|
import { useIdentityState } from "../internal/contexts.js";
|
|
2
3
|
const IdentityState = ({ state, children }) => {
|
|
3
4
|
const currentState = useIdentityState();
|
|
4
|
-
return state === currentState || Array.isArray(state) && state.includes(currentState) ? children
|
|
5
|
+
return state === currentState || Array.isArray(state) && state.includes(currentState) ? /* @__PURE__ */ jsxDEV(Fragment, { children }, void 0, false, {
|
|
6
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/IdentityState.tsx",
|
|
7
|
+
lineNumber: 13,
|
|
8
|
+
columnNumber: 92
|
|
9
|
+
}, void 0) : null;
|
|
5
10
|
};
|
|
6
11
|
export {
|
|
7
12
|
IdentityState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityState.js","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentityState.js","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? <>{children}</> : null\n}\n"],"names":["this"],"mappings":";;AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAe;AAEd,SAAA,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAK,uBAAA,UAAA,EAAG,SAAH,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAA,GAAAA,MAAY,IAAM;AAC7G;"}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
3
|
+
const jsxDevRuntime = require("react/jsx-dev-runtime");
|
|
4
4
|
const react = require("react");
|
|
5
5
|
const reactSlot = require("@radix-ui/react-slot");
|
|
6
6
|
const useLogout = require("../hooks/useLogout.cjs");
|
|
7
7
|
const LogoutTrigger = ({ children }) => {
|
|
8
8
|
const logout = useLogout.useLogout();
|
|
9
|
-
return /* @__PURE__ */
|
|
9
|
+
return /* @__PURE__ */ jsxDevRuntime.jsxDEV(reactSlot.Slot, { onClick: react.useCallback(() => logout(), [logout]), children }, void 0, false, {
|
|
10
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/LogoutTrigger.tsx",
|
|
11
|
+
lineNumber: 9,
|
|
12
|
+
columnNumber: 9
|
|
13
|
+
}, void 0);
|
|
10
14
|
};
|
|
11
15
|
exports.LogoutTrigger = LogoutTrigger;
|
|
12
16
|
//# sourceMappingURL=LogoutTrigger.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoutTrigger.cjs","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":["useLogout","
|
|
1
|
+
{"version":3,"file":"LogoutTrigger.cjs","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":["useLogout","jsxDEV","Slot","useCallback","this"],"mappings":";;;;;;AAIO,MAAM,gBAAgB,CAAC,EAAE,eAE1B;AACL,QAAM,SAASA,UAAAA;AACR,SAAAC,8BAAA,OAACC,UAAK,MAAA,EAAA,SAASC,MAAAA,YAAY,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAI,SAAvD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAgE,GAAAC,MAAA;AACxE;;"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
2
2
|
import { useCallback } from "react";
|
|
3
3
|
import { Slot } from "@radix-ui/react-slot";
|
|
4
4
|
import { useLogout } from "../hooks/useLogout.js";
|
|
5
5
|
const LogoutTrigger = ({ children }) => {
|
|
6
6
|
const logout = useLogout();
|
|
7
|
-
return /* @__PURE__ */
|
|
7
|
+
return /* @__PURE__ */ jsxDEV(Slot, { onClick: useCallback(() => logout(), [logout]), children }, void 0, false, {
|
|
8
|
+
fileName: "/__w/interface/interface/packages/react-identity/src/components/LogoutTrigger.tsx",
|
|
9
|
+
lineNumber: 9,
|
|
10
|
+
columnNumber: 9
|
|
11
|
+
}, void 0);
|
|
8
12
|
};
|
|
9
13
|
export {
|
|
10
14
|
LogoutTrigger
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoutTrigger.js","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":[],"mappings":";;;;AAIO,MAAM,gBAAgB,CAAC,EAAE,eAE1B;AACL,QAAM,SAAS;AACR,SAAA,
|
|
1
|
+
{"version":3,"file":"LogoutTrigger.js","sources":["../../../src/components/LogoutTrigger.tsx"],"sourcesContent":["import { ReactNode, useCallback } from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { useLogout } from '../hooks'\n\nexport const LogoutTrigger = ({ children }: {\n\tchildren: ReactNode\n}) => {\n\tconst logout = useLogout()\n\treturn <Slot onClick={useCallback(() => logout(), [logout])}>{children}</Slot>\n}\n"],"names":["this"],"mappings":";;;;AAIO,MAAM,gBAAgB,CAAC,EAAE,eAE1B;AACL,QAAM,SAAS;AACR,SAAA,uBAAC,MAAK,EAAA,SAAS,YAAY,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,GAAI,SAAvD,GAAA,QAAA,OAAA;AAAA,IAAA,UAAA;AAAA,IAAA,YAAA;AAAA,IAAA,cAAA;AAAA,EAAgE,GAAAA,MAAA;AACxE;"}
|
|
@@ -7,40 +7,41 @@ const useLogoutInternal = require("../internal/hooks/useLogoutInternal.cjs");
|
|
|
7
7
|
const useFetchIdentity = () => {
|
|
8
8
|
const sessionToken = reactClient.useSessionToken();
|
|
9
9
|
const fetchMe = useFetchMe.useFetchMe();
|
|
10
|
-
const [identityState, setIdentityState] = react.useState(sessionToken ? "loading" : "none");
|
|
11
|
-
const
|
|
12
|
-
const clearIdentity = react.useCallback(() => setIdentityState("cleared"), []);
|
|
10
|
+
const [identityState, setIdentityState] = react.useState({ state: sessionToken ? "loading" : "none", identity: void 0 });
|
|
11
|
+
const clearIdentity = react.useCallback(() => setIdentityState({ state: "cleared", identity: void 0 }), []);
|
|
13
12
|
const logout = useLogoutInternal.useLogoutInternal(clearIdentity);
|
|
14
13
|
const fetch = react.useCallback(async () => {
|
|
15
|
-
setIdentityState("loading");
|
|
14
|
+
setIdentityState({ state: "loading", identity: void 0 });
|
|
16
15
|
try {
|
|
17
16
|
const response = await fetchMe();
|
|
18
17
|
const person = response.person;
|
|
19
18
|
const projects = response.projects;
|
|
20
19
|
const permissions = response.permissions ?? { canCreateProject: false };
|
|
21
|
-
setIdentityState(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
setIdentityState({
|
|
21
|
+
state: "success",
|
|
22
|
+
identity: {
|
|
23
|
+
id: response.id,
|
|
24
|
+
person: person ?? void 0,
|
|
25
|
+
projects: projects.map((it) => ({
|
|
26
|
+
name: it.project.name,
|
|
27
|
+
slug: it.project.slug,
|
|
28
|
+
roles: it.memberships.map((it2) => it2.role)
|
|
29
|
+
})),
|
|
30
|
+
permissions
|
|
31
|
+
}
|
|
31
32
|
});
|
|
32
33
|
} catch (e) {
|
|
33
34
|
console.error(e);
|
|
34
35
|
if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
|
|
35
36
|
logout({ noRedirect: true });
|
|
36
|
-
setIdentityState("cleared");
|
|
37
|
+
setIdentityState({ state: "cleared", identity: void 0 });
|
|
37
38
|
} else {
|
|
38
|
-
setIdentityState("failed");
|
|
39
|
+
setIdentityState({ state: "failed", identity: void 0 });
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
}, [fetchMe, logout]);
|
|
42
43
|
return [
|
|
43
|
-
|
|
44
|
+
identityState,
|
|
44
45
|
react.useMemo(() => ({
|
|
45
46
|
clearIdentity,
|
|
46
47
|
refreshIdentity: fetch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchIdentity.cjs","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<
|
|
1
|
+
{"version":3,"file":"useFetchIdentity.cjs","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<ReturnType<typeof useFetchIdentity>[0]>({ state: sessionToken ? 'loading' : 'none', identity: undefined })\n\n\tconst clearIdentity = useCallback(() => setIdentityState({ state: 'cleared', identity: undefined }), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState({ state: 'loading', identity: undefined })\n\t\ttry {\n\t\t\tconst response = await fetchMe()\n\t\t\tconst person = response.person\n\t\t\tconst projects = response.projects\n\t\t\tconst permissions = response.permissions ?? { canCreateProject: false }\n\n\t\t\tsetIdentityState({\n\t\t\t\tstate: 'success',\n\t\t\t\tidentity: {\n\t\t\t\t\tid: response.id,\n\t\t\t\t\tperson: person ?? undefined,\n\t\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\t\tname: it.project.name,\n\t\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t\t})),\n\t\t\t\t\tpermissions,\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\tif (typeof e === 'object' && e !== null && 'status' in e && (e as { status?: unknown }).status === 401) {\n\t\t\t\tlogout({ noRedirect: true })\n\t\t\t\tsetIdentityState({ state: 'cleared', identity: undefined })\n\t\t\t} else {\n\t\t\t\tsetIdentityState({ state: 'failed', identity: undefined })\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\tidentityState,\n\t\tuseMemo((): IdentityMethods => ({\n\t\t\tclearIdentity,\n\t\t\trefreshIdentity: fetch,\n\t\t}), [clearIdentity, fetch]),\n\t]\n}\n"],"names":["useSessionToken","useFetchMe","useState","useCallback","useLogoutInternal","it","useMemo"],"mappings":";;;;;;AAMO,MAAM,mBAAmB,MAAwF;AACvH,QAAM,eAAeA,YAAAA;AACrB,QAAM,UAAUC,WAAAA;AAEhB,QAAM,CAAC,eAAe,gBAAgB,IAAIC,MAAAA,SAAiD,EAAE,OAAO,eAAe,YAAY,QAAQ,UAAU,OAAW,CAAA;AAE5J,QAAM,gBAAgBC,MAAAA,YAAY,MAAM,iBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW,GAAG,CAAE,CAAA;AACjG,QAAA,SAASC,oCAAkB,aAAa;AAExC,QAAA,QAAQD,MAAAA,YAAY,YAAY;AACrC,qBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AACtD,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAErD,uBAAA;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,UACT,IAAI,SAAS;AAAA,UACb,QAAQ,UAAU;AAAA,UAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,YAC7B,MAAM,GAAG,QAAQ;AAAA,YACjB,MAAM,GAAG,QAAQ;AAAA,YACjB,OAAO,GAAG,YAAY,IAAI,CAAAE,QAAMA,IAAG,IAAI;AAAA,UAAA,EACtC;AAAA,UACF;AAAA,QACD;AAAA,MAAA,CACA;AAAA,aACO,GAAG;AACX,cAAQ,MAAM,CAAC;AACX,UAAA,OAAO,MAAM,YAAY,MAAM,QAAQ,YAAY,KAAM,EAA2B,WAAW,KAAK;AAChG,eAAA,EAAE,YAAY,KAAA,CAAM;AAC3B,yBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AAAA,MAAA,OACpD;AACN,yBAAiB,EAAE,OAAO,UAAU,UAAU,QAAW;AAAA,MAC1D;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN;AAAA,IACAC,MAAAA,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;;"}
|
|
@@ -5,40 +5,41 @@ import { useLogoutInternal } from "../internal/hooks/useLogoutInternal.js";
|
|
|
5
5
|
const useFetchIdentity = () => {
|
|
6
6
|
const sessionToken = useSessionToken();
|
|
7
7
|
const fetchMe = useFetchMe();
|
|
8
|
-
const [identityState, setIdentityState] = useState(sessionToken ? "loading" : "none");
|
|
9
|
-
const
|
|
10
|
-
const clearIdentity = useCallback(() => setIdentityState("cleared"), []);
|
|
8
|
+
const [identityState, setIdentityState] = useState({ state: sessionToken ? "loading" : "none", identity: void 0 });
|
|
9
|
+
const clearIdentity = useCallback(() => setIdentityState({ state: "cleared", identity: void 0 }), []);
|
|
11
10
|
const logout = useLogoutInternal(clearIdentity);
|
|
12
11
|
const fetch = useCallback(async () => {
|
|
13
|
-
setIdentityState("loading");
|
|
12
|
+
setIdentityState({ state: "loading", identity: void 0 });
|
|
14
13
|
try {
|
|
15
14
|
const response = await fetchMe();
|
|
16
15
|
const person = response.person;
|
|
17
16
|
const projects = response.projects;
|
|
18
17
|
const permissions = response.permissions ?? { canCreateProject: false };
|
|
19
|
-
setIdentityState(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
setIdentityState({
|
|
19
|
+
state: "success",
|
|
20
|
+
identity: {
|
|
21
|
+
id: response.id,
|
|
22
|
+
person: person ?? void 0,
|
|
23
|
+
projects: projects.map((it) => ({
|
|
24
|
+
name: it.project.name,
|
|
25
|
+
slug: it.project.slug,
|
|
26
|
+
roles: it.memberships.map((it2) => it2.role)
|
|
27
|
+
})),
|
|
28
|
+
permissions
|
|
29
|
+
}
|
|
29
30
|
});
|
|
30
31
|
} catch (e) {
|
|
31
32
|
console.error(e);
|
|
32
33
|
if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
|
|
33
34
|
logout({ noRedirect: true });
|
|
34
|
-
setIdentityState("cleared");
|
|
35
|
+
setIdentityState({ state: "cleared", identity: void 0 });
|
|
35
36
|
} else {
|
|
36
|
-
setIdentityState("failed");
|
|
37
|
+
setIdentityState({ state: "failed", identity: void 0 });
|
|
37
38
|
}
|
|
38
39
|
}
|
|
39
40
|
}, [fetchMe, logout]);
|
|
40
41
|
return [
|
|
41
|
-
|
|
42
|
+
identityState,
|
|
42
43
|
useMemo(() => ({
|
|
43
44
|
clearIdentity,
|
|
44
45
|
refreshIdentity: fetch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchIdentity.js","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<
|
|
1
|
+
{"version":3,"file":"useFetchIdentity.js","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<ReturnType<typeof useFetchIdentity>[0]>({ state: sessionToken ? 'loading' : 'none', identity: undefined })\n\n\tconst clearIdentity = useCallback(() => setIdentityState({ state: 'cleared', identity: undefined }), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState({ state: 'loading', identity: undefined })\n\t\ttry {\n\t\t\tconst response = await fetchMe()\n\t\t\tconst person = response.person\n\t\t\tconst projects = response.projects\n\t\t\tconst permissions = response.permissions ?? { canCreateProject: false }\n\n\t\t\tsetIdentityState({\n\t\t\t\tstate: 'success',\n\t\t\t\tidentity: {\n\t\t\t\t\tid: response.id,\n\t\t\t\t\tperson: person ?? undefined,\n\t\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\t\tname: it.project.name,\n\t\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t\t})),\n\t\t\t\t\tpermissions,\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\tif (typeof e === 'object' && e !== null && 'status' in e && (e as { status?: unknown }).status === 401) {\n\t\t\t\tlogout({ noRedirect: true })\n\t\t\t\tsetIdentityState({ state: 'cleared', identity: undefined })\n\t\t\t} else {\n\t\t\t\tsetIdentityState({ state: 'failed', identity: undefined })\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\tidentityState,\n\t\tuseMemo((): IdentityMethods => ({\n\t\t\tclearIdentity,\n\t\t\trefreshIdentity: fetch,\n\t\t}), [clearIdentity, fetch]),\n\t]\n}\n"],"names":["it"],"mappings":";;;;AAMO,MAAM,mBAAmB,MAAwF;AACvH,QAAM,eAAe;AACrB,QAAM,UAAU;AAEhB,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAiD,EAAE,OAAO,eAAe,YAAY,QAAQ,UAAU,OAAW,CAAA;AAE5J,QAAM,gBAAgB,YAAY,MAAM,iBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW,GAAG,CAAE,CAAA;AACjG,QAAA,SAAS,kBAAkB,aAAa;AAExC,QAAA,QAAQ,YAAY,YAAY;AACrC,qBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AACtD,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAErD,uBAAA;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,UACT,IAAI,SAAS;AAAA,UACb,QAAQ,UAAU;AAAA,UAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,YAC7B,MAAM,GAAG,QAAQ;AAAA,YACjB,MAAM,GAAG,QAAQ;AAAA,YACjB,OAAO,GAAG,YAAY,IAAI,CAAAA,QAAMA,IAAG,IAAI;AAAA,UAAA,EACtC;AAAA,UACF;AAAA,QACD;AAAA,MAAA,CACA;AAAA,aACO,GAAG;AACX,cAAQ,MAAM,CAAC;AACX,UAAA,OAAO,MAAM,YAAY,MAAM,QAAQ,YAAY,KAAM,EAA2B,WAAW,KAAK;AAChG,eAAA,EAAE,YAAY,KAAA,CAAM;AAC3B,yBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AAAA,MAAA,OACpD;AACN,yBAAiB,EAAE,OAAO,UAAU,UAAU,QAAW;AAAA,MAC1D;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN;AAAA,IACA,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
4
|
const contexts = require("../internal/contexts.cjs");
|
|
4
5
|
const IdentityState = ({ state, children }) => {
|
|
5
6
|
const currentState = contexts.useIdentityState();
|
|
6
|
-
return state === currentState || Array.isArray(state) && state.includes(currentState) ? children : null;
|
|
7
|
+
return state === currentState || Array.isArray(state) && state.includes(currentState) ? /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children }) : null;
|
|
7
8
|
};
|
|
8
9
|
exports.IdentityState = IdentityState;
|
|
9
10
|
//# sourceMappingURL=IdentityState.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityState.cjs","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":["useIdentityState"],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentityState.cjs","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? <>{children}</> : null\n}\n"],"names":["useIdentityState","jsx","Fragment"],"mappings":";;;;AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAeA,SAAAA;AAErB,SAAO,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAQC,2BAAAA,IAAAC,WAAAA,UAAA,EAAA,SAAA,CAAS,IAAM;AAC7G;;"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { jsx, Fragment } from "react/jsx-runtime";
|
|
1
2
|
import { useIdentityState } from "../internal/contexts.js";
|
|
2
3
|
const IdentityState = ({ state, children }) => {
|
|
3
4
|
const currentState = useIdentityState();
|
|
4
|
-
return state === currentState || Array.isArray(state) && state.includes(currentState) ? children : null;
|
|
5
|
+
return state === currentState || Array.isArray(state) && state.includes(currentState) ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
|
|
5
6
|
};
|
|
6
7
|
export {
|
|
7
8
|
IdentityState
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IdentityState.js","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? children : null\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IdentityState.js","sources":["../../../src/components/IdentityState.tsx"],"sourcesContent":["import React, { ReactNode } from 'react'\nimport { IdentityStateValue } from '../types'\nimport { useIdentityState } from '../internal/contexts'\n\nexport interface IdentityStateProps {\n\tstate: IdentityStateValue | IdentityStateValue[]\n\tchildren: ReactNode\n}\n\nexport const IdentityState = ({ state, children }: IdentityStateProps) => {\n\tconst currentState = useIdentityState()\n\n\treturn state === currentState || (Array.isArray(state) && state.includes(currentState)) ? <>{children}</> : null\n}\n"],"names":[],"mappings":";;AASO,MAAM,gBAAgB,CAAC,EAAE,OAAO,eAAmC;AACzE,QAAM,eAAe;AAErB,SAAO,UAAU,gBAAiB,MAAM,QAAQ,KAAK,KAAK,MAAM,SAAS,YAAY,IAAQ,oBAAA,UAAA,EAAA,SAAA,CAAS,IAAM;AAC7G;"}
|
|
@@ -7,40 +7,41 @@ const useLogoutInternal = require("../internal/hooks/useLogoutInternal.cjs");
|
|
|
7
7
|
const useFetchIdentity = () => {
|
|
8
8
|
const sessionToken = reactClient.useSessionToken();
|
|
9
9
|
const fetchMe = useFetchMe.useFetchMe();
|
|
10
|
-
const [identityState, setIdentityState] = react.useState(sessionToken ? "loading" : "none");
|
|
11
|
-
const
|
|
12
|
-
const clearIdentity = react.useCallback(() => setIdentityState("cleared"), []);
|
|
10
|
+
const [identityState, setIdentityState] = react.useState({ state: sessionToken ? "loading" : "none", identity: void 0 });
|
|
11
|
+
const clearIdentity = react.useCallback(() => setIdentityState({ state: "cleared", identity: void 0 }), []);
|
|
13
12
|
const logout = useLogoutInternal.useLogoutInternal(clearIdentity);
|
|
14
13
|
const fetch = react.useCallback(async () => {
|
|
15
|
-
setIdentityState("loading");
|
|
14
|
+
setIdentityState({ state: "loading", identity: void 0 });
|
|
16
15
|
try {
|
|
17
16
|
const response = await fetchMe();
|
|
18
17
|
const person = response.person;
|
|
19
18
|
const projects = response.projects;
|
|
20
19
|
const permissions = response.permissions ?? { canCreateProject: false };
|
|
21
|
-
setIdentityState(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
20
|
+
setIdentityState({
|
|
21
|
+
state: "success",
|
|
22
|
+
identity: {
|
|
23
|
+
id: response.id,
|
|
24
|
+
person: person ?? void 0,
|
|
25
|
+
projects: projects.map((it) => ({
|
|
26
|
+
name: it.project.name,
|
|
27
|
+
slug: it.project.slug,
|
|
28
|
+
roles: it.memberships.map((it2) => it2.role)
|
|
29
|
+
})),
|
|
30
|
+
permissions
|
|
31
|
+
}
|
|
31
32
|
});
|
|
32
33
|
} catch (e) {
|
|
33
34
|
console.error(e);
|
|
34
35
|
if (typeof e === "object" && e !== null && "status" in e && e.status === 401) {
|
|
35
36
|
logout({ noRedirect: true });
|
|
36
|
-
setIdentityState("cleared");
|
|
37
|
+
setIdentityState({ state: "cleared", identity: void 0 });
|
|
37
38
|
} else {
|
|
38
|
-
setIdentityState("failed");
|
|
39
|
+
setIdentityState({ state: "failed", identity: void 0 });
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
}, [fetchMe, logout]);
|
|
42
43
|
return [
|
|
43
|
-
|
|
44
|
+
identityState,
|
|
44
45
|
react.useMemo(() => ({
|
|
45
46
|
clearIdentity,
|
|
46
47
|
refreshIdentity: fetch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFetchIdentity.cjs","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<
|
|
1
|
+
{"version":3,"file":"useFetchIdentity.cjs","sources":["../../../src/hooks/useFetchIdentity.ts"],"sourcesContent":["import { useCallback, useMemo, useState } from 'react'\nimport { Identity, IdentityMethods, IdentityStateValue } from '../types'\nimport { useSessionToken } from '@contember/react-client'\nimport { useFetchMe } from '../internal/hooks/useFetchMe'\nimport { useLogoutInternal } from '../internal/hooks/useLogoutInternal'\n\nexport const useFetchIdentity = (): [{ state: IdentityStateValue, identity: Identity | undefined }, IdentityMethods] => {\n\tconst sessionToken = useSessionToken()\n\tconst fetchMe = useFetchMe()\n\n\tconst [identityState, setIdentityState] = useState<ReturnType<typeof useFetchIdentity>[0]>({ state: sessionToken ? 'loading' : 'none', identity: undefined })\n\n\tconst clearIdentity = useCallback(() => setIdentityState({ state: 'cleared', identity: undefined }), [])\n\tconst logout = useLogoutInternal(clearIdentity)\n\n\tconst fetch = useCallback(async () => {\n\t\tsetIdentityState({ state: 'loading', identity: undefined })\n\t\ttry {\n\t\t\tconst response = await fetchMe()\n\t\t\tconst person = response.person\n\t\t\tconst projects = response.projects\n\t\t\tconst permissions = response.permissions ?? { canCreateProject: false }\n\n\t\t\tsetIdentityState({\n\t\t\t\tstate: 'success',\n\t\t\t\tidentity: {\n\t\t\t\t\tid: response.id,\n\t\t\t\t\tperson: person ?? undefined,\n\t\t\t\t\tprojects: projects.map(it => ({\n\t\t\t\t\t\tname: it.project.name,\n\t\t\t\t\t\tslug: it.project.slug,\n\t\t\t\t\t\troles: it.memberships.map(it => it.role),\n\t\t\t\t\t})),\n\t\t\t\t\tpermissions,\n\t\t\t\t},\n\t\t\t})\n\t\t} catch (e) {\n\t\t\tconsole.error(e)\n\t\t\tif (typeof e === 'object' && e !== null && 'status' in e && (e as { status?: unknown }).status === 401) {\n\t\t\t\tlogout({ noRedirect: true })\n\t\t\t\tsetIdentityState({ state: 'cleared', identity: undefined })\n\t\t\t} else {\n\t\t\t\tsetIdentityState({ state: 'failed', identity: undefined })\n\t\t\t}\n\t\t}\n\t}, [fetchMe, logout])\n\n\treturn [\n\t\tidentityState,\n\t\tuseMemo((): IdentityMethods => ({\n\t\t\tclearIdentity,\n\t\t\trefreshIdentity: fetch,\n\t\t}), [clearIdentity, fetch]),\n\t]\n}\n"],"names":["useSessionToken","useFetchMe","useState","useCallback","useLogoutInternal","it","useMemo"],"mappings":";;;;;;AAMO,MAAM,mBAAmB,MAAwF;AACvH,QAAM,eAAeA,YAAAA;AACrB,QAAM,UAAUC,WAAAA;AAEhB,QAAM,CAAC,eAAe,gBAAgB,IAAIC,MAAAA,SAAiD,EAAE,OAAO,eAAe,YAAY,QAAQ,UAAU,OAAW,CAAA;AAE5J,QAAM,gBAAgBC,MAAAA,YAAY,MAAM,iBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW,GAAG,CAAE,CAAA;AACjG,QAAA,SAASC,oCAAkB,aAAa;AAExC,QAAA,QAAQD,MAAAA,YAAY,YAAY;AACrC,qBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AACtD,QAAA;AACG,YAAA,WAAW,MAAM;AACvB,YAAM,SAAS,SAAS;AACxB,YAAM,WAAW,SAAS;AAC1B,YAAM,cAAc,SAAS,eAAe,EAAE,kBAAkB,MAAM;AAErD,uBAAA;AAAA,QAChB,OAAO;AAAA,QACP,UAAU;AAAA,UACT,IAAI,SAAS;AAAA,UACb,QAAQ,UAAU;AAAA,UAClB,UAAU,SAAS,IAAI,CAAO,QAAA;AAAA,YAC7B,MAAM,GAAG,QAAQ;AAAA,YACjB,MAAM,GAAG,QAAQ;AAAA,YACjB,OAAO,GAAG,YAAY,IAAI,CAAAE,QAAMA,IAAG,IAAI;AAAA,UAAA,EACtC;AAAA,UACF;AAAA,QACD;AAAA,MAAA,CACA;AAAA,aACO,GAAG;AACX,cAAQ,MAAM,CAAC;AACX,UAAA,OAAO,MAAM,YAAY,MAAM,QAAQ,YAAY,KAAM,EAA2B,WAAW,KAAK;AAChG,eAAA,EAAE,YAAY,KAAA,CAAM;AAC3B,yBAAiB,EAAE,OAAO,WAAW,UAAU,QAAW;AAAA,MAAA,OACpD;AACN,yBAAiB,EAAE,OAAO,UAAU,UAAU,QAAW;AAAA,MAC1D;AAAA,IACD;AAAA,EAAA,GACE,CAAC,SAAS,MAAM,CAAC;AAEb,SAAA;AAAA,IACN;AAAA,IACAC,MAAAA,QAAQ,OAAwB;AAAA,MAC/B;AAAA,MACA,iBAAiB;AAAA,IAAA,IACd,CAAC,eAAe,KAAK,CAAC;AAAA,EAAA;AAE5B;;"}
|