@admin-layout/gluestack-ui-mobile 9.0.4-alpha.38 → 9.0.4-alpha.43
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/CHANGELOG.md +8 -0
- package/lib/components/AuthWrapper.d.ts +4 -2
- package/lib/components/AuthWrapper.js +5 -5
- package/lib/components/AuthWrapper.js.map +1 -1
- package/lib/components/WithConfiguration.d.ts +18 -0
- package/lib/components/WithConfiguration.js +41 -0
- package/lib/components/WithConfiguration.js.map +1 -0
- package/lib/components/WithPermission.d.ts +31 -0
- package/lib/components/WithPermission.js +56 -0
- package/lib/components/WithPermission.js.map +1 -0
- package/lib/components/WithPolicy.d.ts +13 -0
- package/lib/components/WithPolicy.js +18 -0
- package/lib/components/WithPolicy.js.map +1 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.js +5 -0
- package/lib/components/index.js.map +1 -1
- package/lib/components/usePermissionAutoFetch.d.ts +63 -0
- package/lib/components/usePermissionAutoFetch.js +23 -0
- package/lib/components/usePermissionAutoFetch.js.map +1 -0
- package/lib/components/useSetting.d.ts +25 -0
- package/lib/components/useSetting.js +93 -0
- package/lib/components/useSetting.js.map +1 -0
- package/lib/components/with-interactions-lifecycle-managed.d.ts +3 -3
- package/lib/components/with-interactions-lifecycle-managed.js +19 -9
- package/lib/components/with-interactions-lifecycle-managed.js.map +1 -1
- package/lib/utils/generateMobileNavigations.js +150 -13
- package/lib/utils/generateMobileNavigations.js.map +1 -1
- package/package.json +3 -3
- package/src/components/AuthWrapper.tsx +5 -4
- package/src/components/WithConfiguration.tsx +73 -0
- package/src/components/WithPermission.tsx +85 -0
- package/src/components/WithPolicy.tsx +32 -0
- package/src/components/index.ts +6 -1
- package/src/components/usePermissionAutoFetch.tsx +27 -0
- package/src/components/useSetting.tsx +144 -0
- package/src/components/with-interactions-lifecycle-managed.tsx +56 -14
- package/src/utils/generateMobileNavigations.ts +175 -20
- package/lib/components/Layout/components/util.d.ts +0 -1
- package/lib/components/Layout/components/util.js +0 -15
- package/lib/components/Layout/components/util.js.map +0 -1
- package/src/components/Layout/components/util.ts +0 -14
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
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.43](https://github.com/CDEBase/admin-layout/compare/v9.0.4-alpha.42...v9.0.4-alpha.43) (2024-10-17)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @admin-layout/gluestack-ui-mobile
|
|
9
|
+
|
|
10
|
+
## [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)
|
|
11
|
+
|
|
12
|
+
**Note:** Version bump only for package @admin-layout/gluestack-ui-mobile
|
|
13
|
+
|
|
6
14
|
## [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
15
|
|
|
8
16
|
**Note:** Version bump only for package @admin-layout/gluestack-ui-mobile
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
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,
|
|
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';
|
package/lib/components/index.js
CHANGED
|
@@ -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,
|
|
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":"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"}
|
|
@@ -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(
|
|
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' ? (
|
|
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(
|
|
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(
|
|
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":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,uEAAuE;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,QAAwC,MAAM,yBAAyB,CAAC;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAO,OAAO,EAAgB,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;AAC3B,0BAA0B;AAC1B,oBAAC,MAAM,IAAC,IAAI,EAAE,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,IAC1D,oBAAC,OAAO,IAAC,KAAK,EAAE,UAAU,GAAI,CAC1B;AACT,kBAAkB;CACrB,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,EAAE;IACzD,MAAM,EAAE,oBAAoB,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,oBAAoB,EAAE,CAAC;IACzF,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACjB,IAAI,cAAc;YAAE,sBAAsB,CAAC,cAAc,CAAC,CAAC;IAC/D,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"with-interactions-lifecycle-managed.js","sourceRoot":"","sources":["../../src/components/with-interactions-lifecycle-managed.tsx"],"names":[],"mappings":"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"}
|