@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.
Files changed (202) hide show
  1. package/lib/commonjs/components/entity/entity-attributes.js +14 -1
  2. package/lib/commonjs/components/entity/entity-attributes.js.map +1 -1
  3. package/lib/commonjs/components/entity/entity-details-with-buttons.js +9 -42
  4. package/lib/commonjs/components/entity/entity-details-with-buttons.js.map +1 -1
  5. package/lib/commonjs/components/entity/entity-details.js +60 -32
  6. package/lib/commonjs/components/entity/entity-details.js.map +1 -1
  7. package/lib/commonjs/components/entity/index.js +2 -15
  8. package/lib/commonjs/components/entity/index.js.map +1 -1
  9. package/lib/commonjs/components/history/history-list-item.js +14 -12
  10. package/lib/commonjs/components/history/history-list-item.js.map +1 -1
  11. package/lib/commonjs/components/proof-request/share-credential.js +1 -2
  12. package/lib/commonjs/components/proof-request/share-credential.js.map +1 -1
  13. package/lib/commonjs/ui-components/blur/index.js +2 -9
  14. package/lib/commonjs/ui-components/blur/index.js.map +1 -1
  15. package/lib/commonjs/ui-components/buttons/hold-button.js +3 -2
  16. package/lib/commonjs/ui-components/buttons/hold-button.js.map +1 -1
  17. package/lib/commonjs/ui-components/camera/index.js +2 -9
  18. package/lib/commonjs/ui-components/camera/index.js.map +1 -1
  19. package/lib/commonjs/ui-components/control/index.js +0 -12
  20. package/lib/commonjs/ui-components/control/index.js.map +1 -1
  21. package/lib/commonjs/ui-components/credential/card/credential-details-card.js +1 -1
  22. package/lib/commonjs/ui-components/credential/card/credential-details-card.js.map +1 -1
  23. package/lib/commonjs/ui-components/credential/credential-carousel-images.js +15 -8
  24. package/lib/commonjs/ui-components/credential/credential-carousel-images.js.map +1 -1
  25. package/lib/commonjs/ui-components/entity/entity-cluster.js +50 -2
  26. package/lib/commonjs/ui-components/entity/entity-cluster.js.map +1 -1
  27. package/lib/commonjs/ui-components/entity/index.js +3 -16
  28. package/lib/commonjs/ui-components/entity/index.js.map +1 -1
  29. package/lib/commonjs/ui-components/history/history-details.js +1 -1
  30. package/lib/commonjs/ui-components/history/history-details.js.map +1 -1
  31. package/lib/commonjs/ui-components/history/index.js +4 -27
  32. package/lib/commonjs/ui-components/history/index.js.map +1 -1
  33. package/lib/commonjs/ui-components/icons/entity.js +10 -13
  34. package/lib/commonjs/ui-components/icons/entity.js.map +1 -1
  35. package/lib/commonjs/ui-components/input/index.js +3 -32
  36. package/lib/commonjs/ui-components/input/index.js.map +1 -1
  37. package/lib/commonjs/ui-components/list/index.js +4 -19
  38. package/lib/commonjs/ui-components/list/index.js.map +1 -1
  39. package/lib/commonjs/ui-components/loader/index.js +2 -13
  40. package/lib/commonjs/ui-components/loader/index.js.map +1 -1
  41. package/lib/commonjs/ui-components/pin/index.js +2 -21
  42. package/lib/commonjs/ui-components/pin/index.js.map +1 -1
  43. package/lib/commonjs/ui-components/screens/nerd-mode-screen.js.map +1 -1
  44. package/lib/commonjs/ui-components/searchbar/index.js +3 -16
  45. package/lib/commonjs/ui-components/searchbar/index.js.map +1 -1
  46. package/lib/commonjs/ui-components/settings/index.js +6 -37
  47. package/lib/commonjs/ui-components/settings/index.js.map +1 -1
  48. package/lib/commonjs/ui-components/state/index.js +2 -15
  49. package/lib/commonjs/ui-components/state/index.js.map +1 -1
  50. package/lib/commonjs/utils/date.js +1 -1
  51. package/lib/commonjs/utils/date.js.map +1 -1
  52. package/lib/commonjs/utils/hooks/connectivity/connectivity.test.js +4 -0
  53. package/lib/commonjs/utils/hooks/connectivity/connectivity.test.js.map +1 -1
  54. package/lib/commonjs/utils/hooks/core/backup.js +22 -66
  55. package/lib/commonjs/utils/hooks/core/backup.js.map +1 -1
  56. package/lib/commonjs/utils/hooks/core/core-init.js +6 -2
  57. package/lib/commonjs/utils/hooks/core/core-init.js.map +1 -1
  58. package/lib/commonjs/utils/hooks/core/identifiers.js +23 -1
  59. package/lib/commonjs/utils/hooks/core/identifiers.js.map +1 -1
  60. package/lib/commonjs/utils/hooks/core/proofs.js +24 -14
  61. package/lib/commonjs/utils/hooks/core/proofs.js.map +1 -1
  62. package/lib/commonjs/utils/hooks/core/trust-entity.js +56 -14
  63. package/lib/commonjs/utils/hooks/core/trust-entity.js.map +1 -1
  64. package/lib/commonjs/utils/parsers/credential-sharing.js +6 -15
  65. package/lib/commonjs/utils/parsers/credential-sharing.js.map +1 -1
  66. package/lib/commonjs/utils/parsers/credential.js +2 -2
  67. package/lib/commonjs/utils/parsers/credential.js.map +1 -1
  68. package/lib/commonjs/utils/parsers/query.js +23 -86
  69. package/lib/commonjs/utils/parsers/query.js.map +1 -1
  70. package/lib/module/components/entity/entity-attributes.js +15 -2
  71. package/lib/module/components/entity/entity-attributes.js.map +1 -1
  72. package/lib/module/components/entity/entity-details-with-buttons.js +11 -44
  73. package/lib/module/components/entity/entity-details-with-buttons.js.map +1 -1
  74. package/lib/module/components/entity/entity-details.js +61 -33
  75. package/lib/module/components/entity/entity-details.js.map +1 -1
  76. package/lib/module/components/entity/index.js +2 -2
  77. package/lib/module/components/entity/index.js.map +1 -1
  78. package/lib/module/components/history/history-list-item.js +15 -13
  79. package/lib/module/components/history/history-list-item.js.map +1 -1
  80. package/lib/module/components/proof-request/share-credential.js +1 -2
  81. package/lib/module/components/proof-request/share-credential.js.map +1 -1
  82. package/lib/module/ui-components/blur/index.js +2 -2
  83. package/lib/module/ui-components/blur/index.js.map +1 -1
  84. package/lib/module/ui-components/buttons/hold-button.js +4 -3
  85. package/lib/module/ui-components/buttons/hold-button.js.map +1 -1
  86. package/lib/module/ui-components/camera/index.js +2 -2
  87. package/lib/module/ui-components/camera/index.js.map +1 -1
  88. package/lib/module/ui-components/control/index.js +3 -3
  89. package/lib/module/ui-components/control/index.js.map +1 -1
  90. package/lib/module/ui-components/credential/card/credential-details-card.js +1 -1
  91. package/lib/module/ui-components/credential/card/credential-details-card.js.map +1 -1
  92. package/lib/module/ui-components/credential/credential-carousel-images.js +15 -8
  93. package/lib/module/ui-components/credential/credential-carousel-images.js.map +1 -1
  94. package/lib/module/ui-components/entity/entity-cluster.js +51 -3
  95. package/lib/module/ui-components/entity/entity-cluster.js.map +1 -1
  96. package/lib/module/ui-components/entity/index.js +4 -4
  97. package/lib/module/ui-components/entity/index.js.map +1 -1
  98. package/lib/module/ui-components/history/history-details.js +1 -1
  99. package/lib/module/ui-components/history/history-details.js.map +1 -1
  100. package/lib/module/ui-components/history/index.js +6 -6
  101. package/lib/module/ui-components/history/index.js.map +1 -1
  102. package/lib/module/ui-components/icons/entity.js +10 -13
  103. package/lib/module/ui-components/icons/entity.js.map +1 -1
  104. package/lib/module/ui-components/input/index.js +6 -6
  105. package/lib/module/ui-components/input/index.js.map +1 -1
  106. package/lib/module/ui-components/list/index.js +4 -4
  107. package/lib/module/ui-components/list/index.js.map +1 -1
  108. package/lib/module/ui-components/loader/index.js +4 -4
  109. package/lib/module/ui-components/loader/index.js.map +1 -1
  110. package/lib/module/ui-components/pin/index.js +3 -3
  111. package/lib/module/ui-components/pin/index.js.map +1 -1
  112. package/lib/module/ui-components/screens/nerd-mode-screen.js.map +1 -1
  113. package/lib/module/ui-components/searchbar/index.js +4 -4
  114. package/lib/module/ui-components/searchbar/index.js.map +1 -1
  115. package/lib/module/ui-components/settings/index.js +10 -10
  116. package/lib/module/ui-components/settings/index.js.map +1 -1
  117. package/lib/module/ui-components/state/index.js +2 -2
  118. package/lib/module/ui-components/state/index.js.map +1 -1
  119. package/lib/module/utils/date.js +1 -1
  120. package/lib/module/utils/date.js.map +1 -1
  121. package/lib/module/utils/hooks/connectivity/connectivity.test.js +4 -0
  122. package/lib/module/utils/hooks/connectivity/connectivity.test.js.map +1 -1
  123. package/lib/module/utils/hooks/core/backup.js +24 -68
  124. package/lib/module/utils/hooks/core/backup.js.map +1 -1
  125. package/lib/module/utils/hooks/core/core-init.js +5 -3
  126. package/lib/module/utils/hooks/core/core-init.js.map +1 -1
  127. package/lib/module/utils/hooks/core/identifiers.js +21 -0
  128. package/lib/module/utils/hooks/core/identifiers.js.map +1 -1
  129. package/lib/module/utils/hooks/core/proofs.js +24 -14
  130. package/lib/module/utils/hooks/core/proofs.js.map +1 -1
  131. package/lib/module/utils/hooks/core/trust-entity.js +57 -15
  132. package/lib/module/utils/hooks/core/trust-entity.js.map +1 -1
  133. package/lib/module/utils/parsers/credential-sharing.js +6 -15
  134. package/lib/module/utils/parsers/credential-sharing.js.map +1 -1
  135. package/lib/module/utils/parsers/credential.js +2 -2
  136. package/lib/module/utils/parsers/credential.js.map +1 -1
  137. package/lib/module/utils/parsers/query.js +21 -85
  138. package/lib/module/utils/parsers/query.js.map +1 -1
  139. package/lib/typescript/components/entity/entity-attributes.d.ts +1 -0
  140. package/lib/typescript/components/entity/entity-details-with-buttons.d.ts +1 -2
  141. package/lib/typescript/components/entity/entity-details.d.ts +3 -2
  142. package/lib/typescript/components/entity/index.d.ts +2 -1
  143. package/lib/typescript/ui-components/blur/index.d.ts +2 -1
  144. package/lib/typescript/ui-components/buttons/hold-button.d.ts +2 -2
  145. package/lib/typescript/ui-components/camera/index.d.ts +2 -1
  146. package/lib/typescript/ui-components/control/index.d.ts +4 -2
  147. package/lib/typescript/ui-components/credential/credential-carousel-images.d.ts +1 -0
  148. package/lib/typescript/ui-components/entity/entity-cluster.d.ts +1 -0
  149. package/lib/typescript/ui-components/entity/index.d.ts +4 -2
  150. package/lib/typescript/ui-components/history/history-details.d.ts +4 -1
  151. package/lib/typescript/ui-components/history/index.d.ts +6 -3
  152. package/lib/typescript/ui-components/input/index.d.ts +6 -3
  153. package/lib/typescript/ui-components/list/index.d.ts +4 -2
  154. package/lib/typescript/ui-components/loader/index.d.ts +4 -2
  155. package/lib/typescript/ui-components/pin/index.d.ts +4 -2
  156. package/lib/typescript/ui-components/screens/nerd-mode-screen.d.ts +1 -1
  157. package/lib/typescript/ui-components/searchbar/index.d.ts +4 -2
  158. package/lib/typescript/ui-components/settings/index.d.ts +10 -5
  159. package/lib/typescript/ui-components/state/index.d.ts +2 -1
  160. package/lib/typescript/utils/hooks/core/backup.d.ts +5 -0
  161. package/lib/typescript/utils/hooks/core/core-init.d.ts +4 -1
  162. package/lib/typescript/utils/hooks/core/identifiers.d.ts +4 -1
  163. package/lib/typescript/utils/hooks/core/proofs.d.ts +1 -0
  164. package/lib/typescript/utils/hooks/core/trust-entity.d.ts +9 -3
  165. package/lib/typescript/utils/parsers/query.d.ts +8 -7
  166. package/package.json +10 -5
  167. package/src/components/entity/entity-attributes.tsx +16 -2
  168. package/src/components/entity/entity-details-with-buttons.tsx +11 -42
  169. package/src/components/entity/entity-details.tsx +96 -33
  170. package/src/components/entity/index.ts +2 -1
  171. package/src/components/history/history-list-item.tsx +17 -13
  172. package/src/components/proof-request/share-credential.tsx +0 -1
  173. package/src/ui-components/blur/index.ts +2 -1
  174. package/src/ui-components/buttons/hold-button.tsx +6 -5
  175. package/src/ui-components/camera/index.tsx +2 -1
  176. package/src/ui-components/control/index.ts +4 -2
  177. package/src/ui-components/credential/card/credential-details-card.tsx +1 -1
  178. package/src/ui-components/credential/credential-carousel-images.tsx +15 -8
  179. package/src/ui-components/entity/entity-cluster.tsx +63 -10
  180. package/src/ui-components/entity/index.ts +4 -2
  181. package/src/ui-components/history/history-details.tsx +5 -2
  182. package/src/ui-components/history/index.ts +6 -3
  183. package/src/ui-components/icons/entity.tsx +8 -12
  184. package/src/ui-components/input/index.ts +6 -3
  185. package/src/ui-components/list/index.ts +4 -2
  186. package/src/ui-components/loader/index.ts +4 -2
  187. package/src/ui-components/pin/index.ts +4 -2
  188. package/src/ui-components/screens/nerd-mode-screen.tsx +1 -1
  189. package/src/ui-components/searchbar/index.ts +4 -2
  190. package/src/ui-components/settings/index.ts +10 -5
  191. package/src/ui-components/state/index.ts +2 -1
  192. package/src/utils/date.ts +1 -1
  193. package/src/utils/hooks/connectivity/connectivity.test.ts +7 -2
  194. package/src/utils/hooks/core/backup.ts +30 -72
  195. package/src/utils/hooks/core/core-init.ts +5 -3
  196. package/src/utils/hooks/core/identifiers.ts +22 -1
  197. package/src/utils/hooks/core/proofs.ts +27 -16
  198. package/src/utils/hooks/core/trust-entity.ts +73 -23
  199. package/src/utils/parsers/credential-sharing.tsx +8 -14
  200. package/src/utils/parsers/credential.ts +2 -1
  201. package/src/utils/parsers/query.ts +149 -0
  202. package/src/utils/parsers/query.tsx +0 -82
