@admin-layout/gluestack-ui-mobile 9.0.4-alpha.38 → 9.0.4-alpha.39

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.
Files changed (37) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/lib/components/AuthWrapper.d.ts +4 -2
  3. package/lib/components/AuthWrapper.js +5 -5
  4. package/lib/components/AuthWrapper.js.map +1 -1
  5. package/lib/components/WithConfiguration.d.ts +18 -0
  6. package/lib/components/WithConfiguration.js +41 -0
  7. package/lib/components/WithConfiguration.js.map +1 -0
  8. package/lib/components/WithPermission.d.ts +31 -0
  9. package/lib/components/WithPermission.js +56 -0
  10. package/lib/components/WithPermission.js.map +1 -0
  11. package/lib/components/WithPolicy.d.ts +13 -0
  12. package/lib/components/WithPolicy.js +18 -0
  13. package/lib/components/WithPolicy.js.map +1 -0
  14. package/lib/components/index.d.ts +5 -0
  15. package/lib/components/index.js +5 -0
  16. package/lib/components/index.js.map +1 -1
  17. package/lib/components/usePermissionAutoFetch.d.ts +63 -0
  18. package/lib/components/usePermissionAutoFetch.js +23 -0
  19. package/lib/components/usePermissionAutoFetch.js.map +1 -0
  20. package/lib/components/useSetting.d.ts +25 -0
  21. package/lib/components/useSetting.js +93 -0
  22. package/lib/components/useSetting.js.map +1 -0
  23. package/lib/components/with-interactions-lifecycle-managed.d.ts +3 -3
  24. package/lib/components/with-interactions-lifecycle-managed.js +19 -9
  25. package/lib/components/with-interactions-lifecycle-managed.js.map +1 -1
  26. package/lib/utils/generateMobileNavigations.js +150 -13
  27. package/lib/utils/generateMobileNavigations.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/components/AuthWrapper.tsx +5 -4
  30. package/src/components/WithConfiguration.tsx +73 -0
  31. package/src/components/WithPermission.tsx +85 -0
  32. package/src/components/WithPolicy.tsx +32 -0
  33. package/src/components/index.ts +6 -1
  34. package/src/components/usePermissionAutoFetch.tsx +27 -0
  35. package/src/components/useSetting.tsx +144 -0
  36. package/src/components/with-interactions-lifecycle-managed.tsx +56 -14
  37. package/src/utils/generateMobileNavigations.ts +175 -20
