@oxyhq/services 5.14.0 → 5.15.1

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 (1157) hide show
  1. package/README.md +130 -54
  2. package/lib/commonjs/assets/assets/lottie/welcomeheader_background_op1.json +1 -0
  3. package/lib/commonjs/assets/lottie/welcomeheader_background_op1.json +1 -0
  4. package/lib/commonjs/core/HttpService.js +94 -4
  5. package/lib/commonjs/core/HttpService.js.map +1 -1
  6. package/lib/commonjs/core/OxyServices.base.js +3 -1
  7. package/lib/commonjs/core/OxyServices.base.js.map +1 -1
  8. package/lib/commonjs/core/mixins/OxyServices.assets.js +213 -22
  9. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +1 -1
  10. package/lib/commonjs/core/mixins/OxyServices.auth.js +70 -99
  11. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +1 -1
  12. package/lib/commonjs/crypto/index.js +33 -0
  13. package/lib/commonjs/crypto/index.js.map +1 -0
  14. package/lib/commonjs/crypto/keyManager.js +208 -0
  15. package/lib/commonjs/crypto/keyManager.js.map +1 -0
  16. package/lib/commonjs/crypto/recoveryPhrase.js +137 -0
  17. package/lib/commonjs/crypto/recoveryPhrase.js.map +1 -0
  18. package/lib/commonjs/crypto/signatureService.js +251 -0
  19. package/lib/commonjs/crypto/signatureService.js.map +1 -0
  20. package/lib/commonjs/i18n/locales/en-US.json +4 -0
  21. package/lib/commonjs/index.js +22 -0
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/ui/components/ActivityIndicator.js +203 -0
  24. package/lib/commonjs/ui/components/ActivityIndicator.js.map +1 -0
  25. package/lib/commonjs/ui/components/AutoHeightScrollView.js +46 -0
  26. package/lib/commonjs/ui/components/AutoHeightScrollView.js.map +1 -0
  27. package/lib/commonjs/ui/components/BottomSheet.js +407 -0
  28. package/lib/commonjs/ui/components/BottomSheet.js.map +1 -0
  29. package/lib/commonjs/ui/components/BottomSheetRouter.js +366 -0
  30. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +1 -0
  31. package/lib/commonjs/ui/components/CrossFadeIcon.js +106 -0
  32. package/lib/commonjs/ui/components/CrossFadeIcon.js.map +1 -0
  33. package/lib/commonjs/ui/components/EmptyState.js +41 -0
  34. package/lib/commonjs/ui/components/EmptyState.js.map +1 -0
  35. package/lib/commonjs/ui/components/GroupedItem.js +87 -82
  36. package/lib/commonjs/ui/components/GroupedItem.js.map +1 -1
  37. package/lib/commonjs/ui/components/GroupedSection.js +25 -25
  38. package/lib/commonjs/ui/components/GroupedSection.js.map +1 -1
  39. package/lib/commonjs/ui/components/Header.js +111 -47
  40. package/lib/commonjs/ui/components/Header.js.map +1 -1
  41. package/lib/commonjs/ui/components/HelperText.js +103 -0
  42. package/lib/commonjs/ui/components/HelperText.js.map +1 -0
  43. package/lib/commonjs/ui/components/Icon.js +109 -0
  44. package/lib/commonjs/ui/components/Icon.js.map +1 -0
  45. package/lib/commonjs/ui/components/IconButton/IconButton.js +159 -0
  46. package/lib/commonjs/ui/components/IconButton/IconButton.js.map +1 -0
  47. package/lib/commonjs/ui/components/IconButton/utils.js +155 -0
  48. package/lib/commonjs/ui/components/IconButton/utils.js.map +1 -0
  49. package/lib/commonjs/ui/components/LoadingState.js +47 -0
  50. package/lib/commonjs/ui/components/LoadingState.js.map +1 -0
  51. package/lib/commonjs/ui/components/OxyPayButton.js +1 -14
  52. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -1
  53. package/lib/commonjs/ui/components/OxyProvider.js +41 -391
  54. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  55. package/lib/commonjs/ui/components/OxySignInButton.js +9 -13
  56. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  57. package/lib/commonjs/ui/components/ProfileCard.js +7 -4
  58. package/lib/commonjs/ui/components/ProfileCard.js.map +1 -1
  59. package/lib/commonjs/ui/components/QuickActions.js +7 -4
  60. package/lib/commonjs/ui/components/QuickActions.js.map +1 -1
  61. package/lib/commonjs/ui/components/Section.js +4 -1
  62. package/lib/commonjs/ui/components/Section.js.map +1 -1
  63. package/lib/commonjs/ui/components/SectionTitle.js +6 -3
  64. package/lib/commonjs/ui/components/SectionTitle.js.map +1 -1
  65. package/lib/commonjs/ui/components/SettingRow.js +77 -0
  66. package/lib/commonjs/ui/components/SettingRow.js.map +1 -0
  67. package/lib/commonjs/ui/components/StepBasedScreen.js +188 -172
  68. package/lib/commonjs/ui/components/StepBasedScreen.js.map +1 -1
  69. package/lib/commonjs/ui/components/Surface.js +258 -0
  70. package/lib/commonjs/ui/components/Surface.js.map +1 -0
  71. package/lib/commonjs/ui/components/TextField/Addons/Outline.js +46 -0
  72. package/lib/commonjs/ui/components/TextField/Addons/Outline.js.map +1 -0
  73. package/lib/commonjs/ui/components/TextField/Addons/Underline.js +53 -0
  74. package/lib/commonjs/ui/components/TextField/Addons/Underline.js.map +1 -0
  75. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAdornment.js +155 -0
  76. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAdornment.js.map +1 -0
  77. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAffix.js +144 -0
  78. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAffix.js.map +1 -0
  79. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldIcon.js +137 -0
  80. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldIcon.js.map +1 -0
  81. package/lib/commonjs/ui/components/TextField/Adornment/enums.js +22 -0
  82. package/lib/commonjs/ui/components/TextField/Adornment/enums.js.map +1 -0
  83. package/lib/commonjs/ui/components/TextField/Adornment/types.js +6 -0
  84. package/lib/commonjs/ui/components/TextField/Adornment/types.js.map +1 -0
  85. package/lib/commonjs/ui/components/TextField/Adornment/utils.js +62 -0
  86. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +1 -0
  87. package/lib/commonjs/ui/components/TextField/Label/InputLabel.js +176 -0
  88. package/lib/commonjs/ui/components/TextField/Label/InputLabel.js.map +1 -0
  89. package/lib/commonjs/ui/components/TextField/Label/LabelBackground.js +84 -0
  90. package/lib/commonjs/ui/components/TextField/Label/LabelBackground.js.map +1 -0
  91. package/lib/commonjs/ui/components/TextField/TextFieldFlat.js +377 -0
  92. package/lib/commonjs/ui/components/TextField/TextFieldFlat.js.map +1 -0
  93. package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js +361 -0
  94. package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js.map +1 -0
  95. package/lib/commonjs/ui/components/TextField/constants.js +50 -0
  96. package/lib/commonjs/ui/components/TextField/constants.js.map +1 -0
  97. package/lib/commonjs/ui/components/TextField/helpers.js +490 -0
  98. package/lib/commonjs/ui/components/TextField/helpers.js.map +1 -0
  99. package/lib/commonjs/ui/components/TextField/types.js +6 -0
  100. package/lib/commonjs/ui/components/TextField/types.js.map +1 -0
  101. package/lib/commonjs/ui/components/TextField.js +339 -0
  102. package/lib/commonjs/ui/components/TextField.js.map +1 -0
  103. package/lib/commonjs/ui/components/TouchableRipple/Pressable.js +12 -0
  104. package/lib/commonjs/ui/components/TouchableRipple/Pressable.js.map +1 -0
  105. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.js +258 -0
  106. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.js.map +1 -0
  107. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js +107 -0
  108. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -0
  109. package/lib/commonjs/ui/components/TouchableRipple/utils.js +56 -0
  110. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +1 -0
  111. package/lib/commonjs/ui/components/Typography/AnimatedText.js +62 -0
  112. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +1 -0
  113. package/lib/commonjs/ui/components/Typography/types.js +26 -0
  114. package/lib/commonjs/ui/components/Typography/types.js.map +1 -0
  115. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +171 -0
  116. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +1 -0
  117. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +409 -0
  118. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +1 -0
  119. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +181 -0
  120. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +1 -0
  121. package/lib/commonjs/ui/components/fileManagement/styles.js +868 -0
  122. package/lib/commonjs/ui/components/fileManagement/styles.js.map +1 -0
  123. package/lib/commonjs/ui/components/index.js +29 -1
  124. package/lib/commonjs/ui/components/index.js.map +1 -1
  125. package/lib/commonjs/ui/components/profile/EditBioModal.js +181 -0
  126. package/lib/commonjs/ui/components/profile/EditBioModal.js.map +1 -0
  127. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +207 -0
  128. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +1 -0
  129. package/lib/commonjs/ui/components/profile/EditEmailModal.js +184 -0
  130. package/lib/commonjs/ui/components/profile/EditEmailModal.js.map +1 -0
  131. package/lib/commonjs/ui/components/profile/EditLinksModal.js +315 -0
  132. package/lib/commonjs/ui/components/profile/EditLinksModal.js.map +1 -0
  133. package/lib/commonjs/ui/components/profile/EditLocationModal.js +273 -0
  134. package/lib/commonjs/ui/components/profile/EditLocationModal.js.map +1 -0
  135. package/lib/commonjs/ui/components/profile/EditUsernameModal.js +180 -0
  136. package/lib/commonjs/ui/components/profile/EditUsernameModal.js.map +1 -0
  137. package/lib/commonjs/ui/components/profile/TwoFactorSetupModal.js +467 -0
  138. package/lib/commonjs/ui/components/profile/TwoFactorSetupModal.js.map +1 -0
  139. package/lib/commonjs/ui/components/styles/overlay.js +85 -0
  140. package/lib/commonjs/ui/components/styles/overlay.js.map +1 -0
  141. package/lib/commonjs/ui/components/styles/shadow.js +132 -0
  142. package/lib/commonjs/ui/components/styles/shadow.js.map +1 -0
  143. package/lib/commonjs/ui/components/theming.js +116 -0
  144. package/lib/commonjs/ui/components/theming.js.map +1 -0
  145. package/lib/commonjs/ui/components/types.js +2 -0
  146. package/lib/commonjs/ui/components/types.js.map +1 -0
  147. package/lib/commonjs/ui/components/utils/forwardRef.js +18 -0
  148. package/lib/commonjs/ui/components/utils/forwardRef.js.map +1 -0
  149. package/lib/commonjs/ui/components/utils/hasTouchHandler.js +13 -0
  150. package/lib/commonjs/ui/components/utils/hasTouchHandler.js.map +1 -0
  151. package/lib/commonjs/ui/components/utils/roundLayoutSize.js +9 -0
  152. package/lib/commonjs/ui/components/utils/roundLayoutSize.js.map +1 -0
  153. package/lib/commonjs/ui/components/utils/splitStyles.js +50 -0
  154. package/lib/commonjs/ui/components/utils/splitStyles.js.map +1 -0
  155. package/lib/commonjs/ui/constants/iconColors.js +84 -0
  156. package/lib/commonjs/ui/constants/iconColors.js.map +1 -0
  157. package/lib/commonjs/ui/constants/spacing.js +50 -0
  158. package/lib/commonjs/ui/constants/spacing.js.map +1 -0
  159. package/lib/commonjs/ui/constants/theme.js +123 -0
  160. package/lib/commonjs/ui/constants/theme.js.map +1 -0
  161. package/lib/commonjs/ui/context/OxyContext.js +198 -853
  162. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  163. package/lib/commonjs/ui/context/ThemeContext.js +36 -0
  164. package/lib/commonjs/ui/context/ThemeContext.js.map +1 -0
  165. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +349 -0
  166. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -0
  167. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +73 -0
  168. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +1 -0
  169. package/lib/commonjs/ui/context/hooks/useLanguageManagement.js +112 -0
  170. package/lib/commonjs/ui/context/hooks/useLanguageManagement.js.map +1 -0
  171. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +261 -0
  172. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +1 -0
  173. package/lib/commonjs/ui/context/hooks/useStorage.js +79 -0
  174. package/lib/commonjs/ui/context/hooks/useStorage.js.map +1 -0
  175. package/lib/commonjs/ui/context/utils/errorHandlers.js +90 -0
  176. package/lib/commonjs/ui/context/utils/errorHandlers.js.map +1 -0
  177. package/lib/commonjs/ui/context/utils/sessionHelpers.js +103 -0
  178. package/lib/commonjs/ui/context/utils/sessionHelpers.js.map +1 -0
  179. package/lib/commonjs/ui/context/utils/storageHelpers.js +119 -0
  180. package/lib/commonjs/ui/context/utils/storageHelpers.js.map +1 -0
  181. package/lib/commonjs/ui/hooks/index.js +14 -0
  182. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  183. package/lib/commonjs/ui/hooks/use-color-scheme.js +29 -0
  184. package/lib/commonjs/ui/hooks/use-color-scheme.js.map +1 -0
  185. package/lib/commonjs/ui/hooks/use-haptic-press.js +21 -0
  186. package/lib/commonjs/ui/hooks/use-haptic-press.js.map +1 -0
  187. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  188. package/lib/commonjs/ui/hooks/useDeviceManagement.js +73 -0
  189. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -0
  190. package/lib/commonjs/ui/hooks/useLanguageManagement.js +112 -0
  191. package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +1 -0
  192. package/lib/commonjs/ui/hooks/useProfileEditing.js +123 -0
  193. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +1 -0
  194. package/lib/commonjs/ui/hooks/useSessionManagement.js +261 -0
  195. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -0
  196. package/lib/commonjs/ui/hooks/useStorage.js +79 -0
  197. package/lib/commonjs/ui/hooks/useStorage.js.map +1 -0
  198. package/lib/commonjs/ui/hooks/useThemeColors.js +31 -0
  199. package/lib/commonjs/ui/hooks/useThemeColors.js.map +1 -0
  200. package/lib/commonjs/ui/hooks/useThemeStyles.js +69 -0
  201. package/lib/commonjs/ui/hooks/useThemeStyles.js.map +1 -0
  202. package/lib/commonjs/ui/index.js +1 -4
  203. package/lib/commonjs/ui/index.js.map +1 -1
  204. package/lib/commonjs/ui/navigation/bottomSheetManager.js +180 -0
  205. package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +1 -0
  206. package/lib/commonjs/ui/navigation/routes.js +80 -154
  207. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  208. package/lib/commonjs/ui/screens/AccountCenterScreen.js +67 -67
  209. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  210. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +217 -98
  211. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  212. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +514 -429
  213. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  214. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +44 -59
  215. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  216. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +12 -19
  217. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  218. package/lib/commonjs/ui/screens/AppInfoScreen.js +36 -43
  219. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  220. package/lib/commonjs/ui/screens/FeedbackScreen.js +14 -14
  221. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  222. package/lib/commonjs/ui/screens/FileManagementScreen.js +674 -1968
  223. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  224. package/lib/commonjs/ui/screens/HelpSupportScreen.js +26 -23
  225. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  226. package/lib/commonjs/ui/screens/HistoryViewScreen.js +19 -59
  227. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +1 -1
  228. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +79 -170
  229. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +1 -1
  230. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +13 -40
  231. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +1 -1
  232. package/lib/commonjs/ui/screens/OxyAuthScreen.js +436 -0
  233. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +1 -0
  234. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +18 -24
  235. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -1
  236. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +21 -9
  237. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  238. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +180 -252
  239. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  240. package/lib/commonjs/ui/screens/ProfileScreen.js +7 -5
  241. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  242. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +32 -70
  243. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +1 -1
  244. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +26 -99
  245. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  246. package/lib/commonjs/ui/screens/SessionManagementScreen.js +24 -16
  247. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  248. package/lib/commonjs/ui/screens/UserLinksScreen.js +8 -10
  249. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +1 -1
  250. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +64 -67
  251. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  252. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +11 -8
  253. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  254. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +124 -122
  255. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  256. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +99 -112
  257. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  258. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +12 -9
  259. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  260. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +552 -79
  261. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  262. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +12 -8
  263. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  264. package/lib/commonjs/ui/styles/authStyles.js +5 -11
  265. package/lib/commonjs/ui/styles/authStyles.js.map +1 -1
  266. package/lib/commonjs/ui/styles/spacing.js +60 -2
  267. package/lib/commonjs/ui/styles/spacing.js.map +1 -1
  268. package/lib/commonjs/ui/styles/theme.js +1 -1
  269. package/lib/commonjs/ui/types/fileManagement.js +6 -0
  270. package/lib/commonjs/ui/types/fileManagement.js.map +1 -0
  271. package/lib/commonjs/ui/types/navigation.js +6 -0
  272. package/lib/commonjs/ui/types/navigation.js.map +1 -0
  273. package/lib/commonjs/ui/utils/colorUtils.js +52 -0
  274. package/lib/commonjs/ui/utils/colorUtils.js.map +1 -0
  275. package/lib/commonjs/ui/utils/errorHandlers.js +90 -0
  276. package/lib/commonjs/ui/utils/errorHandlers.js.map +1 -0
  277. package/lib/commonjs/ui/utils/fileManagement.js +181 -0
  278. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -0
  279. package/lib/commonjs/ui/utils/sessionHelpers.js +103 -0
  280. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -0
  281. package/lib/commonjs/ui/utils/storageHelpers.js +119 -0
  282. package/lib/commonjs/ui/utils/storageHelpers.js.map +1 -0
  283. package/lib/commonjs/ui/utils/themeUtils.js +47 -0
  284. package/lib/commonjs/ui/utils/themeUtils.js.map +1 -0
  285. package/lib/commonjs/ui/utils/user-utils.js +53 -0
  286. package/lib/commonjs/ui/utils/user-utils.js.map +1 -0
  287. package/lib/commonjs/utils/errorUtils.js +14 -4
  288. package/lib/commonjs/utils/errorUtils.js.map +1 -1
  289. package/lib/module/assets/assets/lottie/welcomeheader_background_op1.json +1 -0
  290. package/lib/module/assets/lottie/welcomeheader_background_op1.json +1 -0
  291. package/lib/module/core/HttpService.js +94 -4
  292. package/lib/module/core/HttpService.js.map +1 -1
  293. package/lib/module/core/OxyServices.base.js +3 -1
  294. package/lib/module/core/OxyServices.base.js.map +1 -1
  295. package/lib/module/core/mixins/OxyServices.assets.js +212 -20
  296. package/lib/module/core/mixins/OxyServices.assets.js.map +1 -1
  297. package/lib/module/core/mixins/OxyServices.auth.js +70 -99
  298. package/lib/module/core/mixins/OxyServices.auth.js.map +1 -1
  299. package/lib/module/crypto/index.js +16 -0
  300. package/lib/module/crypto/index.js.map +1 -0
  301. package/lib/module/crypto/keyManager.js +204 -0
  302. package/lib/module/crypto/keyManager.js.map +1 -0
  303. package/lib/module/crypto/recoveryPhrase.js +131 -0
  304. package/lib/module/crypto/recoveryPhrase.js.map +1 -0
  305. package/lib/module/crypto/signatureService.js +248 -0
  306. package/lib/module/crypto/signatureService.js.map +1 -0
  307. package/lib/module/i18n/locales/en-US.json +4 -0
  308. package/lib/module/index.js +2 -0
  309. package/lib/module/index.js.map +1 -1
  310. package/lib/module/ui/components/ActivityIndicator.js +198 -0
  311. package/lib/module/ui/components/ActivityIndicator.js.map +1 -0
  312. package/lib/module/ui/components/AutoHeightScrollView.js +41 -0
  313. package/lib/module/ui/components/AutoHeightScrollView.js.map +1 -0
  314. package/lib/module/ui/components/BottomSheet.js +402 -0
  315. package/lib/module/ui/components/BottomSheet.js.map +1 -0
  316. package/lib/module/ui/components/BottomSheetRouter.js +356 -0
  317. package/lib/module/ui/components/BottomSheetRouter.js.map +1 -0
  318. package/lib/module/ui/components/CrossFadeIcon.js +101 -0
  319. package/lib/module/ui/components/CrossFadeIcon.js.map +1 -0
  320. package/lib/module/ui/components/EmptyState.js +36 -0
  321. package/lib/module/ui/components/EmptyState.js.map +1 -0
  322. package/lib/module/ui/components/GroupedItem.js +88 -82
  323. package/lib/module/ui/components/GroupedItem.js.map +1 -1
  324. package/lib/module/ui/components/GroupedSection.js +23 -23
  325. package/lib/module/ui/components/GroupedSection.js.map +1 -1
  326. package/lib/module/ui/components/Header.js +109 -46
  327. package/lib/module/ui/components/Header.js.map +1 -1
  328. package/lib/module/ui/components/HelperText.js +99 -0
  329. package/lib/module/ui/components/HelperText.js.map +1 -0
  330. package/lib/module/ui/components/Icon.js +102 -0
  331. package/lib/module/ui/components/Icon.js.map +1 -0
  332. package/lib/module/ui/components/IconButton/IconButton.js +153 -0
  333. package/lib/module/ui/components/IconButton/IconButton.js.map +1 -0
  334. package/lib/module/ui/components/IconButton/utils.js +149 -0
  335. package/lib/module/ui/components/IconButton/utils.js.map +1 -0
  336. package/lib/module/ui/components/LoadingState.js +42 -0
  337. package/lib/module/ui/components/LoadingState.js.map +1 -0
  338. package/lib/module/ui/components/OxyPayButton.js +1 -14
  339. package/lib/module/ui/components/OxyPayButton.js.map +1 -1
  340. package/lib/module/ui/components/OxyProvider.js +45 -396
  341. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  342. package/lib/module/ui/components/OxySignInButton.js +9 -13
  343. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  344. package/lib/module/ui/components/ProfileCard.js +7 -4
  345. package/lib/module/ui/components/ProfileCard.js.map +1 -1
  346. package/lib/module/ui/components/QuickActions.js +7 -4
  347. package/lib/module/ui/components/QuickActions.js.map +1 -1
  348. package/lib/module/ui/components/Section.js +4 -1
  349. package/lib/module/ui/components/Section.js.map +1 -1
  350. package/lib/module/ui/components/SectionTitle.js +6 -3
  351. package/lib/module/ui/components/SectionTitle.js.map +1 -1
  352. package/lib/module/ui/components/SettingRow.js +72 -0
  353. package/lib/module/ui/components/SettingRow.js.map +1 -0
  354. package/lib/module/ui/components/StepBasedScreen.js +190 -174
  355. package/lib/module/ui/components/StepBasedScreen.js.map +1 -1
  356. package/lib/module/ui/components/Surface.js +252 -0
  357. package/lib/module/ui/components/Surface.js.map +1 -0
  358. package/lib/module/ui/components/TextField/Addons/Outline.js +40 -0
  359. package/lib/module/ui/components/TextField/Addons/Outline.js.map +1 -0
  360. package/lib/module/ui/components/TextField/Addons/Underline.js +47 -0
  361. package/lib/module/ui/components/TextField/Addons/Underline.js.map +1 -0
  362. package/lib/module/ui/components/TextField/Adornment/TextFieldAdornment.js +148 -0
  363. package/lib/module/ui/components/TextField/Adornment/TextFieldAdornment.js.map +1 -0
  364. package/lib/module/ui/components/TextField/Adornment/TextFieldAffix.js +141 -0
  365. package/lib/module/ui/components/TextField/Adornment/TextFieldAffix.js.map +1 -0
  366. package/lib/module/ui/components/TextField/Adornment/TextFieldIcon.js +135 -0
  367. package/lib/module/ui/components/TextField/Adornment/TextFieldIcon.js.map +1 -0
  368. package/lib/module/ui/components/TextField/Adornment/enums.js +18 -0
  369. package/lib/module/ui/components/TextField/Adornment/enums.js.map +1 -0
  370. package/lib/module/ui/components/TextField/Adornment/types.js +4 -0
  371. package/lib/module/ui/components/TextField/Adornment/types.js.map +1 -0
  372. package/lib/module/ui/components/TextField/Adornment/utils.js +57 -0
  373. package/lib/module/ui/components/TextField/Adornment/utils.js.map +1 -0
  374. package/lib/module/ui/components/TextField/Label/InputLabel.js +171 -0
  375. package/lib/module/ui/components/TextField/Label/InputLabel.js.map +1 -0
  376. package/lib/module/ui/components/TextField/Label/LabelBackground.js +78 -0
  377. package/lib/module/ui/components/TextField/Label/LabelBackground.js.map +1 -0
  378. package/lib/module/ui/components/TextField/TextFieldFlat.js +372 -0
  379. package/lib/module/ui/components/TextField/TextFieldFlat.js.map +1 -0
  380. package/lib/module/ui/components/TextField/TextFieldOutlined.js +355 -0
  381. package/lib/module/ui/components/TextField/TextFieldOutlined.js.map +1 -0
  382. package/lib/module/ui/components/TextField/constants.js +46 -0
  383. package/lib/module/ui/components/TextField/constants.js.map +1 -0
  384. package/lib/module/ui/components/TextField/helpers.js +472 -0
  385. package/lib/module/ui/components/TextField/helpers.js.map +1 -0
  386. package/lib/module/ui/components/TextField/types.js +4 -0
  387. package/lib/module/ui/components/TextField/types.js.map +1 -0
  388. package/lib/module/ui/components/TextField.js +333 -0
  389. package/lib/module/ui/components/TextField.js.map +1 -0
  390. package/lib/module/ui/components/TouchableRipple/Pressable.js +9 -0
  391. package/lib/module/ui/components/TouchableRipple/Pressable.js.map +1 -0
  392. package/lib/module/ui/components/TouchableRipple/TouchableRipple.js +253 -0
  393. package/lib/module/ui/components/TouchableRipple/TouchableRipple.js.map +1 -0
  394. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js +101 -0
  395. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js.map +1 -0
  396. package/lib/module/ui/components/TouchableRipple/utils.js +50 -0
  397. package/lib/module/ui/components/TouchableRipple/utils.js.map +1 -0
  398. package/lib/module/ui/components/Typography/AnimatedText.js +56 -0
  399. package/lib/module/ui/components/Typography/AnimatedText.js.map +1 -0
  400. package/lib/module/ui/components/Typography/types.js +22 -0
  401. package/lib/module/ui/components/Typography/types.js.map +1 -0
  402. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +165 -0
  403. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +1 -0
  404. package/lib/module/ui/components/fileManagement/FileViewer.js +402 -0
  405. package/lib/module/ui/components/fileManagement/FileViewer.js.map +1 -0
  406. package/lib/module/ui/components/fileManagement/UploadPreview.js +175 -0
  407. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +1 -0
  408. package/lib/module/ui/components/fileManagement/styles.js +864 -0
  409. package/lib/module/ui/components/fileManagement/styles.js.map +1 -0
  410. package/lib/module/ui/components/index.js +4 -1
  411. package/lib/module/ui/components/index.js.map +1 -1
  412. package/lib/module/ui/components/profile/EditBioModal.js +175 -0
  413. package/lib/module/ui/components/profile/EditBioModal.js.map +1 -0
  414. package/lib/module/ui/components/profile/EditDisplayNameModal.js +201 -0
  415. package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +1 -0
  416. package/lib/module/ui/components/profile/EditEmailModal.js +178 -0
  417. package/lib/module/ui/components/profile/EditEmailModal.js.map +1 -0
  418. package/lib/module/ui/components/profile/EditLinksModal.js +309 -0
  419. package/lib/module/ui/components/profile/EditLinksModal.js.map +1 -0
  420. package/lib/module/ui/components/profile/EditLocationModal.js +267 -0
  421. package/lib/module/ui/components/profile/EditLocationModal.js.map +1 -0
  422. package/lib/module/ui/components/profile/EditUsernameModal.js +174 -0
  423. package/lib/module/ui/components/profile/EditUsernameModal.js.map +1 -0
  424. package/lib/module/ui/components/profile/TwoFactorSetupModal.js +460 -0
  425. package/lib/module/ui/components/profile/TwoFactorSetupModal.js.map +1 -0
  426. package/lib/module/ui/components/styles/overlay.js +80 -0
  427. package/lib/module/ui/components/styles/overlay.js.map +1 -0
  428. package/lib/module/ui/components/styles/shadow.js +128 -0
  429. package/lib/module/ui/components/styles/shadow.js.map +1 -0
  430. package/lib/module/ui/components/theming.js +111 -0
  431. package/lib/module/ui/components/theming.js.map +1 -0
  432. package/lib/module/ui/components/types.js +2 -0
  433. package/lib/module/ui/components/types.js.map +1 -0
  434. package/lib/module/ui/components/utils/forwardRef.js +13 -0
  435. package/lib/module/ui/components/utils/forwardRef.js.map +1 -0
  436. package/lib/module/ui/components/utils/hasTouchHandler.js +9 -0
  437. package/lib/module/ui/components/utils/hasTouchHandler.js.map +1 -0
  438. package/lib/module/ui/components/utils/roundLayoutSize.js +4 -0
  439. package/lib/module/ui/components/utils/roundLayoutSize.js.map +1 -0
  440. package/lib/module/ui/components/utils/splitStyles.js +46 -0
  441. package/lib/module/ui/components/utils/splitStyles.js.map +1 -0
  442. package/lib/module/ui/constants/iconColors.js +78 -0
  443. package/lib/module/ui/constants/iconColors.js.map +1 -0
  444. package/lib/module/ui/constants/spacing.js +45 -0
  445. package/lib/module/ui/constants/spacing.js.map +1 -0
  446. package/lib/module/ui/constants/theme.js +119 -0
  447. package/lib/module/ui/constants/theme.js.map +1 -0
  448. package/lib/module/ui/context/OxyContext.js +199 -855
  449. package/lib/module/ui/context/OxyContext.js.map +1 -1
  450. package/lib/module/ui/context/ThemeContext.js +29 -0
  451. package/lib/module/ui/context/ThemeContext.js.map +1 -0
  452. package/lib/module/ui/context/hooks/useAuthOperations.js +344 -0
  453. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -0
  454. package/lib/module/ui/context/hooks/useDeviceManagement.js +68 -0
  455. package/lib/module/ui/context/hooks/useDeviceManagement.js.map +1 -0
  456. package/lib/module/ui/context/hooks/useLanguageManagement.js +107 -0
  457. package/lib/module/ui/context/hooks/useLanguageManagement.js.map +1 -0
  458. package/lib/module/ui/context/hooks/useSessionManagement.js +256 -0
  459. package/lib/module/ui/context/hooks/useSessionManagement.js.map +1 -0
  460. package/lib/module/ui/context/hooks/useStorage.js +74 -0
  461. package/lib/module/ui/context/hooks/useStorage.js.map +1 -0
  462. package/lib/module/ui/context/utils/errorHandlers.js +83 -0
  463. package/lib/module/ui/context/utils/errorHandlers.js.map +1 -0
  464. package/lib/module/ui/context/utils/sessionHelpers.js +96 -0
  465. package/lib/module/ui/context/utils/sessionHelpers.js.map +1 -0
  466. package/lib/module/ui/context/utils/storageHelpers.js +111 -0
  467. package/lib/module/ui/context/utils/storageHelpers.js.map +1 -0
  468. package/lib/module/ui/hooks/index.js +2 -0
  469. package/lib/module/ui/hooks/index.js.map +1 -1
  470. package/lib/module/ui/hooks/use-color-scheme.js +26 -0
  471. package/lib/module/ui/hooks/use-color-scheme.js.map +1 -0
  472. package/lib/module/ui/hooks/use-haptic-press.js +17 -0
  473. package/lib/module/ui/hooks/use-haptic-press.js.map +1 -0
  474. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  475. package/lib/module/ui/hooks/useDeviceManagement.js +68 -0
  476. package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -0
  477. package/lib/module/ui/hooks/useLanguageManagement.js +107 -0
  478. package/lib/module/ui/hooks/useLanguageManagement.js.map +1 -0
  479. package/lib/module/ui/hooks/useProfileEditing.js +118 -0
  480. package/lib/module/ui/hooks/useProfileEditing.js.map +1 -0
  481. package/lib/module/ui/hooks/useSessionManagement.js +256 -0
  482. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -0
  483. package/lib/module/ui/hooks/useStorage.js +74 -0
  484. package/lib/module/ui/hooks/useStorage.js.map +1 -0
  485. package/lib/module/ui/hooks/useThemeColors.js +27 -0
  486. package/lib/module/ui/hooks/useThemeColors.js.map +1 -0
  487. package/lib/module/ui/hooks/useThemeStyles.js +64 -0
  488. package/lib/module/ui/hooks/useThemeStyles.js.map +1 -0
  489. package/lib/module/ui/index.js +2 -4
  490. package/lib/module/ui/index.js.map +1 -1
  491. package/lib/module/ui/navigation/bottomSheetManager.js +168 -0
  492. package/lib/module/ui/navigation/bottomSheetManager.js.map +1 -0
  493. package/lib/module/ui/navigation/routes.js +77 -152
  494. package/lib/module/ui/navigation/routes.js.map +1 -1
  495. package/lib/module/ui/screens/AccountCenterScreen.js +67 -67
  496. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  497. package/lib/module/ui/screens/AccountOverviewScreen.js +218 -100
  498. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  499. package/lib/module/ui/screens/AccountSettingsScreen.js +515 -430
  500. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  501. package/lib/module/ui/screens/AccountSwitcherScreen.js +45 -60
  502. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  503. package/lib/module/ui/screens/AccountVerificationScreen.js +12 -19
  504. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  505. package/lib/module/ui/screens/AppInfoScreen.js +36 -43
  506. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  507. package/lib/module/ui/screens/FeedbackScreen.js +14 -14
  508. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  509. package/lib/module/ui/screens/FileManagementScreen.js +670 -1965
  510. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  511. package/lib/module/ui/screens/HelpSupportScreen.js +26 -23
  512. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  513. package/lib/module/ui/screens/HistoryViewScreen.js +22 -62
  514. package/lib/module/ui/screens/HistoryViewScreen.js.map +1 -1
  515. package/lib/module/ui/screens/LanguageSelectorScreen.js +80 -171
  516. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +1 -1
  517. package/lib/module/ui/screens/LegalDocumentsScreen.js +16 -43
  518. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +1 -1
  519. package/lib/module/ui/screens/OxyAuthScreen.js +432 -0
  520. package/lib/module/ui/screens/OxyAuthScreen.js.map +1 -0
  521. package/lib/module/ui/screens/PaymentGatewayScreen.js +18 -24
  522. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -1
  523. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +21 -9
  524. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  525. package/lib/module/ui/screens/PrivacySettingsScreen.js +167 -239
  526. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  527. package/lib/module/ui/screens/ProfileScreen.js +7 -5
  528. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  529. package/lib/module/ui/screens/SavesCollectionsScreen.js +35 -73
  530. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +1 -1
  531. package/lib/module/ui/screens/SearchSettingsScreen.js +29 -102
  532. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  533. package/lib/module/ui/screens/SessionManagementScreen.js +24 -16
  534. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  535. package/lib/module/ui/screens/UserLinksScreen.js +8 -10
  536. package/lib/module/ui/screens/UserLinksScreen.js.map +1 -1
  537. package/lib/module/ui/screens/WelcomeNewUserScreen.js +65 -68
  538. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  539. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +11 -8
  540. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +1 -1
  541. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +124 -121
  542. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +1 -1
  543. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +101 -114
  544. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +1 -1
  545. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +12 -9
  546. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +1 -1
  547. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +554 -81
  548. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  549. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +12 -8
  550. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +1 -1
  551. package/lib/module/ui/styles/authStyles.js +5 -11
  552. package/lib/module/ui/styles/authStyles.js.map +1 -1
  553. package/lib/module/ui/styles/spacing.js +12 -2
  554. package/lib/module/ui/styles/spacing.js.map +1 -1
  555. package/lib/module/ui/styles/theme.js +1 -1
  556. package/lib/module/ui/types/fileManagement.js +4 -0
  557. package/lib/module/ui/types/fileManagement.js.map +1 -0
  558. package/lib/module/ui/types/navigation.js +4 -0
  559. package/lib/module/ui/types/navigation.js.map +1 -0
  560. package/lib/module/ui/utils/colorUtils.js +46 -0
  561. package/lib/module/ui/utils/colorUtils.js.map +1 -0
  562. package/lib/module/ui/utils/errorHandlers.js +83 -0
  563. package/lib/module/ui/utils/errorHandlers.js.map +1 -0
  564. package/lib/module/ui/utils/fileManagement.js +172 -0
  565. package/lib/module/ui/utils/fileManagement.js.map +1 -0
  566. package/lib/module/ui/utils/sessionHelpers.js +96 -0
  567. package/lib/module/ui/utils/sessionHelpers.js.map +1 -0
  568. package/lib/module/ui/utils/storageHelpers.js +111 -0
  569. package/lib/module/ui/utils/storageHelpers.js.map +1 -0
  570. package/lib/module/ui/utils/themeUtils.js +41 -0
  571. package/lib/module/ui/utils/themeUtils.js.map +1 -0
  572. package/lib/module/ui/utils/user-utils.js +46 -0
  573. package/lib/module/ui/utils/user-utils.js.map +1 -0
  574. package/lib/module/utils/errorUtils.js +14 -4
  575. package/lib/module/utils/errorUtils.js.map +1 -1
  576. package/lib/typescript/core/HttpService.d.ts +48 -0
  577. package/lib/typescript/core/HttpService.d.ts.map +1 -1
  578. package/lib/typescript/core/OxyServices.base.d.ts.map +1 -1
  579. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +1 -1
  580. package/lib/typescript/core/mixins/OxyServices.assets.d.ts +23 -1
  581. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +1 -1
  582. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +70 -42
  583. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +1 -1
  584. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +1 -1
  585. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +1 -1
  586. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +1 -1
  587. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +1 -1
  588. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +1 -1
  589. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +1 -1
  590. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +1 -1
  591. package/lib/typescript/core/mixins/OxyServices.totp.d.ts.map +1 -1
  592. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +1 -1
  593. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +1 -1
  594. package/lib/typescript/core/mixins/index.d.ts +26 -34
  595. package/lib/typescript/core/mixins/index.d.ts.map +1 -1
  596. package/lib/typescript/crypto/index.d.ts +11 -0
  597. package/lib/typescript/crypto/index.d.ts.map +1 -0
  598. package/lib/typescript/crypto/keyManager.d.ts +73 -0
  599. package/lib/typescript/crypto/keyManager.d.ts.map +1 -0
  600. package/lib/typescript/crypto/recoveryPhrase.d.ts +57 -0
  601. package/lib/typescript/crypto/recoveryPhrase.d.ts.map +1 -0
  602. package/lib/typescript/crypto/signatureService.d.ts +81 -0
  603. package/lib/typescript/crypto/signatureService.d.ts.map +1 -0
  604. package/lib/typescript/index.d.ts +2 -0
  605. package/lib/typescript/index.d.ts.map +1 -1
  606. package/lib/typescript/models/interfaces.d.ts +1 -0
  607. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  608. package/lib/typescript/types/bip39.d.ts +29 -0
  609. package/lib/typescript/types/color.d.ts +19 -0
  610. package/lib/typescript/types/elliptic.d.ts +61 -0
  611. package/lib/typescript/types/expo-crypto.d.ts +29 -0
  612. package/lib/typescript/types/expo-random.d.ts +9 -0
  613. package/lib/typescript/types/expo-secure-store.d.ts +21 -0
  614. package/lib/typescript/types/expo-vector-icons.d.ts +9 -0
  615. package/lib/typescript/ui/components/ActivityIndicator.d.ts +45 -0
  616. package/lib/typescript/ui/components/ActivityIndicator.d.ts.map +1 -0
  617. package/lib/typescript/ui/components/AutoHeightScrollView.d.ts +23 -0
  618. package/lib/typescript/ui/components/AutoHeightScrollView.d.ts.map +1 -0
  619. package/lib/typescript/ui/components/BottomSheet.d.ts +29 -0
  620. package/lib/typescript/ui/components/BottomSheet.d.ts.map +1 -0
  621. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +14 -0
  622. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +1 -0
  623. package/lib/typescript/ui/components/CrossFadeIcon.d.ts +27 -0
  624. package/lib/typescript/ui/components/CrossFadeIcon.d.ts.map +1 -0
  625. package/lib/typescript/ui/components/EmptyState.d.ts +8 -0
  626. package/lib/typescript/ui/components/EmptyState.d.ts.map +1 -0
  627. package/lib/typescript/ui/components/GroupedItem.d.ts +5 -9
  628. package/lib/typescript/ui/components/GroupedItem.d.ts.map +1 -1
  629. package/lib/typescript/ui/components/GroupedSection.d.ts +6 -7
  630. package/lib/typescript/ui/components/GroupedSection.d.ts.map +1 -1
  631. package/lib/typescript/ui/components/Header.d.ts +6 -1
  632. package/lib/typescript/ui/components/Header.d.ts.map +1 -1
  633. package/lib/typescript/ui/components/HelperText.d.ts +47 -0
  634. package/lib/typescript/ui/components/HelperText.d.ts.map +1 -0
  635. package/lib/typescript/ui/components/Icon.d.ts +60 -0
  636. package/lib/typescript/ui/components/Icon.d.ts.map +1 -0
  637. package/lib/typescript/ui/components/IconButton/IconButton.d.ts +99 -0
  638. package/lib/typescript/ui/components/IconButton/IconButton.d.ts.map +1 -0
  639. package/lib/typescript/ui/components/IconButton/utils.d.ts +19 -0
  640. package/lib/typescript/ui/components/IconButton/utils.d.ts.map +1 -0
  641. package/lib/typescript/ui/components/LoadingState.d.ts +9 -0
  642. package/lib/typescript/ui/components/LoadingState.d.ts.map +1 -0
  643. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +1 -1
  644. package/lib/typescript/ui/components/OxyProvider.d.ts +4 -5
  645. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  646. package/lib/typescript/ui/components/OxySignInButton.d.ts +3 -8
  647. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  648. package/lib/typescript/ui/components/ProfileCard.d.ts.map +1 -1
  649. package/lib/typescript/ui/components/QuickActions.d.ts.map +1 -1
  650. package/lib/typescript/ui/components/Section.d.ts +1 -1
  651. package/lib/typescript/ui/components/Section.d.ts.map +1 -1
  652. package/lib/typescript/ui/components/SectionTitle.d.ts +1 -1
  653. package/lib/typescript/ui/components/SectionTitle.d.ts.map +1 -1
  654. package/lib/typescript/ui/components/SettingRow.d.ts +14 -0
  655. package/lib/typescript/ui/components/SettingRow.d.ts.map +1 -0
  656. package/lib/typescript/ui/components/StepBasedScreen.d.ts +3 -2
  657. package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +1 -1
  658. package/lib/typescript/ui/components/Surface.d.ts +76 -0
  659. package/lib/typescript/ui/components/Surface.d.ts.map +1 -0
  660. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +16 -0
  661. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts.map +1 -0
  662. package/lib/typescript/ui/components/TextField/Addons/Underline.d.ts +19 -0
  663. package/lib/typescript/ui/components/TextField/Addons/Underline.d.ts.map +1 -0
  664. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAdornment.d.ts +45 -0
  665. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAdornment.d.ts.map +1 -0
  666. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAffix.d.ts +73 -0
  667. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAffix.d.ts.map +1 -0
  668. package/lib/typescript/ui/components/TextField/Adornment/TextFieldIcon.d.ts +78 -0
  669. package/lib/typescript/ui/components/TextField/Adornment/TextFieldIcon.d.ts.map +1 -0
  670. package/lib/typescript/ui/components/TextField/Adornment/enums.d.ts +13 -0
  671. package/lib/typescript/ui/components/TextField/Adornment/enums.d.ts.map +1 -0
  672. package/lib/typescript/ui/components/TextField/Adornment/types.d.ts +12 -0
  673. package/lib/typescript/ui/components/TextField/Adornment/types.d.ts.map +1 -0
  674. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +12 -0
  675. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +1 -0
  676. package/lib/typescript/ui/components/TextField/Label/InputLabel.d.ts +5 -0
  677. package/lib/typescript/ui/components/TextField/Label/InputLabel.d.ts.map +1 -0
  678. package/lib/typescript/ui/components/TextField/Label/LabelBackground.d.ts +4 -0
  679. package/lib/typescript/ui/components/TextField/Label/LabelBackground.d.ts.map +1 -0
  680. package/lib/typescript/ui/components/TextField/TextFieldFlat.d.ts +4 -0
  681. package/lib/typescript/ui/components/TextField/TextFieldFlat.d.ts.map +1 -0
  682. package/lib/typescript/ui/components/TextField/TextFieldOutlined.d.ts +4 -0
  683. package/lib/typescript/ui/components/TextField/TextFieldOutlined.d.ts.map +1 -0
  684. package/lib/typescript/ui/components/TextField/constants.d.ts +32 -0
  685. package/lib/typescript/ui/components/TextField/constants.d.ts.map +1 -0
  686. package/lib/typescript/ui/components/TextField/helpers.d.ts +97 -0
  687. package/lib/typescript/ui/components/TextField/helpers.d.ts.map +1 -0
  688. package/lib/typescript/ui/components/TextField/types.d.ts +156 -0
  689. package/lib/typescript/ui/components/TextField/types.d.ts.map +1 -0
  690. package/lib/typescript/ui/components/TextField.d.ts +192 -0
  691. package/lib/typescript/ui/components/TextField.d.ts.map +1 -0
  692. package/lib/typescript/ui/components/TouchableRipple/Pressable.d.ts +13 -0
  693. package/lib/typescript/ui/components/TouchableRipple/Pressable.d.ts.map +1 -0
  694. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.d.ts +62 -0
  695. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.d.ts.map +1 -0
  696. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.native.d.ts +25 -0
  697. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +1 -0
  698. package/lib/typescript/ui/components/TouchableRipple/utils.d.ts +11 -0
  699. package/lib/typescript/ui/components/TouchableRipple/utils.d.ts.map +1 -0
  700. package/lib/typescript/ui/components/Typography/AnimatedText.d.ts +35 -0
  701. package/lib/typescript/ui/components/Typography/AnimatedText.d.ts.map +1 -0
  702. package/lib/typescript/ui/components/Typography/types.d.ts +19 -0
  703. package/lib/typescript/ui/components/Typography/types.d.ts.map +1 -0
  704. package/lib/typescript/ui/components/fileManagement/FileDetailsModal.d.ts +15 -0
  705. package/lib/typescript/ui/components/fileManagement/FileDetailsModal.d.ts.map +1 -0
  706. package/lib/typescript/ui/components/fileManagement/FileViewer.d.ts +18 -0
  707. package/lib/typescript/ui/components/fileManagement/FileViewer.d.ts.map +1 -0
  708. package/lib/typescript/ui/components/fileManagement/UploadPreview.d.ts +21 -0
  709. package/lib/typescript/ui/components/fileManagement/UploadPreview.d.ts.map +1 -0
  710. package/lib/typescript/ui/components/fileManagement/styles.d.ts +860 -0
  711. package/lib/typescript/ui/components/fileManagement/styles.d.ts.map +1 -0
  712. package/lib/typescript/ui/components/index.d.ts +4 -1
  713. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  714. package/lib/typescript/ui/components/profile/EditBioModal.d.ts +11 -0
  715. package/lib/typescript/ui/components/profile/EditBioModal.d.ts.map +1 -0
  716. package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts +12 -0
  717. package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts.map +1 -0
  718. package/lib/typescript/ui/components/profile/EditEmailModal.d.ts +11 -0
  719. package/lib/typescript/ui/components/profile/EditEmailModal.d.ts.map +1 -0
  720. package/lib/typescript/ui/components/profile/EditLinksModal.d.ts +18 -0
  721. package/lib/typescript/ui/components/profile/EditLinksModal.d.ts.map +1 -0
  722. package/lib/typescript/ui/components/profile/EditLocationModal.d.ts +20 -0
  723. package/lib/typescript/ui/components/profile/EditLocationModal.d.ts.map +1 -0
  724. package/lib/typescript/ui/components/profile/EditUsernameModal.d.ts +11 -0
  725. package/lib/typescript/ui/components/profile/EditUsernameModal.d.ts.map +1 -0
  726. package/lib/typescript/ui/components/profile/TwoFactorSetupModal.d.ts +11 -0
  727. package/lib/typescript/ui/components/profile/TwoFactorSetupModal.d.ts.map +1 -0
  728. package/lib/typescript/ui/components/styles/overlay.d.ts +4 -0
  729. package/lib/typescript/ui/components/styles/overlay.d.ts.map +1 -0
  730. package/lib/typescript/ui/components/styles/shadow.d.ts +3 -0
  731. package/lib/typescript/ui/components/styles/shadow.d.ts.map +1 -0
  732. package/lib/typescript/ui/components/theming.d.ts +8 -0
  733. package/lib/typescript/ui/components/theming.d.ts.map +1 -0
  734. package/lib/typescript/ui/components/types.d.ts +80 -0
  735. package/lib/typescript/ui/components/types.d.ts.map +1 -0
  736. package/lib/typescript/ui/components/utils/forwardRef.d.ts +12 -0
  737. package/lib/typescript/ui/components/utils/forwardRef.d.ts.map +1 -0
  738. package/lib/typescript/ui/components/utils/hasTouchHandler.d.ts +6 -0
  739. package/lib/typescript/ui/components/utils/hasTouchHandler.d.ts.map +1 -0
  740. package/lib/typescript/ui/components/utils/roundLayoutSize.d.ts +2 -0
  741. package/lib/typescript/ui/components/utils/roundLayoutSize.d.ts.map +1 -0
  742. package/lib/typescript/ui/components/utils/splitStyles.d.ts +20 -0
  743. package/lib/typescript/ui/components/utils/splitStyles.d.ts.map +1 -0
  744. package/lib/typescript/ui/constants/iconColors.d.ts +130 -0
  745. package/lib/typescript/ui/constants/iconColors.d.ts.map +1 -0
  746. package/lib/typescript/ui/constants/spacing.d.ts +33 -0
  747. package/lib/typescript/ui/constants/spacing.d.ts.map +1 -0
  748. package/lib/typescript/ui/constants/theme.d.ts +97 -0
  749. package/lib/typescript/ui/constants/theme.d.ts.map +1 -0
  750. package/lib/typescript/ui/context/OxyContext.d.ts +23 -17
  751. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  752. package/lib/typescript/ui/context/ThemeContext.d.ts +19 -0
  753. package/lib/typescript/ui/context/ThemeContext.d.ts.map +1 -0
  754. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +51 -0
  755. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +1 -0
  756. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts +27 -0
  757. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts.map +1 -0
  758. package/lib/typescript/ui/context/hooks/useLanguageManagement.d.ts +25 -0
  759. package/lib/typescript/ui/context/hooks/useLanguageManagement.d.ts.map +1 -0
  760. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +39 -0
  761. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +1 -0
  762. package/lib/typescript/ui/context/hooks/useStorage.d.ts +22 -0
  763. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +1 -0
  764. package/lib/typescript/ui/context/utils/errorHandlers.d.ts +30 -0
  765. package/lib/typescript/ui/context/utils/errorHandlers.d.ts.map +1 -0
  766. package/lib/typescript/ui/context/utils/sessionHelpers.d.ts +59 -0
  767. package/lib/typescript/ui/context/utils/sessionHelpers.d.ts.map +1 -0
  768. package/lib/typescript/ui/context/utils/storageHelpers.d.ts +31 -0
  769. package/lib/typescript/ui/context/utils/storageHelpers.d.ts.map +1 -0
  770. package/lib/typescript/ui/hooks/index.d.ts +2 -0
  771. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  772. package/lib/typescript/ui/hooks/use-color-scheme.d.ts +8 -0
  773. package/lib/typescript/ui/hooks/use-color-scheme.d.ts.map +1 -0
  774. package/lib/typescript/ui/hooks/use-haptic-press.d.ts +8 -0
  775. package/lib/typescript/ui/hooks/use-haptic-press.d.ts.map +1 -0
  776. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts +27 -0
  777. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts.map +1 -0
  778. package/lib/typescript/ui/hooks/useLanguageManagement.d.ts +25 -0
  779. package/lib/typescript/ui/hooks/useLanguageManagement.d.ts.map +1 -0
  780. package/lib/typescript/ui/hooks/useProfileEditing.d.ts +36 -0
  781. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +1 -0
  782. package/lib/typescript/ui/hooks/useSessionManagement.d.ts +39 -0
  783. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +1 -0
  784. package/lib/typescript/ui/hooks/useStorage.d.ts +22 -0
  785. package/lib/typescript/ui/hooks/useStorage.d.ts.map +1 -0
  786. package/lib/typescript/ui/hooks/useThemeColors.d.ts +94 -0
  787. package/lib/typescript/ui/hooks/useThemeColors.d.ts.map +1 -0
  788. package/lib/typescript/ui/hooks/useThemeStyles.d.ts +45 -0
  789. package/lib/typescript/ui/hooks/useThemeStyles.d.ts.map +1 -0
  790. package/lib/typescript/ui/index.d.ts +2 -2
  791. package/lib/typescript/ui/index.d.ts.map +1 -1
  792. package/lib/typescript/ui/navigation/bottomSheetManager.d.ts +74 -0
  793. package/lib/typescript/ui/navigation/bottomSheetManager.d.ts.map +1 -0
  794. package/lib/typescript/ui/navigation/routes.d.ts +4 -7
  795. package/lib/typescript/ui/navigation/routes.d.ts.map +1 -1
  796. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts +1 -1
  797. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  798. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts +1 -1
  799. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  800. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +1 -1
  801. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  802. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts +1 -1
  803. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  804. package/lib/typescript/ui/screens/AccountVerificationScreen.d.ts +1 -1
  805. package/lib/typescript/ui/screens/AccountVerificationScreen.d.ts.map +1 -1
  806. package/lib/typescript/ui/screens/AppInfoScreen.d.ts +1 -1
  807. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  808. package/lib/typescript/ui/screens/FeedbackScreen.d.ts +1 -1
  809. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  810. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +1 -36
  811. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  812. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts +1 -1
  813. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  814. package/lib/typescript/ui/screens/HistoryViewScreen.d.ts +1 -1
  815. package/lib/typescript/ui/screens/HistoryViewScreen.d.ts.map +1 -1
  816. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts +1 -1
  817. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +1 -1
  818. package/lib/typescript/ui/screens/LegalDocumentsScreen.d.ts +1 -1
  819. package/lib/typescript/ui/screens/LegalDocumentsScreen.d.ts.map +1 -1
  820. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +16 -0
  821. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +1 -0
  822. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +1 -1
  823. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -1
  824. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts +1 -1
  825. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  826. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts +1 -1
  827. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  828. package/lib/typescript/ui/screens/ProfileScreen.d.ts +1 -1
  829. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +1 -1
  830. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts +1 -1
  831. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts.map +1 -1
  832. package/lib/typescript/ui/screens/SearchSettingsScreen.d.ts +1 -1
  833. package/lib/typescript/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  834. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts +1 -1
  835. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  836. package/lib/typescript/ui/screens/UserLinksScreen.d.ts +2 -2
  837. package/lib/typescript/ui/screens/UserLinksScreen.d.ts.map +1 -1
  838. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts +1 -1
  839. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +1 -1
  840. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +1 -1
  841. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +1 -1
  842. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +1 -1
  843. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +1 -1
  844. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +1 -1
  845. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +1 -1
  846. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +1 -1
  847. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +1 -1
  848. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  849. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +1 -1
  850. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +1 -1
  851. package/lib/typescript/ui/stores/authStore.d.ts +1 -2
  852. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -1
  853. package/lib/typescript/ui/styles/authStyles.d.ts +0 -10
  854. package/lib/typescript/ui/styles/authStyles.d.ts.map +1 -1
  855. package/lib/typescript/ui/styles/spacing.d.ts +7 -1
  856. package/lib/typescript/ui/styles/spacing.d.ts.map +1 -1
  857. package/lib/typescript/ui/types/fileManagement.d.ts +41 -0
  858. package/lib/typescript/ui/types/fileManagement.d.ts.map +1 -0
  859. package/lib/typescript/ui/types/navigation.d.ts +36 -0
  860. package/lib/typescript/ui/types/navigation.d.ts.map +1 -0
  861. package/lib/typescript/ui/utils/colorUtils.d.ts +14 -0
  862. package/lib/typescript/ui/utils/colorUtils.d.ts.map +1 -0
  863. package/lib/typescript/ui/utils/errorHandlers.d.ts +30 -0
  864. package/lib/typescript/ui/utils/errorHandlers.d.ts.map +1 -0
  865. package/lib/typescript/ui/utils/fileManagement.d.ts +39 -0
  866. package/lib/typescript/ui/utils/fileManagement.d.ts.map +1 -0
  867. package/lib/typescript/ui/utils/sessionHelpers.d.ts +59 -0
  868. package/lib/typescript/ui/utils/sessionHelpers.d.ts.map +1 -0
  869. package/lib/typescript/ui/utils/storageHelpers.d.ts +31 -0
  870. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +1 -0
  871. package/lib/typescript/ui/utils/themeUtils.d.ts +24 -0
  872. package/lib/typescript/ui/utils/themeUtils.d.ts.map +1 -0
  873. package/lib/typescript/ui/utils/user-utils.d.ts +29 -0
  874. package/lib/typescript/ui/utils/user-utils.d.ts.map +1 -0
  875. package/lib/typescript/utils/errorUtils.d.ts.map +1 -1
  876. package/package.json +26 -15
  877. package/src/assets/lottie/welcomeheader_background_op1.json +1 -0
  878. package/src/core/HttpService.ts +97 -4
  879. package/src/core/OxyServices.base.ts +3 -1
  880. package/src/core/mixins/OxyServices.assets.ts +225 -27
  881. package/src/core/mixins/OxyServices.auth.ts +144 -80
  882. package/src/crypto/index.ts +21 -0
  883. package/src/crypto/keyManager.ts +214 -0
  884. package/src/crypto/recoveryPhrase.ts +147 -0
  885. package/src/crypto/signatureService.ts +280 -0
  886. package/src/i18n/locales/en-US.json +4 -0
  887. package/src/index.ts +13 -0
  888. package/src/models/interfaces.ts +1 -0
  889. package/src/types/bip39.d.ts +29 -0
  890. package/src/types/color.d.ts +19 -0
  891. package/src/types/elliptic.d.ts +61 -0
  892. package/src/types/expo-crypto.d.ts +29 -0
  893. package/src/types/expo-random.d.ts +9 -0
  894. package/src/types/expo-secure-store.d.ts +21 -0
  895. package/src/types/expo-vector-icons.d.ts +9 -0
  896. package/src/ui/components/ActivityIndicator.tsx +254 -0
  897. package/src/ui/components/AutoHeightScrollView.tsx +50 -0
  898. package/src/ui/components/BottomSheet.tsx +443 -0
  899. package/src/ui/components/BottomSheetRouter.tsx +407 -0
  900. package/src/ui/components/CrossFadeIcon.tsx +140 -0
  901. package/src/ui/components/EmptyState.tsx +39 -0
  902. package/src/ui/components/GroupedItem.tsx +98 -96
  903. package/src/ui/components/GroupedSection.tsx +24 -29
  904. package/src/ui/components/Header.tsx +129 -49
  905. package/src/ui/components/HelperText.tsx +160 -0
  906. package/src/ui/components/Icon.tsx +181 -0
  907. package/src/ui/components/IconButton/IconButton.tsx +235 -0
  908. package/src/ui/components/IconButton/utils.ts +190 -0
  909. package/src/ui/components/LoadingState.tsx +46 -0
  910. package/src/ui/components/OxyPayButton.tsx +1 -12
  911. package/src/ui/components/OxyProvider.tsx +49 -409
  912. package/src/ui/components/OxySignInButton.tsx +11 -18
  913. package/src/ui/components/ProfileCard.tsx +7 -4
  914. package/src/ui/components/QuickActions.tsx +7 -4
  915. package/src/ui/components/Section.tsx +6 -2
  916. package/src/ui/components/SectionTitle.tsx +7 -4
  917. package/src/ui/components/SettingRow.tsx +76 -0
  918. package/src/ui/components/StepBasedScreen.tsx +205 -187
  919. package/src/ui/components/Surface.tsx +384 -0
  920. package/src/ui/components/TextField/Addons/Outline.tsx +64 -0
  921. package/src/ui/components/TextField/Addons/Underline.tsx +78 -0
  922. package/src/ui/components/TextField/Adornment/TextFieldAdornment.tsx +208 -0
  923. package/src/ui/components/TextField/Adornment/TextFieldAffix.tsx +212 -0
  924. package/src/ui/components/TextField/Adornment/TextFieldIcon.tsx +195 -0
  925. package/src/ui/components/TextField/Adornment/enums.tsx +12 -0
  926. package/src/ui/components/TextField/Adornment/types.tsx +11 -0
  927. package/src/ui/components/TextField/Adornment/utils.ts +66 -0
  928. package/src/ui/components/TextField/Label/InputLabel.tsx +219 -0
  929. package/src/ui/components/TextField/Label/LabelBackground.tsx +100 -0
  930. package/src/ui/components/TextField/TextFieldFlat.tsx +488 -0
  931. package/src/ui/components/TextField/TextFieldOutlined.tsx +464 -0
  932. package/src/ui/components/TextField/constants.tsx +48 -0
  933. package/src/ui/components/TextField/helpers.tsx +612 -0
  934. package/src/ui/components/TextField/types.tsx +156 -0
  935. package/src/ui/components/TextField.tsx +578 -0
  936. package/src/ui/components/TouchableRipple/Pressable.tsx +41 -0
  937. package/src/ui/components/TouchableRipple/TouchableRipple.native.tsx +146 -0
  938. package/src/ui/components/TouchableRipple/TouchableRipple.tsx +347 -0
  939. package/src/ui/components/TouchableRipple/utils.ts +66 -0
  940. package/src/ui/components/Typography/AnimatedText.tsx +107 -0
  941. package/src/ui/components/Typography/types.tsx +22 -0
  942. package/src/ui/components/fileManagement/FileDetailsModal.tsx +137 -0
  943. package/src/ui/components/fileManagement/FileViewer.tsx +380 -0
  944. package/src/ui/components/fileManagement/UploadPreview.tsx +175 -0
  945. package/src/ui/components/fileManagement/styles.ts +860 -0
  946. package/src/ui/components/index.ts +4 -1
  947. package/src/ui/components/profile/EditBioModal.tsx +184 -0
  948. package/src/ui/components/profile/EditDisplayNameModal.tsx +205 -0
  949. package/src/ui/components/profile/EditEmailModal.tsx +188 -0
  950. package/src/ui/components/profile/EditLinksModal.tsx +316 -0
  951. package/src/ui/components/profile/EditLocationModal.tsx +278 -0
  952. package/src/ui/components/profile/EditUsernameModal.tsx +183 -0
  953. package/src/ui/components/profile/TwoFactorSetupModal.tsx +442 -0
  954. package/src/ui/components/styles/overlay.tsx +88 -0
  955. package/src/ui/components/styles/shadow.tsx +136 -0
  956. package/src/ui/components/theming.tsx +114 -0
  957. package/src/ui/components/types.tsx +90 -0
  958. package/src/ui/components/utils/forwardRef.tsx +23 -0
  959. package/src/ui/components/utils/hasTouchHandler.tsx +23 -0
  960. package/src/ui/components/utils/roundLayoutSize.ts +2 -0
  961. package/src/ui/components/utils/splitStyles.ts +60 -0
  962. package/src/ui/constants/iconColors.ts +88 -0
  963. package/src/ui/constants/spacing.ts +45 -0
  964. package/src/ui/constants/theme.ts +120 -0
  965. package/src/ui/context/OxyContext.tsx +276 -894
  966. package/src/ui/context/ThemeContext.tsx +41 -0
  967. package/src/ui/context/hooks/useAuthOperations.ts +400 -0
  968. package/src/ui/context/hooks/useDeviceManagement.ts +108 -0
  969. package/src/ui/context/hooks/useLanguageManagement.ts +152 -0
  970. package/src/ui/context/hooks/useSessionManagement.ts +378 -0
  971. package/src/ui/context/hooks/useStorage.ts +104 -0
  972. package/src/ui/context/utils/errorHandlers.ts +136 -0
  973. package/src/ui/context/utils/sessionHelpers.ts +146 -0
  974. package/src/ui/context/utils/storageHelpers.ts +134 -0
  975. package/src/ui/hooks/index.ts +3 -1
  976. package/src/ui/hooks/use-color-scheme.ts +24 -0
  977. package/src/ui/hooks/use-haptic-press.ts +15 -0
  978. package/src/ui/hooks/useAssets.ts +1 -1
  979. package/src/ui/hooks/useDeviceManagement.ts +108 -0
  980. package/src/ui/hooks/useLanguageManagement.ts +152 -0
  981. package/src/ui/hooks/useProfileEditing.ts +151 -0
  982. package/src/ui/hooks/useSessionManagement.ts +378 -0
  983. package/src/ui/hooks/useStorage.ts +104 -0
  984. package/src/ui/hooks/useThemeColors.ts +26 -0
  985. package/src/ui/hooks/useThemeStyles.ts +85 -0
  986. package/src/ui/index.ts +1 -4
  987. package/src/ui/navigation/bottomSheetManager.ts +191 -0
  988. package/src/ui/navigation/routes.ts +107 -189
  989. package/src/ui/screens/AccountCenterScreen.tsx +67 -63
  990. package/src/ui/screens/AccountOverviewScreen.tsx +237 -95
  991. package/src/ui/screens/AccountSettingsScreen.tsx +546 -474
  992. package/src/ui/screens/AccountSwitcherScreen.tsx +113 -116
  993. package/src/ui/screens/AccountVerificationScreen.tsx +18 -20
  994. package/src/ui/screens/AppInfoScreen.tsx +37 -38
  995. package/src/ui/screens/FeedbackScreen.tsx +15 -12
  996. package/src/ui/screens/FileManagementScreen.tsx +764 -2026
  997. package/src/ui/screens/HelpSupportScreen.tsx +30 -23
  998. package/src/ui/screens/HistoryViewScreen.tsx +25 -56
  999. package/src/ui/screens/LanguageSelectorScreen.tsx +84 -170
  1000. package/src/ui/screens/LegalDocumentsScreen.tsx +18 -41
  1001. package/src/ui/screens/OxyAuthScreen.tsx +403 -0
  1002. package/src/ui/screens/PaymentGatewayScreen.tsx +20 -22
  1003. package/src/ui/screens/PremiumSubscriptionScreen.tsx +13 -10
  1004. package/src/ui/screens/PrivacySettingsScreen.tsx +150 -198
  1005. package/src/ui/screens/ProfileScreen.tsx +7 -6
  1006. package/src/ui/screens/SavesCollectionsScreen.tsx +39 -62
  1007. package/src/ui/screens/SearchSettingsScreen.tsx +36 -86
  1008. package/src/ui/screens/SessionManagementScreen.tsx +25 -17
  1009. package/src/ui/screens/UserLinksScreen.tsx +10 -11
  1010. package/src/ui/screens/WelcomeNewUserScreen.tsx +41 -41
  1011. package/src/ui/screens/karma/KarmaAboutScreen.tsx +13 -9
  1012. package/src/ui/screens/karma/KarmaCenterScreen.tsx +70 -70
  1013. package/src/ui/screens/karma/KarmaFAQScreen.tsx +96 -96
  1014. package/src/ui/screens/karma/KarmaLeaderboardScreen.tsx +15 -10
  1015. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +605 -60
  1016. package/src/ui/screens/karma/KarmaRulesScreen.tsx +14 -9
  1017. package/src/ui/stores/authStore.ts +1 -1
  1018. package/src/ui/styles/authStyles.ts +5 -11
  1019. package/src/ui/styles/spacing.ts +21 -2
  1020. package/src/ui/styles/theme.ts +1 -1
  1021. package/src/ui/types/fileManagement.ts +51 -0
  1022. package/src/ui/types/navigation.ts +61 -0
  1023. package/src/ui/utils/colorUtils.ts +46 -0
  1024. package/src/ui/utils/errorHandlers.ts +136 -0
  1025. package/src/ui/utils/fileManagement.ts +190 -0
  1026. package/src/ui/utils/sessionHelpers.ts +146 -0
  1027. package/src/ui/utils/storageHelpers.ts +134 -0
  1028. package/src/ui/utils/themeUtils.ts +43 -0
  1029. package/src/ui/utils/user-utils.ts +58 -0
  1030. package/src/utils/errorUtils.ts +14 -4
  1031. package/lib/commonjs/ui/components/internal/TextField.js +0 -665
  1032. package/lib/commonjs/ui/components/internal/TextField.js.map +0 -1
  1033. package/lib/commonjs/ui/navigation/OxyRouter.js +0 -213
  1034. package/lib/commonjs/ui/navigation/OxyRouter.js.map +0 -1
  1035. package/lib/commonjs/ui/navigation/types.js +0 -13
  1036. package/lib/commonjs/ui/navigation/types.js.map +0 -1
  1037. package/lib/commonjs/ui/screens/AccountManagementDemo.js +0 -298
  1038. package/lib/commonjs/ui/screens/AccountManagementDemo.js.map +0 -1
  1039. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +0 -137
  1040. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +0 -1
  1041. package/lib/commonjs/ui/screens/SignInScreen.js +0 -270
  1042. package/lib/commonjs/ui/screens/SignInScreen.js.map +0 -1
  1043. package/lib/commonjs/ui/screens/SignUpScreen.js +0 -229
  1044. package/lib/commonjs/ui/screens/SignUpScreen.js.map +0 -1
  1045. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js +0 -135
  1046. package/lib/commonjs/ui/screens/steps/RecoverRequestStep.js.map +0 -1
  1047. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js +0 -165
  1048. package/lib/commonjs/ui/screens/steps/RecoverResetPasswordStep.js.map +0 -1
  1049. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js +0 -159
  1050. package/lib/commonjs/ui/screens/steps/RecoverSuccessStep.js.map +0 -1
  1051. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js +0 -144
  1052. package/lib/commonjs/ui/screens/steps/RecoverVerifyStep.js.map +0 -1
  1053. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js +0 -358
  1054. package/lib/commonjs/ui/screens/steps/SignInPasswordStep.js.map +0 -1
  1055. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js +0 -188
  1056. package/lib/commonjs/ui/screens/steps/SignInTotpStep.js.map +0 -1
  1057. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js +0 -509
  1058. package/lib/commonjs/ui/screens/steps/SignInUsernameStep.js.map +0 -1
  1059. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js +0 -200
  1060. package/lib/commonjs/ui/screens/steps/SignUpIdentityStep.js.map +0 -1
  1061. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js +0 -185
  1062. package/lib/commonjs/ui/screens/steps/SignUpSecurityStep.js.map +0 -1
  1063. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js +0 -138
  1064. package/lib/commonjs/ui/screens/steps/SignUpSummaryStep.js.map +0 -1
  1065. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js +0 -150
  1066. package/lib/commonjs/ui/screens/steps/SignUpWelcomeStep.js.map +0 -1
  1067. package/lib/module/package.json +0 -1
  1068. package/lib/module/ui/components/internal/TextField.js +0 -660
  1069. package/lib/module/ui/components/internal/TextField.js.map +0 -1
  1070. package/lib/module/ui/navigation/OxyRouter.js +0 -209
  1071. package/lib/module/ui/navigation/OxyRouter.js.map +0 -1
  1072. package/lib/module/ui/navigation/types.js +0 -22
  1073. package/lib/module/ui/navigation/types.js.map +0 -1
  1074. package/lib/module/ui/screens/AccountManagementDemo.js +0 -295
  1075. package/lib/module/ui/screens/AccountManagementDemo.js.map +0 -1
  1076. package/lib/module/ui/screens/RecoverAccountScreen.js +0 -133
  1077. package/lib/module/ui/screens/RecoverAccountScreen.js.map +0 -1
  1078. package/lib/module/ui/screens/SignInScreen.js +0 -265
  1079. package/lib/module/ui/screens/SignInScreen.js.map +0 -1
  1080. package/lib/module/ui/screens/SignUpScreen.js +0 -224
  1081. package/lib/module/ui/screens/SignUpScreen.js.map +0 -1
  1082. package/lib/module/ui/screens/steps/RecoverRequestStep.js +0 -130
  1083. package/lib/module/ui/screens/steps/RecoverRequestStep.js.map +0 -1
  1084. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js +0 -160
  1085. package/lib/module/ui/screens/steps/RecoverResetPasswordStep.js.map +0 -1
  1086. package/lib/module/ui/screens/steps/RecoverSuccessStep.js +0 -154
  1087. package/lib/module/ui/screens/steps/RecoverSuccessStep.js.map +0 -1
  1088. package/lib/module/ui/screens/steps/RecoverVerifyStep.js +0 -139
  1089. package/lib/module/ui/screens/steps/RecoverVerifyStep.js.map +0 -1
  1090. package/lib/module/ui/screens/steps/SignInPasswordStep.js +0 -353
  1091. package/lib/module/ui/screens/steps/SignInPasswordStep.js.map +0 -1
  1092. package/lib/module/ui/screens/steps/SignInTotpStep.js +0 -183
  1093. package/lib/module/ui/screens/steps/SignInTotpStep.js.map +0 -1
  1094. package/lib/module/ui/screens/steps/SignInUsernameStep.js +0 -504
  1095. package/lib/module/ui/screens/steps/SignInUsernameStep.js.map +0 -1
  1096. package/lib/module/ui/screens/steps/SignUpIdentityStep.js +0 -195
  1097. package/lib/module/ui/screens/steps/SignUpIdentityStep.js.map +0 -1
  1098. package/lib/module/ui/screens/steps/SignUpSecurityStep.js +0 -180
  1099. package/lib/module/ui/screens/steps/SignUpSecurityStep.js.map +0 -1
  1100. package/lib/module/ui/screens/steps/SignUpSummaryStep.js +0 -133
  1101. package/lib/module/ui/screens/steps/SignUpSummaryStep.js.map +0 -1
  1102. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js +0 -145
  1103. package/lib/module/ui/screens/steps/SignUpWelcomeStep.js.map +0 -1
  1104. package/lib/typescript/ui/components/internal/TextField.d.ts +0 -41
  1105. package/lib/typescript/ui/components/internal/TextField.d.ts.map +0 -1
  1106. package/lib/typescript/ui/navigation/OxyRouter.d.ts +0 -7
  1107. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +0 -1
  1108. package/lib/typescript/ui/navigation/types.d.ts +0 -141
  1109. package/lib/typescript/ui/navigation/types.d.ts.map +0 -1
  1110. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts +0 -8
  1111. package/lib/typescript/ui/screens/AccountManagementDemo.d.ts.map +0 -1
  1112. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +0 -5
  1113. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +0 -1
  1114. package/lib/typescript/ui/screens/SignInScreen.d.ts +0 -5
  1115. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +0 -1
  1116. package/lib/typescript/ui/screens/SignUpScreen.d.ts +0 -5
  1117. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +0 -1
  1118. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts +0 -24
  1119. package/lib/typescript/ui/screens/steps/RecoverRequestStep.d.ts.map +0 -1
  1120. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts +0 -24
  1121. package/lib/typescript/ui/screens/steps/RecoverResetPasswordStep.d.ts.map +0 -1
  1122. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts +0 -19
  1123. package/lib/typescript/ui/screens/steps/RecoverSuccessStep.d.ts.map +0 -1
  1124. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts +0 -26
  1125. package/lib/typescript/ui/screens/steps/RecoverVerifyStep.d.ts.map +0 -1
  1126. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts +0 -30
  1127. package/lib/typescript/ui/screens/steps/SignInPasswordStep.d.ts.map +0 -1
  1128. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts +0 -19
  1129. package/lib/typescript/ui/screens/steps/SignInTotpStep.d.ts.map +0 -1
  1130. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts +0 -28
  1131. package/lib/typescript/ui/screens/steps/SignInUsernameStep.d.ts.map +0 -1
  1132. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts +0 -26
  1133. package/lib/typescript/ui/screens/steps/SignUpIdentityStep.d.ts.map +0 -1
  1134. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts +0 -27
  1135. package/lib/typescript/ui/screens/steps/SignUpSecurityStep.d.ts.map +0 -1
  1136. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts +0 -17
  1137. package/lib/typescript/ui/screens/steps/SignUpSummaryStep.d.ts.map +0 -1
  1138. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts +0 -14
  1139. package/lib/typescript/ui/screens/steps/SignUpWelcomeStep.d.ts.map +0 -1
  1140. package/src/ui/components/internal/TextField.tsx +0 -808
  1141. package/src/ui/navigation/OxyRouter.tsx +0 -216
  1142. package/src/ui/navigation/types.ts +0 -164
  1143. package/src/ui/screens/AccountManagementDemo.tsx +0 -297
  1144. package/src/ui/screens/RecoverAccountScreen.tsx +0 -141
  1145. package/src/ui/screens/SignInScreen.tsx +0 -297
  1146. package/src/ui/screens/SignUpScreen.tsx +0 -239
  1147. package/src/ui/screens/steps/RecoverRequestStep.tsx +0 -143
  1148. package/src/ui/screens/steps/RecoverResetPasswordStep.tsx +0 -162
  1149. package/src/ui/screens/steps/RecoverSuccessStep.tsx +0 -148
  1150. package/src/ui/screens/steps/RecoverVerifyStep.tsx +0 -154
  1151. package/src/ui/screens/steps/SignInPasswordStep.tsx +0 -343
  1152. package/src/ui/screens/steps/SignInTotpStep.tsx +0 -163
  1153. package/src/ui/screens/steps/SignInUsernameStep.tsx +0 -560
  1154. package/src/ui/screens/steps/SignUpIdentityStep.tsx +0 -217
  1155. package/src/ui/screens/steps/SignUpSecurityStep.tsx +0 -207
  1156. package/src/ui/screens/steps/SignUpSummaryStep.tsx +0 -155
  1157. package/src/ui/screens/steps/SignUpWelcomeStep.tsx +0 -127