@@ -1,5 +1,7 @@
1
- import Avatar, { AvatarProps } from './avatar';
2
- import EntityCluster, { EntityClusterProps } from './entity-cluster';
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 DataItem, { DataItemProps } from './data-item';
2
- import HistoryItemView, { HistoryItemViewProps } from './history-item';
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 HistorySectionListItem, { HistorySectionListItemProps } from './history-section-list-item';
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=prmu1s6PuABrPg0l-0
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={20} viewBox="0 0 22 20" fill="none" {...props}>
37
+ <Svg width={22} height={22} viewBox="0 0 22 22" fill="none" {...props}>
38
38
  <Path
39
- d="M4.35742 17.9673C3.87598 17.9673 3.45817 17.8621 3.104 17.6519C2.74984 17.4416 2.47591 17.1593 2.28223 16.8052C2.09408 16.451 2 16.0581 2 15.6265C2 15.2059 2.11068 14.8047 2.33203 14.4229L8.75684 3.2251C8.97266 2.83219 9.26318 2.53613 9.62842 2.33691C9.99365 2.1377 10.3755 2.03809 10.7739 2.03809C11.1724 2.03809 11.5514 2.1377 11.9111 2.33691C12.2708 2.5306 12.5641 2.82666 12.791 3.2251L19.2158 14.4229C19.3265 14.611 19.4095 14.8075 19.4648 15.0122C19.5202 15.217 19.5479 15.4217 19.5479 15.6265C19.5479 16.0581 19.451 16.451 19.2573 16.8052C19.0636 17.1593 18.7897 17.4416 18.4355 17.6519C18.0869 17.8621 17.6719 17.9673 17.1904 17.9673H4.35742Z"
40
- fill={colorScheme.warning}
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.7744 1.03809C11.3435 1.03817 11.884 1.18254 12.3838 1.45703L12.3848 1.45605C12.386 1.45672 12.3874 1.45831 12.3887 1.45898C12.3908 1.46017 12.3933 1.46072 12.3955 1.46191L12.3945 1.46289C12.9333 1.75557 13.3522 2.19115 13.6582 2.72754L20.0781 13.916L20.1865 14.1162C20.2888 14.3193 20.3712 14.5309 20.4307 14.751C20.5082 15.0377 20.5479 15.331 20.5479 15.627C20.5478 16.2141 20.4144 16.7738 20.1348 17.2852C19.8533 17.7998 19.4512 18.2119 18.9463 18.5117L18.9453 18.5107C18.4159 18.8284 17.818 18.9678 17.1904 18.9678H4.35742C3.72707 18.9678 3.12678 18.8281 2.59375 18.5117C2.08885 18.2119 1.68678 17.7998 1.40527 17.2852L1.39941 17.2744C1.1288 16.765 1.00007 16.2092 1 15.627C1 15.0214 1.16165 14.4473 1.4668 13.9209L7.88965 2.72754C8.1894 2.18833 8.60891 1.75383 9.14941 1.45898C9.65481 1.18331 10.2012 1.03809 10.7744 1.03809Z"
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="M11.5376 11.5093C11.5265 12.0239 11.2747 12.2812 10.7822 12.2812C10.2786 12.2812 10.0186 12.0267 10.002 11.5176L9.88574 7.33398C9.87467 7.08496 9.95215 6.88021 10.1182 6.71973C10.2842 6.55371 10.5028 6.4707 10.7739 6.4707C11.0396 6.4707 11.2581 6.55371 11.4297 6.71973C11.6012 6.88021 11.6815 7.08773 11.6704 7.34229L11.5376 11.5093Z"
50
- fill={colorScheme.black}
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 RadioGroup, { RadioGroupItem, RadioGroupProps } from './radio-group';
2
- import SelectionInput, { SelectionInputChoice, SelectionInputProps } from './selection-input';
3
- import TextInput, { TextInputAccessory, TextInputProps } from './text-input';
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 ListSectionHeader, { ListSectionHeaderProps } from './list-section-header';
2
- import ListTitleHeader, { ListTitleHeaderProps } from './list-title-header';
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 LoaderView, { LoaderViewProps, LoaderViewState } from './loader';
2
- import LoadingResultScreen, { LoadingResultScreenProps } from './loading-result';
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 { PinCodeScreen, PinCodeScreenActions, PinCodeScreenProps } from './pin-code-screen';
3
- import PinLockModal, { PinLockModalLabels } from './pin-lock';
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/dist/src/identifier';
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 AnimatedSearchBar, { AnimatedSearchBarProps } from './animated-search-bar';
2
- import SearchBar, { SearchBarProps } from './search-bar';
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 ButtonSetting, { ButtonSettingProps } from './button-setting';
2
- import SettingItem, { SettingItemProps } from './setting-item';
3
- import SettingItemSeparator, { SettingItemSeparatorProps } from './setting-item-separator';
4
- import SettingsButton, { SettingsButtonProps } from './settings-button';
5
- import SwitchSetting, { SwitchSettingProps } from './switch-setting';
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 };
@@ -1,3 +1,4 @@
1
- import ErrorScreen, { ErrorScreenButton, ErrorScreenProps } from './error-screen';
1
+ import type { ErrorScreenButton, ErrorScreenProps } from './error-screen';
2
+ import ErrorScreen from './error-screen';
2
3
 