package/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [9.0.4-alpha.39](https://github.com/CDEBase/admin-layout/compare/v9.0.4-alpha.38...v9.0.4-alpha.39) (2024-10-17)
7
+
8
+ **Note:** Version bump only for package @admin-layout/gluestack-ui-mobile
9
+
6
10
  ## [9.0.4-alpha.38](https://github.com/CDEBase/admin-layout/compare/v9.0.4-alpha.37...v9.0.4-alpha.38) (2024-10-17)
7
11
 
8
12
  **Note:** Version bump only for package @admin-layout/gluestack-ui-mobile
@@ -1,2 +1,4 @@
1
- export declare const AuthWrapper: ({ auth, component, unauthenticatedComponent, withLifeCycle, withInteraction, withLifeCycleInteraction, }: any) => any;
2
- export default AuthWrapper;
1
+ import React from 'react';
2
+ export declare const AuthWrapper: ({ auth, component, unauthenticatedComponent, withLifeCycle, withInteraction, withLifeCycleInteraction, authority, }: any) => any;
3
+ declare const _default: React.MemoExoticComponent<({ auth, component, unauthenticatedComponent, withLifeCycle, withInteraction, withLifeCycleInteraction, authority, }: any) => any>;
4
+ export default _default;
@@ -4,7 +4,7 @@ import { useNavigation } from '@react-navigation/native';
4
4
  import { useSelector } from 'react-redux';
5
5
  import DefaultAuthComponent from './UnAuthenticatedComponent';
6
6
  import { withLifeCycleManaged, withInteractionsManaged, withLifeCycleInteractionsManaged, } from './with-interactions-lifecycle-managed';
7
- export const AuthWrapper = ({ auth = false, component, unauthenticatedComponent = null, withLifeCycle = null, withInteraction = null, withLifeCycleInteraction = null, }) => {
7
+ export const AuthWrapper = ({ auth = false, component, unauthenticatedComponent = null, withLifeCycle = null, withInteraction = null, withLifeCycleInteraction = null, authority = null, }) => {
8
8
  const user = useSelector((state) => state.user);
9
9
  const { authenticated } = isUserAuthenticated();
10
10
  const navigation = useNavigation();
@@ -13,16 +13,16 @@ export const AuthWrapper = ({ auth = false, component, unauthenticatedComponent
13
13
  navigation.navigate('MainStack.Login');
14
14
  }, [auth, user]);
15
15
  const wrapperComponent = withLifeCycle
16
- ? withLifeCycleManaged(component)
16
+ ? withLifeCycleManaged(component, authority)
17
17
  : withInteraction
18
- ? withInteractionsManaged(component, withInteraction?.duration ?? null)
18
+ ? withInteractionsManaged(component, withInteraction?.duration ?? null, authority)
19
19
  : withLifeCycleInteraction
20
- ? withLifeCycleInteractionsManaged(component, withLifeCycleInteraction?.duration ?? null)
20
+ ? withLifeCycleInteractionsManaged(component, withLifeCycleInteraction?.duration ?? null, authority)
21
21
  : component;
22
22
  if (auth && !user?.profile)
23
23
  return unauthenticatedComponent ? unauthenticatedComponent : React.createElement(DefaultAuthComponent, null);
24
24
  else
25
25
  return wrapperComponent;
26
26
  };
27
- export default AuthWrapper;
27
+ export default React.memo(AuthWrapper);
28
28
  //# sourceMappingURL=AuthWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuthWrapper.js","sourceRoot":"","sources":["../../src/components/AuthWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,GACnC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,IAAI,GAAG,KAAK,EACZ,SAAS,EACT,wBAAwB,GAAG,IAAI,EAC/B,aAAa,GAAG,IAAI,EACpB,eAAe,GAAG,IAAI,EACtB,wBAAwB,GAAG,IAAI,GAC7B,EAAE,EAAE;IACN,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,aAAa,EAAO,CAAC;IAExC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;YAAE,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjB,MAAM,gBAAgB,GAAG,aAAa;QAClC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;QACjC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,IAAI,IAAI,CAAC;YACvE,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,gCAAgC,CAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,IAAI,IAAI,CAAC;gBACzF,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,oBAAC,oBAAoB,OAAG,CAAC;;QAC7G,OAAO,gBAAgB,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"AuthWrapper.js","sourceRoot":"","sources":["../../src/components/AuthWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,oBAAoB,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EACH,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,GACnC,MAAM,uCAAuC,CAAC;AAE/C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EACxB,IAAI,GAAG,KAAK,EACZ,SAAS,EACT,wBAAwB,GAAG,IAAI,EAC/B,aAAa,GAAG,IAAI,EACpB,eAAe,GAAG,IAAI,EACtB,wBAAwB,GAAG,IAAI,EAC/B,SAAS,GAAG,IAAI,GACd,EAAE,EAAE;IACN,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,MAAM,UAAU,GAAG,aAAa,EAAO,CAAC;IAExC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;YAAE,UAAU,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACvE,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEjB,MAAM,gBAAgB,GAAG,aAAa;QAClC,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC;QAC5C,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,uBAAuB,CAAC,SAAS,EAAE,eAAe,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,CAAC;YAClF,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAC,gCAAgC,CAAC,SAAS,EAAE,wBAAwB,EAAE,QAAQ,IAAI,IAAI,EAAE,SAAS,CAAC;gBACpG,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,oBAAC,oBAAoB,OAAG,CAAC;;QAC7G,OAAO,gBAAgB,CAAC;AACjC,CAAC,CAAC;AAEF,eAAe,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import { IPermissionType, IPreDefinedPermissions } from '@adminide-stack/core';
3
+ import { URI } from '@vscode-alt/monaco-editor/esm/vs/base/common/uri';
4
+ export interface IWithConfigurationProps {
5
+ children?: React.ReactElement;
6
+ configKey: string;
7
+ permissionKeys?: IPreDefinedPermissions[];
8
+ permissionTypes?: IPermissionType[];
9
+ resourceName?: string;
10
+ settingsUri?: URI;
11
+ }
12
+ export declare const WithConfiguration: {
13
+ (props: IWithConfigurationProps): React.JSX.Element;
14
+ defaultProps: {
15
+ permissionTypes: IPermissionType[];
16
+ };
17
+ };
18
+ export declare const WithConfigurationContainer: (props: IWithConfigurationProps) => React.JSX.Element;
@@ -0,0 +1,41 @@
1
+ import * as React from 'react';
2
+ import { Spinner, Box, Text, Heading } from '@gluestack-ui/themed';
3
+ import { IPermissionType, IVisibility } from '@adminide-stack/core';
4
+ import { useSetting, usePermissionAutoFetch } from '@adminide-stack/platform-client';
5
+ import { get } from 'lodash-es';
6
+ export const WithConfiguration = (props) => {
7
+ const { configKey, children, permissionKeys, resourceName, permissionTypes } = props;
8
+ const { data, loading: settingsLoading, updateConfiguration: _, } = useSetting({
9
+ configKey,
10
+ overrides: { resource: props.settingsUri },
11
+ });
12
+ const { data: permissions, loading: permissionLoading } = usePermissionAutoFetch();
13
+ const isPrivate = React.useMemo(() => IVisibility.Private === data?.resolveConfiguration, [data?.resolveConfiguration]);
14
+ const hasPermission = React.useMemo(() => {
15
+ if (isPrivate && permissions && Array.isArray(permissionKeys)) {
16
+ return permissionKeys.some((key) => permissionTypes.includes(get(permissions?.resolveConfiguration, key)));
17
+ }
18
+ return false;
19
+ }, [isPrivate, permissions]);
20
+ const isLoading = React.useMemo(() => permissionLoading || settingsLoading, [permissionLoading, settingsLoading]);
21
+ if (isLoading) {
22
+ return React.createElement(Spinner, { color: '#ff5a00' });
23
+ }
24
+ // if public or has permission
25
+ if (!isPrivate || hasPermission) {
26
+ return children;
27
+ }
28
+ if (!hasPermission) {
29
+ return (React.createElement(Box, null,
30
+ React.createElement(Heading, null, "Missing Permission"),
31
+ React.createElement(Text, null, `You don't have the required permission to access ${resourceName || 'this resource'} `)));
32
+ }
33
+ return (React.createElement(Box, null,
34
+ React.createElement(Heading, null, `Private ${resourceName || 'Resource'}`),
35
+ React.createElement(Text, null, `You are trying to access private ${resourceName || 'resource'}.`)));
36
+ };
37
+ WithConfiguration.defaultProps = {
38
+ permissionTypes: [IPermissionType.Allow],
39
+ };
40
+ export const WithConfigurationContainer = (props) => React.createElement(WithConfiguration, { ...props });
41
+ //# sourceMappingURL=WithConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithConfiguration.js","sourceRoot":"","sources":["../../src/components/WithConfiguration.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,eAAe,EAA0B,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAYhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA8B,EAAE,EAAE;IAChE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAErF,MAAM,EACF,IAAI,EACJ,OAAO,EAAE,eAAe,EACxB,mBAAmB,EAAE,CAAC,GACzB,GAAG,UAAU,CAAC;QACX,SAAS;QACT,SAAS,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE;KAC7C,CAAC,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAEnF,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAC3B,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,KAAK,IAAI,EAAE,oBAAoB,EACxD,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAC/B,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,SAAS,IAAI,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC5D,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/G,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,iBAAiB,IAAI,eAAe,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC,CAAC;IAElH,IAAI,SAAS,EAAE,CAAC;QACZ,OAAO,oBAAC,OAAO,IAAC,KAAK,EAAE,SAAS,GAAI,CAAC;IACzC,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,SAAS,IAAI,aAAa,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACjB,OAAO,CACH,oBAAC,GAAG;YACA,oBAAC,OAAO,6BAA6B;YACrC,oBAAC,IAAI,QAAE,oDAAoD,YAAY,IAAI,eAAe,GAAG,CAAQ,CACnG,CACT,CAAC;IACN,CAAC;IACD,OAAO,CACH,oBAAC,GAAG;QACA,oBAAC,OAAO,QAAE,WAAW,YAAY,IAAI,UAAU,EAAE,CAAW;QAC5D,oBAAC,IAAI,QAAE,oCAAoC,YAAY,IAAI,UAAU,GAAG,CAAQ,CAC9E,CACT,CAAC;AACN,CAAC,CAAC;AAEF,iBAAiB,CAAC,YAAY,GAAG;IAC7B,eAAe,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAA8B,EAAE,EAAE,CAAC,oBAAC,iBAAiB,OAAK,KAAK,GAAI,CAAC"}
@@ -0,0 +1,31 @@
1
+ import * as React from 'react';
2
+ import { IPermissionType, IPreDefinedPermissions } from '@adminide-stack/core';
3
+ export declare enum WithPermissionBehaviour {
4
+ hide = 0,
5
+ showUnAuthorized = 1,
6
+ showAlternative = 2
7
+ }
8
+ export interface IWithPermissionProps {
9
+ children?: React.ReactElement;
10
+ permissionKeys: IPreDefinedPermissions[];
11
+ permissionTypes?: IPermissionType[];
12
+ behaviour?: WithPermissionBehaviour;
13
+ message?: string;
14
+ alternative?: React.ReactElement;
15
+ render?: React.FunctionComponent<{
16
+ hasPermission: boolean;
17
+ }>;
18
+ }
19
+ export declare const WithPermission: {
20
+ ({ permissionKeys, children, permissionTypes, behaviour, message, alternative, render, }: IWithPermissionProps): string | number | boolean | React.JSX.Element | Iterable<React.ReactNode>;
21
+ defaultProps: {
22
+ permissionTypes: IPermissionType[];
23
+ behaviour: WithPermissionBehaviour;
24
+ message: string;
25
+ disabledProps: {
26
+ disabled: boolean;
27
+ };
28
+ };
29
+ };
30
+ export declare const WithPermissionContainer: React.MemoExoticComponent<(props: IWithPermissionProps) => React.JSX.Element>;
31
+ export default WithPermissionContainer;
@@ -0,0 +1,56 @@
1
+ import * as React from 'react';
2
+ import { Spinner, Box, Text, Heading } from '@gluestack-ui/themed';
3
+ import { IPermissionType } from '@adminide-stack/core';
4
+ import { get } from 'lodash-es';
5
+ import { usePermissionAutoFetch } from './usePermissionAutoFetch';
6
+ import { isUserAuthenticated } from '@adminide-stack/user-auth0-client';
7
+ export var WithPermissionBehaviour;
8
+ (function (WithPermissionBehaviour) {
9
+ WithPermissionBehaviour[WithPermissionBehaviour["hide"] = 0] = "hide";
10
+ WithPermissionBehaviour[WithPermissionBehaviour["showUnAuthorized"] = 1] = "showUnAuthorized";
11
+ WithPermissionBehaviour[WithPermissionBehaviour["showAlternative"] = 2] = "showAlternative";
12
+ })(WithPermissionBehaviour || (WithPermissionBehaviour = {}));
13
+ export const WithPermission = ({ permissionKeys, children, permissionTypes = [IPermissionType.Allow], behaviour = WithPermissionBehaviour.hide, message = "You don't have permission to access this resource, contact owner", alternative, render, }) => {
14
+ const { data: permissions, loading: permissionLoading, refetch } = usePermissionAutoFetch();
15
+ const { authenticated } = isUserAuthenticated();
16
+ const hasPermission = React.useMemo(() => {
17
+ // const permissionData = {...permissions?.resolveConfiguration,account:{...permissions?.resolveConfiguration?.account,user:{...permissions?.resolveConfiguration?.account?.user,secure:authenticated ? 'Allow' : 'Deny'}}};
18
+ return permissionKeys.some((key) => permissionTypes.includes(get(permissions?.resolveConfiguration, key)));
19
+ }, [permissions, permissionTypes, permissionKeys]);
20
+ console.log('hasPermission', hasPermission);
21
+ console.log('permissionKeys', permissionKeys);
22
+ console.log('permissions', JSON.stringify(permissions));
23
+ if (permissionLoading) {
24
+ return React.createElement(Spinner, null);
25
+ }
26
+ if (typeof render === 'function') {
27
+ return render({ hasPermission });
28
+ }
29
+ if (hasPermission) {
30
+ return children;
31
+ }
32
+ if (behaviour === WithPermissionBehaviour.showAlternative) {
33
+ return alternative;
34
+ }
35
+ if (behaviour === WithPermissionBehaviour.showUnAuthorized) {
36
+ if (permissionLoading) {
37
+ return React.createElement(Spinner, null);
38
+ }
39
+ return (React.createElement(Box, null,
40
+ React.createElement(Heading, null, "Missing Permission"),
41
+ React.createElement(Text, null, message)));
42
+ }
43
+ return null;
44
+ };
45
+ WithPermission.defaultProps = {
46
+ permissionTypes: [IPermissionType.Allow],
47
+ behaviour: WithPermissionBehaviour.hide,
48
+ message: "You don't have permission to access this resource, contact owner",
49
+ disabledProps: {
50
+ disabled: true,
51
+ },
52
+ };
53
+ export const WithPermissionContainer = React.memo((props) => React.createElement(WithPermission, { ...props }));
54
+ export default WithPermissionContainer;
55
+ // export const WithPermissionContainer = (props: IWithPermissionProps) => <WithPermission {...props} />;
56
+ //# sourceMappingURL=WithPermission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithPermission.js","sourceRoot":"","sources":["../../src/components/WithPermission.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { ReactElement } from 'react';
3
+ interface IProps {
4
+ policyKey: string;
5
+ Child: React.FC<{
6
+ value: unknown;
7
+ }>;
8
+ childProps?: Record<string, any>;
9
+ showLoading?: boolean;
10
+ skeletonProps?: Record<string, unknown>;
11
+ }
12
+ export declare const WithPolicy: (props: IProps) => ReactElement;
13
+ export {};
@@ -0,0 +1,18 @@
1
+ import * as React from 'react';
2
+ import { Spinner } from '@gluestack-ui/themed';
3
+ import { logger } from '@cdm-logger/client';
4
+ import { useSetting } from '@adminide-stack/platform-client';
5
+ export const WithPolicy = (props) => {
6
+ const { policyKey, showLoading, Child, skeletonProps = {}, childProps = {} } = props;
7
+ const { data: policy, loading, error, } = useSetting({
8
+ configKey: policyKey,
9
+ });
10
+ if (error) {
11
+ logger.error(error, `WithPolicy.name`);
12
+ }
13
+ if (showLoading && loading) {
14
+ return React.createElement(Spinner, { color: '#ff5a00' });
15
+ }
16
+ return React.createElement(Child, { ...childProps, value: policy?.resolveConfiguration });
17
+ };
18
+ //# sourceMappingURL=WithPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WithPolicy.js","sourceRoot":"","sources":["../../src/components/WithPolicy.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAU7D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAa,EAAgB,EAAE;IACtD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,EAAE,EAAE,UAAU,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC;IACrF,MAAM,EACF,IAAI,EAAE,MAAM,EACZ,OAAO,EACP,KAAK,GACR,GAAG,UAAU,CAAC;QACX,SAAS,EAAE,SAAS;KACvB,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IAC3C,CAAC;IACD,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,oBAAC,OAAO,IAAC,KAAK,EAAE,SAAS,GAAI,CAAC;IACzC,CAAC;IAED,OAAO,oBAAC,KAAK,OAAK,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,GAAI,CAAC;AAC1E,CAAC,CAAC"}
@@ -8,3 +8,8 @@ export * from './NavigationComponent';
8
8
  export * from './ToastAlert';
9
9
  export * from './with-interactions-managed';
10
10
  export * from './AuthWrapper';
11
+ export * from './WithPermission';
12
+ export * from './WithConfiguration';
13
+ export * from './WithPolicy';
14
+ export * from './usePermissionAutoFetch';
15
+ export * from './useSetting';
@@ -8,4 +8,9 @@ export * from './NavigationComponent';
8
8
  export * from './ToastAlert';
9
9
  export * from './with-interactions-managed';
10
10
  export * from './AuthWrapper';
11
+ export * from './WithPermission';
12
+ export * from './WithConfiguration';
13
+ export * from './WithPolicy';
14
+ export * from './usePermissionAutoFetch';
15
+ export * from './useSetting';
11
16
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,63 @@
1
+ interface userPermissionAutoFetchProps {
2
+ configKey?: string;
3
+ }
4
+ export declare const usePermissionAutoFetch: (options?: userPermissionAutoFetchProps) => {
5
+ loading: boolean;
6
+ preferencesInput?: import("@adminide-stack/core").IPreferencesInput;
7
+ updateConfiguration?: ({ updateKey, value, updateOverrides, target, }: {
8
+ updateKey?: string;
9
+ value: string | boolean | number;
10
+ updateOverrides?: import("@adminide-stack/core").IConfigurationOverridesInput;
11
+ target?: import("@adminide-stack/core").ConfigurationTarget;
12
+ }) => Promise<import("graphql").ExecutionResult<import("@adminide-stack/core").IUpdateConfigurationMutation>>;
13
+ client: import("@apollo/client").ApolloClient<any>;
14
+ observable: import("@apollo/client").ObservableQuery<import("@adminide-stack/core").IResolveConfigurationQuery, import("@adminide-stack/core").Exact<{
15
+ input: import("@adminide-stack/core").IPreferencesInputInput;
16
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
17
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
18
+ }>>;
19
+ data: import("@adminide-stack/core").IResolveConfigurationQuery;
20
+ previousData?: import("@adminide-stack/core").IResolveConfigurationQuery;
21
+ error?: import("@apollo/client").ApolloError;
22
+ errors?: ReadonlyArray<import("graphql").GraphQLFormattedError>;
23
+ networkStatus: import("@apollo/client").NetworkStatus;
24
+ called: boolean;
25
+ startPolling: (pollInterval: number) => void;
26
+ stopPolling: () => void;
27
+ subscribeToMore: <TSubscriptionData = import("@adminide-stack/core").IResolveConfigurationQuery, TSubscriptionVariables extends import("@apollo/client").OperationVariables = import("@adminide-stack/core").Exact<{
28
+ input: import("@adminide-stack/core").IPreferencesInputInput;
29
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
30
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
31
+ }>>(options: import("@apollo/client").SubscribeToMoreOptions<import("@adminide-stack/core").IResolveConfigurationQuery, TSubscriptionVariables, TSubscriptionData>) => () => void;
32
+ updateQuery: <TVars extends import("@apollo/client").OperationVariables = import("@adminide-stack/core").Exact<{
33
+ input: import("@adminide-stack/core").IPreferencesInputInput;
34
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
35
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
36
+ }>>(mapFn: (previousQueryResult: import("@adminide-stack/core").IResolveConfigurationQuery, options: Pick<import("@apollo/client").WatchQueryOptions<TVars, import("@adminide-stack/core").IResolveConfigurationQuery>, "variables">) => import("@adminide-stack/core").IResolveConfigurationQuery) => void;
37
+ refetch: (variables?: Partial<import("@adminide-stack/core").Exact<{
38
+ input: import("@adminide-stack/core").IPreferencesInputInput;
39
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
40
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
41
+ }>>) => Promise<import("@apollo/client").ApolloQueryResult<import("@adminide-stack/core").IResolveConfigurationQuery>>;
42
+ reobserve: (newOptions?: Partial<import("@apollo/client").WatchQueryOptions<import("@adminide-stack/core").Exact<{
43
+ input: import("@adminide-stack/core").IPreferencesInputInput;
44
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
45
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
46
+ }>, import("@adminide-stack/core").IResolveConfigurationQuery>>, newNetworkStatus?: import("@apollo/client").NetworkStatus) => Promise<import("@apollo/client").ApolloQueryResult<import("@adminide-stack/core").IResolveConfigurationQuery>>;
47
+ variables: import("@adminide-stack/core").Exact<{
48
+ input: import("@adminide-stack/core").IPreferencesInputInput;
49
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
50
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
51
+ }>;
52
+ fetchMore: <TFetchData = import("@adminide-stack/core").IResolveConfigurationQuery, TFetchVars extends import("@apollo/client").OperationVariables = import("@adminide-stack/core").Exact<{
53
+ input: import("@adminide-stack/core").IPreferencesInputInput;
54
+ key?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").Scalars["String"]["input"]>;
55
+ overrides?: import("@adminide-stack/core").InputMaybe<import("@adminide-stack/core").IConfigurationOverridesInput>;
56
+ }>>(fetchMoreOptions: import("@apollo/client").FetchMoreQueryOptions<TFetchVars, TFetchData> & {
57
+ updateQuery?: (previousQueryResult: import("@adminide-stack/core").IResolveConfigurationQuery, options: {
58
+ fetchMoreResult: TFetchData;
59
+ variables: TFetchVars;
60
+ }) => import("@adminide-stack/core").IResolveConfigurationQuery;
61
+ }) => Promise<import("@apollo/client").ApolloQueryResult<TFetchData>>;
62
+ };
63
+ export {};
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ import { IResourceAuthority, IConfigFragmentName } from '@adminide-stack/core';
3
+ import { useGetTeamContextQuery } from '@adminide-stack/platform-client';
4
+ import { useSetting } from './useSetting';
5
+ export const usePermissionAutoFetch = (options) => {
6
+ const { data, loading } = useGetTeamContextQuery();
7
+ const teamData = React.useMemo(() => data?.getTeamContext, [data]);
8
+ // const teamData = data?.getTeamContext;
9
+ const { loading: settingLoading, ...remaining } = useSetting({
10
+ configKey: options?.configKey || '',
11
+ overrides: {
12
+ resource: teamData?.teamUri ?? null,
13
+ },
14
+ options: {
15
+ forceExist: false,
16
+ authority: IResourceAuthority.Defaultpermissions,
17
+ fragment: IConfigFragmentName.Roles,
18
+ },
19
+ });
20
+ console.log('---remaining', JSON.stringify(remaining?.data));
21
+ return { ...remaining, loading: loading || settingLoading };
22
+ };
23
+ //# sourceMappingURL=usePermissionAutoFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePermissionAutoFetch.js","sourceRoot":"","sources":["../../src/components/usePermissionAutoFetch.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAK1C,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,OAAsC,EAAE,EAAE;IAC7E,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,sBAAsB,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,yCAAyC;IAEzC,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC;QACzD,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,EAAE;QACnC,SAAS,EAAE;YACP,QAAQ,EAAE,QAAQ,EAAE,OAAO,IAAI,IAAI;SACtC;QACD,OAAO,EAAE;YACL,UAAU,EAAE,KAAK;YACjB,SAAS,EAAE,kBAAkB,CAAC,kBAAkB;YAChD,QAAQ,EAAE,mBAAmB,CAAC,KAAK;SACtC;KACJ,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,CAAC;AAChE,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { IResolveConfigurationQuery, IResolveConfigurationQueryVariables, IPreferencesInput, IPreferencesOpenOptionsInput, IUpdateConfigurationMutation, IConfigurationOverridesInput, ConfigurationTarget } from '@adminide-stack/core';
2
+ import { QueryResult } from '@apollo/client/react';
3
+ import { ExecutionResult } from 'graphql';
4
+ export interface ISettingsVariable {
5
+ overrides?: IConfigurationOverridesInput;
6
+ configKey: string;
7
+ options?: IPreferencesOpenOptionsInput;
8
+ skip?: boolean;
9
+ }
10
+ interface IResponse extends QueryResult<IResolveConfigurationQuery, IResolveConfigurationQueryVariables> {
11
+ preferencesInput?: IPreferencesInput;
12
+ updateConfiguration?: ({ updateKey, value, updateOverrides, target, }: {
13
+ updateKey?: string;
14
+ value: string | boolean | number;
15
+ updateOverrides?: IConfigurationOverridesInput;
16
+ target?: ConfigurationTarget;
17
+ }) => Promise<ExecutionResult<IUpdateConfigurationMutation>>;
18
+ }
19
+ /**
20
+ * Provides configuration for Organization and OrganizationResources. By default, it provides Organization configuration.
21
+ * If you need `resource` level configuration then, you need to provide resource URI in `overrides`.
22
+ * @param baseOptions
23
+ */
24
+ export declare const useSetting: (settingsVariable: ISettingsVariable) => IResponse;
25
+ export {};
@@ -0,0 +1,93 @@
1
+ import React from 'react';
2
+ import { omitBy, isNil } from 'lodash-es';
3
+ import { useResolveConfigurationQuery, useOpenPreferencesSettingsQuery, useUpdateConfigurationMutation, } from '@adminide-stack/platform-client';
4
+ /**
5
+ * Provides configuration for Organization and OrganizationResources. By default, it provides Organization configuration.
6
+ * If you need `resource` level configuration then, you need to provide resource URI in `overrides`.
7
+ * @param baseOptions
8
+ */
9
+ export const useSetting = (settingsVariable) => {
10
+ const { overrides, configKey, options, skip = false } = settingsVariable;
11
+ const targetResource = overrides?.resource ?? null;
12
+ console.log('---targetResource', targetResource);
13
+ let prefLoaded = false;
14
+ const { data: prefData, error: prefError, loading: perfLoading, refetch: refetchPrefData, } = useOpenPreferencesSettingsQuery({
15
+ variables: { resource: targetResource, options },
16
+ fetchPolicy: 'cache-and-network', // to make `{always: true}` to work
17
+ skip: prefLoaded,
18
+ });
19
+ React.useEffect(() => {
20
+ refetchPrefData({ resource: targetResource, options });
21
+ }, [targetResource]);
22
+ prefLoaded = perfLoading || skip;
23
+ console.log('---prefData', prefData);
24
+ const [updateConfigurationMutation] = useUpdateConfigurationMutation();
25
+ const modifiedOverrides = {
26
+ ...overrides,
27
+ resource: targetResource ? prefData?.openPreferencesSettings?.editableSettingsInput ?? null : null,
28
+ };
29
+ const defaultOverrides = omitBy(modifiedOverrides, isNil);
30
+ let { data: settingsData, error: settingError, loading: settingLoading, ...remaining } = useResolveConfigurationQuery({
31
+ variables: {
32
+ input: prefData?.openPreferencesSettings ?? null,
33
+ key: configKey,
34
+ overrides: defaultOverrides,
35
+ },
36
+ fetchPolicy: 'cache-and-network', // to make `{always: true}` to work
37
+ skip: prefLoaded || !!prefError || !prefData?.openPreferencesSettings?.editableSettingsInput,
38
+ });
39
+ React.useEffect(() => {
40
+ remaining?.refetch({
41
+ input: prefData?.openPreferencesSettings ?? null,
42
+ key: configKey,
43
+ overrides: defaultOverrides,
44
+ });
45
+ }, [prefData]);
46
+ let loading = true;
47
+ if (!settingLoading && !prefLoaded) {
48
+ loading = false;
49
+ }
50
+ const error = settingError || prefError;
51
+ console.log('---error', error);
52
+ console.log('---settingError', settingError);
53
+ console.log('---prefError', prefError);
54
+ if (error) {
55
+ return {
56
+ error,
57
+ data: undefined,
58
+ loading: false,
59
+ ...remaining,
60
+ };
61
+ }
62
+ if (loading) {
63
+ return {
64
+ error,
65
+ data: undefined,
66
+ loading,
67
+ ...remaining,
68
+ };
69
+ }
70
+ const updateConfiguration = ({ value, updateKey, updateOverrides, target }) => {
71
+ return updateConfigurationMutation({
72
+ variables: {
73
+ key: updateKey || configKey,
74
+ value,
75
+ target,
76
+ overrides: updateOverrides || defaultOverrides,
77
+ input: prefData?.openPreferencesSettings,
78
+ },
79
+ });
80
+ };
81
+ console.log('--USESetting ', JSON.stringify(settingsData?.resolveConfiguration));
82
+ return {
83
+ data: settingsData,
84
+ loading,
85
+ error,
86
+ ...remaining,
87
+ preferencesInput: {
88
+ ...prefData?.openPreferencesSettings,
89
+ },
90
+ updateConfiguration,
91
+ };
92
+ };
93
+ //# sourceMappingURL=useSetting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSetting.js","sourceRoot":"","sources":["../../src/components/useSetting.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACH,4BAA4B,EAC5B,+BAA+B,EAC/B,8BAA8B,GACjC,MAAM,iCAAiC,CAAC;AAwBzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,gBAAmC,EAAa,EAAE;IACzE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,gBAAgB,CAAC;IACzE,MAAM,cAAc,GAAG,SAAS,EAAE,QAAQ,IAAI,IAAI,CAAC;IACnD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IACjD,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,EACF,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,eAAe,GAC3B,GAAG,+BAA+B,CAAC;QAChC,SAAS,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE;QAChD,WAAW,EAAE,mBAAmB,EAAE,mCAAmC;QACrE,IAAI,EAAE,UAAU;KACnB,CAAC,CAAC;IACH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,eAAe,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrB,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IACrC,MAAM,CAAC,2BAA2B,CAAC,GAAG,8BAA8B,EAAE,CAAC;IACvE,MAAM,iBAAiB,GAAG;QACtB,GAAG,SAAS;QACZ,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,EAAE,uBAAuB,EAAE,qBAAqB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI;KACrG,CAAC;IACF,MAAM,gBAAgB,GAAG,MAAM,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IAC1D,IAAI,EACA,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,cAAc,EACvB,GAAG,SAAS,EACf,GAAG,4BAA4B,CAAC;QAC7B,SAAS,EAAE;YACP,KAAK,EAAE,QAAQ,EAAE,uBAAuB,IAAI,IAAI;YAChD,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,gBAAgB;SAC9B;QACD,WAAW,EAAE,mBAAmB,EAAE,mCAAmC;QACrE,IAAI,EAAE,UAAU,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,uBAAuB,EAAE,qBAAqB;KAC/F,CAAC,CAAC;IAEH,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,SAAS,EAAE,OAAO,CAAC;YACf,KAAK,EAAE,QAAQ,EAAE,uBAAuB,IAAI,IAAI;YAChD,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,gBAAgB;SAC9B,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,GAAG,KAAK,CAAC;IACpB,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,IAAI,SAAS,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,KAAK,EAAE,CAAC;QACR,OAAO;YACH,KAAK;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,GAAG,SAAS;SACf,CAAC;IACN,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACV,OAAO;YACH,KAAK;YACL,IAAI,EAAE,SAAS;YACf,OAAO;YACP,GAAG,SAAS;SACf,CAAC;IACN,CAAC;IAED,MAAM,mBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1E,OAAO,2BAA2B,CAAC;YAC/B,SAAS,EAAE;gBACP,GAAG,EAAE,SAAS,IAAI,SAAS;gBAC3B,KAAK;gBACL,MAAM;gBACN,SAAS,EAAE,eAAe,IAAI,gBAAgB;gBAC9C,KAAK,EAAE,QAAQ,EAAE,uBAAuB;aAC3C;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACjF,OAAO;QACH,IAAI,EAAE,YAAY;QAClB,OAAO;QACP,KAAK;QACL,GAAG,SAAS;QACZ,gBAAgB,EAAE;YACd,GAAG,QAAQ,EAAE,uBAAuB;SACvC;QACD,mBAAmB;KACf,CAAC;AACb,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- export declare function withInteractionsManaged(component: any, interationTime?: number): React.JSX.Element;
3
- export declare function withLifeCycleInteractionsManaged(component: any, interationTime?: number): React.JSX.Element;
4
- export declare function withLifeCycleManaged(component: any): React.JSX.Element;
2
+ export declare function withInteractionsManaged(component: any, interationTime?: number, permissionKeys?: any): React.JSX.Element;
3
+ export declare function withLifeCycleInteractionsManaged(component: any, interationTime?: number, permissionKeys?: any): React.JSX.Element;
4
+ export declare function withLifeCycleManaged(component: any, permissionKeys?: any): React.JSX.Element;
@@ -5,18 +5,28 @@ import Animated from 'react-native-reanimated';
5
5
  import { useAfterInteractions } from '../hooks/use-after-interactions';
6
6
  import { Spinner, Center } from '@gluestack-ui/themed';
7
7
  import { Platform } from 'react-native';
8
+ import { isUserAuthenticated } from '@adminide-stack/user-auth0-client';
8
9
  const LoadingComponent = () => (
9
10
  // <SafeAreaView flex={1}>
10
11
  React.createElement(Center, { flex: 1, justifyContent: 'center', alignItems: 'center' }, React.createElement(Spinner, { color: '$blue500' }))
11
12
  // </SafeAreaView>
12
13
  );
14
+ const LifecycleComponent = ({ children }) => {
15
+ const { authenticated } = isUserAuthenticated();
16
+ if (authenticated) {
17
+ return (React.createElement(Lifecycle, { renderWhenPhase: 3 /* LifecyclePhase.Restored */, loadingRenderer: LoadingComponent }, children));
18
+ }
19
+ else {
20
+ return React.createElement(React.Fragment, null, children);
21
+ }
22
+ };
13
23
  const IntractionComponent = ({ children, interationTime }) => {
14
24
  const { interactionsComplete, opacity, setInteractionsTimeOut } = useAfterInteractions();
15
25
  React.useEffect(() => {
16
26
  if (interationTime)
17
27
  setInteractionsTimeOut(interationTime);
18
28
  }, [interationTime]);
19
- console.log('interactionsComplete', interactionsComplete);
29
+ // console.log('interactionsComplete', interactionsComplete);
20
30
  return (React.createElement(React.Fragment, null, interactionsComplete ? ({ children }) : (React.createElement(Animated.View, { style: {
21
31
  flex: 1,
22
32
  opacity: opacity.value,
@@ -30,21 +40,21 @@ const IntractionWithLifeCycleComponent = ({ children, interationTime }) => {
30
40
  if (interationTime)
31
41
  setInteractionsTimeOut(interationTime);
32
42
  }, [interationTime]);
33
- console.log('interactionsComplete', interactionsComplete);
34
- return (React.createElement(React.Fragment, null, interactionsComplete ? (React.createElement(Lifecycle, { renderWhenPhase: 3 /* LifecyclePhase.Restored */, loadingRenderer: LoadingComponent }, children)) : (React.createElement(Animated.View, { style: {
43
+ // console.log('interactionsComplete', interactionsComplete);
44
+ return (React.createElement(React.Fragment, null, interactionsComplete ? (React.createElement(LifecycleComponent, null, children)) : (React.createElement(Animated.View, { style: {
35
45
  flex: 1,
36
46
  opacity: opacity.value,
37
47
  transform: [{ scale: opacity.value }],
38
48
  } },
39
49
  React.createElement(LoadingComponent, null)))));
40
50
  };
41
- export function withInteractionsManaged(component, interationTime) {
42
- return (React.createElement(React.Fragment, null, Platform.OS === 'ios' ? ({ component }) : (React.createElement(IntractionComponent, { interationTime: interationTime }, component))));
51
+ export function withInteractionsManaged(component, interationTime, permissionKeys = null) {
52
+ return (React.createElement(React.Fragment, null, Platform.OS === 'ios' ? (React.createElement(React.Fragment, null, component)) : (React.createElement(IntractionComponent, { interationTime: interationTime }, component))));
43
53
  }
44
- export function withLifeCycleInteractionsManaged(component, interationTime) {
45
- return (React.createElement(React.Fragment, null, Platform.OS === 'ios' ? (React.createElement(Lifecycle, { renderWhenPhase: 3 /* LifecyclePhase.Restored */, loadingRenderer: LoadingComponent }, component)) : (React.createElement(IntractionWithLifeCycleComponent, { interationTime: interationTime }, component))));
54
+ export function withLifeCycleInteractionsManaged(component, interationTime, permissionKeys = null) {
55
+ return (React.createElement(React.Fragment, null, Platform.OS === 'ios' ? (React.createElement(LifecycleComponent, null, component)) : (React.createElement(IntractionWithLifeCycleComponent, { interationTime: interationTime }, component))));
46
56
  }
47
- export function withLifeCycleManaged(component) {
48
- return (React.createElement(Lifecycle, { renderWhenPhase: 3 /* LifecyclePhase.Restored */, loadingRenderer: LoadingComponent }, component));
57
+ export function withLifeCycleManaged(component, permissionKeys = null) {
58
+ return (React.createElement(LifecycleComponent, null, component));
49
59
  }
50
60
  //# sourceMappingURL=with-interactions-lifecycle-managed.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-interactions-lifecycle-managed.js","sourceRoot":"","sources":["../../src/components/with-interactions-lifecycle-managed.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"with-interactions-lifecycle-managed.js","sourceRoot":"","sources":["../../src/components/with-interactions-lifecycle-managed.tsx"],"names":[],"mappings":"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"}