@@ -1,72 +1,21 @@
1
1
  "use strict";
2
2
 
3
- import { createContext, useContext, useEffect, useCallback, useMemo, useRef, useState } from 'react';
3
+ import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { OxyServices } from '../../core';
5
- import { normalizeAndSortSessions, mergeSessions, sessionsArraysEqual } from '../../utils/sessionUtils';
6
- import { DeviceManager } from '../../utils/deviceManager';
7
- import { useSessionSocket } from '../hooks/useSessionSocket';
8
5
  import { toast } from '../../lib/sonner';
9
6
  import { useAuthStore } from '../stores/authStore';
10
- import { getLanguageMetadata, getLanguageName, getNativeLanguageName, normalizeLanguageCode } from '../../utils/languageUtils';
11
-
12
- // Define the context shape
7
+ import { useShallow } from 'zustand/react/shallow';
8
+ import { useSessionSocket } from '../hooks/useSessionSocket';
9
+ import { useStorage } from '../hooks/useStorage';
10
+ import { useLanguageManagement } from '../hooks/useLanguageManagement';
11
+ import { useSessionManagement } from '../hooks/useSessionManagement';
12
+ import { useAuthOperations } from './hooks/useAuthOperations';
13
+ import { useDeviceManagement } from '../hooks/useDeviceManagement';
14
+ import { getStorageKeys } from '../utils/storageHelpers';
15
+ import { isInvalidSessionError } from '../utils/errorHandlers';
16
+ import { showBottomSheet as globalShowBottomSheet } from '../navigation/bottomSheetManager';
13
17
  import { jsx as _jsx } from "react/jsx-runtime";