3
4
  export { ErrorScreen, ErrorScreenButton, ErrorScreenProps };
package/src/utils/date.ts CHANGED
@@ -9,7 +9,7 @@ const DAY = 24 * 60 * MINUTE;
9
9
  // OS locale
10
10
  const systemLocale: string | undefined = I18nManager.getConstants().localeIdentifier
11
11
  ?.replace(/_/g, '-')
12
- .split('#')[0]
12
+ .split(/[#@]/)[0]
13
13
  .replace(/-$/, '');
14
14
 
15
15
  /**
@@ -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 { DidTypeEnum, OneError } from '@procivis/react-native-one-core';
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 { generateUUID } from '../../uuid';
5
+ import { reportException } from '../../reporting';
6
6
  import { useONECore } from './core-context';
7
- import { HW_DID_NAME_PREFIX, IdentifiersInitializationConfig, SW_DID_NAME_PREFIX } from './core-init';
8
- import { OneErrorCode } from './error-code';
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 did references
72
- const dids = await core.getDids({
73
- deactivated: false,
74
- organisationId,
75
- page: 0,
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
- params: {},
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
- let hwKeyId: string | null = null;
106
- if (generateHwKey) {
107
- hwKeyId = await core
108
- .generateKey({
109
- keyParams: {},
110
- keyType: 'ECDSA',
111
- name: `holder-key-hw-${generateUUID()}`,
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 [hwDidId, swDidId]
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
- DidListQuery,
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 getDidFilterForProofSchema = (proofSchema: ProofSchema, config: Config): Partial<DidListQuery> => {
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 didFilter = useMemo(
231
- () => (proofSchema && config ? getDidFilterForProofSchema(proofSchema, config) : undefined),
230
+ const identifierFilter = useMemo(
231
+ () => (proofSchema && config ? getIdentifierFilterForProofSchema(proofSchema, config) : undefined),
232
232
  [config, proofSchema],
233
233
  );
234
234
 
235
- const { data: dids } = useDids(didFilter);
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
- !dids ||
278
- !didFilter ||
279
- !dids.values.length ||
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
- exchange: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,
296
+ protocol: VerificationProtocol.OPENID4VP_PROXIMITY_DRAFT00,
288
297
  proofSchemaId,
289
298
  transport,
290
- verifierDidId: dids.values[0].id,
299
+ verifierIdentifierId: identifiers.values[0].id,
291
300
  })
292
301
  .then((id) => {
293
302
  setProofId(id);
294
303
  })
295
304
  .catch(() => {});
296
- }, [proofSchemaId, dids, didFilter, createProof, enabled, transport, proofId, setProofId, deleting]);
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((err: unknown) => {
348
- // TODO emit error with specific error code from core.
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]);