@procivis/one-react-native-components 0.3.27 → 0.3.50
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/lib/commonjs/components/entity/entity-attributes.js +14 -1
- package/lib/commonjs/components/entity/entity-attributes.js.map +1 -1
- package/lib/commonjs/components/entity/entity-details-with-buttons.js +9 -42
- package/lib/commonjs/components/entity/entity-details-with-buttons.js.map +1 -1
- package/lib/commonjs/components/entity/entity-details.js +60 -32
- package/lib/commonjs/components/entity/entity-details.js.map +1 -1
- package/lib/commonjs/components/entity/index.js +2 -15
- package/lib/commonjs/components/entity/index.js.map +1 -1
- package/lib/commonjs/components/history/history-list-item.js +14 -12
- package/lib/commonjs/components/history/history-list-item.js.map +1 -1
- package/lib/commonjs/components/proof-request/share-credential.js +1 -2
- package/lib/commonjs/components/proof-request/share-credential.js.map +1 -1
- package/lib/commonjs/ui-components/blur/index.js +2 -9
- package/lib/commonjs/ui-components/blur/index.js.map +1 -1
- package/lib/commonjs/ui-components/buttons/hold-button.js +3 -2
- package/lib/commonjs/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/commonjs/ui-components/camera/index.js +2 -9
- package/lib/commonjs/ui-components/camera/index.js.map +1 -1
- package/lib/commonjs/ui-components/control/index.js +0 -12
- package/lib/commonjs/ui-components/control/index.js.map +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js +1 -1
- package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js +15 -8
- package/lib/commonjs/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/commonjs/ui-components/entity/entity-cluster.js +50 -2
- package/lib/commonjs/ui-components/entity/entity-cluster.js.map +1 -1
- package/lib/commonjs/ui-components/entity/index.js +3 -16
- package/lib/commonjs/ui-components/entity/index.js.map +1 -1
- package/lib/commonjs/ui-components/history/history-details.js +1 -1
- package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
- package/lib/commonjs/ui-components/history/index.js +4 -27
- package/lib/commonjs/ui-components/history/index.js.map +1 -1
- package/lib/commonjs/ui-components/icons/entity.js +10 -13
- package/lib/commonjs/ui-components/icons/entity.js.map +1 -1
- package/lib/commonjs/ui-components/input/index.js +3 -32
- package/lib/commonjs/ui-components/input/index.js.map +1 -1
- package/lib/commonjs/ui-components/list/index.js +4 -19
- package/lib/commonjs/ui-components/list/index.js.map +1 -1
- package/lib/commonjs/ui-components/loader/index.js +2 -13
- package/lib/commonjs/ui-components/loader/index.js.map +1 -1
- package/lib/commonjs/ui-components/pin/index.js +2 -21
- package/lib/commonjs/ui-components/pin/index.js.map +1 -1
- package/lib/commonjs/ui-components/screens/nerd-mode-screen.js.map +1 -1
- package/lib/commonjs/ui-components/searchbar/index.js +3 -16
- package/lib/commonjs/ui-components/searchbar/index.js.map +1 -1
- package/lib/commonjs/ui-components/settings/index.js +6 -37
- package/lib/commonjs/ui-components/settings/index.js.map +1 -1
- package/lib/commonjs/ui-components/state/index.js +2 -15
- package/lib/commonjs/ui-components/state/index.js.map +1 -1
- package/lib/commonjs/utils/date.js +1 -1
- package/lib/commonjs/utils/date.js.map +1 -1
- package/lib/commonjs/utils/hooks/connectivity/connectivity.test.js +4 -0
- package/lib/commonjs/utils/hooks/connectivity/connectivity.test.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/backup.js +22 -66
- package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/core-init.js +6 -2
- package/lib/commonjs/utils/hooks/core/core-init.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/identifiers.js +23 -1
- package/lib/commonjs/utils/hooks/core/identifiers.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/proofs.js +24 -14
- package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
- package/lib/commonjs/utils/hooks/core/trust-entity.js +56 -14
- package/lib/commonjs/utils/hooks/core/trust-entity.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential-sharing.js +6 -15
- package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/commonjs/utils/parsers/credential.js +2 -2
- package/lib/commonjs/utils/parsers/credential.js.map +1 -1
- package/lib/commonjs/utils/parsers/query.js +23 -86
- package/lib/commonjs/utils/parsers/query.js.map +1 -1
- package/lib/module/components/entity/entity-attributes.js +15 -2
- package/lib/module/components/entity/entity-attributes.js.map +1 -1
- package/lib/module/components/entity/entity-details-with-buttons.js +11 -44
- package/lib/module/components/entity/entity-details-with-buttons.js.map +1 -1
- package/lib/module/components/entity/entity-details.js +61 -33
- package/lib/module/components/entity/entity-details.js.map +1 -1
- package/lib/module/components/entity/index.js +2 -2
- package/lib/module/components/entity/index.js.map +1 -1
- package/lib/module/components/history/history-list-item.js +15 -13
- package/lib/module/components/history/history-list-item.js.map +1 -1
- package/lib/module/components/proof-request/share-credential.js +1 -2
- package/lib/module/components/proof-request/share-credential.js.map +1 -1
- package/lib/module/ui-components/blur/index.js +2 -2
- package/lib/module/ui-components/blur/index.js.map +1 -1
- package/lib/module/ui-components/buttons/hold-button.js +4 -3
- package/lib/module/ui-components/buttons/hold-button.js.map +1 -1
- package/lib/module/ui-components/camera/index.js +2 -2
- package/lib/module/ui-components/camera/index.js.map +1 -1
- package/lib/module/ui-components/control/index.js +3 -3
- package/lib/module/ui-components/control/index.js.map +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js +1 -1
- package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
- package/lib/module/ui-components/credential/credential-carousel-images.js +15 -8
- package/lib/module/ui-components/credential/credential-carousel-images.js.map +1 -1
- package/lib/module/ui-components/entity/entity-cluster.js +51 -3
- package/lib/module/ui-components/entity/entity-cluster.js.map +1 -1
- package/lib/module/ui-components/entity/index.js +4 -4
- package/lib/module/ui-components/entity/index.js.map +1 -1
- package/lib/module/ui-components/history/history-details.js +1 -1
- package/lib/module/ui-components/history/history-details.js.map +1 -1
- package/lib/module/ui-components/history/index.js +6 -6
- package/lib/module/ui-components/history/index.js.map +1 -1
- package/lib/module/ui-components/icons/entity.js +10 -13
- package/lib/module/ui-components/icons/entity.js.map +1 -1
- package/lib/module/ui-components/input/index.js +6 -6
- package/lib/module/ui-components/input/index.js.map +1 -1
- package/lib/module/ui-components/list/index.js +4 -4
- package/lib/module/ui-components/list/index.js.map +1 -1
- package/lib/module/ui-components/loader/index.js +4 -4
- package/lib/module/ui-components/loader/index.js.map +1 -1
- package/lib/module/ui-components/pin/index.js +3 -3
- package/lib/module/ui-components/pin/index.js.map +1 -1
- package/lib/module/ui-components/screens/nerd-mode-screen.js.map +1 -1
- package/lib/module/ui-components/searchbar/index.js +4 -4
- package/lib/module/ui-components/searchbar/index.js.map +1 -1
- package/lib/module/ui-components/settings/index.js +10 -10
- package/lib/module/ui-components/settings/index.js.map +1 -1
- package/lib/module/ui-components/state/index.js +2 -2
- package/lib/module/ui-components/state/index.js.map +1 -1
- package/lib/module/utils/date.js +1 -1
- package/lib/module/utils/date.js.map +1 -1
- package/lib/module/utils/hooks/connectivity/connectivity.test.js +4 -0
- package/lib/module/utils/hooks/connectivity/connectivity.test.js.map +1 -1
- package/lib/module/utils/hooks/core/backup.js +24 -68
- package/lib/module/utils/hooks/core/backup.js.map +1 -1
- package/lib/module/utils/hooks/core/core-init.js +5 -3
- package/lib/module/utils/hooks/core/core-init.js.map +1 -1
- package/lib/module/utils/hooks/core/identifiers.js +21 -0
- package/lib/module/utils/hooks/core/identifiers.js.map +1 -1
- package/lib/module/utils/hooks/core/proofs.js +24 -14
- package/lib/module/utils/hooks/core/proofs.js.map +1 -1
- package/lib/module/utils/hooks/core/trust-entity.js +57 -15
- package/lib/module/utils/hooks/core/trust-entity.js.map +1 -1
- package/lib/module/utils/parsers/credential-sharing.js +6 -15
- package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
- package/lib/module/utils/parsers/credential.js +2 -2
- package/lib/module/utils/parsers/credential.js.map +1 -1
- package/lib/module/utils/parsers/query.js +21 -85
- package/lib/module/utils/parsers/query.js.map +1 -1
- package/lib/typescript/components/entity/entity-attributes.d.ts +1 -0
- package/lib/typescript/components/entity/entity-details-with-buttons.d.ts +1 -2
- package/lib/typescript/components/entity/entity-details.d.ts +3 -2
- package/lib/typescript/components/entity/index.d.ts +2 -1
- package/lib/typescript/ui-components/blur/index.d.ts +2 -1
- package/lib/typescript/ui-components/buttons/hold-button.d.ts +2 -2
- package/lib/typescript/ui-components/camera/index.d.ts +2 -1
- package/lib/typescript/ui-components/control/index.d.ts +4 -2
- package/lib/typescript/ui-components/credential/credential-carousel-images.d.ts +1 -0
- package/lib/typescript/ui-components/entity/entity-cluster.d.ts +1 -0
- package/lib/typescript/ui-components/entity/index.d.ts +4 -2
- package/lib/typescript/ui-components/history/history-details.d.ts +4 -1
- package/lib/typescript/ui-components/history/index.d.ts +6 -3
- package/lib/typescript/ui-components/input/index.d.ts +6 -3
- package/lib/typescript/ui-components/list/index.d.ts +4 -2
- package/lib/typescript/ui-components/loader/index.d.ts +4 -2
- package/lib/typescript/ui-components/pin/index.d.ts +4 -2
- package/lib/typescript/ui-components/screens/nerd-mode-screen.d.ts +1 -1
- package/lib/typescript/ui-components/searchbar/index.d.ts +4 -2
- package/lib/typescript/ui-components/settings/index.d.ts +10 -5
- package/lib/typescript/ui-components/state/index.d.ts +2 -1
- package/lib/typescript/utils/hooks/core/backup.d.ts +5 -0
- package/lib/typescript/utils/hooks/core/core-init.d.ts +4 -1
- package/lib/typescript/utils/hooks/core/identifiers.d.ts +4 -1
- package/lib/typescript/utils/hooks/core/proofs.d.ts +1 -0
- package/lib/typescript/utils/hooks/core/trust-entity.d.ts +9 -3
- package/lib/typescript/utils/parsers/query.d.ts +8 -7
- package/package.json +10 -5
- package/src/components/entity/entity-attributes.tsx +16 -2
- package/src/components/entity/entity-details-with-buttons.tsx +11 -42
- package/src/components/entity/entity-details.tsx +96 -33
- package/src/components/entity/index.ts +2 -1
- package/src/components/history/history-list-item.tsx +17 -13
- package/src/components/proof-request/share-credential.tsx +0 -1
- package/src/ui-components/blur/index.ts +2 -1
- package/src/ui-components/buttons/hold-button.tsx +6 -5
- package/src/ui-components/camera/index.tsx +2 -1
- package/src/ui-components/control/index.ts +4 -2
- package/src/ui-components/credential/card/credential-details-card.tsx +1 -1
- package/src/ui-components/credential/credential-carousel-images.tsx +15 -8
- package/src/ui-components/entity/entity-cluster.tsx +63 -10
- package/src/ui-components/entity/index.ts +4 -2
- package/src/ui-components/history/history-details.tsx +5 -2
- package/src/ui-components/history/index.ts +6 -3
- package/src/ui-components/icons/entity.tsx +8 -12
- package/src/ui-components/input/index.ts +6 -3
- package/src/ui-components/list/index.ts +4 -2
- package/src/ui-components/loader/index.ts +4 -2
- package/src/ui-components/pin/index.ts +4 -2
- package/src/ui-components/screens/nerd-mode-screen.tsx +1 -1
- package/src/ui-components/searchbar/index.ts +4 -2
- package/src/ui-components/settings/index.ts +10 -5
- package/src/ui-components/state/index.ts +2 -1
- package/src/utils/date.ts +1 -1
- package/src/utils/hooks/connectivity/connectivity.test.ts +7 -2
- package/src/utils/hooks/core/backup.ts +30 -72
- package/src/utils/hooks/core/core-init.ts +5 -3
- package/src/utils/hooks/core/identifiers.ts +22 -1
- package/src/utils/hooks/core/proofs.ts +27 -16
- package/src/utils/hooks/core/trust-entity.ts +73 -23
- package/src/utils/parsers/credential-sharing.tsx +8 -14
- package/src/utils/parsers/credential.ts +2 -1
- package/src/utils/parsers/query.ts +149 -0
- package/src/utils/parsers/query.tsx +0 -82
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { AvatarProps } from './avatar';
|
|
2
|
+
import Avatar from './avatar';
|
|
3
|
+
import type { EntityClusterProps } from './entity-cluster';
|
|
4
|
+
import EntityCluster from './entity-cluster';
|
|
3
5
|
|
|
4
6
|
export { Avatar, AvatarProps };
|
|
5
7
|
export { EntityCluster, EntityClusterProps };
|
|
@@ -37,7 +37,10 @@ type CredentialDetails = Omit<
|
|
|
37
37
|
type CredentialCard = Omit<
|
|
38
38
|
CredentialDetailsCardListItemProps,
|
|
39
39
|
'expanded' | 'labels' | 'lastItem' | 'onHeaderPress' | 'onImagePreview'
|
|
40
|
-
|
|
40
|
+
> & {
|
|
41
|
+
/** default: true */
|
|
42
|
+
headerPressable?: boolean;
|
|
43
|
+
};
|
|
41
44
|
|
|
42
45
|
export type HistoryDetailsViewProps = {
|
|
43
46
|
assets?: {
|
|
@@ -195,7 +198,7 @@ export const HistoryDetailsView: FC<HistoryDetailsViewProps> = ({
|
|
|
195
198
|
...props.credentialCard,
|
|
196
199
|
card: {
|
|
197
200
|
...props.credentialCard.card,
|
|
198
|
-
onHeaderPress,
|
|
201
|
+
onHeaderPress: props.credentialCard.headerPressable === false ? undefined : onHeaderPress,
|
|
199
202
|
},
|
|
200
203
|
};
|
|
201
204
|
return (
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { DataItemProps } from './data-item';
|
|
2
|
+
import DataItem from './data-item';
|
|
3
|
+
import type { HistoryItemViewProps } from './history-item';
|
|
4
|
+
import HistoryItemView from './history-item';
|
|
3
5
|
import HistorySectionHeaderView from './history-section-header';
|
|
4
|
-
import
|
|
6
|
+
import type { HistorySectionListItemProps } from './history-section-list-item';
|
|
7
|
+
import HistorySectionListItem from './history-section-list-item';
|
|
5
8
|
|
|
6
9
|
export * from './history-details';
|
|
7
10
|
export { DataItem, DataItemProps };
|
|
@@ -30,28 +30,24 @@ export const EntityTrustedIcon: FC<SvgProps> = ({ ...props }) => {
|
|
|
30
30
|
);
|
|
31
31
|
};
|
|
32
32
|
|
|
33
|
-
// https://www.figma.com/design/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?node-id=415-5402&t=
|
|
33
|
+
// https://www.figma.com/design/52qDYWUMjXAGre1dcnz5bz/Procivis-One-Wallet?node-id=415-5402&t=8jP7yF4eYj70Gm9A-0
|
|
34
34
|
export const EntityNotTrustedIcon: FC<SvgProps> = ({ ...props }) => {
|
|
35
35
|
const colorScheme = useAppColorScheme();
|
|
36
36
|
return (
|
|
37
|
-
<Svg width={22} height={
|
|
37
|
+
<Svg width={22} height={22} viewBox="0 0 22 22" fill="none" {...props}>
|
|
38
38
|
<Path
|
|
39
|
-
d="
|
|
40
|
-
fill={colorScheme.
|
|
39
|
+
d="M10.575 20a8.241 8.241 0 01-3.312-.672 8.649 8.649 0 01-2.74-1.851 8.837 8.837 0 01-1.85-2.74A8.242 8.242 0 012 11.425c0-1.173.224-2.277.672-3.312a8.793 8.793 0 014.582-4.59 8.243 8.243 0 013.312-.672c1.18 0 2.286.224 3.32.672a8.766 8.766 0 012.74 1.86 8.667 8.667 0 011.86 2.73 8.243 8.243 0 01.672 3.312 8.243 8.243 0 01-.673 3.312 8.768 8.768 0 01-4.598 4.59 8.241 8.241 0 01-3.312.673z"
|
|
40
|
+
fill={colorScheme.error}
|
|
41
41
|
/>
|
|
42
42
|
<Path
|
|
43
|
-
d="M10.
|
|
43
|
+
d="M10.566 1.85c1.31 0 2.552.25 3.718.755a9.765 9.765 0 013.047 2.068l.321.335a9.671 9.671 0 011.751 2.708 9.244 9.244 0 01.755 3.71c0 1.304-.25 2.544-.755 3.709a9.766 9.766 0 01-5.123 5.112h0a9.242 9.242 0 01-3.705.753 9.244 9.244 0 01-3.706-.754 9.648 9.648 0 01-3.053-2.062l-.003-.002a9.836 9.836 0 01-2.058-3.047A9.242 9.242 0 011 11.425c0-1.304.25-2.544.755-3.71a9.793 9.793 0 015.1-5.11h.001a9.244 9.244 0 013.71-.754z"
|
|
44
44
|
stroke={colorScheme.white}
|
|
45
|
-
strokeWidth={2}
|
|
46
45
|
strokeOpacity={0.2}
|
|
46
|
+
strokeWidth={2}
|
|
47
47
|
/>
|
|
48
48
|
<Path
|
|
49
|
-
d="
|
|
50
|
-
fill={colorScheme.
|
|
51
|
-
/>
|
|
52
|
-
<Path
|
|
53
|
-
d="M11.4961 14.8711C11.2969 15.0482 11.0589 15.1367 10.7822 15.1367C10.5055 15.1367 10.2648 15.0482 10.0601 14.8711C9.86084 14.694 9.76123 14.4671 9.76123 14.1904C9.76123 13.9193 9.86084 13.6924 10.0601 13.5098C10.2593 13.3271 10.5 13.2358 10.7822 13.2358C11.0589 13.2358 11.2969 13.3271 11.4961 13.5098C11.6953 13.6924 11.7949 13.9193 11.7949 14.1904C11.7949 14.4671 11.6953 14.694 11.4961 14.8711Z"
|
|
54
|
-
fill={colorScheme.black}
|
|
49
|
+
d="M8.433 14.712a.822.822 0 01-.58.225.773.773 0 01-.557-.225.773.773 0 01-.224-.556c0-.216.077-.398.232-.548l2.167-2.174-2.167-2.159a.768.768 0 01-.232-.547c0-.227.074-.413.224-.557a.773.773 0 01.556-.224c.216 0 .401.072.556.216l2.175 2.167 2.183-2.167a.759.759 0 01.556-.232c.216 0 .399.077.548.232.155.15.232.332.232.548 0 .21-.077.396-.232.556l-2.175 2.167 2.167 2.166c.155.144.232.33.232.556a.759.759 0 01-.232.556.755.755 0 01-.556.225.765.765 0 01-.565-.225l-2.158-2.166-2.15 2.166z"
|
|
50
|
+
fill={colorScheme.white}
|
|
55
51
|
/>
|
|
56
52
|
</Svg>
|
|
57
53
|
)
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import type { RadioGroupItem, RadioGroupProps } from './radio-group';
|
|
2
|
+
import RadioGroup from './radio-group';
|
|
3
|
+
import type { SelectionInputChoice, SelectionInputProps } from './selection-input';
|
|
4
|
+
import SelectionInput from './selection-input';
|
|
5
|
+
import type { TextInputProps } from './text-input';
|
|
6
|
+
import TextInput, { TextInputAccessory } from './text-input';
|
|
4
7
|
|
|
5
8
|
export { RadioGroup, RadioGroupItem, RadioGroupProps };
|
|
6
9
|
export { SelectionInput, SelectionInputChoice, SelectionInputProps };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { ListSectionHeaderProps } from './list-section-header';
|
|
2
|
+
import ListSectionHeader from './list-section-header';
|
|
3
|
+
import type { ListTitleHeaderProps } from './list-title-header';
|
|
4
|
+
import ListTitleHeader from './list-title-header';
|
|
3
5
|
|
|
4
6
|
export { ListSectionHeader, ListSectionHeaderProps };
|
|
5
7
|
export { ListTitleHeader, ListTitleHeaderProps };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { LoaderViewProps } from './loader';
|
|
2
|
+
import LoaderView, { LoaderViewState } from './loader';
|
|
3
|
+
import type { LoadingResultScreenProps } from './loading-result';
|
|
4
|
+
import LoadingResultScreen from './loading-result';
|
|
3
5
|
|
|
4
6
|
export { LoaderView, LoaderViewProps, LoaderViewState };
|
|
5
7
|
export { LoadingResultScreen, LoadingResultScreenProps };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { Biometry } from './keypad';
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import type { PinCodeScreenActions, PinCodeScreenProps } from './pin-code-screen';
|
|
3
|
+
import { PinCodeScreen } from './pin-code-screen';
|
|
4
|
+
import type { PinLockModalLabels } from './pin-lock';
|
|
5
|
+
import PinLockModal from './pin-lock';
|
|
4
6
|
|
|
5
7
|
export { Biometry, PinCodeScreen, PinCodeScreenActions, PinCodeScreenProps, PinLockModal, PinLockModalLabels };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IdentifierListItem } from '@procivis/react-native-one-core
|
|
1
|
+
import { IdentifierListItem } from '@procivis/react-native-one-core';
|
|
2
2
|
import React, { FunctionComponent, useState } from 'react';
|
|
3
3
|
import { SectionList, StyleSheet, View } from 'react-native';
|
|
4
4
|
import Animated, { useAnimatedScrollHandler, useSharedValue } from 'react-native-reanimated';
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import type { AnimatedSearchBarProps } from './animated-search-bar';
|
|
2
|
+
import AnimatedSearchBar from './animated-search-bar';
|
|
3
|
+
import type { SearchBarProps } from './search-bar';
|
|
4
|
+
import SearchBar from './search-bar';
|
|
3
5
|
|
|
4
6
|
export { AnimatedSearchBar, AnimatedSearchBarProps };
|
|
5
7
|
export { SearchBar, SearchBarProps };
|
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import type { ButtonSettingProps } from './button-setting';
|
|
2
|
+
import ButtonSetting from './button-setting';
|
|
3
|
+
import type { SettingItemProps } from './setting-item';
|
|
4
|
+
import SettingItem from './setting-item';
|
|
5
|
+
import type { SettingItemSeparatorProps } from './setting-item-separator';
|
|
6
|
+
import SettingItemSeparator from './setting-item-separator';
|
|
7
|
+
import type { SettingsButtonProps } from './settings-button';
|
|
8
|
+
import SettingsButton from './settings-button';
|
|
9
|
+
import type { SwitchSettingProps } from './switch-setting';
|
|
10
|
+
import SwitchSetting from './switch-setting';
|
|
6
11
|
|
|
7
12
|
export { ButtonSetting, ButtonSettingProps };
|
|
8
13
|
export { SettingItem, SettingItemProps };
|
package/src/utils/date.ts
CHANGED
|
@@ -8,12 +8,17 @@ jest.mock('@sentry/react-native', () => ({
|
|
|
8
8
|
captureException: () => {},
|
|
9
9
|
}));
|
|
10
10
|
|
|
11
|
+
jest.mock('../core/core-config', () => ({
|
|
12
|
+
getEnabledTransports: () => [],
|
|
13
|
+
useCoreConfig: () => ({}),
|
|
14
|
+
}));
|
|
15
|
+
|
|
11
16
|
jest.mock('@react-native-community/netinfo', () => ({
|
|
12
|
-
addEventListener: () => {},
|
|
17
|
+
addEventListener: () => { },
|
|
13
18
|
}));
|
|
14
19
|
|
|
15
20
|
jest.mock('react-native-bluetooth-state-manager', () => ({
|
|
16
|
-
onStateChange: () => {},
|
|
21
|
+
onStateChange: () => { },
|
|
17
22
|
}));
|
|
18
23
|
|
|
19
24
|
describe('getInvitationUrlTransports', () => {
|
|
@@ -1,11 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IdentifierStateEnum, IdentifierTypeEnum } from '@procivis/react-native-one-core';
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
3
|
import { useMutation, useQuery, useQueryClient } from 'react-query';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { reportException } from '../../reporting';
|
|
6
6
|
import { useONECore } from './core-context';
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import {
|
|
8
|
+
generateHwIdentifier,
|
|
9
|
+
generateSwIdentifier,
|
|
10
|
+
IdentifiersInitializationConfig,
|
|
11
|
+
SW_DID_NAME_PREFIX,
|
|
12
|
+
} from './core-init';
|
|
9
13
|
import { HISTORY_LIST_QUERY_KEY } from './history';
|
|
10
14
|
|
|
11
15
|
const BACKUP_INFO_QUERY_KEY = 'backup-info';
|
|
@@ -61,6 +65,11 @@ export const useRollbackImport = () => {
|
|
|
61
65
|
});
|
|
62
66
|
};
|
|
63
67
|
|
|
68
|
+
/**
|
|
69
|
+
* Finalize backup import and extract/prepare identifiers
|
|
70
|
+
* @param {IdentifiersInitializationConfig} config Select desired keys/dids to be restored/created
|
|
71
|
+
* @returns [hwIdentifierId, swIdentifierId]
|
|
72
|
+
*/
|
|
64
73
|
export const useBackupFinalizeImportProcedure = ({ generateHwKey, generateSwKey }: IdentifiersInitializationConfig) => {
|
|
65
74
|
const { mutateAsync: finalizeImport } = useFinalizeImport();
|
|
66
75
|
const { core, organisationId } = useONECore();
|
|
@@ -68,77 +77,26 @@ export const useBackupFinalizeImportProcedure = ({ generateHwKey, generateSwKey
|
|
|
68
77
|
return useCallback(async () => {
|
|
69
78
|
await finalizeImport();
|
|
70
79
|
|
|
71
|
-
// update wallet
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
pageSize: 1,
|
|
77
|
-
type: DidTypeEnum.LOCAL,
|
|
78
|
-
});
|
|
79
|
-
let swDidId = dids.values.find((did) => did.name.startsWith(SW_DID_NAME_PREFIX))?.id;
|
|
80
|
-
|
|
81
|
-
if (!swDidId && generateSwKey) {
|
|
82
|
-
const swKeyId = await core.generateKey({
|
|
83
|
-
keyParams: {},
|
|
84
|
-
keyType: 'EDDSA',
|
|
85
|
-
name: `holder-key-sw-${generateUUID()}`,
|
|
86
|
-
organisationId,
|
|
87
|
-
storageParams: {},
|
|
88
|
-
storageType: 'INTERNAL',
|
|
89
|
-
});
|
|
90
|
-
swDidId = await core.createDid({
|
|
91
|
-
didMethod: 'KEY',
|
|
92
|
-
keys: {
|
|
93
|
-
assertionMethod: [swKeyId],
|
|
94
|
-
authentication: [swKeyId],
|
|
95
|
-
capabilityDelegation: [swKeyId],
|
|
96
|
-
capabilityInvocation: [swKeyId],
|
|
97
|
-
keyAgreement: [swKeyId],
|
|
98
|
-
},
|
|
99
|
-
name: `${SW_DID_NAME_PREFIX}-${generateUUID()}`,
|
|
80
|
+
// update wallet identifier references
|
|
81
|
+
let swIdentifierId: string | undefined;
|
|
82
|
+
if (generateSwKey) {
|
|
83
|
+
const identifiers = await core.getIdentifiers({
|
|
84
|
+
state: IdentifierStateEnum.ACTIVE,
|
|
100
85
|
organisationId,
|
|
101
|
-
|
|
86
|
+
page: 0,
|
|
87
|
+
pageSize: 1,
|
|
88
|
+
types: [IdentifierTypeEnum.DID],
|
|
89
|
+
isRemote: false,
|
|
102
90
|
});
|
|
91
|
+
swIdentifierId = identifiers.values.find((identifier) => identifier.name.startsWith(SW_DID_NAME_PREFIX))?.id;
|
|
103
92
|
}
|
|
104
93
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
organisationId,
|
|
113
|
-
storageParams: {},
|
|
114
|
-
storageType: 'SECURE_ELEMENT',
|
|
115
|
-
})
|
|
116
|
-
.catch((e) => {
|
|
117
|
-
// ignore if HW keys not supported by device
|
|
118
|
-
if (e instanceof OneError && e.code === OneErrorCode.KeyStorageNotSupported) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
throw e;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
let hwDidId: string | null = null;
|
|
126
|
-
if (hwKeyId) {
|
|
127
|
-
hwDidId = await core.createDid({
|
|
128
|
-
didMethod: 'KEY',
|
|
129
|
-
keys: {
|
|
130
|
-
assertionMethod: [hwKeyId],
|
|
131
|
-
authentication: [hwKeyId],
|
|
132
|
-
capabilityDelegation: [hwKeyId],
|
|
133
|
-
capabilityInvocation: [hwKeyId],
|
|
134
|
-
keyAgreement: [hwKeyId],
|
|
135
|
-
},
|
|
136
|
-
name: `${HW_DID_NAME_PREFIX}-${generateUUID()}`,
|
|
137
|
-
organisationId,
|
|
138
|
-
params: {},
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
return [hwDidId, swDidId] as [string | null, string | undefined];
|
|
94
|
+
return Promise.all([
|
|
95
|
+
generateHwKey ? generateHwIdentifier(core, organisationId) : null,
|
|
96
|
+
!swIdentifierId && generateSwKey ? generateSwIdentifier(core, organisationId) : swIdentifierId,
|
|
97
|
+
]).catch((err) => {
|
|
98
|
+
reportException(err, 'Failed to create base identifiers');
|
|
99
|
+
throw err;
|
|
100
|
+
});
|
|
143
101
|
}, [core, organisationId, finalizeImport, generateHwKey, generateSwKey]);
|
|
144
102
|
};
|
|
@@ -8,7 +8,7 @@ import { OneErrorCode } from './error-code';
|
|
|
8
8
|
export const SW_DID_NAME_PREFIX = 'holder-did-sw-key';
|
|
9
9
|
export const HW_DID_NAME_PREFIX = 'holder-did-hw-key';
|
|
10
10
|
|
|
11
|
-
const generateHwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
11
|
+
export const generateHwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
12
12
|
const hwKeyId = await core
|
|
13
13
|
.generateKey({
|
|
14
14
|
keyParams: {},
|
|
@@ -30,6 +30,7 @@ const generateHwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
|
30
30
|
return core.createIdentifier({
|
|
31
31
|
did: {
|
|
32
32
|
method: 'KEY',
|
|
33
|
+
name: HW_DID_NAME_PREFIX,
|
|
33
34
|
keys: {
|
|
34
35
|
assertionMethod: [hwKeyId],
|
|
35
36
|
authentication: [hwKeyId],
|
|
@@ -47,7 +48,7 @@ const generateHwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
|
47
48
|
return null;
|
|
48
49
|
};
|
|
49
50
|
|
|
50
|
-
const generateSwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
51
|
+
export const generateSwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
51
52
|
const swKeyId = await core.generateKey({
|
|
52
53
|
keyParams: {},
|
|
53
54
|
keyType: 'ECDSA',
|
|
@@ -60,6 +61,7 @@ const generateSwIdentifier = async (core: ONECore, organisationId: string) => {
|
|
|
60
61
|
return core.createIdentifier({
|
|
61
62
|
did: {
|
|
62
63
|
method: 'KEY',
|
|
64
|
+
name: SW_DID_NAME_PREFIX,
|
|
63
65
|
keys: {
|
|
64
66
|
assertionMethod: [swKeyId],
|
|
65
67
|
authentication: [swKeyId],
|
|
@@ -82,7 +84,7 @@ export interface IdentifiersInitializationConfig {
|
|
|
82
84
|
/**
|
|
83
85
|
* Create base local identifiers
|
|
84
86
|
* @param {IdentifiersInitializationConfig} config Select desired keys/dids to be created
|
|
85
|
-
* @returns [
|
|
87
|
+
* @returns [hwIdentifierId, swIdentifierId]
|
|
86
88
|
*/
|
|
87
89
|
export const useInitializeONECoreIdentifiers = ({ generateHwKey, generateSwKey }: IdentifiersInitializationConfig) => {
|
|
88
90
|
const { core, organisationId } = useONECore();
|
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { IdentifierListQuery, IdentifierStateEnum, IdentifierTypeEnum } from "@procivis/react-native-one-core";
|
|
1
2
|
import { useQuery } from "react-query";
|
|
2
3
|
|
|
4
|
+
import { getQueryKeyFromIdentifierListQueryParams } from "../../parsers";
|
|
3
5
|
import { useONECore } from "./core-context";
|
|
4
6
|
|
|
5
7
|
export const IDENTIFIER_DETAIL_QUERY_KEY = 'identifier-detail';
|
|
8
|
+
export const IDENTIFIER_LIST_QUERY_KEY = 'identifier-list';
|
|
9
|
+
const PAGE_SIZE = 20;
|
|
6
10
|
|
|
7
11
|
export const useIdentifierDetails = (identifierId: string | undefined) => {
|
|
8
12
|
const { core } = useONECore();
|
|
@@ -15,4 +19,21 @@ export const useIdentifierDetails = (identifierId: string | undefined) => {
|
|
|
15
19
|
keepPreviousData: true,
|
|
16
20
|
},
|
|
17
21
|
);
|
|
18
|
-
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const useIdentifiers = (identifierFilter?: Partial<IdentifierListQuery>) => {
|
|
25
|
+
const { core, organisationId } = useONECore();
|
|
26
|
+
|
|
27
|
+
return useQuery(
|
|
28
|
+
[IDENTIFIER_LIST_QUERY_KEY, ...getQueryKeyFromIdentifierListQueryParams(identifierFilter)],
|
|
29
|
+
({ pageParam = 0 }) => (core.getIdentifiers({
|
|
30
|
+
types: [IdentifierTypeEnum.DID],
|
|
31
|
+
isRemote: false,
|
|
32
|
+
page: pageParam,
|
|
33
|
+
state: IdentifierStateEnum.ACTIVE,
|
|
34
|
+
organisationId: organisationId,
|
|
35
|
+
pageSize: PAGE_SIZE,
|
|
36
|
+
...identifierFilter,
|
|
37
|
+
})),
|
|
38
|
+
);
|
|
39
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Config,
|
|
3
3
|
CreateProofRequest,
|
|
4
|
-
|
|
4
|
+
IdentifierListQuery,
|
|
5
5
|
OneError,
|
|
6
6
|
PresentationSubmitCredentialRequest,
|
|
7
7
|
ProofListQuery,
|
|
@@ -16,9 +16,9 @@ import { getQueryKeyFromProofListQueryParams } from '../../parsers/query';
|
|
|
16
16
|
import { Transport } from '../connectivity/connectivity';
|
|
17
17
|
import { useCoreConfig } from './core-config';
|
|
18
18
|
import { useONECore } from './core-context';
|
|
19
|
-
import { useDids } from './dids';
|
|
20
19
|
import { OneErrorCode } from './error-code';
|
|
21
20
|
import { HISTORY_LIST_QUERY_KEY } from './history';
|
|
21
|
+
import { useIdentifiers } from './identifiers';
|
|
22
22
|
import { useProofSchemaDetail } from './proof-schemas';
|
|
23
23
|
|
|
24
24
|
const PAGE_SIZE = 10;
|
|
@@ -198,7 +198,7 @@ export const useProofCreate = () => {
|
|
|
198
198
|
});
|
|
199
199
|
};
|
|
200
200
|
|
|
201
|
-
const
|
|
201
|
+
const getIdentifierFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<IdentifierListQuery> => {
|
|
202
202
|
const requestedFormats = proofSchema.proofInputSchemas.map((schema) => schema.credentialSchema.format);
|
|
203
203
|
const requestedFormatsCapabilities = requestedFormats
|
|
204
204
|
.map((format) => config.format[format]?.capabilities)
|
|
@@ -227,12 +227,12 @@ export const useProofForSchemaIdWithTransport = (
|
|
|
227
227
|
const { data: proofSchema } = useProofSchemaDetail(proofSchemaId, enabled);
|
|
228
228
|
const { data: config } = useCoreConfig();
|
|
229
229
|
|
|
230
|
-
const
|
|
231
|
-
() => (proofSchema && config ?
|
|
230
|
+
const identifierFilter = useMemo(
|
|
231
|
+
() => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),
|
|
232
232
|
[config, proofSchema],
|
|
233
233
|
);
|
|
234
234
|
|
|
235
|
-
const { data:
|
|
235
|
+
const { data: identifiers } = useIdentifiers(identifierFilter);
|
|
236
236
|
const { mutateAsync: createProof } = useProofCreate();
|
|
237
237
|
const { mutateAsync: deleteProof } = useProofDelete();
|
|
238
238
|
|
|
@@ -264,19 +264,28 @@ export const useProofForSchemaIdWithTransport = (
|
|
|
264
264
|
if (enabled) {
|
|
265
265
|
return;
|
|
266
266
|
}
|
|
267
|
+
|
|
267
268
|
if (proofState !== ProofStateEnum.CREATED && proofState !== ProofStateEnum.PENDING) {
|
|
268
269
|
setProofId(undefined);
|
|
270
|
+
} else {
|
|
271
|
+
setDeleting(true);
|
|
272
|
+
deleteProof(proofIdRef.current || '')
|
|
273
|
+
.then(() => {
|
|
274
|
+
setProofId(undefined);
|
|
275
|
+
setDeleting(false);
|
|
276
|
+
})
|
|
277
|
+
.catch(() => {});
|
|
269
278
|
}
|
|
270
|
-
}, [enabled, proofState, setProofId]);
|
|
279
|
+
}, [deleteProof, enabled, proofId, proofState, setProofId]);
|
|
271
280
|
|
|
272
281
|
useEffect(() => {
|
|
273
282
|
if (
|
|
274
283
|
deleting ||
|
|
275
284
|
!enabled ||
|
|
276
285
|
proofId ||
|
|
277
|
-
!
|
|
278
|
-
!
|
|
279
|
-
!
|
|
286
|
+
!identifiers ||
|
|
287
|
+
!identifierFilter ||
|
|
288
|
+
!identifiers.values.length ||
|
|
280
289
|
!transport ||
|
|
281
290
|
transport.length === 0
|
|
282
291
|
) {
|
|
@@ -284,16 +293,16 @@ export const useProofForSchemaIdWithTransport = (
|
|
|
284
293
|
}
|
|
285
294
|
|
|
286
295
|
createProof({
|
|
287
|
-
|
|
296
|
+
protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,
|
|
288
297
|
proofSchemaId,
|
|
289
298
|
transport,
|
|
290
|
-
|
|
299
|
+
verifierIdentifierId: identifiers.values[0].id,
|
|
291
300
|
})
|
|
292
301
|
.then((id) => {
|
|
293
302
|
setProofId(id);
|
|
294
303
|
})
|
|
295
304
|
.catch(() => {});
|
|
296
|
-
}, [proofSchemaId,
|
|
305
|
+
}, [proofSchemaId, identifiers, identifierFilter, createProof, enabled, transport, proofId, setProofId, deleting]);
|
|
297
306
|
|
|
298
307
|
return deleting ? undefined : proofId;
|
|
299
308
|
};
|
|
@@ -323,6 +332,7 @@ export const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, ena
|
|
|
323
332
|
const [sharedProof, setSharedProof] = useState<{
|
|
324
333
|
bleAdapterDisabled: boolean;
|
|
325
334
|
url?: string;
|
|
335
|
+
error?: unknown;
|
|
326
336
|
}>();
|
|
327
337
|
|
|
328
338
|
// reset when proofId changes or the proof was retracted
|
|
@@ -344,12 +354,13 @@ export const useShareProof = (proofUrlProps: ProofUrlHookParams | undefined, ena
|
|
|
344
354
|
url,
|
|
345
355
|
});
|
|
346
356
|
})
|
|
347
|
-
.catch((
|
|
348
|
-
|
|
349
|
-
if (err instanceof OneError && err.cause?.includes('BLE adapter not enabled')) {
|
|
357
|
+
.catch((error: unknown) => {
|
|
358
|
+
if (error instanceof OneError && error.cause?.includes('BLE adapter not enabled')) {
|
|
350
359
|
setSharedProof({
|
|
351
360
|
bleAdapterDisabled: true,
|
|
352
361
|
});
|
|
362
|
+
} else {
|
|
363
|
+
setSharedProof({ error, bleAdapterDisabled: false });
|
|
353
364
|
}
|
|
354
365
|
});
|
|
355
366
|
}, [enabled, proofUrlProps, shareProof, sharedProof]);
|