14
- // Create the context with default values
15
18
  const OxyContext = /*#__PURE__*/createContext(null);
16
-
17
- // Props for the OxyContextProvider
18
-
19
- // Platform storage implementation
20
-
21
- // Web localStorage implementation
22
- class WebStorage {
23
- async getItem(key) {
24
- return localStorage.getItem(key);
25
- }
26
- async setItem(key, value) {
27
- localStorage.setItem(key, value);
28
- }
29
- async removeItem(key) {
30
- localStorage.removeItem(key);
31
- }
32
- async clear() {
33
- localStorage.clear();
34
- }
35
- }
36
-
37
- // React Native AsyncStorage implementation
38
- let AsyncStorage;
39
-
40
- // Determine the platform and set up storage
41
- const isReactNative = () => {
42
- return typeof navigator !== 'undefined' && navigator.product === 'ReactNative';
43
- };
44
-
45
- // Get appropriate storage for the platform
46
- const getStorage = async () => {
47
- if (isReactNative()) {
48
- if (!AsyncStorage) {
49
- try {
50
- const asyncStorageModule = await import('@react-native-async-storage/async-storage');
51
- AsyncStorage = asyncStorageModule.default;
52
- } catch (error) {
53
- console.error('Failed to import AsyncStorage:', error);
54
- throw new Error('AsyncStorage is required in React Native environment');
55
- }
56
- }
57
- return AsyncStorage;
58
- }
59
- return new WebStorage();
60
- };
61
-
62
- // Storage keys for sessions
63
- const getStorageKeys = (prefix = 'oxy_session') => ({
64
- activeSessionId: `${prefix}_active_session_id`,
65
- // Only store the active session ID
66
- sessionIds: `${prefix}_session_ids`,
67
- // Store all session IDs for quick account loading
68
- language: `${prefix}_language` // Store the selected language
69
- });
70
19
  let cachedUseFollowHook = null;
71
20
  const loadUseFollowHook = () => {
72
21
  if (cachedUseFollowHook) {
@@ -96,10 +45,8 @@ export const OxyProvider = ({
96
45
  baseURL,
97
46
  storageKeyPrefix = 'oxy_session',
98
47
  onAuthStateChange,
99
- onError,
100
- bottomSheetRef
48
+ onError
101
49
  }) => {
102
- // Create oxyServices automatically if not provided
103
50
  const oxyServicesRef = useRef(null);
104
51
  if (!oxyServicesRef.current) {
105
52
  if (providedOxyServices) {
@@ -113,807 +60,214 @@ export const OxyProvider = ({
113
60
  }
114
61
  }
115
62
  const oxyServices = oxyServicesRef.current;
116
-
117
- // Zustand state
118
- const user = useAuthStore(state => state.user);
119
- const isAuthenticated = useAuthStore(state => state.isAuthenticated);
120
- const isLoading = useAuthStore(state => state.isLoading);
121
- const error = useAuthStore(state => state.error);
122
- const loginSuccess = useAuthStore(state => state.loginSuccess);
123
- const loginFailure = useAuthStore(state => state.loginFailure);
124
- const logoutStore = useAuthStore(state => state.logout);
125
-
126
- // Local state for non-auth fields
127
- const [minimalUser, setMinimalUser] = useState(null);
128
- const [sessions, setSessions] = useState([]);
129
- const [activeSessionId, setActiveSessionId] = useState(null);
130
-
131
- // Track in-flight refresh to prevent duplicate calls
132
- const refreshInFlightRef = useRef(null);
133
-
134
- // Track recently removed session IDs to avoid validating them (cleared after 5 seconds)
135
- const removedSessionsRef = useRef(new Set());
136
- const [storage, setStorage] = useState(null);
137
- const [currentLanguage, setCurrentLanguage] = useState('en-US');
138
- const useFollowHook = useMemo(() => loadUseFollowHook(), []);
139
-
140
- // Storage keys (memoized to prevent infinite loops) - declared early for use in helpers
141
- const keys = useMemo(() => getStorageKeys(storageKeyPrefix), [storageKeyPrefix]);
142
-
143
- // Helper to apply language preference from user/server
144
- const applyLanguagePreference = useCallback(async user => {
145
- const userLanguage = user?.language;
146
- if (!userLanguage || !storage) return;
147
- try {
148
- const serverLang = normalizeLanguageCode(userLanguage);
149
- await storage.setItem(keys.language, serverLang);
150
- setCurrentLanguage(serverLang);
151
- } catch (e) {
152
- if (__DEV__) {
153
- console.warn('Failed to apply server language preference', e);
154
- }
63
+ const {
64
+ user,
65
+ isAuthenticated,
66
+ isLoading,
67
+ error,
68
+ loginSuccess,
69
+ loginFailure,
70
+ logoutStore
71
+ } = useAuthStore(useShallow(state => ({
72
+ user: state.user,
73
+ isAuthenticated: state.isAuthenticated,
74
+ isLoading: state.isLoading,
75
+ error: state.error,
76
+ loginSuccess: state.loginSuccess,
77
+ loginFailure: state.loginFailure,
78
+ logoutStore: state.logout
79
+ })));
80
+ const [tokenReady, setTokenReady] = useState(true);
81
+ const initializedRef = useRef(false);
82
+ const setAuthState = useAuthStore.setState;
83
+ const logger = useCallback((message, err) => {
84
+ if (__DEV__) {
85
+ console.warn(`[OxyContext] ${message}`, err);
155
86
  }
156
- }, [storage, keys.language]);
157
- const mapSessionsToClient = useCallback((sessions, fallbackDeviceId, fallbackUserId) => {
158
- return sessions.map(s => ({
159
- sessionId: s.sessionId,
160
- deviceId: s.deviceId || fallbackDeviceId || '',
161
- expiresAt: s.expiresAt || new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),
162
- lastActive: s.lastActive || new Date().toISOString(),
163
- userId: s.user?.id || s.userId || s.user?._id?.toString() || fallbackUserId || '',
164
- isCurrent: Boolean(s.isCurrent)
165
- }));
166
87
  }, []);
167
-
168
- // Save all session IDs to storage for quick loading on initialization
169
- const saveSessionIds = useCallback(async sessionIds => {
170
- if (!storage) return;
171
- try {
172
- const uniqueIds = Array.from(new Set(sessionIds));
173
- await storage.setItem(keys.sessionIds, JSON.stringify(uniqueIds));
174
- } catch (err) {
175
- if (__DEV__) {
176
- console.warn('Failed to save session IDs:', err);
177
- }
88
+ const storageKeys = useMemo(() => getStorageKeys(storageKeyPrefix), [storageKeyPrefix]);
89
+ const {
90
+ storage
91
+ } = useStorage({
92
+ onError,
93
+ logger
94
+ });
95
+ const {
96
+ currentLanguage,
97
+ metadata: currentLanguageMetadata,
98
+ languageName: currentLanguageName,
99
+ nativeLanguageName: currentNativeLanguageName,
100
+ setLanguage,
101
+ applyLanguagePreference
102
+ } = useLanguageManagement({
103
+ storage,
104
+ languageKey: storageKeys.language,
105
+ onError,
106
+ logger
107
+ });
108
+ const {
109
+ sessions,
110
+ activeSessionId,
111
+ setActiveSessionId,
112
+ updateSessions,
113
+ switchSession,
114
+ refreshSessions,
115
+ clearSessionState,
116
+ saveActiveSessionId,
117
+ trackRemovedSession
118
+ } = useSessionManagement({
119
+ oxyServices,
120
+ storage,
121
+ storageKeyPrefix,
122
+ loginSuccess,
123
+ logoutStore,
124
+ applyLanguagePreference,
125
+ onAuthStateChange,
126
+ onError,
127
+ setAuthError: message => setAuthState({
128
+ error: message
129
+ }),
130
+ logger,
131
+ setTokenReady
132
+ });
133
+ const {
134
+ createIdentity,
135
+ importIdentity,
136
+ signIn,
137
+ logout,
138
+ logoutAll,
139
+ hasIdentity,
140
+ getPublicKey
141
+ } = useAuthOperations({
142
+ oxyServices,
143
+ storage,
144
+ sessions,
145
+ activeSessionId,
146
+ setActiveSessionId,
147
+ updateSessions,
148
+ saveActiveSessionId,
149
+ clearSessionState,
150
+ switchSession,
151
+ applyLanguagePreference,
152
+ onAuthStateChange,
153
+ onError,
154
+ loginSuccess,
155
+ loginFailure,
156
+ logoutStore,
157
+ setAuthState,
158
+ logger
159
+ });
160
+ const {
161
+ getDeviceSessions,
162
+ logoutAllDeviceSessions,
163
+ updateDeviceName
164
+ } = useDeviceManagement({
165
+ oxyServices,
166
+ activeSessionId,
167
+ onError,
168
+ clearSessionState,
169
+ logger
170
+ });
171
+ const useFollowHook = loadUseFollowHook();
172
+ const restoreSessionsFromStorage = useCallback(async () => {
173
+ if (!storage) {
174
+ return;
178
175
  }
179
- }, [storage, keys.sessionIds]);
180
- const updateSessions = useCallback((newSessions, mergeWithExisting = false) => {
181
- setSessions(prevSessions => {
182
- const sessionsToProcess = mergeWithExisting ? mergeSessions(prevSessions, newSessions, activeSessionId, false) : normalizeAndSortSessions(newSessions, activeSessionId, false);
183
-
184
- // Save all session IDs to storage
185
- if (storage) {
186
- const allSessionIds = sessionsToProcess.map(s => s.sessionId);
187
- saveSessionIds(allSessionIds).catch(() => {
188
- // Ignore errors - non-critical
189
- });
190
- }
191
- return sessionsArraysEqual(prevSessions, sessionsToProcess) ? prevSessions : sessionsToProcess;
192
- });
193
- }, [activeSessionId, storage, saveSessionIds]);
194
-
195
- // Token ready state - start optimistically so children render immediately
196
- const [tokenReady, setTokenReady] = useState(true);
197
-
198
- // Clear all storage
199
- const clearAllStorage = useCallback(async () => {
200
- if (!storage) return;
176
+ setTokenReady(false);
201
177
  try {
202
- await storage.removeItem(keys.activeSessionId);
203
- await storage.removeItem(keys.sessionIds);
204
- } catch (err) {
205
- if (__DEV__) {
206
- console.error('Clear storage error:', err);
207
- }
208
- onError?.({
209
- message: 'Failed to clear storage',
210
- code: 'STORAGE_ERROR',
211
- status: 500
212
- });
213
- }
214
- }, [storage, keys, onError]);
215
-
216
- // Initialize storage
217
- useEffect(() => {
218
- const initStorage = async () => {
219
- try {
220
- const platformStorage = await getStorage();
221
- setStorage(platformStorage);
222
- } catch (error) {
223
- const errorMessage = error instanceof Error ? error.message : 'Failed to initialize storage';
224
- useAuthStore.setState({
225
- error: errorMessage
226
- });
227
- onError?.({
228
- message: errorMessage,
229
- code: 'STORAGE_INIT_ERROR',
230
- status: 500
231
- });
232
- }
233
- };
234
- initStorage();
235
- }, [onError]);
236
-
237
- // Initialize authentication state
238
- // Note: We don't set isLoading during initialization to avoid showing spinners
239
- // Children render immediately and can check isTokenReady/isAuthenticated themselves
240
- useEffect(() => {
241
- const initAuth = async () => {
242
- if (!storage) return;
243
- // Don't set isLoading during initialization - let it happen in background
244
- try {
245
- // Load saved language preference
246
- const savedLanguageRaw = await storage.getItem(keys.language);
247
- const savedLanguage = normalizeLanguageCode(savedLanguageRaw) || savedLanguageRaw;
248
- if (savedLanguage) {
249
- setCurrentLanguage(savedLanguage);
250
- }
251
-
252
- // Load all stored session IDs and validate them
253
- const storedSessionIdsJson = await storage.getItem(keys.sessionIds);
254
- const storedSessionIds = storedSessionIdsJson ? JSON.parse(storedSessionIdsJson) : [];
255
-
256
- // Try to restore active session from storage
257
- const storedActiveSessionId = await storage.getItem(keys.activeSessionId);
258
- const validSessions = [];
259
-
260
- // If we have stored session IDs, validate them (even without active session)
261
- if (storedSessionIds.length > 0) {
262
- if (__DEV__) {
263
- console.log('Loading stored sessions on init:', storedSessionIds.length);
264
- }
265
-
266
- // Validate each stored session ID and build session list
267
- for (const sessionId of storedSessionIds) {
268
- try {
269
- const validation = await oxyServices.validateSession(sessionId, {
270
- useHeaderValidation: true
271
- });
272
- if (validation.valid && validation.user) {
273
- validSessions.push({
274
- sessionId,
275
- userId: validation.user.id?.toString() || '',
276
- deviceId: '',
277
- expiresAt: new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toISOString(),
278
- lastActive: new Date().toISOString(),
279
- isCurrent: sessionId === storedActiveSessionId
280
- });
281
- }
282
- } catch (e) {
283
- // Session invalid, skip it
284
- if (__DEV__) {
285
- console.warn('Session validation failed for:', sessionId, e);
286
- }
287
- }
288
- }
289
-
290
- // Update sessions list with validated sessions (even if no active session)
291
- if (validSessions.length > 0) {
292
- updateSessions(validSessions, false);
293
- }
294
- }
295
-
296
- // If we have an active session, authenticate with it
297
- if (storedActiveSessionId) {
178
+ const storedSessionIdsJson = await storage.getItem(storageKeys.sessionIds);
179
+ const storedSessionIds = storedSessionIdsJson ? JSON.parse(storedSessionIdsJson) : [];
180
+ const storedActiveSessionId = await storage.getItem(storageKeys.activeSessionId);
181
+ const validSessions = [];
182
+ if (storedSessionIds.length > 0) {
183
+ for (const sessionId of storedSessionIds) {
298
184
  try {
299
- const validation = await oxyServices.validateSession(storedActiveSessionId, {
185
+ const validation = await oxyServices.validateSession(sessionId, {
300
186
  useHeaderValidation: true
301
187
  });
302
- if (validation.valid) {
303
- setActiveSessionId(storedActiveSessionId);
304
- await oxyServices.getTokenBySession(storedActiveSessionId);
305
- const fullUser = await oxyServices.getUserBySession(storedActiveSessionId);
306
- loginSuccess(fullUser);
307
- setMinimalUser({
308
- id: fullUser.id,
309
- username: fullUser.username,
310
- avatar: fullUser.avatar
188
+ if (validation?.valid && validation.user) {
189
+ const now = new Date();
190
+ validSessions.push({
191
+ sessionId,
192
+ deviceId: '',
193
+ expiresAt: new Date(now.getTime() + 7 * 24 * 60 * 60 * 1000).toISOString(),
194
+ lastActive: now.toISOString(),
195
+ userId: validation.user.id?.toString() ?? '',
196
+ isCurrent: sessionId === storedActiveSessionId
311
197
  });
312
- await applyLanguagePreference(fullUser);
313
- try {
314
- const deviceSessions = await oxyServices.getDeviceSessions(storedActiveSessionId);
315
- const allDeviceSessions = mapSessionsToClient(deviceSessions, undefined, fullUser.id);
316
- updateSessions(allDeviceSessions, true);
317
- } catch (e) {
318
- if (__DEV__) {
319
- console.warn('Failed to get device sessions on init, falling back to user sessions:', e);
320
- }
321
- const serverSessions = await oxyServices.getSessionsBySessionId(storedActiveSessionId);
322
- updateSessions(mapSessionsToClient(serverSessions, undefined, fullUser.id), false);
323
- }
324
- onAuthStateChange?.(fullUser);
325
- } else {
326
- // Active session invalid, remove it but keep other sessions
327
- await storage.removeItem(keys.activeSessionId);
328
- // Update session list to remove invalid active session
329
- updateSessions(validSessions.filter(s => s.sessionId !== storedActiveSessionId), false);
330
- }
331
- } catch (e) {
332
- if (__DEV__) {
333
- console.error('Active session validation error', e);
334
198
  }
335
- // Remove invalid active session but keep other sessions
336
- await storage.removeItem(keys.activeSessionId);
337
- updateSessions(validSessions.filter(s => s.sessionId !== storedActiveSessionId), false);
199
+ } catch (validationError) {
200
+ logger('Session validation failed during init', validationError);
338
201
  }
339
202
  }
340
- setTokenReady(true);
341
- } catch (e) {
342
- if (__DEV__) {
343
- console.error('Auth init error', e);
203
+ if (validSessions.length > 0) {
204
+ updateSessions(validSessions, {
205
+ merge: false
206
+ });
344
207
  }
345
- await clearAllStorage();
346
- setTokenReady(true);
347
208
  }
348
- };
349
- initAuth();
350
- }, [storage, oxyServices, keys, onAuthStateChange, loginSuccess, clearAllStorage, applyLanguagePreference, mapSessionsToClient, updateSessions]);
351
-
352
- // Save active session ID to storage (only session ID, no user data)
353
- const saveActiveSessionId = useCallback(async sessionId => {
354
- if (!storage) return;
355
- await storage.setItem(keys.activeSessionId, sessionId);
356
- }, [storage, keys.activeSessionId]);
357
- const switchToSession = useCallback(async sessionId => {
358
- try {
359
- const validation = await oxyServices.validateSession(sessionId, {
360
- useHeaderValidation: true
361
- });
362
- if (!validation.valid) {
363
- updateSessions(sessions.filter(s => s.sessionId !== sessionId), false);
364
- throw new Error('Session is invalid or expired');
365
- }
366
- if (!validation.user) {
367
- throw new Error('User data not available from session validation');
368
- }
369
- const fullUser = validation.user;
370
- await oxyServices.getTokenBySession(sessionId);
371
- setTokenReady(true);
372
- setActiveSessionId(sessionId);
373
- loginSuccess(fullUser);
374
- setMinimalUser({
375
- id: fullUser.id,
376
- username: fullUser.username,
377
- avatar: fullUser.avatar
378
- });
379
- await saveActiveSessionId(sessionId);
380
- await applyLanguagePreference(fullUser);
381
- oxyServices.getDeviceSessions(sessionId).then(deviceSessions => {
382
- const allDeviceSessions = mapSessionsToClient(deviceSessions, undefined, fullUser.id);
383
- updateSessions(allDeviceSessions, true);
384
- }).catch(error => {
385
- if (__DEV__) console.warn('Failed to get device sessions after switch:', error);
386
- });
387
- onAuthStateChange?.(fullUser);
388
- } catch (error) {
389
- const isInvalidSession = error?.response?.status === 401 || error?.message?.includes('Invalid or expired session') || error?.message?.includes('Session is invalid');
390
- if (isInvalidSession) {
391
- updateSessions(sessions.filter(s => s.sessionId !== sessionId), false);
392
- if (sessionId === activeSessionId && sessions.length > 1) {
393
- const otherSessions = sessions.filter(s => s.sessionId !== sessionId);
394
- for (const otherSession of otherSessions) {
395
- try {
396
- const otherValidation = await oxyServices.validateSession(otherSession.sessionId, {
397
- useHeaderValidation: true
398
- });
399
- if (otherValidation.valid) {
400
- await switchToSession(otherSession.sessionId);
401
- return;
402
- }
403
- } catch {
404
- // Continue to next session
405
- continue;
406
- }
407
- }
408
- }
409
- }
410
- const errorMessage = error instanceof Error ? error.message : 'Failed to switch session';
411
- if (__DEV__) {
412
- console.error('Switch session error:', error);
413
- }
414
- useAuthStore.setState({
415
- error: errorMessage
416
- });
417
- onError?.({
418
- message: errorMessage,
419
- code: isInvalidSession ? 'INVALID_SESSION' : 'SESSION_SWITCH_ERROR',
420
- status: isInvalidSession ? 401 : 500
421
- });
422
- setTokenReady(false);
423
- throw error; // Re-throw so calling code can handle it
424
- }
425
- }, [oxyServices, onAuthStateChange, loginSuccess, saveActiveSessionId, applyLanguagePreference, mapSessionsToClient, onError, activeSessionId, sessions]);
426
- const login = useCallback(async (username, password, deviceName) => {
427
- if (!storage) throw new Error('Storage not initialized');
428
- useAuthStore.setState({
429
- isLoading: true,
430
- error: null
431
- });
432
- try {
433
- const deviceFingerprint = DeviceManager.getDeviceFingerprint();
434
- const deviceInfo = await DeviceManager.getDeviceInfo();
435
- const response = await oxyServices.signIn(username, password, deviceName || deviceInfo.deviceName || DeviceManager.getDefaultDeviceName(), deviceFingerprint);
436
-
437
- // Handle MFA requirement
438
- if (response && 'mfaRequired' in response && response.mfaRequired) {
439
- const mfaError = new Error('Multi-factor authentication required');
440
- mfaError.code = 'MFA_REQUIRED';
441
- mfaError.mfaToken = response.mfaToken;
442
- mfaError.expiresAt = response.expiresAt;
443
- throw mfaError;
444
- }
445
- const sessionResponse = response;
446
- await oxyServices.getTokenBySession(sessionResponse.sessionId);
447
- const fullUser = await oxyServices.getUserBySession(sessionResponse.sessionId);
448
- let allDeviceSessions = [];
449
- try {
450
- const deviceSessions = await oxyServices.getDeviceSessions(sessionResponse.sessionId);
451
- allDeviceSessions = mapSessionsToClient(deviceSessions, sessionResponse.deviceId, fullUser.id);
452
- } catch (error) {
453
- if (__DEV__) {
454
- console.warn('Failed to get device sessions, falling back to user sessions:', error);
455
- }
456
- const serverSessions = await oxyServices.getSessionsBySessionId(sessionResponse.sessionId);
457
- allDeviceSessions = mapSessionsToClient(serverSessions, undefined, fullUser.id);
458
- }
459
- const userUserId = fullUser.id?.toString();
460
- const existingSession = allDeviceSessions.find(s => s.userId?.toString() === userUserId && s.sessionId !== sessionResponse.sessionId);
461
- if (existingSession) {
209
+ if (storedActiveSessionId) {
462
210
  try {
463
- await oxyServices.logoutSession(sessionResponse.sessionId, sessionResponse.sessionId);
464
- } catch (logoutError) {
465
- if (__DEV__) {
466
- console.warn('Failed to logout duplicate session:', logoutError);
467
- }
468
- }
469
- await switchToSession(existingSession.sessionId);
470
- loginSuccess(fullUser);
471
- setMinimalUser(sessionResponse.user);
472
- updateSessions(allDeviceSessions.filter(s => s.sessionId !== sessionResponse.sessionId), false);
473
- onAuthStateChange?.(fullUser);
474
- return fullUser;
475
- }
476
- setActiveSessionId(sessionResponse.sessionId);
477
- await saveActiveSessionId(sessionResponse.sessionId);
478
- loginSuccess(fullUser);
479
- setMinimalUser(sessionResponse.user);
480
- updateSessions(allDeviceSessions, true);
481
- onAuthStateChange?.(fullUser);
482
- return fullUser;
483
- } catch (error) {
484
- const errorMessage = error instanceof Error ? error.message : 'Login failed';
485
- loginFailure(errorMessage);
486
- onError?.({
487
- message: errorMessage,
488
- code: 'LOGIN_ERROR',
489
- status: 401
490
- });
491
- throw error;
492
- } finally {
493
- useAuthStore.setState({
494
- isLoading: false
495
- });
496
- }
497
- }, [storage, oxyServices, saveActiveSessionId, loginSuccess, onAuthStateChange, loginFailure, mapSessionsToClient, onError, sessions, switchToSession]);
498
-
499
- // Clear session state without calling API (for remote removals)
500
- const clearSessionState = useCallback(async () => {
501
- updateSessions([], false);
502
- setActiveSessionId(null);
503
- logoutStore();
504
- setMinimalUser(null);
505
- await clearAllStorage();
506
- onAuthStateChange?.(null);
507
- }, [updateSessions, logoutStore, clearAllStorage, onAuthStateChange]);
508
-
509
- // Logout method
510
- const logout = useCallback(async targetSessionId => {
511
- if (!activeSessionId) return;
512
- try {
513
- const sessionToLogout = targetSessionId || activeSessionId;
514
- await oxyServices.logoutSession(activeSessionId, sessionToLogout);
515
- const filteredSessions = sessions.filter(s => s.sessionId !== sessionToLogout);
516
- updateSessions(filteredSessions, false);
517
- if (sessionToLogout === activeSessionId) {
518
- if (filteredSessions.length > 0) {
519
- await switchToSession(filteredSessions[0].sessionId);
520
- } else {
521
- setActiveSessionId(null);
522
- logoutStore();
523
- setMinimalUser(null);
524
- await storage?.removeItem(keys.activeSessionId);
525
- if (onAuthStateChange) {
526
- onAuthStateChange(null);
211
+ await switchSession(storedActiveSessionId);
212
+ } catch (switchError) {
213
+ if (isInvalidSessionError(switchError)) {
214
+ await storage.removeItem(storageKeys.activeSessionId);
215
+ updateSessions(validSessions.filter(session => session.sessionId !== storedActiveSessionId), {
216
+ merge: false
217
+ });
218
+ } else {
219
+ logger('Active session validation error', switchError);
527
220
  }
528
221
  }
529
222
  }
530
223
  } catch (error) {
531
- // Check if error is 401 (session already removed remotely)
532
- const is401Error = error?.response?.status === 401 || error?.message?.includes('Invalid or expired session') || error?.message?.includes('Session is invalid');
533
- if (is401Error && targetSessionId === activeSessionId) {
534
- // Session was already removed remotely, clear state without API call
535
- await clearSessionState();
536
- return;
537
- }
538
- const errorMessage = error instanceof Error ? error.message : 'Logout failed';
539
224
  if (__DEV__) {
540
- console.error('Logout error:', error);
541
- }
542
- useAuthStore.setState({
543
- error: errorMessage
544
- });
545
- onError?.({
546
- message: errorMessage,
547
- code: 'LOGOUT_ERROR',
548
- status: 500
549
- });
550
- }
551
- }, [activeSessionId, oxyServices, sessions, switchToSession, logoutStore, storage, keys.activeSessionId, onAuthStateChange, onError, clearSessionState]);
552
- const logoutAll = useCallback(async () => {
553
- if (!activeSessionId) {
554
- const error = new Error('No active session found');
555
- useAuthStore.setState({
556
- error: error.message
557
- });
558
- onError?.({
559
- message: error.message,
560
- code: 'NO_SESSION_ERROR',
561
- status: 404
562
- });
563
- throw error;
564
- }
565
- try {
566
- await oxyServices.logoutAllSessions(activeSessionId);
567
- updateSessions([], false);
568
- setActiveSessionId(null);
569
- logoutStore();
570
- setMinimalUser(null);
571
- await clearAllStorage();
572
- onAuthStateChange?.(null);
573
- } catch (error) {
574
- const errorMessage = error instanceof Error ? error.message : 'Logout all failed';
575
- useAuthStore.setState({
576
- error: errorMessage
577
- });
578
- onError?.({
579
- message: errorMessage,
580
- code: 'LOGOUT_ALL_ERROR',
581
- status: 500
582
- });
583
- throw error;
584
- }
585
- }, [activeSessionId, oxyServices, logoutStore, clearAllStorage, onAuthStateChange, onError]);
586
-
587
- // Token restoration is handled in initAuth and switchToSession
588
- // No separate effect needed - children render immediately with isTokenReady available
589
-
590
- // Sign up method
591
- const signUp = useCallback(async (username, email, password) => {
592
- if (!storage) throw new Error('Storage not initialized');
593
- useAuthStore.setState({
594
- isLoading: true,
595
- error: null
596
- });
597
- try {
598
- await oxyServices.signUp(username, email, password);
599
- const user = await login(username, password);
600
- return user;
601
- } catch (error) {
602
- const errorMessage = error instanceof Error ? error.message : 'Sign up failed';
603
- loginFailure(errorMessage);
604
- onError?.({
605
- message: errorMessage,
606
- code: 'SIGNUP_ERROR',
607
- status: 400
608
- });
609
- throw error;
610
- } finally {
611
- useAuthStore.setState({
612
- isLoading: false
613
- });
614
- }
615
- }, [storage, oxyServices, login, loginFailure, onError]);
616
-
617
- // Complete MFA login by verifying TOTP
618
- const completeMfaLogin = useCallback(async (mfaToken, code) => {
619
- if (!storage) throw new Error('Storage not initialized');
620
- useAuthStore.setState({
621
- isLoading: true,
622
- error: null
623
- });
624
- try {
625
- const response = await oxyServices.verifyTotpLogin(mfaToken, code);
626
-
627
- // Set as active session
628
- setActiveSessionId(response.sessionId);
629
- await saveActiveSessionId(response.sessionId);
630
-
631
- // Fetch access token and user data
632
- await oxyServices.getTokenBySession(response.sessionId);
633
- const fullUser = await oxyServices.getUserBySession(response.sessionId);
634
- loginSuccess(fullUser);
635
- setMinimalUser({
636
- id: fullUser.id,
637
- username: fullUser.username,
638
- avatar: fullUser.avatar
639
- });
640
- await applyLanguagePreference(fullUser);
641
-
642
- // Get all device sessions to support multiple accounts
643
- try {
644
- const deviceSessions = await oxyServices.getDeviceSessions(response.sessionId);
645
- const allDeviceSessions = mapSessionsToClient(deviceSessions, undefined, fullUser.id);
646
- updateSessions(allDeviceSessions, true);
647
- } catch (error) {
648
- // Fallback to user sessions if device sessions fail
649
- if (__DEV__) {
650
- console.warn('Failed to get device sessions for MFA, falling back to user sessions:', error);
651
- }
652
- const serverSessions = await oxyServices.getSessionsBySessionId(response.sessionId);
653
- const userSessions = mapSessionsToClient(serverSessions, undefined, fullUser.id);
654
- updateSessions(userSessions, true);
225
+ console.error('Auth init error', error);
655
226
  }
656
- onAuthStateChange?.(fullUser);
657
- return fullUser;
658
- } catch (error) {
659
- const errorMessage = error instanceof Error ? error.message : 'MFA verification failed';
660
- loginFailure(errorMessage);
661
- onError?.({
662
- message: errorMessage,
663
- code: 'MFA_ERROR',
664
- status: 401
665
- });
666
- throw error;
227
+ await clearSessionState();
667
228
  } finally {
668
- useAuthStore.setState({
669
- isLoading: false
670
- });
671
- }
672
- }, [storage, oxyServices, loginSuccess, loginFailure, saveActiveSessionId, onAuthStateChange, applyLanguagePreference, onError]);
673
- const switchSession = useCallback(async sessionId => {
674
- await switchToSession(sessionId);
675
- }, [switchToSession]);
676
- const removeSession = useCallback(async sessionId => {
677
- await logout(sessionId);
678
- }, [logout]);
679
- const refreshSessions = useCallback(async () => {
680
- if (!activeSessionId) return;
681
-
682
- // If a refresh is already in progress, return the existing promise
683
- if (refreshInFlightRef.current) {
684
- return refreshInFlightRef.current;
685
- }
686
-
687
- // Create the refresh promise
688
- const refreshPromise = (async () => {
689
- try {
690
- const deviceSessions = await oxyServices.getDeviceSessions(activeSessionId);
691
- const allDeviceSessions = mapSessionsToClient(deviceSessions, undefined, user?.id);
692
- updateSessions(allDeviceSessions, true);
693
- } catch (error) {
694
- if (__DEV__) {
695
- console.warn('Failed to refresh device sessions, falling back to user sessions:', error);
696
- }
697
- try {
698
- const serverSessions = await oxyServices.getSessionsBySessionId(activeSessionId);
699
- const userSessions = mapSessionsToClient(serverSessions, undefined, user?.id);
700
- updateSessions(userSessions, true);
701
- } catch (fallbackError) {
702
- if (__DEV__) {
703
- console.error('Refresh sessions error:', fallbackError);
704
- }
705
-
706
- // Check if the error is a 401 (session removed/invalid)
707
- const is401Error = fallbackError?.response?.status === 401 || fallbackError?.message?.includes('Invalid or expired session') || fallbackError?.message?.includes('Session is invalid');
708
-
709
- // If 401 error, don't try to validate other sessions - they may have been removed too
710
- // Instead, check if current session is in removed sessions list
711
- if (is401Error && removedSessionsRef.current.has(activeSessionId || '')) {
712
- // Current session was removed, clear all and logout
713
- updateSessions([], false);
714
- setActiveSessionId(null);
715
- logoutStore();
716
- setMinimalUser(null);
717
- await clearAllStorage();
718
- onAuthStateChange?.(null);
719
- return;
720
- }
721
-
722
- // If the current session is invalid, try to find another valid session
723
- // But skip sessions that were recently removed
724
- if (sessions.length > 1) {
725
- const otherSessions = sessions.filter(s => s.sessionId !== activeSessionId && !removedSessionsRef.current.has(s.sessionId));
726
- for (const session of otherSessions) {
727
- try {
728
- const validation = await oxyServices.validateSession(session.sessionId, {
729
- useHeaderValidation: true
730
- });
731
- if (validation.valid) {
732
- await switchToSession(session.sessionId);
733
- return;
734
- }
735
- } catch (validationError) {
736
- // If validation returns 401, mark this session as removed
737
- const isValidation401 = validationError?.response?.status === 401 || validationError?.message?.includes('Invalid or expired session');
738
- if (isValidation401) {
739
- removedSessionsRef.current.add(session.sessionId);
740
- // Clear from tracking after 5 seconds
741
- setTimeout(() => {
742
- removedSessionsRef.current.delete(session.sessionId);
743
- }, 5000);
744
- }
745
- continue;
746
- }
747
- }
748
- }
749
-
750
- // No valid sessions found, clear all
751
- updateSessions([], false);
752
- setActiveSessionId(null);
753
- logoutStore();
754
- setMinimalUser(null);
755
- await clearAllStorage();
756
- onAuthStateChange?.(null);
757
- }
758
- } finally {
759
- // Clear the in-flight ref when done
760
- refreshInFlightRef.current = null;
761
- }
762
- })();
763
- refreshInFlightRef.current = refreshPromise;
764
- return refreshPromise;
765
- }, [activeSessionId, oxyServices, user?.id, updateSessions, sessions, switchToSession, logoutStore, clearAllStorage, onAuthStateChange, mapSessionsToClient]);
766
-
767
- // Device management methods
768
- const getDeviceSessions = useCallback(async () => {
769
- if (!activeSessionId) throw new Error('No active session');
770
- try {
771
- return await oxyServices.getDeviceSessions(activeSessionId);
772
- } catch (error) {
773
- const errorMessage = error instanceof Error ? error.message : 'Failed to get device sessions';
774
- onError?.({
775
- message: errorMessage,
776
- code: 'GET_DEVICE_SESSIONS_ERROR',
777
- status: 500
778
- });
779
- throw error;
780
- }
781
- }, [activeSessionId, oxyServices, onError]);
782
- const logoutAllDeviceSessions = useCallback(async () => {
783
- if (!activeSessionId) throw new Error('No active session');
784
- try {
785
- await oxyServices.logoutAllDeviceSessions(activeSessionId);
786
- updateSessions([], false);
787
- setActiveSessionId(null);
788
- logoutStore();
789
- setMinimalUser(null);
790
- await clearAllStorage();
791
- onAuthStateChange?.(null);
792
- } catch (error) {
793
- const errorMessage = error instanceof Error ? error.message : 'Failed to logout all device sessions';
794
- onError?.({
795
- message: errorMessage,
796
- code: 'LOGOUT_ALL_DEVICES_ERROR',
797
- status: 500
798
- });
799
- throw error;
800
- }
801
- }, [activeSessionId, oxyServices, logoutStore, clearAllStorage, onAuthStateChange, onError]);
802
- const updateDeviceName = useCallback(async deviceName => {
803
- if (!activeSessionId) throw new Error('No active session');
804
- try {
805
- await oxyServices.updateDeviceName(activeSessionId, deviceName);
806
- await DeviceManager.updateDeviceName(deviceName);
807
- } catch (error) {
808
- const errorMessage = error instanceof Error ? error.message : 'Failed to update device name';
809
- onError?.({
810
- message: errorMessage,
811
- code: 'UPDATE_DEVICE_NAME_ERROR',
812
- status: 500
813
- });
814
- throw error;
815
- }
816
- }, [activeSessionId, oxyServices, onError]);
817
-
818
- // Language management method
819
- const setLanguage = useCallback(async languageId => {
820
- if (!storage) throw new Error('Storage not initialized');
821
- try {
822
- await storage.setItem(keys.language, languageId);
823
- setCurrentLanguage(languageId);
824
- } catch (error) {
825
- const errorMessage = error instanceof Error ? error.message : 'Failed to save language preference';
826
- onError?.({
827
- message: errorMessage,
828
- code: 'LANGUAGE_SAVE_ERROR',
829
- status: 500
830
- });
831
- throw error;
832
- }
833
- }, [storage, keys.language, onError]);
834
-
835
- // Bottom sheet control methods
836
- const showBottomSheet = useCallback(screenOrConfig => {
837
- if (__DEV__) console.log('showBottomSheet called with:', screenOrConfig);
838
- if (bottomSheetRef?.current) {
839
- if (__DEV__) console.log('bottomSheetRef is available');
840
-
841
- // First, show the bottom sheet
842
- if (bottomSheetRef.current.expand) {
843
- if (__DEV__) console.log('Expanding bottom sheet');
844
- bottomSheetRef.current.expand();
845
- } else if (bottomSheetRef.current.present) {
846
- if (__DEV__) console.log('Presenting bottom sheet');
847
- bottomSheetRef.current.present();
848
- } else if (__DEV__) {
849
- console.warn('No expand or present method available on bottomSheetRef');
850
- }
851
-
852
- // Then navigate to the specified screen if provided
853
- if (screenOrConfig) {
854
- // Add a small delay to ensure the bottom sheet is opened first
855
- setTimeout(() => {
856
- if (typeof screenOrConfig === 'string') {
857
- // Simple screen name
858
- if (__DEV__) console.log('Navigating to screen:', screenOrConfig);
859
- bottomSheetRef.current?.navigate?.(screenOrConfig);
860
- } else {
861
- // Screen with props
862
- if (__DEV__) console.log('Navigating to screen with props:', screenOrConfig.screen, screenOrConfig.props);
863
- bottomSheetRef.current?.navigate?.(screenOrConfig.screen, screenOrConfig.props);
864
- }
865
- }, 100);
866
- }
867
- } else if (__DEV__) {
868
- console.warn('bottomSheetRef is not available. Pass a bottomSheetRef to OxyProvider.');
229
+ setTokenReady(true);
869
230
  }
870
- }, [bottomSheetRef]);
871
- const hideBottomSheet = useCallback(() => {
872
- if (bottomSheetRef?.current) {
873
- bottomSheetRef.current.dismiss?.();
231
+ }, [clearSessionState, logger, oxyServices, storage, storageKeys.activeSessionId, storageKeys.sessionIds, switchSession, updateSessions]);
232
+ useEffect(() => {
233
+ if (!storage || initializedRef.current) {
234
+ return;
874
235
  }
875
- }, [bottomSheetRef]);
876
-
877
- // Get current deviceId from active session
878
- const currentDeviceId = useMemo(() => {
879
- if (!activeSessionId || !sessions.length) return null;
880
- const activeSession = sessions.find(s => s.sessionId === activeSessionId);
881
- return activeSession?.deviceId || null;
882
- }, [activeSessionId, sessions]);
883
-
884
- // Callback to track removed sessions
236
+ initializedRef.current = true;
237
+ void restoreSessionsFromStorage();
238
+ }, [restoreSessionsFromStorage, storage]);
239
+ const activeSession = activeSessionId ? sessions.find(session => session.sessionId === activeSessionId) : undefined;
240
+ const currentDeviceId = activeSession?.deviceId ?? null;
241
+ const userId = user?.id;
242
+ const refreshSessionsWithUser = useCallback(() => refreshSessions(userId), [refreshSessions, userId]);
885
243
  const handleSessionRemoved = useCallback(sessionId => {
886
- // Add to removed sessions tracking
887
- removedSessionsRef.current.add(sessionId);
888
- // Clear from tracking after 5 seconds
889
- setTimeout(() => {
890
- removedSessionsRef.current.delete(sessionId);
891
- }, 5000);
892
- }, []);
893
-
894
- // Integrate socket for real-time session updates
244
+ trackRemovedSession(sessionId);
245
+ }, [trackRemovedSession]);
246
+ const handleRemoteSignOut = useCallback(() => {
247
+ toast.info('You have been signed out remotely.');
248
+ logout().catch(remoteError => logger('Failed to process remote sign out', remoteError));
249
+ }, [logger, logout]);
895
250
  useSessionSocket({
896
- userId: user?.id,
251
+ userId,
897
252
  activeSessionId,
898
253
  currentDeviceId,
899
- refreshSessions,
254
+ refreshSessions: refreshSessionsWithUser,
900
255
  logout,
901
256
  clearSessionState,
902
257
  baseURL: oxyServices.getBaseURL(),
903
- onRemoteSignOut: useCallback(() => {
904
- toast.info('You have been signed out remotely.');
905
- logout();
906
- }, [logout]),
258
+ onRemoteSignOut: handleRemoteSignOut,
907
259
  onSessionRemoved: handleSessionRemoved
908
260
  });
261
+ const switchSessionForContext = useCallback(async sessionId => {
262
+ await switchSession(sessionId);
263
+ }, [switchSession]);
909
264
 
910
- // Compute language metadata from currentLanguage
911
- const languageMetadata = useMemo(() => getLanguageMetadata(currentLanguage), [currentLanguage]);
912
- const languageName = useMemo(() => getLanguageName(currentLanguage), [currentLanguage]);
913
- const nativeLanguageName = useMemo(() => getNativeLanguageName(currentLanguage), [currentLanguage]);
265
+ // Create showBottomSheet function that uses the global function
266
+ const showBottomSheetForContext = useCallback(screenOrConfig => {
267
+ globalShowBottomSheet(screenOrConfig);
268
+ }, []);
914
269
  const contextValue = useMemo(() => ({
915
270
  user,
916
- minimalUser,
917
271
  sessions,
918
272
  activeSessionId,
919
273
  isAuthenticated,
@@ -921,43 +275,33 @@ export const OxyProvider = ({
921
275
  isTokenReady: tokenReady,
922
276
  error,
923
277
  currentLanguage,
924
- currentLanguageMetadata: languageMetadata,
925
- currentLanguageName: languageName,
926
- currentNativeLanguageName: nativeLanguageName,
927
- login,
278
+ currentLanguageMetadata,
279
+ currentLanguageName,
280
+ currentNativeLanguageName,
281
+ createIdentity,
282
+ importIdentity,
283
+ signIn,
284
+ hasIdentity,
285
+ getPublicKey,
928
286
  logout,
929
287
  logoutAll,
930
- signUp,
931
- completeMfaLogin,
932
- switchSession,
933
- removeSession,
934
- refreshSessions,
288
+ switchSession: switchSessionForContext,
289
+ removeSession: logout,
290
+ refreshSessions: refreshSessionsWithUser,
935
291
  setLanguage,
936
292
  getDeviceSessions,
937
293
  logoutAllDeviceSessions,
938
294
  updateDeviceName,
939
295
  oxyServices,
940
- bottomSheetRef,
941
- showBottomSheet,
942
- hideBottomSheet,
943
- useFollow: useFollowHook
944
- }), [user?.id,
945
- // Only depend on user ID, not the entire user object
946
- minimalUser?.id, sessions.length,
947
- // Only depend on sessions count, not the entire array
948
- activeSessionId, isAuthenticated, isLoading, tokenReady, error, currentLanguage, languageMetadata, languageName, nativeLanguageName, login, logout, logoutAll, signUp, completeMfaLogin, switchSession, removeSession, refreshSessions, setLanguage, getDeviceSessions, logoutAllDeviceSessions, updateDeviceName, oxyServices, bottomSheetRef, showBottomSheet, hideBottomSheet, useFollowHook]);
949
-
950
- // Always render children - let the consuming app decide how to handle token loading state
296
+ useFollow: useFollowHook,
297
+ showBottomSheet: showBottomSheetForContext
298
+ }), [activeSessionId, createIdentity, importIdentity, signIn, hasIdentity, getPublicKey, currentLanguage, currentLanguageMetadata, currentLanguageName, currentNativeLanguageName, error, getDeviceSessions, isAuthenticated, isLoading, logout, logoutAll, logoutAllDeviceSessions, oxyServices, refreshSessionsWithUser, sessions, setLanguage, switchSessionForContext, tokenReady, updateDeviceName, useFollowHook, user, showBottomSheetForContext]);
951
299
  return /*#__PURE__*/_jsx(OxyContext.Provider, {
952
300
  value: contextValue,
953
301
  children: children
954
302
  });
955
303
  };
956
-
957
- // Alias for backward compatibility
958
304
  export const OxyContextProvider = OxyProvider;
959
-
960
- // Hook to use the context
961
305
  export const useOxy = () => {
962
306
  const context = useContext(OxyContext);
963
307
  if (!context) {