@oxyhq/services 5.16.22 → 5.16.23

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 (1362) hide show
  1. package/lib/commonjs/ui/components/internal/PinInput.js.map +0 -1
  2. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js.map +0 -1
  3. package/lib/commonjs/ui/components/profile/EditUsernameModal.js.map +0 -1
  4. package/lib/commonjs/ui/components/styles/shadow.js.map +0 -1
  5. package/lib/commonjs/ui/components/types.js.map +0 -1
  6. package/lib/commonjs/ui/components/utils/splitStyles.js.map +0 -1
  7. package/lib/commonjs/ui/constants/theme.js.map +0 -1
  8. package/lib/commonjs/ui/context/ThemeContext.js.map +0 -1
  9. package/lib/commonjs/ui/context/hooks/useStorage.js.map +0 -1
  10. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +0 -1
  11. package/lib/commonjs/ui/hooks/useThemeStyles.js.map +0 -1
  12. package/lib/commonjs/ui/isFrontend.js.map +0 -1
  13. package/lib/commonjs/ui/navigation/routes.js.map +0 -1
  14. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +0 -1
  15. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  16. package/lib/commonjs/ui/stores/followStore.js.map +0 -1
  17. package/lib/commonjs/ui/styles/theme.js.map +0 -1
  18. package/lib/commonjs/ui/types/navigation.js.map +0 -1
  19. package/lib/commonjs/ui/utils/avatarUtils.js.map +0 -1
  20. package/lib/commonjs/utils/validationUtils.js.map +0 -1
  21. package/lib/module/ui/components/TextField/Label/LabelBackground.js.map +0 -1
  22. package/lib/module/ui/components/TouchableRipple/utils.js.map +0 -1
  23. package/lib/module/ui/components/Typography/types.js.map +0 -1
  24. package/lib/module/ui/components/fileManagement/styles.js.map +0 -1
  25. package/lib/module/ui/components/icon/index.js.map +0 -1
  26. package/lib/module/ui/components/internal/PinInput.js.map +0 -1
  27. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js.map +0 -1
  28. package/lib/module/ui/components/profile/EditLocationModal.js.map +0 -1
  29. package/lib/module/ui/components/styles/shadow.js.map +0 -1
  30. package/lib/module/ui/components/types.js.map +0 -1
  31. package/lib/module/ui/components/utils/splitStyles.js.map +0 -1
  32. package/lib/module/ui/constants/theme.js.map +0 -1
  33. package/lib/module/ui/context/ThemeContext.js.map +0 -1
  34. package/lib/module/ui/context/hooks/useStorage.js.map +0 -1
  35. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +0 -1
  36. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +0 -1
  37. package/lib/module/ui/hooks/useThemeStyles.js.map +0 -1
  38. package/lib/module/ui/isFrontend.js.map +0 -1
  39. package/lib/module/ui/navigation/routes.js.map +0 -1
  40. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +0 -1
  41. package/lib/module/ui/screens/karma/KarmaRulesScreen.js.map +0 -1
  42. package/lib/module/ui/stores/followStore.js.map +0 -1
  43. package/lib/module/ui/styles/theme.js.map +0 -1
  44. package/lib/module/ui/types/navigation.js.map +0 -1
  45. package/lib/module/ui/utils/user-utils.js.map +0 -1
  46. package/lib/module/utils/sessionUtils.js.map +0 -1
  47. package/package.json +1 -1
  48. package/src/core/HttpService.ts +15 -95
  49. package/src/core/OxyServices.base.ts +3 -20
  50. package/src/core/services/SessionService.ts +173 -0
  51. package/src/core/services/TokenService.ts +226 -0
  52. package/src/models/interfaces.ts +16 -2
  53. package/src/models/session.ts +8 -1
  54. package/src/ui/context/OxyContext.tsx +104 -23
  55. package/src/ui/context/hooks/useAuthOperations.ts +11 -3
  56. package/src/ui/hooks/useSessionSocket.ts +224 -55
  57. package/lib/commonjs/assets/OxyLogo.svg +0 -1
  58. package/lib/commonjs/assets/assets/OxyLogo.svg +0 -1
  59. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  60. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  61. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  62. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  63. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  64. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  65. package/lib/commonjs/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  66. package/lib/commonjs/assets/assets/icons/OxyServices.tsx +0 -67
  67. package/lib/commonjs/assets/assets/icons/logo_OxyServices.svg +0 -1
  68. package/lib/commonjs/assets/assets/illustrations/HighFive.tsx +0 -41
  69. package/lib/commonjs/assets/assets/lottie/welcomeheader_background_op1.json +0 -1
  70. package/lib/commonjs/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  71. package/lib/commonjs/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  72. package/lib/commonjs/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  73. package/lib/commonjs/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  74. package/lib/commonjs/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  75. package/lib/commonjs/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  76. package/lib/commonjs/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  77. package/lib/commonjs/assets/icons/OxyServices.js +0 -51
  78. package/lib/commonjs/assets/icons/OxyServices.js.map +0 -1
  79. package/lib/commonjs/assets/icons/logo_OxyServices.svg +0 -1
  80. package/lib/commonjs/assets/illustrations/HighFive.js +0 -59
  81. package/lib/commonjs/assets/illustrations/HighFive.js.map +0 -1
  82. package/lib/commonjs/assets/lottie/welcomeheader_background_op1.json +0 -1
  83. package/lib/commonjs/constants/version.js +0 -28
  84. package/lib/commonjs/constants/version.js.map +0 -1
  85. package/lib/commonjs/core/HttpService.js +0 -571
  86. package/lib/commonjs/core/HttpService.js.map +0 -1
  87. package/lib/commonjs/core/OxyServices.base.js +0 -291
  88. package/lib/commonjs/core/OxyServices.base.js.map +0 -1
  89. package/lib/commonjs/core/OxyServices.errors.js +0 -26
  90. package/lib/commonjs/core/OxyServices.errors.js.map +0 -1
  91. package/lib/commonjs/core/OxyServices.js +0 -146
  92. package/lib/commonjs/core/OxyServices.js.map +0 -1
  93. package/lib/commonjs/core/index.js +0 -126
  94. package/lib/commonjs/core/index.js.map +0 -1
  95. package/lib/commonjs/core/mixins/OxyServices.analytics.js +0 -60
  96. package/lib/commonjs/core/mixins/OxyServices.analytics.js.map +0 -1
  97. package/lib/commonjs/core/mixins/OxyServices.assets.js +0 -375
  98. package/lib/commonjs/core/mixins/OxyServices.assets.js.map +0 -1
  99. package/lib/commonjs/core/mixins/OxyServices.auth.js +0 -271
  100. package/lib/commonjs/core/mixins/OxyServices.auth.js.map +0 -1
  101. package/lib/commonjs/core/mixins/OxyServices.developer.js +0 -115
  102. package/lib/commonjs/core/mixins/OxyServices.developer.js.map +0 -1
  103. package/lib/commonjs/core/mixins/OxyServices.devices.js +0 -133
  104. package/lib/commonjs/core/mixins/OxyServices.devices.js.map +0 -1
  105. package/lib/commonjs/core/mixins/OxyServices.karma.js +0 -117
  106. package/lib/commonjs/core/mixins/OxyServices.karma.js.map +0 -1
  107. package/lib/commonjs/core/mixins/OxyServices.language.js +0 -124
  108. package/lib/commonjs/core/mixins/OxyServices.language.js.map +0 -1
  109. package/lib/commonjs/core/mixins/OxyServices.location.js +0 -55
  110. package/lib/commonjs/core/mixins/OxyServices.location.js.map +0 -1
  111. package/lib/commonjs/core/mixins/OxyServices.payment.js +0 -168
  112. package/lib/commonjs/core/mixins/OxyServices.payment.js.map +0 -1
  113. package/lib/commonjs/core/mixins/OxyServices.privacy.js +0 -174
  114. package/lib/commonjs/core/mixins/OxyServices.privacy.js.map +0 -1
  115. package/lib/commonjs/core/mixins/OxyServices.security.js +0 -96
  116. package/lib/commonjs/core/mixins/OxyServices.security.js.map +0 -1
  117. package/lib/commonjs/core/mixins/OxyServices.user.js +0 -393
  118. package/lib/commonjs/core/mixins/OxyServices.user.js.map +0 -1
  119. package/lib/commonjs/core/mixins/OxyServices.utility.js +0 -165
  120. package/lib/commonjs/core/mixins/OxyServices.utility.js.map +0 -1
  121. package/lib/commonjs/core/mixins/index.js +0 -39
  122. package/lib/commonjs/core/mixins/index.js.map +0 -1
  123. package/lib/commonjs/core/mixins/mixinHelpers.js +0 -62
  124. package/lib/commonjs/core/mixins/mixinHelpers.js.map +0 -1
  125. package/lib/commonjs/crypto/index.js +0 -27
  126. package/lib/commonjs/crypto/index.js.map +0 -1
  127. package/lib/commonjs/crypto/keyManager.js +0 -511
  128. package/lib/commonjs/crypto/keyManager.js.map +0 -1
  129. package/lib/commonjs/crypto/polyfill.js +0 -86
  130. package/lib/commonjs/crypto/polyfill.js.map +0 -1
  131. package/lib/commonjs/crypto/signatureService.js +0 -289
  132. package/lib/commonjs/crypto/signatureService.js.map +0 -1
  133. package/lib/commonjs/crypto/types.js +0 -2
  134. package/lib/commonjs/crypto/types.js.map +0 -1
  135. package/lib/commonjs/i18n/index.js +0 -76
  136. package/lib/commonjs/i18n/index.js.map +0 -1
  137. package/lib/commonjs/i18n/locales/ar-SA.json +0 -120
  138. package/lib/commonjs/i18n/locales/ca-ES.json +0 -120
  139. package/lib/commonjs/i18n/locales/de-DE.json +0 -120
  140. package/lib/commonjs/i18n/locales/en-US.json +0 -956
  141. package/lib/commonjs/i18n/locales/es-ES.json +0 -723
  142. package/lib/commonjs/i18n/locales/fr-FR.json +0 -120
  143. package/lib/commonjs/i18n/locales/it-IT.json +0 -120
  144. package/lib/commonjs/i18n/locales/ja-JP.json +0 -119
  145. package/lib/commonjs/i18n/locales/ko-KR.json +0 -120
  146. package/lib/commonjs/i18n/locales/pt-PT.json +0 -120
  147. package/lib/commonjs/i18n/locales/zh-CN.json +0 -120
  148. package/lib/commonjs/index.js +0 -601
  149. package/lib/commonjs/index.js.map +0 -1
  150. package/lib/commonjs/lib/sonner-safe.js +0 -32
  151. package/lib/commonjs/lib/sonner-safe.js.map +0 -1
  152. package/lib/commonjs/lib/sonner.js +0 -23
  153. package/lib/commonjs/lib/sonner.js.map +0 -1
  154. package/lib/commonjs/models/interfaces.js +0 -61
  155. package/lib/commonjs/models/interfaces.js.map +0 -1
  156. package/lib/commonjs/models/session.js +0 -2
  157. package/lib/commonjs/models/session.js.map +0 -1
  158. package/lib/commonjs/node/index.js +0 -59
  159. package/lib/commonjs/node/index.js.map +0 -1
  160. package/lib/commonjs/ui/components/ActivityIndicator.js +0 -203
  161. package/lib/commonjs/ui/components/ActivityIndicator.js.map +0 -1
  162. package/lib/commonjs/ui/components/AnimationExample.js +0 -213
  163. package/lib/commonjs/ui/components/AnimationExample.js.map +0 -1
  164. package/lib/commonjs/ui/components/AutoHeightScrollView.js +0 -46
  165. package/lib/commonjs/ui/components/AutoHeightScrollView.js.map +0 -1
  166. package/lib/commonjs/ui/components/Avatar.js +0 -172
  167. package/lib/commonjs/ui/components/Avatar.js.map +0 -1
  168. package/lib/commonjs/ui/components/BottomSheet.js +0 -407
  169. package/lib/commonjs/ui/components/BottomSheet.js.map +0 -1
  170. package/lib/commonjs/ui/components/BottomSheetRouter.js +0 -366
  171. package/lib/commonjs/ui/components/BottomSheetRouter.js.map +0 -1
  172. package/lib/commonjs/ui/components/CrossFadeIcon.js +0 -106
  173. package/lib/commonjs/ui/components/CrossFadeIcon.js.map +0 -1
  174. package/lib/commonjs/ui/components/EmptyState.js +0 -41
  175. package/lib/commonjs/ui/components/EmptyState.js.map +0 -1
  176. package/lib/commonjs/ui/components/ErrorBoundary.js +0 -145
  177. package/lib/commonjs/ui/components/ErrorBoundary.js.map +0 -1
  178. package/lib/commonjs/ui/components/FollowButton.js +0 -230
  179. package/lib/commonjs/ui/components/FollowButton.js.map +0 -1
  180. package/lib/commonjs/ui/components/FontLoader.js +0 -162
  181. package/lib/commonjs/ui/components/FontLoader.js.map +0 -1
  182. package/lib/commonjs/ui/components/GroupedItem.js +0 -140
  183. package/lib/commonjs/ui/components/GroupedItem.js.map +0 -1
  184. package/lib/commonjs/ui/components/GroupedSection.js +0 -42
  185. package/lib/commonjs/ui/components/GroupedSection.js.map +0 -1
  186. package/lib/commonjs/ui/components/Header.js +0 -434
  187. package/lib/commonjs/ui/components/Header.js.map +0 -1
  188. package/lib/commonjs/ui/components/HelperText.js +0 -103
  189. package/lib/commonjs/ui/components/HelperText.js.map +0 -1
  190. package/lib/commonjs/ui/components/Icon.js +0 -109
  191. package/lib/commonjs/ui/components/Icon.js.map +0 -1
  192. package/lib/commonjs/ui/components/IconButton/IconButton.js +0 -159
  193. package/lib/commonjs/ui/components/IconButton/IconButton.js.map +0 -1
  194. package/lib/commonjs/ui/components/IconButton/utils.js +0 -155
  195. package/lib/commonjs/ui/components/IconButton/utils.js.map +0 -1
  196. package/lib/commonjs/ui/components/LoadingState.js +0 -47
  197. package/lib/commonjs/ui/components/LoadingState.js.map +0 -1
  198. package/lib/commonjs/ui/components/OxyLogo.js +0 -54
  199. package/lib/commonjs/ui/components/OxyLogo.js.map +0 -1
  200. package/lib/commonjs/ui/components/OxyPayButton.js +0 -117
  201. package/lib/commonjs/ui/components/OxyPayButton.js.map +0 -1
  202. package/lib/commonjs/ui/components/OxyProvider.js +0 -144
  203. package/lib/commonjs/ui/components/OxyProvider.js.map +0 -1
  204. package/lib/commonjs/ui/components/OxySignInButton.js +0 -180
  205. package/lib/commonjs/ui/components/OxySignInButton.js.map +0 -1
  206. package/lib/commonjs/ui/components/ProfileCard.js +0 -138
  207. package/lib/commonjs/ui/components/ProfileCard.js.map +0 -1
  208. package/lib/commonjs/ui/components/QuickActions.js +0 -88
  209. package/lib/commonjs/ui/components/QuickActions.js.map +0 -1
  210. package/lib/commonjs/ui/components/Section.js +0 -39
  211. package/lib/commonjs/ui/components/Section.js.map +0 -1
  212. package/lib/commonjs/ui/components/SectionTitle.js +0 -35
  213. package/lib/commonjs/ui/components/SectionTitle.js.map +0 -1
  214. package/lib/commonjs/ui/components/SettingRow.js +0 -77
  215. package/lib/commonjs/ui/components/SettingRow.js.map +0 -1
  216. package/lib/commonjs/ui/components/StepBasedScreen.js +0 -397
  217. package/lib/commonjs/ui/components/StepBasedScreen.js.map +0 -1
  218. package/lib/commonjs/ui/components/Surface.js +0 -258
  219. package/lib/commonjs/ui/components/Surface.js.map +0 -1
  220. package/lib/commonjs/ui/components/TextField/Addons/Outline.js +0 -46
  221. package/lib/commonjs/ui/components/TextField/Addons/Outline.js.map +0 -1
  222. package/lib/commonjs/ui/components/TextField/Addons/Underline.js +0 -53
  223. package/lib/commonjs/ui/components/TextField/Addons/Underline.js.map +0 -1
  224. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAdornment.js +0 -155
  225. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAdornment.js.map +0 -1
  226. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAffix.js +0 -144
  227. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldAffix.js.map +0 -1
  228. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldIcon.js +0 -137
  229. package/lib/commonjs/ui/components/TextField/Adornment/TextFieldIcon.js.map +0 -1
  230. package/lib/commonjs/ui/components/TextField/Adornment/enums.js +0 -22
  231. package/lib/commonjs/ui/components/TextField/Adornment/enums.js.map +0 -1
  232. package/lib/commonjs/ui/components/TextField/Adornment/types.js +0 -6
  233. package/lib/commonjs/ui/components/TextField/Adornment/types.js.map +0 -1
  234. package/lib/commonjs/ui/components/TextField/Adornment/utils.js +0 -62
  235. package/lib/commonjs/ui/components/TextField/Adornment/utils.js.map +0 -1
  236. package/lib/commonjs/ui/components/TextField/Label/InputLabel.js +0 -176
  237. package/lib/commonjs/ui/components/TextField/Label/InputLabel.js.map +0 -1
  238. package/lib/commonjs/ui/components/TextField/Label/LabelBackground.js +0 -84
  239. package/lib/commonjs/ui/components/TextField/Label/LabelBackground.js.map +0 -1
  240. package/lib/commonjs/ui/components/TextField/TextFieldFlat.js +0 -379
  241. package/lib/commonjs/ui/components/TextField/TextFieldFlat.js.map +0 -1
  242. package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js +0 -363
  243. package/lib/commonjs/ui/components/TextField/TextFieldOutlined.js.map +0 -1
  244. package/lib/commonjs/ui/components/TextField/constants.js +0 -50
  245. package/lib/commonjs/ui/components/TextField/constants.js.map +0 -1
  246. package/lib/commonjs/ui/components/TextField/helpers.js +0 -490
  247. package/lib/commonjs/ui/components/TextField/helpers.js.map +0 -1
  248. package/lib/commonjs/ui/components/TextField/types.js +0 -6
  249. package/lib/commonjs/ui/components/TextField/types.js.map +0 -1
  250. package/lib/commonjs/ui/components/TextField.js +0 -339
  251. package/lib/commonjs/ui/components/TextField.js.map +0 -1
  252. package/lib/commonjs/ui/components/TouchableRipple/Pressable.js +0 -12
  253. package/lib/commonjs/ui/components/TouchableRipple/Pressable.js.map +0 -1
  254. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.js +0 -258
  255. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.js.map +0 -1
  256. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js +0 -107
  257. package/lib/commonjs/ui/components/TouchableRipple/TouchableRipple.native.js.map +0 -1
  258. package/lib/commonjs/ui/components/TouchableRipple/utils.js +0 -56
  259. package/lib/commonjs/ui/components/TouchableRipple/utils.js.map +0 -1
  260. package/lib/commonjs/ui/components/Typography/AnimatedText.js +0 -62
  261. package/lib/commonjs/ui/components/Typography/AnimatedText.js.map +0 -1
  262. package/lib/commonjs/ui/components/Typography/types.js +0 -26
  263. package/lib/commonjs/ui/components/Typography/types.js.map +0 -1
  264. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js +0 -171
  265. package/lib/commonjs/ui/components/fileManagement/FileDetailsModal.js.map +0 -1
  266. package/lib/commonjs/ui/components/fileManagement/FileViewer.js +0 -409
  267. package/lib/commonjs/ui/components/fileManagement/FileViewer.js.map +0 -1
  268. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js +0 -181
  269. package/lib/commonjs/ui/components/fileManagement/UploadPreview.js.map +0 -1
  270. package/lib/commonjs/ui/components/fileManagement/styles.js +0 -868
  271. package/lib/commonjs/ui/components/fileManagement/styles.js.map +0 -1
  272. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js +0 -64
  273. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js.map +0 -1
  274. package/lib/commonjs/ui/components/icon/OxyIcon.js +0 -25
  275. package/lib/commonjs/ui/components/icon/OxyIcon.js.map +0 -1
  276. package/lib/commonjs/ui/components/icon/index.js +0 -21
  277. package/lib/commonjs/ui/components/icon/index.js.map +0 -1
  278. package/lib/commonjs/ui/components/index.js +0 -132
  279. package/lib/commonjs/ui/components/index.js.map +0 -1
  280. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +0 -209
  281. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +0 -1
  282. package/lib/commonjs/ui/components/internal/PinInput.js +0 -115
  283. package/lib/commonjs/ui/components/photogrid/JustifiedPhotoGrid.js +0 -161
  284. package/lib/commonjs/ui/components/profile/EditBioModal.js +0 -181
  285. package/lib/commonjs/ui/components/profile/EditBioModal.js.map +0 -1
  286. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js +0 -204
  287. package/lib/commonjs/ui/components/profile/EditDisplayNameModal.js.map +0 -1
  288. package/lib/commonjs/ui/components/profile/EditEmailModal.js +0 -184
  289. package/lib/commonjs/ui/components/profile/EditEmailModal.js.map +0 -1
  290. package/lib/commonjs/ui/components/profile/EditLinksModal.js +0 -315
  291. package/lib/commonjs/ui/components/profile/EditLinksModal.js.map +0 -1
  292. package/lib/commonjs/ui/components/profile/EditLocationModal.js +0 -273
  293. package/lib/commonjs/ui/components/profile/EditLocationModal.js.map +0 -1
  294. package/lib/commonjs/ui/components/profile/EditUsernameModal.js +0 -180
  295. package/lib/commonjs/ui/components/styles/overlay.js +0 -85
  296. package/lib/commonjs/ui/components/styles/overlay.js.map +0 -1
  297. package/lib/commonjs/ui/components/styles/shadow.js +0 -132
  298. package/lib/commonjs/ui/components/theming.js +0 -116
  299. package/lib/commonjs/ui/components/theming.js.map +0 -1
  300. package/lib/commonjs/ui/components/types.js +0 -2
  301. package/lib/commonjs/ui/components/utils/forwardRef.js +0 -18
  302. package/lib/commonjs/ui/components/utils/forwardRef.js.map +0 -1
  303. package/lib/commonjs/ui/components/utils/hasTouchHandler.js +0 -13
  304. package/lib/commonjs/ui/components/utils/hasTouchHandler.js.map +0 -1
  305. package/lib/commonjs/ui/components/utils/roundLayoutSize.js +0 -9
  306. package/lib/commonjs/ui/components/utils/roundLayoutSize.js.map +0 -1
  307. package/lib/commonjs/ui/components/utils/splitStyles.js +0 -50
  308. package/lib/commonjs/ui/constants/iconColors.js +0 -84
  309. package/lib/commonjs/ui/constants/iconColors.js.map +0 -1
  310. package/lib/commonjs/ui/constants/spacing.js +0 -50
  311. package/lib/commonjs/ui/constants/spacing.js.map +0 -1
  312. package/lib/commonjs/ui/constants/theme.js +0 -123
  313. package/lib/commonjs/ui/context/OxyContext.js +0 -772
  314. package/lib/commonjs/ui/context/OxyContext.js.map +0 -1
  315. package/lib/commonjs/ui/context/ThemeContext.js +0 -36
  316. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +0 -613
  317. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +0 -1
  318. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js +0 -73
  319. package/lib/commonjs/ui/context/hooks/useDeviceManagement.js.map +0 -1
  320. package/lib/commonjs/ui/context/hooks/useLanguageManagement.js +0 -112
  321. package/lib/commonjs/ui/context/hooks/useLanguageManagement.js.map +0 -1
  322. package/lib/commonjs/ui/context/hooks/useSessionManagement.js +0 -281
  323. package/lib/commonjs/ui/context/hooks/useSessionManagement.js.map +0 -1
  324. package/lib/commonjs/ui/context/hooks/useStorage.js +0 -79
  325. package/lib/commonjs/ui/hooks/index.js +0 -46
  326. package/lib/commonjs/ui/hooks/index.js.map +0 -1
  327. package/lib/commonjs/ui/hooks/mutations/index.js +0 -68
  328. package/lib/commonjs/ui/hooks/mutations/index.js.map +0 -1
  329. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +0 -551
  330. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +0 -1
  331. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +0 -193
  332. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +0 -1
  333. package/lib/commonjs/ui/hooks/queries/index.js +0 -118
  334. package/lib/commonjs/ui/hooks/queries/index.js.map +0 -1
  335. package/lib/commonjs/ui/hooks/queries/queryKeys.js +0 -96
  336. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +0 -1
  337. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +0 -219
  338. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +0 -1
  339. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +0 -58
  340. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +0 -1
  341. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +0 -186
  342. package/lib/commonjs/ui/hooks/queryClient.js +0 -117
  343. package/lib/commonjs/ui/hooks/queryClient.js.map +0 -1
  344. package/lib/commonjs/ui/hooks/use-color-scheme.js +0 -29
  345. package/lib/commonjs/ui/hooks/use-color-scheme.js.map +0 -1
  346. package/lib/commonjs/ui/hooks/use-haptic-press.js +0 -21
  347. package/lib/commonjs/ui/hooks/use-haptic-press.js.map +0 -1
  348. package/lib/commonjs/ui/hooks/useAssets.js +0 -245
  349. package/lib/commonjs/ui/hooks/useAssets.js.map +0 -1
  350. package/lib/commonjs/ui/hooks/useDeviceManagement.js +0 -73
  351. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +0 -1
  352. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +0 -103
  353. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +0 -1
  354. package/lib/commonjs/ui/hooks/useFollow.js +0 -167
  355. package/lib/commonjs/ui/hooks/useFollow.js.map +0 -1
  356. package/lib/commonjs/ui/hooks/useFollow.types.js +0 -2
  357. package/lib/commonjs/ui/hooks/useFollow.types.js.map +0 -1
  358. package/lib/commonjs/ui/hooks/useI18n.js +0 -22
  359. package/lib/commonjs/ui/hooks/useI18n.js.map +0 -1
  360. package/lib/commonjs/ui/hooks/useLanguageManagement.js +0 -112
  361. package/lib/commonjs/ui/hooks/useLanguageManagement.js.map +0 -1
  362. package/lib/commonjs/ui/hooks/useProfileEditing.js +0 -107
  363. package/lib/commonjs/ui/hooks/useProfileEditing.js.map +0 -1
  364. package/lib/commonjs/ui/hooks/useQueryClient.js +0 -20
  365. package/lib/commonjs/ui/hooks/useQueryClient.js.map +0 -1
  366. package/lib/commonjs/ui/hooks/useSessionManagement.js +0 -281
  367. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +0 -1
  368. package/lib/commonjs/ui/hooks/useSessionSocket.js +0 -303
  369. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +0 -1
  370. package/lib/commonjs/ui/hooks/useStorage.js +0 -79
  371. package/lib/commonjs/ui/hooks/useStorage.js.map +0 -1
  372. package/lib/commonjs/ui/hooks/useThemeColors.js +0 -31
  373. package/lib/commonjs/ui/hooks/useThemeColors.js.map +0 -1
  374. package/lib/commonjs/ui/hooks/useThemeStyles.js +0 -69
  375. package/lib/commonjs/ui/index.js +0 -101
  376. package/lib/commonjs/ui/index.js.map +0 -1
  377. package/lib/commonjs/ui/isFrontend.js +0 -10
  378. package/lib/commonjs/ui/navigation/bottomSheetManager.js +0 -180
  379. package/lib/commonjs/ui/navigation/bottomSheetManager.js.map +0 -1
  380. package/lib/commonjs/ui/navigation/routes.js +0 -88
  381. package/lib/commonjs/ui/screens/AccountCenterScreen.js +0 -329
  382. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +0 -1
  383. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +0 -752
  384. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +0 -1
  385. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +0 -2163
  386. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +0 -1
  387. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +0 -703
  388. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +0 -1
  389. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +0 -210
  390. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +0 -1
  391. package/lib/commonjs/ui/screens/AppInfoScreen.js +0 -414
  392. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +0 -1
  393. package/lib/commonjs/ui/screens/FeedbackScreen.js +0 -1191
  394. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +0 -1
  395. package/lib/commonjs/ui/screens/FileManagementScreen.js +0 -2333
  396. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +0 -1
  397. package/lib/commonjs/ui/screens/HelpSupportScreen.js +0 -134
  398. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +0 -1
  399. package/lib/commonjs/ui/screens/HistoryViewScreen.js +0 -218
  400. package/lib/commonjs/ui/screens/HistoryViewScreen.js.map +0 -1
  401. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js +0 -218
  402. package/lib/commonjs/ui/screens/LanguageSelectorScreen.js.map +0 -1
  403. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js +0 -184
  404. package/lib/commonjs/ui/screens/LegalDocumentsScreen.js.map +0 -1
  405. package/lib/commonjs/ui/screens/OxyAuthScreen.js +0 -537
  406. package/lib/commonjs/ui/screens/OxyAuthScreen.js.map +0 -1
  407. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +0 -1587
  408. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +0 -1
  409. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +0 -1647
  410. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  411. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +0 -472
  412. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +0 -1
  413. package/lib/commonjs/ui/screens/ProfileScreen.js +0 -647
  414. package/lib/commonjs/ui/screens/ProfileScreen.js.map +0 -1
  415. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +0 -167
  416. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +0 -1
  417. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +0 -166
  418. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +0 -1
  419. package/lib/commonjs/ui/screens/SessionManagementScreen.js +0 -445
  420. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +0 -1
  421. package/lib/commonjs/ui/screens/UserLinksScreen.js +0 -86
  422. package/lib/commonjs/ui/screens/UserLinksScreen.js.map +0 -1
  423. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +0 -434
  424. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js +0 -98
  425. package/lib/commonjs/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  426. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js +0 -343
  427. package/lib/commonjs/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  428. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js +0 -194
  429. package/lib/commonjs/ui/screens/karma/KarmaFAQScreen.js.map +0 -1
  430. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js +0 -151
  431. package/lib/commonjs/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  432. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +0 -609
  433. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  434. package/lib/commonjs/ui/screens/karma/KarmaRulesScreen.js +0 -109
  435. package/lib/commonjs/ui/stores/accountStore.js +0 -252
  436. package/lib/commonjs/ui/stores/accountStore.js.map +0 -1
  437. package/lib/commonjs/ui/stores/assetStore.js +0 -225
  438. package/lib/commonjs/ui/stores/assetStore.js.map +0 -1
  439. package/lib/commonjs/ui/stores/authStore.js +0 -85
  440. package/lib/commonjs/ui/stores/authStore.js.map +0 -1
  441. package/lib/commonjs/ui/stores/fileStore.js +0 -153
  442. package/lib/commonjs/ui/stores/fileStore.js.map +0 -1
  443. package/lib/commonjs/ui/stores/followStore.js +0 -229
  444. package/lib/commonjs/ui/styles/authStyles.js +0 -338
  445. package/lib/commonjs/ui/styles/authStyles.js.map +0 -1
  446. package/lib/commonjs/ui/styles/fonts.js +0 -84
  447. package/lib/commonjs/ui/styles/fonts.js.map +0 -1
  448. package/lib/commonjs/ui/styles/index.js +0 -50
  449. package/lib/commonjs/ui/styles/index.js.map +0 -1
  450. package/lib/commonjs/ui/styles/spacing.js +0 -109
  451. package/lib/commonjs/ui/styles/spacing.js.map +0 -1
  452. package/lib/commonjs/ui/styles/theme.js +0 -121
  453. package/lib/commonjs/ui/types/fileManagement.js +0 -6
  454. package/lib/commonjs/ui/types/fileManagement.js.map +0 -1
  455. package/lib/commonjs/ui/types/navigation.js +0 -6
  456. package/lib/commonjs/ui/utils/avatarUtils.js +0 -131
  457. package/lib/commonjs/ui/utils/colorUtils.js +0 -52
  458. package/lib/commonjs/ui/utils/colorUtils.js.map +0 -1
  459. package/lib/commonjs/ui/utils/confirmAction.js +0 -28
  460. package/lib/commonjs/ui/utils/confirmAction.js.map +0 -1
  461. package/lib/commonjs/ui/utils/errorHandlers.js +0 -137
  462. package/lib/commonjs/ui/utils/errorHandlers.js.map +0 -1
  463. package/lib/commonjs/ui/utils/fileManagement.js +0 -260
  464. package/lib/commonjs/ui/utils/fileManagement.js.map +0 -1
  465. package/lib/commonjs/ui/utils/sessionHelpers.js +0 -101
  466. package/lib/commonjs/ui/utils/sessionHelpers.js.map +0 -1
  467. package/lib/commonjs/ui/utils/storageHelpers.js +0 -119
  468. package/lib/commonjs/ui/utils/storageHelpers.js.map +0 -1
  469. package/lib/commonjs/ui/utils/themeUtils.js +0 -47
  470. package/lib/commonjs/ui/utils/themeUtils.js.map +0 -1
  471. package/lib/commonjs/ui/utils/user-utils.js +0 -53
  472. package/lib/commonjs/ui/utils/user-utils.js.map +0 -1
  473. package/lib/commonjs/utils/apiUtils.js +0 -79
  474. package/lib/commonjs/utils/apiUtils.js.map +0 -1
  475. package/lib/commonjs/utils/asyncUtils.js +0 -207
  476. package/lib/commonjs/utils/asyncUtils.js.map +0 -1
  477. package/lib/commonjs/utils/cache.js +0 -259
  478. package/lib/commonjs/utils/cache.js.map +0 -1
  479. package/lib/commonjs/utils/deviceManager.js +0 -177
  480. package/lib/commonjs/utils/deviceManager.js.map +0 -1
  481. package/lib/commonjs/utils/errorUtils.js +0 -181
  482. package/lib/commonjs/utils/errorUtils.js.map +0 -1
  483. package/lib/commonjs/utils/hookUtils.js +0 -399
  484. package/lib/commonjs/utils/hookUtils.js.map +0 -1
  485. package/lib/commonjs/utils/index.js +0 -106
  486. package/lib/commonjs/utils/index.js.map +0 -1
  487. package/lib/commonjs/utils/languageUtils.js +0 -159
  488. package/lib/commonjs/utils/languageUtils.js.map +0 -1
  489. package/lib/commonjs/utils/loggerUtils.js +0 -160
  490. package/lib/commonjs/utils/loggerUtils.js.map +0 -1
  491. package/lib/commonjs/utils/requestUtils.js +0 -217
  492. package/lib/commonjs/utils/requestUtils.js.map +0 -1
  493. package/lib/commonjs/utils/sessionUtils.js +0 -191
  494. package/lib/commonjs/utils/sessionUtils.js.map +0 -1
  495. package/lib/commonjs/utils/validationUtils.js +0 -191
  496. package/lib/module/assets/OxyLogo.svg +0 -1
  497. package/lib/module/assets/assets/OxyLogo.svg +0 -1
  498. package/lib/module/assets/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  499. package/lib/module/assets/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  500. package/lib/module/assets/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  501. package/lib/module/assets/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  502. package/lib/module/assets/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  503. package/lib/module/assets/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  504. package/lib/module/assets/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  505. package/lib/module/assets/assets/icons/OxyServices.tsx +0 -67
  506. package/lib/module/assets/assets/icons/logo_OxyServices.svg +0 -1
  507. package/lib/module/assets/assets/illustrations/HighFive.tsx +0 -41
  508. package/lib/module/assets/assets/lottie/welcomeheader_background_op1.json +0 -1
  509. package/lib/module/assets/fonts/Phudu/Phudu-Black.ttf +0 -0
  510. package/lib/module/assets/fonts/Phudu/Phudu-Bold.ttf +0 -0
  511. package/lib/module/assets/fonts/Phudu/Phudu-ExtraBold.ttf +0 -0
  512. package/lib/module/assets/fonts/Phudu/Phudu-Light.ttf +0 -0
  513. package/lib/module/assets/fonts/Phudu/Phudu-Medium.ttf +0 -0
  514. package/lib/module/assets/fonts/Phudu/Phudu-Regular.ttf +0 -0
  515. package/lib/module/assets/fonts/Phudu/Phudu-SemiBold.ttf +0 -0
  516. package/lib/module/assets/icons/OxyServices.js +0 -45
  517. package/lib/module/assets/icons/OxyServices.js.map +0 -1
  518. package/lib/module/assets/icons/logo_OxyServices.svg +0 -1
  519. package/lib/module/assets/illustrations/HighFive.js +0 -54
  520. package/lib/module/assets/illustrations/HighFive.js.map +0 -1
  521. package/lib/module/assets/lottie/welcomeheader_background_op1.json +0 -1
  522. package/lib/module/constants/version.js +0 -21
  523. package/lib/module/constants/version.js.map +0 -1
  524. package/lib/module/core/HttpService.js +0 -566
  525. package/lib/module/core/HttpService.js.map +0 -1
  526. package/lib/module/core/OxyServices.base.js +0 -285
  527. package/lib/module/core/OxyServices.base.js.map +0 -1
  528. package/lib/module/core/OxyServices.errors.js +0 -20
  529. package/lib/module/core/OxyServices.errors.js.map +0 -1
  530. package/lib/module/core/OxyServices.js +0 -131
  531. package/lib/module/core/OxyServices.js.map +0 -1
  532. package/lib/module/core/index.js +0 -27
  533. package/lib/module/core/index.js.map +0 -1
  534. package/lib/module/core/mixins/OxyServices.analytics.js +0 -56
  535. package/lib/module/core/mixins/OxyServices.analytics.js.map +0 -1
  536. package/lib/module/core/mixins/OxyServices.assets.js +0 -371
  537. package/lib/module/core/mixins/OxyServices.assets.js.map +0 -1
  538. package/lib/module/core/mixins/OxyServices.auth.js +0 -267
  539. package/lib/module/core/mixins/OxyServices.auth.js.map +0 -1
  540. package/lib/module/core/mixins/OxyServices.developer.js +0 -111
  541. package/lib/module/core/mixins/OxyServices.developer.js.map +0 -1
  542. package/lib/module/core/mixins/OxyServices.devices.js +0 -129
  543. package/lib/module/core/mixins/OxyServices.devices.js.map +0 -1
  544. package/lib/module/core/mixins/OxyServices.karma.js +0 -113
  545. package/lib/module/core/mixins/OxyServices.karma.js.map +0 -1
  546. package/lib/module/core/mixins/OxyServices.language.js +0 -120
  547. package/lib/module/core/mixins/OxyServices.language.js.map +0 -1
  548. package/lib/module/core/mixins/OxyServices.location.js +0 -51
  549. package/lib/module/core/mixins/OxyServices.location.js.map +0 -1
  550. package/lib/module/core/mixins/OxyServices.payment.js +0 -164
  551. package/lib/module/core/mixins/OxyServices.payment.js.map +0 -1
  552. package/lib/module/core/mixins/OxyServices.privacy.js +0 -170
  553. package/lib/module/core/mixins/OxyServices.privacy.js.map +0 -1
  554. package/lib/module/core/mixins/OxyServices.security.js +0 -92
  555. package/lib/module/core/mixins/OxyServices.security.js.map +0 -1
  556. package/lib/module/core/mixins/OxyServices.user.js +0 -389
  557. package/lib/module/core/mixins/OxyServices.user.js.map +0 -1
  558. package/lib/module/core/mixins/OxyServices.utility.js +0 -160
  559. package/lib/module/core/mixins/OxyServices.utility.js.map +0 -1
  560. package/lib/module/core/mixins/index.js +0 -36
  561. package/lib/module/core/mixins/index.js.map +0 -1
  562. package/lib/module/core/mixins/mixinHelpers.js +0 -56
  563. package/lib/module/core/mixins/mixinHelpers.js.map +0 -1
  564. package/lib/module/crypto/index.js +0 -16
  565. package/lib/module/crypto/index.js.map +0 -1
  566. package/lib/module/crypto/keyManager.js +0 -508
  567. package/lib/module/crypto/keyManager.js.map +0 -1
  568. package/lib/module/crypto/polyfill.js +0 -78
  569. package/lib/module/crypto/polyfill.js.map +0 -1
  570. package/lib/module/crypto/signatureService.js +0 -286
  571. package/lib/module/crypto/signatureService.js.map +0 -1
  572. package/lib/module/crypto/types.js +0 -2
  573. package/lib/module/crypto/types.js.map +0 -1
  574. package/lib/module/i18n/index.js +0 -71
  575. package/lib/module/i18n/index.js.map +0 -1
  576. package/lib/module/i18n/locales/ar-SA.json +0 -120
  577. package/lib/module/i18n/locales/ca-ES.json +0 -120
  578. package/lib/module/i18n/locales/de-DE.json +0 -120
  579. package/lib/module/i18n/locales/en-US.json +0 -956
  580. package/lib/module/i18n/locales/es-ES.json +0 -723
  581. package/lib/module/i18n/locales/fr-FR.json +0 -120
  582. package/lib/module/i18n/locales/it-IT.json +0 -120
  583. package/lib/module/i18n/locales/ja-JP.json +0 -119
  584. package/lib/module/i18n/locales/ko-KR.json +0 -120
  585. package/lib/module/i18n/locales/pt-PT.json +0 -120
  586. package/lib/module/i18n/locales/zh-CN.json +0 -120
  587. package/lib/module/index.js +0 -74
  588. package/lib/module/index.js.map +0 -1
  589. package/lib/module/lib/sonner-safe.js +0 -29
  590. package/lib/module/lib/sonner-safe.js.map +0 -1
  591. package/lib/module/lib/sonner.js +0 -19
  592. package/lib/module/lib/sonner.js.map +0 -1
  593. package/lib/module/models/interfaces.js +0 -57
  594. package/lib/module/models/interfaces.js.map +0 -1
  595. package/lib/module/models/session.js +0 -2
  596. package/lib/module/models/session.js.map +0 -1
  597. package/lib/module/node/index.js +0 -20
  598. package/lib/module/node/index.js.map +0 -1
  599. package/lib/module/ui/components/ActivityIndicator.js +0 -198
  600. package/lib/module/ui/components/ActivityIndicator.js.map +0 -1
  601. package/lib/module/ui/components/AnimationExample.js +0 -209
  602. package/lib/module/ui/components/AnimationExample.js.map +0 -1
  603. package/lib/module/ui/components/AutoHeightScrollView.js +0 -41
  604. package/lib/module/ui/components/AutoHeightScrollView.js.map +0 -1
  605. package/lib/module/ui/components/Avatar.js +0 -168
  606. package/lib/module/ui/components/Avatar.js.map +0 -1
  607. package/lib/module/ui/components/BottomSheet.js +0 -402
  608. package/lib/module/ui/components/BottomSheet.js.map +0 -1
  609. package/lib/module/ui/components/BottomSheetRouter.js +0 -356
  610. package/lib/module/ui/components/BottomSheetRouter.js.map +0 -1
  611. package/lib/module/ui/components/CrossFadeIcon.js +0 -101
  612. package/lib/module/ui/components/CrossFadeIcon.js.map +0 -1
  613. package/lib/module/ui/components/EmptyState.js +0 -36
  614. package/lib/module/ui/components/EmptyState.js.map +0 -1
  615. package/lib/module/ui/components/ErrorBoundary.js +0 -139
  616. package/lib/module/ui/components/ErrorBoundary.js.map +0 -1
  617. package/lib/module/ui/components/FollowButton.js +0 -226
  618. package/lib/module/ui/components/FollowButton.js.map +0 -1
  619. package/lib/module/ui/components/FontLoader.js +0 -157
  620. package/lib/module/ui/components/FontLoader.js.map +0 -1
  621. package/lib/module/ui/components/GroupedItem.js +0 -135
  622. package/lib/module/ui/components/GroupedItem.js.map +0 -1
  623. package/lib/module/ui/components/GroupedSection.js +0 -37
  624. package/lib/module/ui/components/GroupedSection.js.map +0 -1
  625. package/lib/module/ui/components/Header.js +0 -428
  626. package/lib/module/ui/components/Header.js.map +0 -1
  627. package/lib/module/ui/components/HelperText.js +0 -99
  628. package/lib/module/ui/components/HelperText.js.map +0 -1
  629. package/lib/module/ui/components/Icon.js +0 -102
  630. package/lib/module/ui/components/Icon.js.map +0 -1
  631. package/lib/module/ui/components/IconButton/IconButton.js +0 -153
  632. package/lib/module/ui/components/IconButton/IconButton.js.map +0 -1
  633. package/lib/module/ui/components/IconButton/utils.js +0 -149
  634. package/lib/module/ui/components/IconButton/utils.js.map +0 -1
  635. package/lib/module/ui/components/LoadingState.js +0 -42
  636. package/lib/module/ui/components/LoadingState.js.map +0 -1
  637. package/lib/module/ui/components/OxyLogo.js +0 -48
  638. package/lib/module/ui/components/OxyLogo.js.map +0 -1
  639. package/lib/module/ui/components/OxyPayButton.js +0 -112
  640. package/lib/module/ui/components/OxyPayButton.js.map +0 -1
  641. package/lib/module/ui/components/OxyProvider.js +0 -140
  642. package/lib/module/ui/components/OxyProvider.js.map +0 -1
  643. package/lib/module/ui/components/OxySignInButton.js +0 -174
  644. package/lib/module/ui/components/OxySignInButton.js.map +0 -1
  645. package/lib/module/ui/components/ProfileCard.js +0 -133
  646. package/lib/module/ui/components/ProfileCard.js.map +0 -1
  647. package/lib/module/ui/components/QuickActions.js +0 -84
  648. package/lib/module/ui/components/QuickActions.js.map +0 -1
  649. package/lib/module/ui/components/Section.js +0 -34
  650. package/lib/module/ui/components/Section.js.map +0 -1
  651. package/lib/module/ui/components/SectionTitle.js +0 -31
  652. package/lib/module/ui/components/SectionTitle.js.map +0 -1
  653. package/lib/module/ui/components/SettingRow.js +0 -72
  654. package/lib/module/ui/components/SettingRow.js.map +0 -1
  655. package/lib/module/ui/components/StepBasedScreen.js +0 -392
  656. package/lib/module/ui/components/StepBasedScreen.js.map +0 -1
  657. package/lib/module/ui/components/Surface.js +0 -252
  658. package/lib/module/ui/components/Surface.js.map +0 -1
  659. package/lib/module/ui/components/TextField/Addons/Outline.js +0 -40
  660. package/lib/module/ui/components/TextField/Addons/Outline.js.map +0 -1
  661. package/lib/module/ui/components/TextField/Addons/Underline.js +0 -47
  662. package/lib/module/ui/components/TextField/Addons/Underline.js.map +0 -1
  663. package/lib/module/ui/components/TextField/Adornment/TextFieldAdornment.js +0 -148
  664. package/lib/module/ui/components/TextField/Adornment/TextFieldAdornment.js.map +0 -1
  665. package/lib/module/ui/components/TextField/Adornment/TextFieldAffix.js +0 -141
  666. package/lib/module/ui/components/TextField/Adornment/TextFieldAffix.js.map +0 -1
  667. package/lib/module/ui/components/TextField/Adornment/TextFieldIcon.js +0 -135
  668. package/lib/module/ui/components/TextField/Adornment/TextFieldIcon.js.map +0 -1
  669. package/lib/module/ui/components/TextField/Adornment/enums.js +0 -18
  670. package/lib/module/ui/components/TextField/Adornment/enums.js.map +0 -1
  671. package/lib/module/ui/components/TextField/Adornment/types.js +0 -4
  672. package/lib/module/ui/components/TextField/Adornment/types.js.map +0 -1
  673. package/lib/module/ui/components/TextField/Adornment/utils.js +0 -57
  674. package/lib/module/ui/components/TextField/Adornment/utils.js.map +0 -1
  675. package/lib/module/ui/components/TextField/Label/InputLabel.js +0 -171
  676. package/lib/module/ui/components/TextField/Label/InputLabel.js.map +0 -1
  677. package/lib/module/ui/components/TextField/Label/LabelBackground.js +0 -78
  678. package/lib/module/ui/components/TextField/TextFieldFlat.js +0 -374
  679. package/lib/module/ui/components/TextField/TextFieldFlat.js.map +0 -1
  680. package/lib/module/ui/components/TextField/TextFieldOutlined.js +0 -357
  681. package/lib/module/ui/components/TextField/TextFieldOutlined.js.map +0 -1
  682. package/lib/module/ui/components/TextField/constants.js +0 -46
  683. package/lib/module/ui/components/TextField/constants.js.map +0 -1
  684. package/lib/module/ui/components/TextField/helpers.js +0 -472
  685. package/lib/module/ui/components/TextField/helpers.js.map +0 -1
  686. package/lib/module/ui/components/TextField/types.js +0 -4
  687. package/lib/module/ui/components/TextField/types.js.map +0 -1
  688. package/lib/module/ui/components/TextField.js +0 -333
  689. package/lib/module/ui/components/TextField.js.map +0 -1
  690. package/lib/module/ui/components/TouchableRipple/Pressable.js +0 -9
  691. package/lib/module/ui/components/TouchableRipple/Pressable.js.map +0 -1
  692. package/lib/module/ui/components/TouchableRipple/TouchableRipple.js +0 -253
  693. package/lib/module/ui/components/TouchableRipple/TouchableRipple.js.map +0 -1
  694. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js +0 -101
  695. package/lib/module/ui/components/TouchableRipple/TouchableRipple.native.js.map +0 -1
  696. package/lib/module/ui/components/TouchableRipple/utils.js +0 -50
  697. package/lib/module/ui/components/Typography/AnimatedText.js +0 -56
  698. package/lib/module/ui/components/Typography/AnimatedText.js.map +0 -1
  699. package/lib/module/ui/components/Typography/types.js +0 -22
  700. package/lib/module/ui/components/fileManagement/FileDetailsModal.js +0 -165
  701. package/lib/module/ui/components/fileManagement/FileDetailsModal.js.map +0 -1
  702. package/lib/module/ui/components/fileManagement/FileViewer.js +0 -402
  703. package/lib/module/ui/components/fileManagement/FileViewer.js.map +0 -1
  704. package/lib/module/ui/components/fileManagement/UploadPreview.js +0 -175
  705. package/lib/module/ui/components/fileManagement/UploadPreview.js.map +0 -1
  706. package/lib/module/ui/components/fileManagement/styles.js +0 -864
  707. package/lib/module/ui/components/icon/FAIRWalletIcon.js +0 -59
  708. package/lib/module/ui/components/icon/FAIRWalletIcon.js.map +0 -1
  709. package/lib/module/ui/components/icon/OxyIcon.js +0 -21
  710. package/lib/module/ui/components/icon/OxyIcon.js.map +0 -1
  711. package/lib/module/ui/components/icon/index.js +0 -5
  712. package/lib/module/ui/components/index.js +0 -22
  713. package/lib/module/ui/components/index.js.map +0 -1
  714. package/lib/module/ui/components/internal/GroupedPillButtons.js +0 -205
  715. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +0 -1
  716. package/lib/module/ui/components/internal/PinInput.js +0 -110
  717. package/lib/module/ui/components/photogrid/JustifiedPhotoGrid.js +0 -156
  718. package/lib/module/ui/components/profile/EditBioModal.js +0 -175
  719. package/lib/module/ui/components/profile/EditBioModal.js.map +0 -1
  720. package/lib/module/ui/components/profile/EditDisplayNameModal.js +0 -198
  721. package/lib/module/ui/components/profile/EditDisplayNameModal.js.map +0 -1
  722. package/lib/module/ui/components/profile/EditEmailModal.js +0 -178
  723. package/lib/module/ui/components/profile/EditEmailModal.js.map +0 -1
  724. package/lib/module/ui/components/profile/EditLinksModal.js +0 -309
  725. package/lib/module/ui/components/profile/EditLinksModal.js.map +0 -1
  726. package/lib/module/ui/components/profile/EditLocationModal.js +0 -267
  727. package/lib/module/ui/components/profile/EditUsernameModal.js +0 -174
  728. package/lib/module/ui/components/profile/EditUsernameModal.js.map +0 -1
  729. package/lib/module/ui/components/styles/overlay.js +0 -80
  730. package/lib/module/ui/components/styles/overlay.js.map +0 -1
  731. package/lib/module/ui/components/styles/shadow.js +0 -128
  732. package/lib/module/ui/components/theming.js +0 -111
  733. package/lib/module/ui/components/theming.js.map +0 -1
  734. package/lib/module/ui/components/types.js +0 -2
  735. package/lib/module/ui/components/utils/forwardRef.js +0 -13
  736. package/lib/module/ui/components/utils/forwardRef.js.map +0 -1
  737. package/lib/module/ui/components/utils/hasTouchHandler.js +0 -9
  738. package/lib/module/ui/components/utils/hasTouchHandler.js.map +0 -1
  739. package/lib/module/ui/components/utils/roundLayoutSize.js +0 -4
  740. package/lib/module/ui/components/utils/roundLayoutSize.js.map +0 -1
  741. package/lib/module/ui/components/utils/splitStyles.js +0 -46
  742. package/lib/module/ui/constants/iconColors.js +0 -78
  743. package/lib/module/ui/constants/iconColors.js.map +0 -1
  744. package/lib/module/ui/constants/spacing.js +0 -45
  745. package/lib/module/ui/constants/spacing.js.map +0 -1
  746. package/lib/module/ui/constants/theme.js +0 -119
  747. package/lib/module/ui/context/OxyContext.js +0 -766
  748. package/lib/module/ui/context/OxyContext.js.map +0 -1
  749. package/lib/module/ui/context/ThemeContext.js +0 -29
  750. package/lib/module/ui/context/hooks/useAuthOperations.js +0 -607
  751. package/lib/module/ui/context/hooks/useAuthOperations.js.map +0 -1
  752. package/lib/module/ui/context/hooks/useDeviceManagement.js +0 -68
  753. package/lib/module/ui/context/hooks/useDeviceManagement.js.map +0 -1
  754. package/lib/module/ui/context/hooks/useLanguageManagement.js +0 -107
  755. package/lib/module/ui/context/hooks/useLanguageManagement.js.map +0 -1
  756. package/lib/module/ui/context/hooks/useSessionManagement.js +0 -276
  757. package/lib/module/ui/context/hooks/useSessionManagement.js.map +0 -1
  758. package/lib/module/ui/context/hooks/useStorage.js +0 -74
  759. package/lib/module/ui/hooks/index.js +0 -7
  760. package/lib/module/ui/hooks/index.js.map +0 -1
  761. package/lib/module/ui/hooks/mutations/index.js +0 -15
  762. package/lib/module/ui/hooks/mutations/index.js.map +0 -1
  763. package/lib/module/ui/hooks/mutations/useAccountMutations.js +0 -543
  764. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +0 -1
  765. package/lib/module/ui/hooks/mutations/useServicesMutations.js +0 -185
  766. package/lib/module/ui/hooks/queries/index.js +0 -21
  767. package/lib/module/ui/hooks/queries/index.js.map +0 -1
  768. package/lib/module/ui/hooks/queries/queryKeys.js +0 -89
  769. package/lib/module/ui/hooks/queries/queryKeys.js.map +0 -1
  770. package/lib/module/ui/hooks/queries/useAccountQueries.js +0 -209
  771. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +0 -1
  772. package/lib/module/ui/hooks/queries/useSecurityQueries.js +0 -52
  773. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +0 -1
  774. package/lib/module/ui/hooks/queries/useServicesQueries.js +0 -178
  775. package/lib/module/ui/hooks/queryClient.js +0 -110
  776. package/lib/module/ui/hooks/queryClient.js.map +0 -1
  777. package/lib/module/ui/hooks/use-color-scheme.js +0 -26
  778. package/lib/module/ui/hooks/use-color-scheme.js.map +0 -1
  779. package/lib/module/ui/hooks/use-haptic-press.js +0 -17
  780. package/lib/module/ui/hooks/use-haptic-press.js.map +0 -1
  781. package/lib/module/ui/hooks/useAssets.js +0 -239
  782. package/lib/module/ui/hooks/useAssets.js.map +0 -1
  783. package/lib/module/ui/hooks/useDeviceManagement.js +0 -68
  784. package/lib/module/ui/hooks/useDeviceManagement.js.map +0 -1
  785. package/lib/module/ui/hooks/useFileDownloadUrl.js +0 -97
  786. package/lib/module/ui/hooks/useFileDownloadUrl.js.map +0 -1
  787. package/lib/module/ui/hooks/useFollow.js +0 -161
  788. package/lib/module/ui/hooks/useFollow.js.map +0 -1
  789. package/lib/module/ui/hooks/useFollow.types.js +0 -2
  790. package/lib/module/ui/hooks/useFollow.types.js.map +0 -1
  791. package/lib/module/ui/hooks/useI18n.js +0 -18
  792. package/lib/module/ui/hooks/useI18n.js.map +0 -1
  793. package/lib/module/ui/hooks/useLanguageManagement.js +0 -107
  794. package/lib/module/ui/hooks/useLanguageManagement.js.map +0 -1
  795. package/lib/module/ui/hooks/useProfileEditing.js +0 -102
  796. package/lib/module/ui/hooks/useProfileEditing.js.map +0 -1
  797. package/lib/module/ui/hooks/useQueryClient.js +0 -15
  798. package/lib/module/ui/hooks/useQueryClient.js.map +0 -1
  799. package/lib/module/ui/hooks/useSessionManagement.js +0 -276
  800. package/lib/module/ui/hooks/useSessionManagement.js.map +0 -1
  801. package/lib/module/ui/hooks/useSessionSocket.js +0 -298
  802. package/lib/module/ui/hooks/useSessionSocket.js.map +0 -1
  803. package/lib/module/ui/hooks/useStorage.js +0 -74
  804. package/lib/module/ui/hooks/useStorage.js.map +0 -1
  805. package/lib/module/ui/hooks/useThemeColors.js +0 -27
  806. package/lib/module/ui/hooks/useThemeColors.js.map +0 -1
  807. package/lib/module/ui/hooks/useThemeStyles.js +0 -64
  808. package/lib/module/ui/index.js +0 -63
  809. package/lib/module/ui/index.js.map +0 -1
  810. package/lib/module/ui/isFrontend.js +0 -6
  811. package/lib/module/ui/navigation/bottomSheetManager.js +0 -168
  812. package/lib/module/ui/navigation/bottomSheetManager.js.map +0 -1
  813. package/lib/module/ui/navigation/routes.js +0 -82
  814. package/lib/module/ui/screens/AccountCenterScreen.js +0 -324
  815. package/lib/module/ui/screens/AccountCenterScreen.js.map +0 -1
  816. package/lib/module/ui/screens/AccountOverviewScreen.js +0 -747
  817. package/lib/module/ui/screens/AccountOverviewScreen.js.map +0 -1
  818. package/lib/module/ui/screens/AccountSettingsScreen.js +0 -2158
  819. package/lib/module/ui/screens/AccountSettingsScreen.js.map +0 -1
  820. package/lib/module/ui/screens/AccountSwitcherScreen.js +0 -698
  821. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +0 -1
  822. package/lib/module/ui/screens/AccountVerificationScreen.js +0 -205
  823. package/lib/module/ui/screens/AccountVerificationScreen.js.map +0 -1
  824. package/lib/module/ui/screens/AppInfoScreen.js +0 -409
  825. package/lib/module/ui/screens/AppInfoScreen.js.map +0 -1
  826. package/lib/module/ui/screens/FeedbackScreen.js +0 -1186
  827. package/lib/module/ui/screens/FeedbackScreen.js.map +0 -1
  828. package/lib/module/ui/screens/FileManagementScreen.js +0 -2327
  829. package/lib/module/ui/screens/FileManagementScreen.js.map +0 -1
  830. package/lib/module/ui/screens/HelpSupportScreen.js +0 -129
  831. package/lib/module/ui/screens/HelpSupportScreen.js.map +0 -1
  832. package/lib/module/ui/screens/HistoryViewScreen.js +0 -213
  833. package/lib/module/ui/screens/HistoryViewScreen.js.map +0 -1
  834. package/lib/module/ui/screens/LanguageSelectorScreen.js +0 -213
  835. package/lib/module/ui/screens/LanguageSelectorScreen.js.map +0 -1
  836. package/lib/module/ui/screens/LegalDocumentsScreen.js +0 -179
  837. package/lib/module/ui/screens/LegalDocumentsScreen.js.map +0 -1
  838. package/lib/module/ui/screens/OxyAuthScreen.js +0 -533
  839. package/lib/module/ui/screens/OxyAuthScreen.js.map +0 -1
  840. package/lib/module/ui/screens/PaymentGatewayScreen.js +0 -1583
  841. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +0 -1
  842. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +0 -1643
  843. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  844. package/lib/module/ui/screens/PrivacySettingsScreen.js +0 -467
  845. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +0 -1
  846. package/lib/module/ui/screens/ProfileScreen.js +0 -642
  847. package/lib/module/ui/screens/ProfileScreen.js.map +0 -1
  848. package/lib/module/ui/screens/SavesCollectionsScreen.js +0 -162
  849. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +0 -1
  850. package/lib/module/ui/screens/SearchSettingsScreen.js +0 -161
  851. package/lib/module/ui/screens/SearchSettingsScreen.js.map +0 -1
  852. package/lib/module/ui/screens/SessionManagementScreen.js +0 -442
  853. package/lib/module/ui/screens/SessionManagementScreen.js.map +0 -1
  854. package/lib/module/ui/screens/UserLinksScreen.js +0 -82
  855. package/lib/module/ui/screens/UserLinksScreen.js.map +0 -1
  856. package/lib/module/ui/screens/WelcomeNewUserScreen.js +0 -428
  857. package/lib/module/ui/screens/karma/KarmaAboutScreen.js +0 -94
  858. package/lib/module/ui/screens/karma/KarmaAboutScreen.js.map +0 -1
  859. package/lib/module/ui/screens/karma/KarmaCenterScreen.js +0 -339
  860. package/lib/module/ui/screens/karma/KarmaCenterScreen.js.map +0 -1
  861. package/lib/module/ui/screens/karma/KarmaFAQScreen.js +0 -189
  862. package/lib/module/ui/screens/karma/KarmaFAQScreen.js.map +0 -1
  863. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js +0 -146
  864. package/lib/module/ui/screens/karma/KarmaLeaderboardScreen.js.map +0 -1
  865. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +0 -605
  866. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +0 -1
  867. package/lib/module/ui/screens/karma/KarmaRulesScreen.js +0 -105
  868. package/lib/module/ui/stores/accountStore.js +0 -244
  869. package/lib/module/ui/stores/accountStore.js.map +0 -1
  870. package/lib/module/ui/stores/assetStore.js +0 -212
  871. package/lib/module/ui/stores/assetStore.js.map +0 -1
  872. package/lib/module/ui/stores/authStore.js +0 -81
  873. package/lib/module/ui/stores/authStore.js.map +0 -1
  874. package/lib/module/ui/stores/fileStore.js +0 -145
  875. package/lib/module/ui/stores/fileStore.js.map +0 -1
  876. package/lib/module/ui/stores/followStore.js +0 -225
  877. package/lib/module/ui/styles/authStyles.js +0 -333
  878. package/lib/module/ui/styles/authStyles.js.map +0 -1
  879. package/lib/module/ui/styles/fonts.js +0 -81
  880. package/lib/module/ui/styles/fonts.js.map +0 -1
  881. package/lib/module/ui/styles/index.js +0 -7
  882. package/lib/module/ui/styles/index.js.map +0 -1
  883. package/lib/module/ui/styles/spacing.js +0 -58
  884. package/lib/module/ui/styles/spacing.js.map +0 -1
  885. package/lib/module/ui/styles/theme.js +0 -114
  886. package/lib/module/ui/types/fileManagement.js +0 -4
  887. package/lib/module/ui/types/fileManagement.js.map +0 -1
  888. package/lib/module/ui/types/navigation.js +0 -4
  889. package/lib/module/ui/utils/avatarUtils.js +0 -126
  890. package/lib/module/ui/utils/avatarUtils.js.map +0 -1
  891. package/lib/module/ui/utils/colorUtils.js +0 -46
  892. package/lib/module/ui/utils/colorUtils.js.map +0 -1
  893. package/lib/module/ui/utils/confirmAction.js +0 -25
  894. package/lib/module/ui/utils/confirmAction.js.map +0 -1
  895. package/lib/module/ui/utils/errorHandlers.js +0 -129
  896. package/lib/module/ui/utils/errorHandlers.js.map +0 -1
  897. package/lib/module/ui/utils/fileManagement.js +0 -251
  898. package/lib/module/ui/utils/fileManagement.js.map +0 -1
  899. package/lib/module/ui/utils/sessionHelpers.js +0 -94
  900. package/lib/module/ui/utils/sessionHelpers.js.map +0 -1
  901. package/lib/module/ui/utils/storageHelpers.js +0 -111
  902. package/lib/module/ui/utils/storageHelpers.js.map +0 -1
  903. package/lib/module/ui/utils/themeUtils.js +0 -41
  904. package/lib/module/ui/utils/themeUtils.js.map +0 -1
  905. package/lib/module/ui/utils/user-utils.js +0 -46
  906. package/lib/module/utils/apiUtils.js +0 -72
  907. package/lib/module/utils/apiUtils.js.map +0 -1
  908. package/lib/module/utils/asyncUtils.js +0 -192
  909. package/lib/module/utils/asyncUtils.js.map +0 -1
  910. package/lib/module/utils/cache.js +0 -250
  911. package/lib/module/utils/cache.js.map +0 -1
  912. package/lib/module/utils/deviceManager.js +0 -171
  913. package/lib/module/utils/deviceManager.js.map +0 -1
  914. package/lib/module/utils/errorUtils.js +0 -167
  915. package/lib/module/utils/errorUtils.js.map +0 -1
  916. package/lib/module/utils/hookUtils.js +0 -381
  917. package/lib/module/utils/hookUtils.js.map +0 -1
  918. package/lib/module/utils/index.js +0 -11
  919. package/lib/module/utils/index.js.map +0 -1
  920. package/lib/module/utils/languageUtils.js +0 -151
  921. package/lib/module/utils/languageUtils.js.map +0 -1
  922. package/lib/module/utils/loggerUtils.js +0 -149
  923. package/lib/module/utils/loggerUtils.js.map +0 -1
  924. package/lib/module/utils/requestUtils.js +0 -210
  925. package/lib/module/utils/requestUtils.js.map +0 -1
  926. package/lib/module/utils/sessionUtils.js +0 -180
  927. package/lib/module/utils/validationUtils.js +0 -170
  928. package/lib/module/utils/validationUtils.js.map +0 -1
  929. package/lib/typescript/assets/icons/OxyServices.d.ts +0 -29
  930. package/lib/typescript/assets/icons/OxyServices.d.ts.map +0 -1
  931. package/lib/typescript/assets/illustrations/HighFive.d.ts +0 -9
  932. package/lib/typescript/assets/illustrations/HighFive.d.ts.map +0 -1
  933. package/lib/typescript/constants/version.d.ts +0 -14
  934. package/lib/typescript/constants/version.d.ts.map +0 -1
  935. package/lib/typescript/core/HttpService.d.ts +0 -159
  936. package/lib/typescript/core/HttpService.d.ts.map +0 -1
  937. package/lib/typescript/core/OxyServices.base.d.ts +0 -127
  938. package/lib/typescript/core/OxyServices.base.d.ts.map +0 -1
  939. package/lib/typescript/core/OxyServices.d.ts +0 -113
  940. package/lib/typescript/core/OxyServices.d.ts.map +0 -1
  941. package/lib/typescript/core/OxyServices.errors.d.ts +0 -12
  942. package/lib/typescript/core/OxyServices.errors.d.ts.map +0 -1
  943. package/lib/typescript/core/index.d.ts +0 -17
  944. package/lib/typescript/core/index.d.ts.map +0 -1
  945. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts +0 -67
  946. package/lib/typescript/core/mixins/OxyServices.analytics.d.ts.map +0 -1
  947. package/lib/typescript/core/mixins/OxyServices.assets.d.ts +0 -136
  948. package/lib/typescript/core/mixins/OxyServices.assets.d.ts.map +0 -1
  949. package/lib/typescript/core/mixins/OxyServices.auth.d.ts +0 -192
  950. package/lib/typescript/core/mixins/OxyServices.auth.d.ts.map +0 -1
  951. package/lib/typescript/core/mixins/OxyServices.developer.d.ts +0 -100
  952. package/lib/typescript/core/mixins/OxyServices.developer.d.ts.map +0 -1
  953. package/lib/typescript/core/mixins/OxyServices.devices.d.ts +0 -97
  954. package/lib/typescript/core/mixins/OxyServices.devices.d.ts.map +0 -1
  955. package/lib/typescript/core/mixins/OxyServices.karma.d.ts +0 -86
  956. package/lib/typescript/core/mixins/OxyServices.karma.d.ts.map +0 -1
  957. package/lib/typescript/core/mixins/OxyServices.language.d.ts +0 -82
  958. package/lib/typescript/core/mixins/OxyServices.language.d.ts.map +0 -1
  959. package/lib/typescript/core/mixins/OxyServices.location.d.ts +0 -65
  960. package/lib/typescript/core/mixins/OxyServices.location.d.ts.map +0 -1
  961. package/lib/typescript/core/mixins/OxyServices.payment.d.ts +0 -112
  962. package/lib/typescript/core/mixins/OxyServices.payment.d.ts.map +0 -1
  963. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts +0 -123
  964. package/lib/typescript/core/mixins/OxyServices.privacy.d.ts.map +0 -1
  965. package/lib/typescript/core/mixins/OxyServices.security.d.ts +0 -79
  966. package/lib/typescript/core/mixins/OxyServices.security.d.ts.map +0 -1
  967. package/lib/typescript/core/mixins/OxyServices.user.d.ts +0 -185
  968. package/lib/typescript/core/mixins/OxyServices.user.d.ts.map +0 -1
  969. package/lib/typescript/core/mixins/OxyServices.utility.d.ts +0 -94
  970. package/lib/typescript/core/mixins/OxyServices.utility.d.ts.map +0 -1
  971. package/lib/typescript/core/mixins/index.d.ts +0 -853
  972. package/lib/typescript/core/mixins/index.d.ts.map +0 -1
  973. package/lib/typescript/core/mixins/mixinHelpers.d.ts +0 -32
  974. package/lib/typescript/core/mixins/mixinHelpers.d.ts.map +0 -1
  975. package/lib/typescript/crypto/index.d.ts +0 -12
  976. package/lib/typescript/crypto/index.d.ts.map +0 -1
  977. package/lib/typescript/crypto/keyManager.d.ts +0 -97
  978. package/lib/typescript/crypto/keyManager.d.ts.map +0 -1
  979. package/lib/typescript/crypto/polyfill.d.ts +0 -13
  980. package/lib/typescript/crypto/polyfill.d.ts.map +0 -1
  981. package/lib/typescript/crypto/signatureService.d.ts +0 -87
  982. package/lib/typescript/crypto/signatureService.d.ts.map +0 -1
  983. package/lib/typescript/crypto/types.d.ts +0 -18
  984. package/lib/typescript/crypto/types.d.ts.map +0 -1
  985. package/lib/typescript/i18n/index.d.ts +0 -4
  986. package/lib/typescript/i18n/index.d.ts.map +0 -1
  987. package/lib/typescript/index.d.ts +0 -38
  988. package/lib/typescript/index.d.ts.map +0 -1
  989. package/lib/typescript/lib/sonner-safe.d.ts +0 -9
  990. package/lib/typescript/lib/sonner-safe.d.ts.map +0 -1
  991. package/lib/typescript/lib/sonner.d.ts +0 -15
  992. package/lib/typescript/lib/sonner.d.ts.map +0 -1
  993. package/lib/typescript/models/interfaces.d.ts +0 -414
  994. package/lib/typescript/models/interfaces.d.ts.map +0 -1
  995. package/lib/typescript/models/session.d.ts +0 -24
  996. package/lib/typescript/models/session.d.ts.map +0 -1
  997. package/lib/typescript/node/index.d.ts +0 -10
  998. package/lib/typescript/node/index.d.ts.map +0 -1
  999. package/lib/typescript/types/buffer.d.ts +0 -97
  1000. package/lib/typescript/types/color.d.ts +0 -20
  1001. package/lib/typescript/types/elliptic.d.ts +0 -62
  1002. package/lib/typescript/types/expo-crypto.d.ts +0 -30
  1003. package/lib/typescript/types/expo-document-picker.d.ts +0 -36
  1004. package/lib/typescript/types/expo-secure-store.d.ts +0 -22
  1005. package/lib/typescript/types/expo-vector-icons.d.ts +0 -19
  1006. package/lib/typescript/types/express.d.ts +0 -24
  1007. package/lib/typescript/ui/components/ActivityIndicator.d.ts +0 -45
  1008. package/lib/typescript/ui/components/ActivityIndicator.d.ts.map +0 -1
  1009. package/lib/typescript/ui/components/AnimationExample.d.ts +0 -4
  1010. package/lib/typescript/ui/components/AnimationExample.d.ts.map +0 -1
  1011. package/lib/typescript/ui/components/AutoHeightScrollView.d.ts +0 -23
  1012. package/lib/typescript/ui/components/AutoHeightScrollView.d.ts.map +0 -1
  1013. package/lib/typescript/ui/components/Avatar.d.ts +0 -61
  1014. package/lib/typescript/ui/components/Avatar.d.ts.map +0 -1
  1015. package/lib/typescript/ui/components/BottomSheet.d.ts +0 -29
  1016. package/lib/typescript/ui/components/BottomSheet.d.ts.map +0 -1
  1017. package/lib/typescript/ui/components/BottomSheetRouter.d.ts +0 -14
  1018. package/lib/typescript/ui/components/BottomSheetRouter.d.ts.map +0 -1
  1019. package/lib/typescript/ui/components/CrossFadeIcon.d.ts +0 -27
  1020. package/lib/typescript/ui/components/CrossFadeIcon.d.ts.map +0 -1
  1021. package/lib/typescript/ui/components/EmptyState.d.ts +0 -8
  1022. package/lib/typescript/ui/components/EmptyState.d.ts.map +0 -1
  1023. package/lib/typescript/ui/components/ErrorBoundary.d.ts +0 -31
  1024. package/lib/typescript/ui/components/ErrorBoundary.d.ts.map +0 -1
  1025. package/lib/typescript/ui/components/FollowButton.d.ts +0 -18
  1026. package/lib/typescript/ui/components/FollowButton.d.ts.map +0 -1
  1027. package/lib/typescript/ui/components/FontLoader.d.ts +0 -15
  1028. package/lib/typescript/ui/components/FontLoader.d.ts.map +0 -1
  1029. package/lib/typescript/ui/components/GroupedItem.d.ts +0 -20
  1030. package/lib/typescript/ui/components/GroupedItem.d.ts.map +0 -1
  1031. package/lib/typescript/ui/components/GroupedSection.d.ts +0 -25
  1032. package/lib/typescript/ui/components/GroupedSection.d.ts.map +0 -1
  1033. package/lib/typescript/ui/components/Header.d.ts +0 -38
  1034. package/lib/typescript/ui/components/Header.d.ts.map +0 -1
  1035. package/lib/typescript/ui/components/HelperText.d.ts +0 -47
  1036. package/lib/typescript/ui/components/HelperText.d.ts.map +0 -1
  1037. package/lib/typescript/ui/components/Icon.d.ts +0 -60
  1038. package/lib/typescript/ui/components/Icon.d.ts.map +0 -1
  1039. package/lib/typescript/ui/components/IconButton/IconButton.d.ts +0 -99
  1040. package/lib/typescript/ui/components/IconButton/IconButton.d.ts.map +0 -1
  1041. package/lib/typescript/ui/components/IconButton/utils.d.ts +0 -19
  1042. package/lib/typescript/ui/components/IconButton/utils.d.ts.map +0 -1
  1043. package/lib/typescript/ui/components/LoadingState.d.ts +0 -9
  1044. package/lib/typescript/ui/components/LoadingState.d.ts.map +0 -1
  1045. package/lib/typescript/ui/components/OxyLogo.d.ts +0 -29
  1046. package/lib/typescript/ui/components/OxyLogo.d.ts.map +0 -1
  1047. package/lib/typescript/ui/components/OxyPayButton.d.ts +0 -29
  1048. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +0 -1
  1049. package/lib/typescript/ui/components/OxyProvider.d.ts +0 -11
  1050. package/lib/typescript/ui/components/OxyProvider.d.ts.map +0 -1
  1051. package/lib/typescript/ui/components/OxySignInButton.d.ts +0 -65
  1052. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +0 -1
  1053. package/lib/typescript/ui/components/ProfileCard.d.ts +0 -18
  1054. package/lib/typescript/ui/components/ProfileCard.d.ts.map +0 -1
  1055. package/lib/typescript/ui/components/QuickActions.d.ts +0 -15
  1056. package/lib/typescript/ui/components/QuickActions.d.ts.map +0 -1
  1057. package/lib/typescript/ui/components/Section.d.ts +0 -12
  1058. package/lib/typescript/ui/components/Section.d.ts.map +0 -1
  1059. package/lib/typescript/ui/components/SectionTitle.d.ts +0 -10
  1060. package/lib/typescript/ui/components/SectionTitle.d.ts.map +0 -1
  1061. package/lib/typescript/ui/components/SettingRow.d.ts +0 -14
  1062. package/lib/typescript/ui/components/SettingRow.d.ts.map +0 -1
  1063. package/lib/typescript/ui/components/StepBasedScreen.d.ts +0 -26
  1064. package/lib/typescript/ui/components/StepBasedScreen.d.ts.map +0 -1
  1065. package/lib/typescript/ui/components/Surface.d.ts +0 -76
  1066. package/lib/typescript/ui/components/Surface.d.ts.map +0 -1
  1067. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts +0 -16
  1068. package/lib/typescript/ui/components/TextField/Addons/Outline.d.ts.map +0 -1
  1069. package/lib/typescript/ui/components/TextField/Addons/Underline.d.ts +0 -19
  1070. package/lib/typescript/ui/components/TextField/Addons/Underline.d.ts.map +0 -1
  1071. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAdornment.d.ts +0 -45
  1072. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAdornment.d.ts.map +0 -1
  1073. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAffix.d.ts +0 -73
  1074. package/lib/typescript/ui/components/TextField/Adornment/TextFieldAffix.d.ts.map +0 -1
  1075. package/lib/typescript/ui/components/TextField/Adornment/TextFieldIcon.d.ts +0 -78
  1076. package/lib/typescript/ui/components/TextField/Adornment/TextFieldIcon.d.ts.map +0 -1
  1077. package/lib/typescript/ui/components/TextField/Adornment/enums.d.ts +0 -13
  1078. package/lib/typescript/ui/components/TextField/Adornment/enums.d.ts.map +0 -1
  1079. package/lib/typescript/ui/components/TextField/Adornment/types.d.ts +0 -12
  1080. package/lib/typescript/ui/components/TextField/Adornment/types.d.ts.map +0 -1
  1081. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts +0 -12
  1082. package/lib/typescript/ui/components/TextField/Adornment/utils.d.ts.map +0 -1
  1083. package/lib/typescript/ui/components/TextField/Label/InputLabel.d.ts +0 -5
  1084. package/lib/typescript/ui/components/TextField/Label/InputLabel.d.ts.map +0 -1
  1085. package/lib/typescript/ui/components/TextField/Label/LabelBackground.d.ts +0 -4
  1086. package/lib/typescript/ui/components/TextField/Label/LabelBackground.d.ts.map +0 -1
  1087. package/lib/typescript/ui/components/TextField/TextFieldFlat.d.ts +0 -4
  1088. package/lib/typescript/ui/components/TextField/TextFieldFlat.d.ts.map +0 -1
  1089. package/lib/typescript/ui/components/TextField/TextFieldOutlined.d.ts +0 -4
  1090. package/lib/typescript/ui/components/TextField/TextFieldOutlined.d.ts.map +0 -1
  1091. package/lib/typescript/ui/components/TextField/constants.d.ts +0 -32
  1092. package/lib/typescript/ui/components/TextField/constants.d.ts.map +0 -1
  1093. package/lib/typescript/ui/components/TextField/helpers.d.ts +0 -97
  1094. package/lib/typescript/ui/components/TextField/helpers.d.ts.map +0 -1
  1095. package/lib/typescript/ui/components/TextField/types.d.ts +0 -156
  1096. package/lib/typescript/ui/components/TextField/types.d.ts.map +0 -1
  1097. package/lib/typescript/ui/components/TextField.d.ts +0 -192
  1098. package/lib/typescript/ui/components/TextField.d.ts.map +0 -1
  1099. package/lib/typescript/ui/components/TouchableRipple/Pressable.d.ts +0 -13
  1100. package/lib/typescript/ui/components/TouchableRipple/Pressable.d.ts.map +0 -1
  1101. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.d.ts +0 -62
  1102. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.d.ts.map +0 -1
  1103. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.native.d.ts +0 -25
  1104. package/lib/typescript/ui/components/TouchableRipple/TouchableRipple.native.d.ts.map +0 -1
  1105. package/lib/typescript/ui/components/TouchableRipple/utils.d.ts +0 -11
  1106. package/lib/typescript/ui/components/TouchableRipple/utils.d.ts.map +0 -1
  1107. package/lib/typescript/ui/components/Typography/AnimatedText.d.ts +0 -35
  1108. package/lib/typescript/ui/components/Typography/AnimatedText.d.ts.map +0 -1
  1109. package/lib/typescript/ui/components/Typography/types.d.ts +0 -19
  1110. package/lib/typescript/ui/components/Typography/types.d.ts.map +0 -1
  1111. package/lib/typescript/ui/components/fileManagement/FileDetailsModal.d.ts +0 -15
  1112. package/lib/typescript/ui/components/fileManagement/FileDetailsModal.d.ts.map +0 -1
  1113. package/lib/typescript/ui/components/fileManagement/FileViewer.d.ts +0 -18
  1114. package/lib/typescript/ui/components/fileManagement/FileViewer.d.ts.map +0 -1
  1115. package/lib/typescript/ui/components/fileManagement/UploadPreview.d.ts +0 -21
  1116. package/lib/typescript/ui/components/fileManagement/UploadPreview.d.ts.map +0 -1
  1117. package/lib/typescript/ui/components/fileManagement/styles.d.ts +0 -860
  1118. package/lib/typescript/ui/components/fileManagement/styles.d.ts.map +0 -1
  1119. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts +0 -9
  1120. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts.map +0 -1
  1121. package/lib/typescript/ui/components/icon/OxyIcon.d.ts +0 -10
  1122. package/lib/typescript/ui/components/icon/OxyIcon.d.ts.map +0 -1
  1123. package/lib/typescript/ui/components/icon/index.d.ts +0 -4
  1124. package/lib/typescript/ui/components/icon/index.d.ts.map +0 -1
  1125. package/lib/typescript/ui/components/index.d.ts +0 -17
  1126. package/lib/typescript/ui/components/index.d.ts.map +0 -1
  1127. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts +0 -18
  1128. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +0 -1
  1129. package/lib/typescript/ui/components/internal/PinInput.d.ts +0 -23
  1130. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +0 -1
  1131. package/lib/typescript/ui/components/photogrid/JustifiedPhotoGrid.d.ts +0 -27
  1132. package/lib/typescript/ui/components/photogrid/JustifiedPhotoGrid.d.ts.map +0 -1
  1133. package/lib/typescript/ui/components/profile/EditBioModal.d.ts +0 -11
  1134. package/lib/typescript/ui/components/profile/EditBioModal.d.ts.map +0 -1
  1135. package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts +0 -12
  1136. package/lib/typescript/ui/components/profile/EditDisplayNameModal.d.ts.map +0 -1
  1137. package/lib/typescript/ui/components/profile/EditEmailModal.d.ts +0 -11
  1138. package/lib/typescript/ui/components/profile/EditEmailModal.d.ts.map +0 -1
  1139. package/lib/typescript/ui/components/profile/EditLinksModal.d.ts +0 -18
  1140. package/lib/typescript/ui/components/profile/EditLinksModal.d.ts.map +0 -1
  1141. package/lib/typescript/ui/components/profile/EditLocationModal.d.ts +0 -20
  1142. package/lib/typescript/ui/components/profile/EditLocationModal.d.ts.map +0 -1
  1143. package/lib/typescript/ui/components/profile/EditUsernameModal.d.ts +0 -11
  1144. package/lib/typescript/ui/components/profile/EditUsernameModal.d.ts.map +0 -1
  1145. package/lib/typescript/ui/components/styles/overlay.d.ts +0 -4
  1146. package/lib/typescript/ui/components/styles/overlay.d.ts.map +0 -1
  1147. package/lib/typescript/ui/components/styles/shadow.d.ts +0 -3
  1148. package/lib/typescript/ui/components/styles/shadow.d.ts.map +0 -1
  1149. package/lib/typescript/ui/components/theming.d.ts +0 -8
  1150. package/lib/typescript/ui/components/theming.d.ts.map +0 -1
  1151. package/lib/typescript/ui/components/types.d.ts +0 -80
  1152. package/lib/typescript/ui/components/types.d.ts.map +0 -1
  1153. package/lib/typescript/ui/components/utils/forwardRef.d.ts +0 -12
  1154. package/lib/typescript/ui/components/utils/forwardRef.d.ts.map +0 -1
  1155. package/lib/typescript/ui/components/utils/hasTouchHandler.d.ts +0 -6
  1156. package/lib/typescript/ui/components/utils/hasTouchHandler.d.ts.map +0 -1
  1157. package/lib/typescript/ui/components/utils/roundLayoutSize.d.ts +0 -2
  1158. package/lib/typescript/ui/components/utils/roundLayoutSize.d.ts.map +0 -1
  1159. package/lib/typescript/ui/components/utils/splitStyles.d.ts +0 -20
  1160. package/lib/typescript/ui/components/utils/splitStyles.d.ts.map +0 -1
  1161. package/lib/typescript/ui/constants/iconColors.d.ts +0 -130
  1162. package/lib/typescript/ui/constants/iconColors.d.ts.map +0 -1
  1163. package/lib/typescript/ui/constants/spacing.d.ts +0 -33
  1164. package/lib/typescript/ui/constants/spacing.d.ts.map +0 -1
  1165. package/lib/typescript/ui/constants/theme.d.ts +0 -97
  1166. package/lib/typescript/ui/constants/theme.d.ts.map +0 -1
  1167. package/lib/typescript/ui/context/OxyContext.d.ts +0 -86
  1168. package/lib/typescript/ui/context/OxyContext.d.ts.map +0 -1
  1169. package/lib/typescript/ui/context/ThemeContext.d.ts +0 -19
  1170. package/lib/typescript/ui/context/ThemeContext.d.ts.map +0 -1
  1171. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts +0 -59
  1172. package/lib/typescript/ui/context/hooks/useAuthOperations.d.ts.map +0 -1
  1173. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts +0 -27
  1174. package/lib/typescript/ui/context/hooks/useDeviceManagement.d.ts.map +0 -1
  1175. package/lib/typescript/ui/context/hooks/useLanguageManagement.d.ts +0 -25
  1176. package/lib/typescript/ui/context/hooks/useLanguageManagement.d.ts.map +0 -1
  1177. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts +0 -41
  1178. package/lib/typescript/ui/context/hooks/useSessionManagement.d.ts.map +0 -1
  1179. package/lib/typescript/ui/context/hooks/useStorage.d.ts +0 -22
  1180. package/lib/typescript/ui/context/hooks/useStorage.d.ts.map +0 -1
  1181. package/lib/typescript/ui/hooks/index.d.ts +0 -5
  1182. package/lib/typescript/ui/hooks/index.d.ts.map +0 -1
  1183. package/lib/typescript/ui/hooks/mutations/index.d.ts +0 -9
  1184. package/lib/typescript/ui/hooks/mutations/index.d.ts.map +0 -1
  1185. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts +0 -44
  1186. package/lib/typescript/ui/hooks/mutations/useAccountMutations.d.ts.map +0 -1
  1187. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts +0 -23
  1188. package/lib/typescript/ui/hooks/mutations/useServicesMutations.d.ts.map +0 -1
  1189. package/lib/typescript/ui/hooks/queries/index.d.ts +0 -11
  1190. package/lib/typescript/ui/hooks/queries/index.d.ts.map +0 -1
  1191. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts +0 -65
  1192. package/lib/typescript/ui/hooks/queries/queryKeys.d.ts.map +0 -1
  1193. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts +0 -47
  1194. package/lib/typescript/ui/hooks/queries/useAccountQueries.d.ts.map +0 -1
  1195. package/lib/typescript/ui/hooks/queries/useSecurityQueries.d.ts +0 -15
  1196. package/lib/typescript/ui/hooks/queries/useSecurityQueries.d.ts.map +0 -1
  1197. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts +0 -34
  1198. package/lib/typescript/ui/hooks/queries/useServicesQueries.d.ts.map +0 -1
  1199. package/lib/typescript/ui/hooks/queryClient.d.ts +0 -19
  1200. package/lib/typescript/ui/hooks/queryClient.d.ts.map +0 -1
  1201. package/lib/typescript/ui/hooks/use-color-scheme.d.ts +0 -8
  1202. package/lib/typescript/ui/hooks/use-color-scheme.d.ts.map +0 -1
  1203. package/lib/typescript/ui/hooks/use-haptic-press.d.ts +0 -8
  1204. package/lib/typescript/ui/hooks/use-haptic-press.d.ts.map +0 -1
  1205. package/lib/typescript/ui/hooks/useAssets.d.ts +0 -35
  1206. package/lib/typescript/ui/hooks/useAssets.d.ts.map +0 -1
  1207. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts +0 -27
  1208. package/lib/typescript/ui/hooks/useDeviceManagement.d.ts.map +0 -1
  1209. package/lib/typescript/ui/hooks/useFileDownloadUrl.d.ts +0 -19
  1210. package/lib/typescript/ui/hooks/useFileDownloadUrl.d.ts.map +0 -1
  1211. package/lib/typescript/ui/hooks/useFollow.d.ts +0 -62
  1212. package/lib/typescript/ui/hooks/useFollow.d.ts.map +0 -1
  1213. package/lib/typescript/ui/hooks/useFollow.types.d.ts +0 -33
  1214. package/lib/typescript/ui/hooks/useFollow.types.d.ts.map +0 -1
  1215. package/lib/typescript/ui/hooks/useI18n.d.ts +0 -5
  1216. package/lib/typescript/ui/hooks/useI18n.d.ts.map +0 -1
  1217. package/lib/typescript/ui/hooks/useLanguageManagement.d.ts +0 -25
  1218. package/lib/typescript/ui/hooks/useLanguageManagement.d.ts.map +0 -1
  1219. package/lib/typescript/ui/hooks/useProfileEditing.d.ts +0 -36
  1220. package/lib/typescript/ui/hooks/useProfileEditing.d.ts.map +0 -1
  1221. package/lib/typescript/ui/hooks/useQueryClient.d.ts +0 -7
  1222. package/lib/typescript/ui/hooks/useQueryClient.d.ts.map +0 -1
  1223. package/lib/typescript/ui/hooks/useSessionManagement.d.ts +0 -41
  1224. package/lib/typescript/ui/hooks/useSessionManagement.d.ts.map +0 -1
  1225. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +0 -21
  1226. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +0 -1
  1227. package/lib/typescript/ui/hooks/useStorage.d.ts +0 -22
  1228. package/lib/typescript/ui/hooks/useStorage.d.ts.map +0 -1
  1229. package/lib/typescript/ui/hooks/useThemeColors.d.ts +0 -94
  1230. package/lib/typescript/ui/hooks/useThemeColors.d.ts.map +0 -1
  1231. package/lib/typescript/ui/hooks/useThemeStyles.d.ts +0 -45
  1232. package/lib/typescript/ui/hooks/useThemeStyles.d.ts.map +0 -1
  1233. package/lib/typescript/ui/index.d.ts +0 -5
  1234. package/lib/typescript/ui/index.d.ts.map +0 -1
  1235. package/lib/typescript/ui/isFrontend.d.ts +0 -3
  1236. package/lib/typescript/ui/isFrontend.d.ts.map +0 -1
  1237. package/lib/typescript/ui/navigation/bottomSheetManager.d.ts +0 -74
  1238. package/lib/typescript/ui/navigation/bottomSheetManager.d.ts.map +0 -1
  1239. package/lib/typescript/ui/navigation/routes.d.ts +0 -6
  1240. package/lib/typescript/ui/navigation/routes.d.ts.map +0 -1
  1241. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts +0 -5
  1242. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +0 -1
  1243. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts +0 -5
  1244. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +0 -1
  1245. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts +0 -8
  1246. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +0 -1
  1247. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts +0 -5
  1248. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +0 -1
  1249. package/lib/typescript/ui/screens/AccountVerificationScreen.d.ts +0 -5
  1250. package/lib/typescript/ui/screens/AccountVerificationScreen.d.ts.map +0 -1
  1251. package/lib/typescript/ui/screens/AppInfoScreen.d.ts +0 -5
  1252. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +0 -1
  1253. package/lib/typescript/ui/screens/FeedbackScreen.d.ts +0 -5
  1254. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +0 -1
  1255. package/lib/typescript/ui/screens/FileManagementScreen.d.ts +0 -5
  1256. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +0 -1
  1257. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts +0 -5
  1258. package/lib/typescript/ui/screens/HelpSupportScreen.d.ts.map +0 -1
  1259. package/lib/typescript/ui/screens/HistoryViewScreen.d.ts +0 -5
  1260. package/lib/typescript/ui/screens/HistoryViewScreen.d.ts.map +0 -1
  1261. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts +0 -7
  1262. package/lib/typescript/ui/screens/LanguageSelectorScreen.d.ts.map +0 -1
  1263. package/lib/typescript/ui/screens/LegalDocumentsScreen.d.ts +0 -5
  1264. package/lib/typescript/ui/screens/LegalDocumentsScreen.d.ts.map +0 -1
  1265. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts +0 -17
  1266. package/lib/typescript/ui/screens/OxyAuthScreen.d.ts.map +0 -1
  1267. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +0 -27
  1268. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +0 -1
  1269. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts +0 -5
  1270. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +0 -1
  1271. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts +0 -5
  1272. package/lib/typescript/ui/screens/PrivacySettingsScreen.d.ts.map +0 -1
  1273. package/lib/typescript/ui/screens/ProfileScreen.d.ts +0 -9
  1274. package/lib/typescript/ui/screens/ProfileScreen.d.ts.map +0 -1
  1275. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts +0 -5
  1276. package/lib/typescript/ui/screens/SavesCollectionsScreen.d.ts.map +0 -1
  1277. package/lib/typescript/ui/screens/SearchSettingsScreen.d.ts +0 -5
  1278. package/lib/typescript/ui/screens/SearchSettingsScreen.d.ts.map +0 -1
  1279. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts +0 -5
  1280. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +0 -1
  1281. package/lib/typescript/ui/screens/UserLinksScreen.d.ts +0 -15
  1282. package/lib/typescript/ui/screens/UserLinksScreen.d.ts.map +0 -1
  1283. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts +0 -13
  1284. package/lib/typescript/ui/screens/WelcomeNewUserScreen.d.ts.map +0 -1
  1285. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts +0 -5
  1286. package/lib/typescript/ui/screens/karma/KarmaAboutScreen.d.ts.map +0 -1
  1287. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts +0 -5
  1288. package/lib/typescript/ui/screens/karma/KarmaCenterScreen.d.ts.map +0 -1
  1289. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts +0 -5
  1290. package/lib/typescript/ui/screens/karma/KarmaFAQScreen.d.ts.map +0 -1
  1291. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts +0 -5
  1292. package/lib/typescript/ui/screens/karma/KarmaLeaderboardScreen.d.ts.map +0 -1
  1293. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts +0 -5
  1294. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +0 -1
  1295. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts +0 -5
  1296. package/lib/typescript/ui/screens/karma/KarmaRulesScreen.d.ts.map +0 -1
  1297. package/lib/typescript/ui/stores/accountStore.d.ts +0 -34
  1298. package/lib/typescript/ui/stores/accountStore.d.ts.map +0 -1
  1299. package/lib/typescript/ui/stores/assetStore.d.ts +0 -54
  1300. package/lib/typescript/ui/stores/assetStore.d.ts.map +0 -1
  1301. package/lib/typescript/ui/stores/authStore.d.ts +0 -21
  1302. package/lib/typescript/ui/stores/authStore.d.ts.map +0 -1
  1303. package/lib/typescript/ui/stores/fileStore.d.ts +0 -31
  1304. package/lib/typescript/ui/stores/fileStore.d.ts.map +0 -1
  1305. package/lib/typescript/ui/stores/followStore.d.ts +0 -25
  1306. package/lib/typescript/ui/stores/followStore.d.ts.map +0 -1
  1307. package/lib/typescript/ui/styles/authStyles.d.ts +0 -332
  1308. package/lib/typescript/ui/styles/authStyles.d.ts.map +0 -1
  1309. package/lib/typescript/ui/styles/fonts.d.ts +0 -21
  1310. package/lib/typescript/ui/styles/fonts.d.ts.map +0 -1
  1311. package/lib/typescript/ui/styles/index.d.ts +0 -5
  1312. package/lib/typescript/ui/styles/index.d.ts.map +0 -1
  1313. package/lib/typescript/ui/styles/spacing.d.ts +0 -49
  1314. package/lib/typescript/ui/styles/spacing.d.ts.map +0 -1
  1315. package/lib/typescript/ui/styles/theme.d.ts +0 -68
  1316. package/lib/typescript/ui/styles/theme.d.ts.map +0 -1
  1317. package/lib/typescript/ui/types/fileManagement.d.ts +0 -41
  1318. package/lib/typescript/ui/types/fileManagement.d.ts.map +0 -1
  1319. package/lib/typescript/ui/types/navigation.d.ts +0 -36
  1320. package/lib/typescript/ui/types/navigation.d.ts.map +0 -1
  1321. package/lib/typescript/ui/utils/avatarUtils.d.ts +0 -34
  1322. package/lib/typescript/ui/utils/avatarUtils.d.ts.map +0 -1
  1323. package/lib/typescript/ui/utils/colorUtils.d.ts +0 -14
  1324. package/lib/typescript/ui/utils/colorUtils.d.ts.map +0 -1
  1325. package/lib/typescript/ui/utils/confirmAction.d.ts +0 -7
  1326. package/lib/typescript/ui/utils/confirmAction.d.ts.map +0 -1
  1327. package/lib/typescript/ui/utils/errorHandlers.d.ts +0 -35
  1328. package/lib/typescript/ui/utils/errorHandlers.d.ts.map +0 -1
  1329. package/lib/typescript/ui/utils/fileManagement.d.ts +0 -87
  1330. package/lib/typescript/ui/utils/fileManagement.d.ts.map +0 -1
  1331. package/lib/typescript/ui/utils/sessionHelpers.d.ts +0 -59
  1332. package/lib/typescript/ui/utils/sessionHelpers.d.ts.map +0 -1
  1333. package/lib/typescript/ui/utils/storageHelpers.d.ts +0 -31
  1334. package/lib/typescript/ui/utils/storageHelpers.d.ts.map +0 -1
  1335. package/lib/typescript/ui/utils/themeUtils.d.ts +0 -24
  1336. package/lib/typescript/ui/utils/themeUtils.d.ts.map +0 -1
  1337. package/lib/typescript/ui/utils/user-utils.d.ts +0 -29
  1338. package/lib/typescript/ui/utils/user-utils.d.ts.map +0 -1
  1339. package/lib/typescript/utils/apiUtils.d.ts +0 -54
  1340. package/lib/typescript/utils/apiUtils.d.ts.map +0 -1
  1341. package/lib/typescript/utils/asyncUtils.d.ts +0 -59
  1342. package/lib/typescript/utils/asyncUtils.d.ts.map +0 -1
  1343. package/lib/typescript/utils/cache.d.ts +0 -128
  1344. package/lib/typescript/utils/cache.d.ts.map +0 -1
  1345. package/lib/typescript/utils/deviceManager.d.ts +0 -66
  1346. package/lib/typescript/utils/deviceManager.d.ts.map +0 -1
  1347. package/lib/typescript/utils/errorUtils.d.ts +0 -53
  1348. package/lib/typescript/utils/errorUtils.d.ts.map +0 -1
  1349. package/lib/typescript/utils/hookUtils.d.ts +0 -102
  1350. package/lib/typescript/utils/hookUtils.d.ts.map +0 -1
  1351. package/lib/typescript/utils/index.d.ts +0 -7
  1352. package/lib/typescript/utils/index.d.ts.map +0 -1
  1353. package/lib/typescript/utils/languageUtils.d.ts +0 -38
  1354. package/lib/typescript/utils/languageUtils.d.ts.map +0 -1
  1355. package/lib/typescript/utils/loggerUtils.d.ts +0 -49
  1356. package/lib/typescript/utils/loggerUtils.d.ts.map +0 -1
  1357. package/lib/typescript/utils/requestUtils.d.ts +0 -122
  1358. package/lib/typescript/utils/requestUtils.d.ts.map +0 -1
  1359. package/lib/typescript/utils/sessionUtils.d.ts +0 -55
  1360. package/lib/typescript/utils/sessionUtils.d.ts.map +0 -1
  1361. package/lib/typescript/utils/validationUtils.d.ts +0 -86
  1362. package/lib/typescript/utils/validationUtils.d.ts.map +0 -1
@@ -1,2327 +0,0 @@
1
- "use strict";
2
-
3
- import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react';
4
- import { View, Text, TouchableOpacity, StyleSheet, ScrollView, ActivityIndicator, RefreshControl, TextInput, Image, Animated, Easing, Alert } from 'react-native';
5
- import { Image as ExpoImage } from 'expo-image';
6
- // Lazy load expo-document-picker (optional dependency)
7
- // This allows the screen to work even if expo-document-picker is not installed
8
- let DocumentPicker = null;
9
- const loadDocumentPicker = async () => {
10
- if (DocumentPicker) return DocumentPicker;
11
- try {
12
- DocumentPicker = await import('expo-document-picker');
13
- return DocumentPicker;
14
- } catch (error) {
15
- throw new Error('expo-document-picker is not installed. Please install it: npx expo install expo-document-picker');
16
- }
17
- };
18
- import { toast } from '../../lib/sonner';
19
- import { Ionicons } from '@expo/vector-icons';
20
- // @ts-ignore - MaterialCommunityIcons is available at runtime
21
- import { MaterialCommunityIcons } from '@expo/vector-icons';
22
- import { useFileStore, useFiles, useUploading as useUploadingStore, useUploadAggregateProgress, useDeleting as useDeletingStore } from '../stores/fileStore';
23
- import Header from '../components/Header';
24
- import JustifiedPhotoGrid from '../components/photogrid/JustifiedPhotoGrid';
25
- import { GroupedSection } from '../components';
26
- import { useThemeStyles } from '../hooks/useThemeStyles';
27
- import { useColorScheme } from '../hooks/use-color-scheme';
28
- import { normalizeTheme } from '../utils/themeUtils';
29
- import { useOxy } from '../context/OxyContext';
30
- import { useUploadFile } from '../hooks/mutations/useAccountMutations';
31
- import { confirmAction, convertDocumentPickerAssetToFile, formatFileSize, getFileIcon, getSafeDownloadUrl } from '../utils/fileManagement';
32
- import { FileViewer } from '../components/fileManagement/FileViewer';
33
- import { FileDetailsModal } from '../components/fileManagement/FileDetailsModal';
34
- import { UploadPreview } from '../components/fileManagement/UploadPreview';
35
- import { fileManagementStyles } from '../components/fileManagement/styles';
36
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
37
- // Animated button component for smooth transitions
38
- const AnimatedButton = ({
39
- isSelected,
40
- onPress,
41
- icon,
42
- primaryColor,
43
- textColor,
44
- style
45
- }) => {
46
- const animatedValue = useRef(new Animated.Value(isSelected ? 1 : 0)).current;
47
- useEffect(() => {
48
- Animated.timing(animatedValue, {
49
- toValue: isSelected ? 1 : 0,
50
- duration: 200,
51
- easing: Easing.out(Easing.ease),
52
- useNativeDriver: false
53
- }).start();
54
- }, [isSelected, animatedValue]);
55
- const backgroundColor = animatedValue.interpolate({
56
- inputRange: [0, 1],
57
- outputRange: ['transparent', primaryColor]
58
- });
59
- const iconColor = animatedValue.interpolate({
60
- inputRange: [0, 1],
61
- outputRange: [textColor, '#FFFFFF']
62
- });
63
- return /*#__PURE__*/_jsx(TouchableOpacity, {
64
- onPress: onPress,
65
- activeOpacity: 0.7,
66
- children: /*#__PURE__*/_jsx(Animated.View, {
67
- style: [style, {
68
- backgroundColor
69
- }],
70
- children: /*#__PURE__*/_jsx(Animated.View, {
71
- children: /*#__PURE__*/_jsx(MaterialCommunityIcons, {
72
- name: icon,
73
- size: 16,
74
- color: isSelected ? '#FFFFFF' : textColor
75
- })
76
- })
77
- })
78
- });
79
- };
80
- const FileManagementScreen = ({
81
- onClose,
82
- theme,
83
- goBack,
84
- navigate,
85
- userId,
86
- containerWidth = 400,
87
- // Fallback for when not provided by the router
88
- selectMode = false,
89
- multiSelect = false,
90
- onSelect,
91
- onConfirmSelection,
92
- initialSelectedIds = [],
93
- maxSelection,
94
- disabledMimeTypes = [],
95
- afterSelect = 'close',
96
- allowUploadInSelectMode = true,
97
- defaultVisibility = 'private',
98
- linkContext
99
- }) => {
100
- // Use useOxy() hook for OxyContext values
101
- const {
102
- user,
103
- oxyServices
104
- } = useOxy();
105
- const uploadFileMutation = useUploadFile();
106
- const files = useFiles();
107
- // Ensure containerWidth is a number (TypeScript guard)
108
- const safeContainerWidth = typeof containerWidth === 'number' ? containerWidth : 400;
109
- const uploading = useUploadingStore();
110
- const uploadProgress = useUploadAggregateProgress();
111
- const deleting = useDeletingStore();
112
- const [loading, setLoading] = useState(true);
113
- const [refreshing, setRefreshing] = useState(false);
114
- const [paging, setPaging] = useState({
115
- offset: 0,
116
- limit: 40,
117
- total: 0,
118
- hasMore: true,
119
- loadingMore: false
120
- });
121
- const [selectedFile, setSelectedFile] = useState(null);
122
- const [showFileDetails, setShowFileDetails] = useState(false);
123
- // In selectMode we never open the detailed viewer
124
- const [openedFile, setOpenedFile] = useState(null);
125
- const [fileContent, setFileContent] = useState(null);
126
- const [loadingFileContent, setLoadingFileContent] = useState(false);
127
- const [showFileDetailsInViewer, setShowFileDetailsInViewer] = useState(false);
128
- const [isPickingDocument, setIsPickingDocument] = useState(false);
129
- const [viewMode, setViewMode] = useState('all');
130
- const [searchQuery, setSearchQuery] = useState('');
131
- const [sortBy, setSortBy] = useState('date');
132
- const [sortOrder, setSortOrder] = useState('desc');
133
- const [pendingFiles, setPendingFiles] = useState([]);
134
- const [showUploadPreview, setShowUploadPreview] = useState(false);
135
- // Derived filtered and sorted files (avoid setState loops)
136
- const filteredFiles = useMemo(() => {
137
- let filteredByMode = files;
138
- if (viewMode === 'photos') {
139
- filteredByMode = files.filter(file => file.contentType.startsWith('image/'));
140
- } else if (viewMode === 'videos') {
141
- filteredByMode = files.filter(file => file.contentType.startsWith('video/'));
142
- } else if (viewMode === 'documents') {
143
- filteredByMode = files.filter(file => file.contentType.includes('pdf') || file.contentType.includes('document') || file.contentType.includes('text') || file.contentType.includes('msword') || file.contentType.includes('excel') || file.contentType.includes('spreadsheet') || file.contentType.includes('presentation') || file.contentType.includes('powerpoint'));
144
- } else if (viewMode === 'audio') {
145
- filteredByMode = files.filter(file => file.contentType.startsWith('audio/'));
146
- }
147
- let filtered = filteredByMode;
148
- if (searchQuery.trim()) {
149
- const query = searchQuery.toLowerCase();
150
- filtered = filteredByMode.filter(file => file.filename.toLowerCase().includes(query) || file.contentType.toLowerCase().includes(query) || file.metadata?.description && file.metadata.description.toLowerCase().includes(query));
151
- }
152
-
153
- // Sort files
154
- const sorted = [...filtered].sort((a, b) => {
155
- let comparison = 0;
156
- if (sortBy === 'date') {
157
- const dateA = new Date(a.uploadDate || 0).getTime();
158
- const dateB = new Date(b.uploadDate || 0).getTime();
159
- comparison = dateA - dateB;
160
- } else if (sortBy === 'size') {
161
- comparison = (a.length || 0) - (b.length || 0);
162
- } else if (sortBy === 'name') {
163
- comparison = (a.filename || '').localeCompare(b.filename || '');
164
- } else if (sortBy === 'type') {
165
- comparison = (a.contentType || '').localeCompare(b.contentType || '');
166
- }
167
- return sortOrder === 'asc' ? comparison : -comparison;
168
- });
169
- return sorted;
170
- }, [files, searchQuery, viewMode, sortBy, sortOrder]);
171
- const [photoDimensions, setPhotoDimensions] = useState({});
172
- const [loadingDimensions, setLoadingDimensions] = useState(false);
173
- const uploadStartRef = useRef(null);
174
- const MIN_BANNER_MS = 600;
175
- // Selection state
176
- const [selectedIds, setSelectedIds] = useState(new Set(initialSelectedIds));
177
- const [lastSelectedFileId, setLastSelectedFileId] = useState(null);
178
- const scrollViewRef = useRef(null);
179
- const photoScrollViewRef = useRef(null);
180
- const itemRefs = useRef(new Map()); // Track item positions
181
- const containerRef = useRef(null);
182
- useEffect(() => {
183
- if (initialSelectedIds && initialSelectedIds.length) {
184
- setSelectedIds(new Set(initialSelectedIds));
185
- }
186
- }, [initialSelectedIds]);
187
- const toggleSelect = useCallback(async file => {
188
- // Allow selection in regular mode for bulk operations
189
- // if (!selectMode) return;
190
- if (disabledMimeTypes.length) {
191
- const blocked = disabledMimeTypes.some(mt => file.contentType === mt || file.contentType.startsWith(mt.endsWith('/') ? mt : mt + '/'));
192
- if (blocked) {
193
- toast.error('This file type cannot be selected');
194
- return;
195
- }
196
- }
197
-
198
- // Update file visibility if it differs from defaultVisibility
199
- const fileVisibility = file.metadata?.visibility || 'private';
200
- if (fileVisibility !== defaultVisibility) {
201
- try {
202
- await oxyServices.assetUpdateVisibility(file.id, defaultVisibility);
203
- } catch (error) {
204
- // Continue anyway - selection shouldn't fail if visibility update fails
205
- }
206
- }
207
-
208
- // Track the selected file for scrolling
209
- setLastSelectedFileId(file.id);
210
-
211
- // Link file to entity if linkContext is provided
212
- if (linkContext) {
213
- try {
214
- await oxyServices.assetLink(file.id, linkContext.app, linkContext.entityType, linkContext.entityId, defaultVisibility, linkContext.webhookUrl);
215
- } catch (error) {
216
- // Continue anyway - selection shouldn't fail if linking fails
217
- }
218
- }
219
- if (!multiSelect) {
220
- onSelect?.(file);
221
- if (afterSelect === 'back') {
222
- goBack?.();
223
- } else if (afterSelect === 'close') {
224
- onClose?.();
225
- }
226
- return;
227
- }
228
- setSelectedIds(prev => {
229
- const next = new Set(prev);
230
- const already = next.has(file.id);
231
- if (!already) {
232
- if (maxSelection && next.size >= maxSelection) {
233
- toast.error(`You can select up to ${maxSelection}`);
234
- return prev;
235
- }
236
- next.add(file.id);
237
- } else {
238
- next.delete(file.id);
239
- }
240
- return next;
241
- });
242
- }, [selectMode, multiSelect, onSelect, onClose, goBack, disabledMimeTypes, maxSelection, afterSelect, defaultVisibility, oxyServices, linkContext]);
243
- const confirmMultiSelection = useCallback(async () => {
244
- if (!selectMode || !multiSelect) return;
245
- const map = {};
246
- files.forEach(f => {
247
- map[f.id] = f;
248
- });
249
- const chosen = Array.from(selectedIds).map(id => map[id]).filter(Boolean);
250
-
251
- // Update visibility and link files if needed
252
- const updatePromises = chosen.map(async file => {
253
- // Update visibility if needed
254
- const fileVisibility = file.metadata?.visibility || 'private';
255
- if (fileVisibility !== defaultVisibility) {
256
- try {
257
- await oxyServices.assetUpdateVisibility(file.id, defaultVisibility);
258
- } catch (error) {
259
- // Visibility update failed, continue with selection
260
- }
261
- }
262
-
263
- // Link file to entity if linkContext provided
264
- if (linkContext) {
265
- try {
266
- await oxyServices.assetLink(file.id, linkContext.app, linkContext.entityType, linkContext.entityId, defaultVisibility, linkContext.webhookUrl);
267
- } catch (error) {
268
- // File linking failed, continue with selection
269
- }
270
- }
271
- });
272
-
273
- // Wait for all updates (but don't block on failures)
274
- await Promise.allSettled(updatePromises);
275
- onConfirmSelection?.(chosen);
276
- onClose?.();
277
- }, [selectMode, multiSelect, selectedIds, files, onConfirmSelection, onClose, defaultVisibility, oxyServices, linkContext]);
278
- const endUpload = useCallback(() => {
279
- const started = uploadStartRef.current;
280
- const elapsed = started ? Date.now() - started : MIN_BANNER_MS;
281
- const remaining = elapsed < MIN_BANNER_MS ? MIN_BANNER_MS - elapsed : 0;
282
- setTimeout(() => {
283
- useFileStore.getState().setUploading(false);
284
- uploadStartRef.current = null;
285
- }, remaining);
286
- }, []);
287
-
288
- // Helper to safely request a thumbnail variant only for image mime types.
289
- const getSafeDownloadUrlCallback = useCallback((file, variant = 'thumb') => {
290
- return getSafeDownloadUrl(file, variant, (fileId, variant) => oxyServices.getFileDownloadUrl(fileId, variant));
291
- }, [oxyServices]);
292
-
293
- // Use centralized theme styles hook for consistency
294
- const colorScheme = useColorScheme();
295
- const normalizedTheme = normalizeTheme(theme);
296
- const baseThemeStyles = useThemeStyles(normalizedTheme, colorScheme);
297
- // FileManagementScreen uses a slightly different light background
298
- const themeStyles = useMemo(() => ({
299
- ...baseThemeStyles,
300
- backgroundColor: baseThemeStyles.isDarkTheme ? baseThemeStyles.backgroundColor : '#f2f2f2'
301
- }), [baseThemeStyles]);
302
-
303
- // Extract commonly used theme variables
304
- const backgroundColor = themeStyles.backgroundColor;
305
- const borderColor = themeStyles.borderColor;
306
- const targetUserId = userId || user?.id;
307
- const storeSetUploading = useFileStore(s => s.setUploading);
308
- const storeSetUploadProgress = useFileStore(s => s.setUploadProgress);
309
- const storeSetDeleting = useFileStore(s => s.setDeleting);
310
- const loadFiles = useCallback(async (mode = 'initial') => {
311
- if (!targetUserId) return;
312
- try {
313
- if (mode === 'refresh') {
314
- setRefreshing(true);
315
- } else if (mode === 'initial') {
316
- setLoading(true);
317
- setPaging(p => ({
318
- ...p,
319
- offset: 0,
320
- hasMore: true
321
- }));
322
- } else if (mode === 'more') {
323
- // Prevent duplicate fetches
324
- setPaging(p => ({
325
- ...p,
326
- loadingMore: true
327
- }));
328
- }
329
- const currentPaging = mode === 'more' ? prevPagingRef.current ?? paging : paging;
330
- const effectiveOffset = mode === 'more' ? currentPaging.offset + currentPaging.limit : 0;
331
- const response = await oxyServices.listUserFiles(currentPaging.limit, effectiveOffset);
332
- const assets = (response.files || []).map(f => ({
333
- id: f.id,
334
- filename: f.originalName || f.sha256,
335
- contentType: f.mime,
336
- length: f.size,
337
- chunkSize: 0,
338
- uploadDate: f.createdAt,
339
- metadata: f.metadata || {},
340
- variants: f.variants || []
341
- }));
342
- if (mode === 'more') {
343
- // append
344
- useFileStore.getState().setFiles(assets, {
345
- merge: true
346
- });
347
- setPaging(p => ({
348
- ...p,
349
- offset: effectiveOffset,
350
- total: response.total || effectiveOffset + assets.length,
351
- hasMore: response.hasMore,
352
- loadingMore: false
353
- }));
354
- } else {
355
- useFileStore.getState().setFiles(assets, {
356
- merge: false
357
- });
358
- setPaging(p => ({
359
- ...p,
360
- offset: 0,
361
- total: response.total || assets.length,
362
- hasMore: response.hasMore,
363
- loadingMore: false
364
- }));
365
- }
366
- } catch (error) {
367
- toast.error(error.message || 'Failed to load files');
368
- } finally {
369
- setLoading(false);
370
- setRefreshing(false);
371
- setPaging(p => ({
372
- ...p,
373
- loadingMore: false
374
- }));
375
- }
376
- }, [targetUserId, oxyServices, paging]);
377
-
378
- // Keep a ref to avoid stale closure when calculating next offset
379
- const prevPagingRef = useRef(paging);
380
- useEffect(() => {
381
- prevPagingRef.current = paging;
382
- }, [paging]);
383
-
384
- // (removed effect; filteredFiles is memoized)
385
-
386
- // Load photo dimensions for justified grid - unified approach using Image.getSize
387
- const loadPhotoDimensions = useCallback(async photos => {
388
- if (photos.length === 0) return;
389
- setLoadingDimensions(true);
390
- const newDimensions = {
391
- ...photoDimensions
392
- };
393
- let hasNewDimensions = false;
394
-
395
- // Only load dimensions for photos we don't have yet
396
- const photosToLoad = photos.filter(photo => !newDimensions[photo.id]);
397
- if (photosToLoad.length === 0) {
398
- setLoadingDimensions(false);
399
- return;
400
- }
401
- try {
402
- await Promise.all(photosToLoad.map(async photo => {
403
- try {
404
- const downloadUrl = getSafeDownloadUrlCallback(photo, 'thumb');
405
-
406
- // Unified approach using Image.getSize (works on all platforms)
407
- await new Promise(resolve => {
408
- Image.getSize(downloadUrl, (width, height) => {
409
- newDimensions[photo.id] = {
410
- width,
411
- height
412
- };
413
- hasNewDimensions = true;
414
- resolve();
415
- }, () => {
416
- // Fallback dimensions
417
- newDimensions[photo.id] = {
418
- width: 1,
419
- height: 1
420
- };
421
- hasNewDimensions = true;
422
- resolve();
423
- });
424
- });
425
- } catch (error) {
426
- // Fallback dimensions for any errors
427
- newDimensions[photo.id] = {
428
- width: 1,
429
- height: 1
430
- };
431
- hasNewDimensions = true;
432
- }
433
- }));
434
- if (hasNewDimensions) {
435
- setPhotoDimensions(newDimensions);
436
- }
437
- } catch (error) {
438
- // Photo dimensions loading failed, continue without dimensions
439
- } finally {
440
- setLoadingDimensions(false);
441
- }
442
- }, [getSafeDownloadUrlCallback, photoDimensions]);
443
-
444
- // Create justified rows from photos with responsive algorithm
445
- const createJustifiedRows = useCallback((photos, containerWidth) => {
446
- if (photos.length === 0) return [];
447
- const rows = [];
448
- const photosPerRow = 3; // Fixed 3 photos per row for consistency
449
-
450
- for (let i = 0; i < photos.length; i += photosPerRow) {
451
- const rowPhotos = photos.slice(i, i + photosPerRow);
452
- rows.push(rowPhotos);
453
- }
454
- return rows;
455
- }, []);
456
- const processFileUploads = async selectedFiles => {
457
- if (selectedFiles.length === 0) return [];
458
- if (!targetUserId) return []; // Guard clause to ensure userId is defined
459
- const uploadedFiles = [];
460
- try {
461
- storeSetUploadProgress({
462
- current: 0,
463
- total: selectedFiles.length
464
- });
465
- const maxSize = 50 * 1024 * 1024; // 50MB
466
- const oversizedFiles = selectedFiles.filter(file => file.size > maxSize);
467
- if (oversizedFiles.length > 0) {
468
- const fileList = oversizedFiles.map(f => f.name).join(', ');
469
- toast.error(`The following files are too large (max 50MB): ${fileList}`);
470
- return [];
471
- }
472
- let successCount = 0;
473
- let failureCount = 0;
474
- const errors = [];
475
- for (let i = 0; i < selectedFiles.length; i++) {
476
- storeSetUploadProgress({
477
- current: i + 1,
478
- total: selectedFiles.length
479
- });
480
- const raw = selectedFiles[i];
481
- const fileName = raw.name || `file-${i + 1}`;
482
- const optimisticId = `temp-${Date.now()}-${i}-${Math.random().toString(36).substr(2, 9)}`; // Unique ID per file
483
-
484
- try {
485
- // Validate file before upload
486
- if (!raw || !raw.name || raw.size === undefined || raw.size <= 0) {
487
- const errorMsg = `Invalid file: ${fileName}`;
488
- console.error('Upload validation failed:', {
489
- file: raw,
490
- error: errorMsg
491
- });
492
- failureCount++;
493
- errors.push(`${fileName}: Invalid file (missing name or size)`);
494
- continue;
495
- }
496
- const optimisticFile = {
497
- id: optimisticId,
498
- filename: raw.name,
499
- contentType: raw.type || 'application/octet-stream',
500
- length: raw.size,
501
- chunkSize: 0,
502
- uploadDate: new Date().toISOString(),
503
- metadata: {
504
- uploading: true
505
- },
506
- variants: []
507
- };
508
- useFileStore.getState().addFile(optimisticFile, {
509
- prepend: true
510
- });
511
-
512
- // Use the mutation hook with authentication handling
513
- const result = await uploadFileMutation.mutateAsync({
514
- file: raw,
515
- visibility: defaultVisibility
516
- });
517
-
518
- // Attempt to refresh file list incrementally – fetch single file metadata if API allows
519
- if (result?.file || result?.files?.[0]) {
520
- const f = result.file || result.files[0];
521
- const merged = {
522
- id: f.id,
523
- filename: f.originalName || f.sha256 || raw.name,
524
- contentType: f.mime || raw.type || 'application/octet-stream',
525
- length: f.size || raw.size,
526
- chunkSize: 0,
527
- uploadDate: f.createdAt || new Date().toISOString(),
528
- metadata: f.metadata || {},
529
- variants: f.variants || []
530
- };
531
- // Remove optimistic then add real
532
- useFileStore.getState().removeFile(optimisticId);
533
- useFileStore.getState().addFile(merged, {
534
- prepend: true
535
- });
536
- uploadedFiles.push(merged);
537
- successCount++;
538
- } else {
539
- // Fallback: will reconcile on later list refresh
540
- useFileStore.getState().updateFile(optimisticId, {
541
- metadata: {
542
- uploading: false
543
- }
544
- });
545
- console.warn('Upload completed but no file data returned:', {
546
- fileName,
547
- result
548
- });
549
- // Still count as success if upload didn't throw
550
- successCount++;
551
- }
552
- } catch (error) {
553
- failureCount++;
554
- const errorMessage = error.message || error.toString() || 'Upload failed';
555
- const fullError = `${fileName}: ${errorMessage}`;
556
- errors.push(fullError);
557
- console.error('File upload failed:', {
558
- fileName,
559
- fileSize: raw.size,
560
- fileType: raw.type,
561
- error: errorMessage,
562
- stack: error.stack
563
- });
564
-
565
- // Remove optimistic file on error (use the same optimisticId from above)
566
- useFileStore.getState().removeFile(optimisticId);
567
- }
568
- }
569
-
570
- // Show success/error messages
571
- if (successCount > 0) {
572
- toast.success(`${successCount} file(s) uploaded successfully`);
573
- }
574
- if (failureCount > 0) {
575
- // Show detailed error message with first few errors
576
- const errorDetails = errors.length > 0 ? `\n${errors.slice(0, 3).join('\n')}${errors.length > 3 ? `\n...and ${errors.length - 3} more` : ''}` : '';
577
- toast.error(`${failureCount} file(s) failed to upload${errorDetails}`);
578
- }
579
- // Silent background refresh to ensure metadata/variants updated
580
- setTimeout(() => {
581
- loadFiles('silent');
582
- }, 1200);
583
- } catch (error) {
584
- toast.error(error.message || 'Failed to upload files');
585
- } finally {
586
- storeSetUploadProgress(null);
587
- }
588
- return uploadedFiles;
589
- };
590
- const handleFileSelection = useCallback(async selectedFiles => {
591
- const MAX_FILE_SIZE = 100 * 1024 * 1024; // 100MB
592
- const processedFiles = [];
593
- for (const file of selectedFiles) {
594
- // Validate file has required properties
595
- if (!file) {
596
- console.error('Invalid file: file is null or undefined');
597
- toast.error('Invalid file: file is missing');
598
- continue;
599
- }
600
- if (!file.name || typeof file.name !== 'string') {
601
- console.error('Invalid file: missing or invalid name property', file);
602
- toast.error('Invalid file: missing file name');
603
- continue;
604
- }
605
- if (file.size === undefined || file.size === null || isNaN(file.size)) {
606
- console.error('Invalid file: missing or invalid size property', file);
607
- toast.error(`Invalid file "${file.name || 'unknown'}": missing file size`);
608
- continue;
609
- }
610
- if (file.size <= 0) {
611
- console.error('Invalid file: file size is zero or negative', file);
612
- toast.error(`File "${file.name}" is empty`);
613
- continue;
614
- }
615
-
616
- // Validate file size
617
- if (file.size > MAX_FILE_SIZE) {
618
- toast.error(`"${file.name}" is too large. Maximum file size is ${formatFileSize(MAX_FILE_SIZE)}`);
619
- continue;
620
- }
621
-
622
- // Ensure file has a type property
623
- const fileType = file.type || 'application/octet-stream';
624
-
625
- // Generate preview for images - unified approach
626
- let preview;
627
- if (fileType.startsWith('image/')) {
628
- // Try to use file URI from expo-document-picker if available (works on all platforms)
629
- const fileUri = file.uri;
630
- if (fileUri && typeof fileUri === 'string' && (fileUri.startsWith('file://') || fileUri.startsWith('content://') || fileUri.startsWith('http://') || fileUri.startsWith('https://') || fileUri.startsWith('blob:'))) {
631
- preview = fileUri;
632
- } else {
633
- // Fallback: create blob URL if possible (works on web)
634
- try {
635
- if (file instanceof File || file instanceof Blob) {
636
- preview = URL.createObjectURL(file);
637
- }
638
- } catch (error) {
639
- console.warn('Failed to create preview URL:', error);
640
- // Preview is optional, continue without it
641
- }
642
- }
643
- }
644
- processedFiles.push({
645
- file,
646
- preview,
647
- size: file.size,
648
- name: file.name,
649
- type: fileType
650
- });
651
- }
652
- if (processedFiles.length === 0) {
653
- toast.error('No valid files to upload');
654
- return;
655
- }
656
-
657
- // Show preview modal for user to review files before upload
658
- setPendingFiles(processedFiles);
659
- setShowUploadPreview(true);
660
- }, []);
661
- const handleConfirmUpload = async () => {
662
- if (pendingFiles.length === 0) return;
663
- setShowUploadPreview(false);
664
- uploadStartRef.current = Date.now();
665
- storeSetUploading(true);
666
- storeSetUploadProgress(null);
667
- try {
668
- const filesToUpload = pendingFiles.map(pf => pf.file);
669
- storeSetUploadProgress({
670
- current: 0,
671
- total: filesToUpload.length
672
- });
673
- const uploadedFiles = await processFileUploads(filesToUpload);
674
-
675
- // Cleanup preview URLs
676
- pendingFiles.forEach(pf => {
677
- if (pf.preview) {
678
- URL.revokeObjectURL(pf.preview);
679
- }
680
- });
681
- setPendingFiles([]);
682
-
683
- // If in selectMode, automatically select the uploaded file(s)
684
- if (selectMode && uploadedFiles.length > 0) {
685
- // Wait a bit for the file store to update and ensure file is available
686
- setTimeout(() => {
687
- const fileToSelect = uploadedFiles[0];
688
- if (!multiSelect && fileToSelect) {
689
- // Single select mode - directly call onSelect callback
690
- onSelect?.(fileToSelect);
691
- if (afterSelect === 'back') {
692
- goBack?.();
693
- } else if (afterSelect === 'close') {
694
- onClose?.();
695
- }
696
- } else if (multiSelect) {
697
- // Multi-select mode - add all uploaded files to selection
698
- uploadedFiles.forEach(file => {
699
- if (!selectedIds.has(file.id)) {
700
- setSelectedIds(prev => new Set(prev).add(file.id));
701
- }
702
- });
703
- }
704
- }, 500);
705
- }
706
- endUpload();
707
- } catch (error) {
708
- toast.error(error.message || 'Failed to upload files');
709
- endUpload();
710
- }
711
- };
712
- const handleCancelUpload = () => {
713
- // Cleanup preview URLs
714
- pendingFiles.forEach(pf => {
715
- if (pf.preview) {
716
- URL.revokeObjectURL(pf.preview);
717
- }
718
- });
719
- setPendingFiles([]);
720
- setShowUploadPreview(false);
721
- };
722
- const removePendingFile = index => {
723
- const file = pendingFiles[index];
724
- if (file.preview) {
725
- URL.revokeObjectURL(file.preview);
726
- }
727
- const updated = pendingFiles.filter((_, i) => i !== index);
728
- setPendingFiles(updated);
729
- if (updated.length === 0) {
730
- setShowUploadPreview(false);
731
- }
732
- };
733
-
734
- /**
735
- * Handle file upload - opens document picker and processes selected files
736
- * Expo 54 compatible - works on web, iOS, and Android
737
- */
738
- const handleFileUpload = async () => {
739
- // Prevent concurrent document picker calls
740
- if (isPickingDocument) {
741
- toast.error('Please wait for the current file selection to complete');
742
- return;
743
- }
744
- try {
745
- setIsPickingDocument(true);
746
-
747
- // Lazy load expo-document-picker
748
- const picker = await loadDocumentPicker();
749
-
750
- // Use expo-document-picker (works on all platforms including web)
751
- // On web, it uses the native file input and provides File objects directly
752
- const result = await picker.getDocumentAsync({
753
- type: '*/*',
754
- multiple: true,
755
- copyToCacheDirectory: true
756
- });
757
- if (result.canceled) {
758
- setIsPickingDocument(false);
759
- return;
760
- }
761
- if (!result.assets || result.assets.length === 0) {
762
- setIsPickingDocument(false);
763
- toast.error('No files were selected');
764
- return;
765
- }
766
-
767
- // Convert expo document picker results to File-like objects
768
- // According to Expo 54 docs, expo-document-picker returns assets with:
769
- // - uri: file URI (file://, content://, or blob URL)
770
- // - name: file name
771
- // - size: file size in bytes
772
- // - mimeType: MIME type of the file
773
- // - file: (optional) native File object (usually only on web)
774
- const files = [];
775
- const errors = [];
776
-
777
- // Process files in parallel for better performance
778
- // This allows multiple files to be converted simultaneously
779
- const conversionPromises = result.assets.map((doc, index) => convertDocumentPickerAssetToFile(doc, index).then(file => {
780
- if (file) {
781
- // Validate file has required properties before adding
782
- if (!file.name || file.size === undefined) {
783
- errors.push(`File "${doc.name || 'file'}" is invalid: missing required properties`);
784
- return null;
785
- }
786
- return file;
787
- }
788
- return null;
789
- }).catch(error => {
790
- errors.push(`File "${doc.name || 'file'}": ${error.message || 'Failed to process'}`);
791
- return null;
792
- }));
793
- const convertedFiles = await Promise.all(conversionPromises);
794
-
795
- // Filter out null values
796
- for (const file of convertedFiles) {
797
- if (file) {
798
- files.push(file);
799
- }
800
- }
801
-
802
- // Show errors if any
803
- if (errors.length > 0) {
804
- const errorMessage = errors.slice(0, 3).join('\n') + (errors.length > 3 ? `\n...and ${errors.length - 3} more` : '');
805
- toast.error(`Failed to load some files:\n${errorMessage}`);
806
- }
807
-
808
- // Process successfully converted files
809
- if (files.length > 0) {
810
- await handleFileSelection(files);
811
- } else {
812
- // Files were selected but none could be converted
813
- toast.error('No files could be processed. Please try selecting files again.');
814
- }
815
- } catch (error) {
816
- console.error('File upload error:', error);
817
- if (error.message?.includes('expo-document-picker') || error.message?.includes('Different document picking in progress')) {
818
- if (error.message?.includes('Different document picking in progress')) {
819
- toast.error('Please wait for the current file selection to complete');
820
- } else {
821
- toast.error('File picker not available. Please install expo-document-picker');
822
- }
823
- } else {
824
- toast.error(error.message || 'Failed to select files');
825
- }
826
- } finally {
827
- // Always reset the picking state, even if there was an error
828
- setIsPickingDocument(false);
829
- }
830
- };
831
- const handleFileDelete = async (fileId, filename) => {
832
- // Use platform-aware confirmation dialog
833
- const confirmed = await confirmAction(`Are you sure you want to delete "${filename}"? This action cannot be undone.`, 'Delete File', 'Delete', 'Cancel');
834
- if (!confirmed) {
835
- return;
836
- }
837
- try {
838
- storeSetDeleting(fileId);
839
- await oxyServices.deleteFile(fileId);
840
- toast.success('File deleted successfully');
841
-
842
- // Reload files after successful deletion
843
- // Optimistic remove
844
- useFileStore.getState().removeFile(fileId);
845
- // Silent background reconcile
846
- setTimeout(() => loadFiles('silent'), 800);
847
- } catch (error) {
848
- // Provide specific error messages
849
- if (error.message?.includes('File not found') || error.message?.includes('404')) {
850
- toast.error('File not found. It may have already been deleted.');
851
- // Still reload files to refresh the list
852
- setTimeout(() => loadFiles('silent'), 800);
853
- } else if (error.message?.includes('permission') || error.message?.includes('403')) {
854
- toast.error('You do not have permission to delete this file.');
855
- } else {
856
- toast.error(error.message || 'Failed to delete file');
857
- }
858
- } finally {
859
- storeSetDeleting(null);
860
- }
861
- };
862
- const handleBulkDelete = useCallback(async () => {
863
- if (selectedIds.size === 0) return;
864
- const fileMap = {};
865
- files.forEach(f => {
866
- fileMap[f.id] = f;
867
- });
868
- const selectedFiles = Array.from(selectedIds).map(id => fileMap[id]).filter(Boolean);
869
- const confirmed = await confirmAction(`Are you sure you want to delete ${selectedFiles.length} file(s)? This action cannot be undone.`, 'Delete Files', 'Delete', 'Cancel');
870
- if (!confirmed) return;
871
- try {
872
- const deletePromises = Array.from(selectedIds).map(async fileId => {
873
- try {
874
- await oxyServices.deleteFile(fileId);
875
- useFileStore.getState().removeFile(fileId);
876
- return {
877
- success: true,
878
- fileId
879
- };
880
- } catch (error) {
881
- return {
882
- success: false,
883
- fileId,
884
- error
885
- };
886
- }
887
- });
888
- const results = await Promise.allSettled(deletePromises);
889
- const successful = results.filter(r => r.status === 'fulfilled' && r.value.success).length;
890
- const failed = results.length - successful;
891
- if (successful > 0) {
892
- toast.success(`${successful} file(s) deleted successfully`);
893
- }
894
- if (failed > 0) {
895
- toast.error(`${failed} file(s) failed to delete`);
896
- }
897
- setSelectedIds(new Set());
898
- setTimeout(() => loadFiles('silent'), 800);
899
- } catch (error) {
900
- toast.error(error.message || 'Failed to delete files');
901
- }
902
- }, [selectedIds, files, oxyServices, loadFiles]);
903
- const handleBulkVisibilityChange = useCallback(async visibility => {
904
- if (selectedIds.size === 0) return;
905
- try {
906
- const updatePromises = Array.from(selectedIds).map(async fileId => {
907
- try {
908
- await oxyServices.assetUpdateVisibility(fileId, visibility);
909
- return {
910
- success: true,
911
- fileId
912
- };
913
- } catch (error) {
914
- return {
915
- success: false,
916
- fileId,
917
- error
918
- };
919
- }
920
- });
921
- const results = await Promise.allSettled(updatePromises);
922
- const successful = results.filter(r => r.status === 'fulfilled' && r.value.success).length;
923
- const failed = results.length - successful;
924
- if (successful > 0) {
925
- toast.success(`${successful} file(s) visibility updated to ${visibility}`);
926
- // Update file metadata in store
927
- Array.from(selectedIds).forEach(fileId => {
928
- useFileStore.getState().updateFile(fileId, {
929
- metadata: {
930
- ...files.find(f => f.id === fileId)?.metadata,
931
- visibility
932
- }
933
- });
934
- });
935
- }
936
- if (failed > 0) {
937
- toast.error(`${failed} file(s) failed to update visibility`);
938
- }
939
- setTimeout(() => loadFiles('silent'), 800);
940
- } catch (error) {
941
- toast.error(error.message || 'Failed to update visibility');
942
- }
943
- }, [selectedIds, oxyServices, files, loadFiles]);
944
-
945
- // Unified download function - works on all platforms
946
- const handleFileDownload = async (fileId, filename) => {
947
- try {
948
- // Try to use the download URL with a simple approach
949
- // On web, this creates a download link. On mobile, it opens the URL.
950
- const downloadUrl = oxyServices.getFileDownloadUrl(fileId);
951
-
952
- // For web platforms, use link download
953
- if (typeof window !== 'undefined' && window.document) {
954
- try {
955
- // Try simple link download first
956
- const link = document.createElement('a');
957
- link.href = downloadUrl;
958
- link.download = filename;
959
- link.target = '_blank';
960
- document.body.appendChild(link);
961
- link.click();
962
- document.body.removeChild(link);
963
- toast.success('File download started');
964
- } catch (linkError) {
965
- // Fallback to authenticated download
966
- const blob = await oxyServices.getFileContentAsBlob(fileId);
967
- const url = URL.createObjectURL(blob);
968
- const link = document.createElement('a');
969
- link.href = url;
970
- link.download = filename;
971
- document.body.appendChild(link);
972
- link.click();
973
- document.body.removeChild(link);
974
-
975
- // Clean up the blob URL
976
- URL.revokeObjectURL(url);
977
- toast.success('File downloaded successfully');
978
- }
979
- } else {
980
- // For mobile, open the URL (user can save from browser)
981
- // Note: This is a simplified approach - for full mobile support,
982
- // consider using expo-file-system or react-native-fs
983
- toast.info('Please use your browser to download the file');
984
- }
985
- } catch (error) {
986
- toast.error(error.message || 'Failed to download file');
987
- }
988
- };
989
- const handleFileOpen = async file => {
990
- if (selectMode) {
991
- toggleSelect(file);
992
- return;
993
- }
994
- try {
995
- setLoadingFileContent(true);
996
- setOpenedFile(file);
997
-
998
- // For text files, images, and other viewable content, try to load the content
999
- if (file.contentType.startsWith('text/') || file.contentType.includes('json') || file.contentType.includes('xml') || file.contentType.includes('javascript') || file.contentType.includes('typescript') || file.contentType.startsWith('image/') || file.contentType.includes('pdf') || file.contentType.startsWith('video/') || file.contentType.startsWith('audio/')) {
1000
- try {
1001
- if (file.contentType.startsWith('image/') || file.contentType.includes('pdf') || file.contentType.startsWith('video/') || file.contentType.startsWith('audio/')) {
1002
- // For images, PDFs, videos, and audio, we'll use the URL directly
1003
- const downloadUrl = oxyServices.getFileDownloadUrl(file.id);
1004
- setFileContent(downloadUrl);
1005
- } else {
1006
- // For text files, get the content using authenticated request
1007
- const content = await oxyServices.getFileContentAsText(file.id);
1008
- setFileContent(content);
1009
- }
1010
- } catch (error) {
1011
- if (error.message?.includes('404') || error.message?.includes('not found')) {
1012
- toast.error('File not found. It may have been deleted.');
1013
- } else {
1014
- toast.error('Failed to load file content');
1015
- }
1016
- setFileContent(null);
1017
- }
1018
- } else {
1019
- // For non-viewable files, don't load content
1020
- setFileContent(null);
1021
- }
1022
- } catch (error) {
1023
- toast.error(error.message || 'Failed to open file');
1024
- } finally {
1025
- setLoadingFileContent(false);
1026
- }
1027
- };
1028
- const handleCloseFile = () => {
1029
- setOpenedFile(null);
1030
- setFileContent(null);
1031
- setShowFileDetailsInViewer(false);
1032
- // Don't reset view mode when closing a file
1033
- };
1034
- const showFileDetailsModal = file => {
1035
- setSelectedFile(file);
1036
- setShowFileDetails(true);
1037
- };
1038
- const renderSimplePhotoItem = useCallback((photo, index) => {
1039
- const downloadUrl = getSafeDownloadUrlCallback(photo, 'thumb');
1040
-
1041
- // Calculate photo item width based on actual container size from bottom sheet
1042
- let itemsPerRow = 3; // Default for mobile
1043
- if (safeContainerWidth > 768) itemsPerRow = 4; // Desktop/tablet
1044
- else if (safeContainerWidth > 480) itemsPerRow = 3; // Large mobile
1045
-
1046
- // Account for the photoScrollContainer padding (16px on each side = 32px total)
1047
- const scrollContainerPadding = 32; // Total horizontal padding from photoScrollContainer
1048
- const gaps = (itemsPerRow - 1) * 4; // Gap between items (4px)
1049
- const availableWidth = safeContainerWidth - scrollContainerPadding;
1050
- const itemWidth = (availableWidth - gaps) / itemsPerRow;
1051
- return /*#__PURE__*/_jsx(TouchableOpacity, {
1052
- style: [fileManagementStyles.simplePhotoItem, {
1053
- width: itemWidth,
1054
- height: itemWidth,
1055
- marginRight: (index + 1) % itemsPerRow === 0 ? 0 : 4,
1056
- ...(selectMode && selectedIds.has(photo.id) ? {
1057
- borderWidth: 2,
1058
- borderColor: themeStyles.primaryColor
1059
- } : {})
1060
- }],
1061
- onPress: () => handleFileOpen(photo),
1062
- activeOpacity: 0.8,
1063
- children: /*#__PURE__*/_jsxs(View, {
1064
- style: fileManagementStyles.simplePhotoContainer,
1065
- children: [/*#__PURE__*/_jsx(ExpoImage, {
1066
- source: {
1067
- uri: downloadUrl
1068
- },
1069
- style: fileManagementStyles.simplePhotoImage,
1070
- contentFit: "cover",
1071
- transition: 120,
1072
- cachePolicy: "memory-disk",
1073
- onError: () => {
1074
- // Photo failed to load, will show placeholder
1075
- },
1076
- accessibilityLabel: photo.filename
1077
- }), selectMode && /*#__PURE__*/_jsx(View, {
1078
- style: fileManagementStyles.selectionBadge,
1079
- children: /*#__PURE__*/_jsx(Ionicons, {
1080
- name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
1081
- size: 20,
1082
- color: selectedIds.has(photo.id) ? themeStyles.primaryColor : themeStyles.textColor
1083
- })
1084
- })]
1085
- })
1086
- }, photo.id);
1087
- }, [oxyServices, safeContainerWidth, selectMode, selectedIds, themeStyles.primaryColor, themeStyles.textColor]);
1088
- const renderJustifiedPhotoItem = useCallback((photo, width, height, isLast) => {
1089
- const downloadUrl = getSafeDownloadUrlCallback(photo, 'thumb');
1090
- return /*#__PURE__*/_jsx(TouchableOpacity, {
1091
- style: [fileManagementStyles.justifiedPhotoItem, {
1092
- width,
1093
- height,
1094
- ...(selectMode && selectedIds.has(photo.id) ? {
1095
- borderWidth: 2,
1096
- borderColor: themeStyles.primaryColor
1097
- } : {}),
1098
- ...(selectMode && multiSelect && selectedIds.size > 0 && !selectedIds.has(photo.id) ? {
1099
- opacity: 0.4
1100
- } : {})
1101
- }],
1102
- onPress: () => handleFileOpen(photo),
1103
- activeOpacity: 0.8,
1104
- children: /*#__PURE__*/_jsxs(View, {
1105
- style: fileManagementStyles.justifiedPhotoContainer,
1106
- children: [/*#__PURE__*/_jsx(ExpoImage, {
1107
- source: {
1108
- uri: downloadUrl
1109
- },
1110
- style: fileManagementStyles.justifiedPhotoImage,
1111
- contentFit: "cover",
1112
- transition: 120,
1113
- cachePolicy: "memory-disk",
1114
- onError: () => {
1115
- // Photo failed to load, will show placeholder
1116
- },
1117
- accessibilityLabel: photo.filename
1118
- }), selectMode && /*#__PURE__*/_jsx(View, {
1119
- style: fileManagementStyles.selectionBadge,
1120
- children: /*#__PURE__*/_jsx(Ionicons, {
1121
- name: selectedIds.has(photo.id) ? 'checkmark-circle' : 'ellipse-outline',
1122
- size: 20,
1123
- color: selectedIds.has(photo.id) ? themeStyles.primaryColor : themeStyles.textColor
1124
- })
1125
- })]
1126
- })
1127
- }, photo.id);
1128
- }, [oxyServices, selectMode, selectedIds, multiSelect, themeStyles.primaryColor, themeStyles.textColor]);
1129
-
1130
- // Run initial load once per targetUserId change to avoid accidental loops
1131
- const lastLoadedFor = useRef(undefined);
1132
- useEffect(() => {
1133
- const key = targetUserId || 'anonymous';
1134
- if (lastLoadedFor.current !== key) {
1135
- lastLoadedFor.current = key;
1136
- loadFiles('initial');
1137
- }
1138
- // eslint-disable-next-line react-hooks/exhaustive-deps
1139
- }, [targetUserId]);
1140
- const renderFileItem = file => {
1141
- const isImage = file.contentType.startsWith('image/');
1142
- const isPDF = file.contentType.includes('pdf');
1143
- const isVideo = file.contentType.startsWith('video/');
1144
- const isAudio = file.contentType.startsWith('audio/');
1145
- const hasPreview = isImage || isPDF || isVideo;
1146
- const borderColor = themeStyles.borderColor;
1147
- return /*#__PURE__*/_jsxs(View, {
1148
- style: [fileManagementStyles.fileItem, {
1149
- backgroundColor: themeStyles.secondaryBackgroundColor,
1150
- borderColor
1151
- }, selectMode && selectedIds.has(file.id) && {
1152
- borderColor: themeStyles.primaryColor,
1153
- borderWidth: 2
1154
- }],
1155
- children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
1156
- style: fileManagementStyles.fileContent,
1157
- onPress: () => handleFileOpen(file),
1158
- children: [/*#__PURE__*/_jsx(View, {
1159
- style: fileManagementStyles.filePreviewContainer,
1160
- children: hasPreview ? /*#__PURE__*/_jsxs(View, {
1161
- style: fileManagementStyles.filePreview,
1162
- children: [isImage && /*#__PURE__*/_jsx(ExpoImage, {
1163
- source: {
1164
- uri: getSafeDownloadUrlCallback(file, 'thumb')
1165
- },
1166
- style: fileManagementStyles.previewImage,
1167
- contentFit: "cover",
1168
- transition: 120,
1169
- cachePolicy: "memory-disk",
1170
- onError: () => {
1171
- // Image preview failed to load
1172
- },
1173
- accessibilityLabel: file.filename
1174
- }), isPDF && /*#__PURE__*/_jsxs(View, {
1175
- style: fileManagementStyles.pdfPreview,
1176
- children: [/*#__PURE__*/_jsx(Ionicons, {
1177
- name: "document",
1178
- size: 32,
1179
- color: themeStyles.primaryColor
1180
- }), /*#__PURE__*/_jsx(Text, {
1181
- style: [fileManagementStyles.pdfLabel, {
1182
- color: themeStyles.primaryColor
1183
- }],
1184
- children: "PDF"
1185
- })]
1186
- }), isVideo && /*#__PURE__*/_jsxs(View, {
1187
- style: fileManagementStyles.videoPreviewWrapper,
1188
- children: [/*#__PURE__*/_jsx(ExpoImage, {
1189
- source: {
1190
- uri: getSafeDownloadUrlCallback(file, 'thumb')
1191
- },
1192
- style: fileManagementStyles.videoPosterImage,
1193
- contentFit: "cover",
1194
- transition: 120,
1195
- cachePolicy: "memory-disk",
1196
- onError: _ => {
1197
- // If thumbnail not available, we still show icon overlay
1198
- },
1199
- accessibilityLabel: file.filename + ' video thumbnail'
1200
- }), /*#__PURE__*/_jsx(View, {
1201
- style: fileManagementStyles.videoOverlay,
1202
- children: /*#__PURE__*/_jsx(Ionicons, {
1203
- name: "play",
1204
- size: 24,
1205
- color: "#FFFFFF"
1206
- })
1207
- })]
1208
- }), /*#__PURE__*/_jsx(View, {
1209
- style: [fileManagementStyles.fallbackIcon, {
1210
- display: isImage ? 'none' : 'flex'
1211
- }],
1212
- children: /*#__PURE__*/_jsx(Ionicons, {
1213
- name: getFileIcon(file.contentType),
1214
- size: 32,
1215
- color: themeStyles.primaryColor
1216
- })
1217
- }), selectMode && /*#__PURE__*/_jsx(View, {
1218
- style: fileManagementStyles.selectionBadge,
1219
- children: /*#__PURE__*/_jsx(Ionicons, {
1220
- name: selectedIds.has(file.id) ? 'checkmark-circle' : 'ellipse-outline',
1221
- size: 22,
1222
- color: selectedIds.has(file.id) ? themeStyles.primaryColor : themeStyles.textColor
1223
- })
1224
- })]
1225
- }) : /*#__PURE__*/_jsx(View, {
1226
- style: fileManagementStyles.fileIconContainer,
1227
- children: /*#__PURE__*/_jsx(Ionicons, {
1228
- name: getFileIcon(file.contentType),
1229
- size: 32,
1230
- color: themeStyles.primaryColor
1231
- })
1232
- })
1233
- }), /*#__PURE__*/_jsxs(View, {
1234
- style: fileManagementStyles.fileInfo,
1235
- children: [/*#__PURE__*/_jsx(Text, {
1236
- style: [fileManagementStyles.fileName, {
1237
- color: themeStyles.textColor
1238
- }],
1239
- numberOfLines: 1,
1240
- children: file.filename
1241
- }), /*#__PURE__*/_jsxs(Text, {
1242
- style: [fileManagementStyles.fileDetails, {
1243
- color: themeStyles.isDarkTheme ? '#BBBBBB' : '#666666'
1244
- }],
1245
- children: [formatFileSize(file.length), " \u2022 ", new Date(file.uploadDate).toLocaleDateString()]
1246
- }), file.metadata?.description && /*#__PURE__*/_jsx(Text, {
1247
- style: [fileManagementStyles.fileDescription, {
1248
- color: themeStyles.isDarkTheme ? '#AAAAAA' : '#888888'
1249
- }],
1250
- numberOfLines: 2,
1251
- children: file.metadata.description
1252
- })]
1253
- })]
1254
- }), !selectMode && /*#__PURE__*/_jsxs(View, {
1255
- style: fileManagementStyles.fileActions,
1256
- children: [hasPreview && /*#__PURE__*/_jsx(TouchableOpacity, {
1257
- style: [fileManagementStyles.actionButton, {
1258
- backgroundColor: themeStyles.isDarkTheme ? '#333333' : '#F0F0F0'
1259
- }],
1260
- onPress: () => handleFileOpen(file),
1261
- children: /*#__PURE__*/_jsx(Ionicons, {
1262
- name: "eye",
1263
- size: 20,
1264
- color: themeStyles.primaryColor
1265
- })
1266
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
1267
- style: [fileManagementStyles.actionButton, {
1268
- backgroundColor: themeStyles.isDarkTheme ? '#333333' : '#F0F0F0'
1269
- }],
1270
- onPress: () => handleFileDownload(file.id, file.filename),
1271
- children: /*#__PURE__*/_jsx(Ionicons, {
1272
- name: "download",
1273
- size: 20,
1274
- color: themeStyles.primaryColor
1275
- })
1276
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
1277
- style: [fileManagementStyles.actionButton, {
1278
- backgroundColor: themeStyles.isDarkTheme ? '#400000' : '#FFEBEE'
1279
- }],
1280
- onPress: () => {
1281
- handleFileDelete(file.id, file.filename);
1282
- },
1283
- disabled: deleting === file.id,
1284
- children: deleting === file.id ? /*#__PURE__*/_jsx(ActivityIndicator, {
1285
- size: "small",
1286
- color: themeStyles.dangerColor
1287
- }) : /*#__PURE__*/_jsx(Ionicons, {
1288
- name: "trash",
1289
- size: 20,
1290
- color: themeStyles.dangerColor
1291
- })
1292
- })]
1293
- })]
1294
- }, file.id);
1295
- };
1296
-
1297
- // GroupedSection-based file items (for 'all' view) replacing legacy flat list look
1298
- const groupedFileItems = useMemo(() => {
1299
- // filteredFiles is already sorted, so just use it directly
1300
- const sortedFiles = filteredFiles;
1301
-
1302
- // Store file positions for scrolling
1303
- sortedFiles.forEach((file, index) => {
1304
- itemRefs.current.set(file.id, index);
1305
- });
1306
- return sortedFiles.map(file => {
1307
- const isImage = file.contentType.startsWith('image/');
1308
- const isPDF = file.contentType.includes('pdf');
1309
- const isVideo = file.contentType.startsWith('video/');
1310
- const hasPreview = isImage || isPDF || isVideo;
1311
- const isSelected = selectedIds.has(file.id);
1312
-
1313
- // Create customIcon for preview thumbnails (36x36 to match GroupedItem iconContainer)
1314
- let customIcon;
1315
- if (hasPreview) {
1316
- if (isImage) {
1317
- customIcon = /*#__PURE__*/_jsx(View, {
1318
- style: {
1319
- width: 36,
1320
- height: 36,
1321
- borderRadius: 18,
1322
- overflow: 'hidden'
1323
- },
1324
- children: /*#__PURE__*/_jsx(ExpoImage, {
1325
- source: {
1326
- uri: getSafeDownloadUrlCallback(file, 'thumb')
1327
- },
1328
- style: {
1329
- width: 36,
1330
- height: 36
1331
- },
1332
- contentFit: "cover",
1333
- transition: 120,
1334
- cachePolicy: "memory-disk",
1335
- onError: () => {
1336
- // Image preview failed to load - will fallback to icon
1337
- },
1338
- accessibilityLabel: file.filename
1339
- })
1340
- });
1341
- } else if (isVideo) {
1342
- customIcon = /*#__PURE__*/_jsxs(View, {
1343
- style: {
1344
- width: 36,
1345
- height: 36,
1346
- borderRadius: 18,
1347
- overflow: 'hidden',
1348
- backgroundColor: '#000000',
1349
- position: 'relative'
1350
- },
1351
- children: [/*#__PURE__*/_jsx(ExpoImage, {
1352
- source: {
1353
- uri: getSafeDownloadUrlCallback(file, 'thumb')
1354
- },
1355
- style: {
1356
- width: 36,
1357
- height: 36
1358
- },
1359
- contentFit: "cover",
1360
- transition: 120,
1361
- cachePolicy: "memory-disk",
1362
- onError: _ => {
1363
- // If thumbnail not available, we still show icon overlay
1364
- },
1365
- accessibilityLabel: file.filename + ' video thumbnail'
1366
- }), /*#__PURE__*/_jsx(View, {
1367
- style: {
1368
- position: 'absolute',
1369
- top: 0,
1370
- left: 0,
1371
- right: 0,
1372
- bottom: 0,
1373
- alignItems: 'center',
1374
- justifyContent: 'center',
1375
- backgroundColor: 'rgba(0,0,0,0.25)'
1376
- },
1377
- children: /*#__PURE__*/_jsx(Ionicons, {
1378
- name: "play",
1379
- size: 16,
1380
- color: "#FFFFFF"
1381
- })
1382
- })]
1383
- });
1384
- } else if (isPDF) {
1385
- customIcon = /*#__PURE__*/_jsx(View, {
1386
- style: {
1387
- width: 36,
1388
- height: 36,
1389
- borderRadius: 18,
1390
- alignItems: 'center',
1391
- justifyContent: 'center',
1392
- backgroundColor: '#FF6B6B20'
1393
- },
1394
- children: /*#__PURE__*/_jsx(Ionicons, {
1395
- name: "document",
1396
- size: 20,
1397
- color: themeStyles.primaryColor
1398
- })
1399
- });
1400
- }
1401
- }
1402
- return {
1403
- id: file.id,
1404
- customIcon: customIcon,
1405
- icon: !hasPreview ? getFileIcon(file.contentType) : undefined,
1406
- iconColor: themeStyles.primaryColor,
1407
- title: file.filename,
1408
- subtitle: `${formatFileSize(file.length)} • ${new Date(file.uploadDate).toLocaleDateString()}`,
1409
- theme: theme,
1410
- onPress: () => {
1411
- // Support selection in regular mode with long press or if already selecting
1412
- if (!selectMode && selectedIds.size > 0) {
1413
- // If already in selection mode (some files selected), toggle selection
1414
- toggleSelect(file);
1415
- } else {
1416
- handleFileOpen(file);
1417
- }
1418
- },
1419
- onLongPress: !selectMode ? () => {
1420
- // Enable selection mode on long press
1421
- if (selectedIds.size === 0) {
1422
- setSelectedIds(new Set([file.id]));
1423
- } else {
1424
- toggleSelect(file);
1425
- }
1426
- } : undefined,
1427
- showChevron: false,
1428
- dense: true,
1429
- multiRow: !!file.metadata?.description,
1430
- selected: (selectMode || selectedIds.size > 0) && isSelected,
1431
- // Hide action buttons when selecting (in selectMode or bulk operations mode)
1432
- customContent: !selectMode && selectedIds.size === 0 ? /*#__PURE__*/_jsxs(View, {
1433
- style: fileManagementStyles.groupedActions,
1434
- children: [(isImage || isVideo || file.contentType.includes('pdf')) && /*#__PURE__*/_jsx(TouchableOpacity, {
1435
- style: [fileManagementStyles.groupedActionBtn, {
1436
- backgroundColor: themeStyles.isDarkTheme ? '#333333' : '#F0F0F0'
1437
- }],
1438
- onPress: () => handleFileOpen(file),
1439
- children: /*#__PURE__*/_jsx(Ionicons, {
1440
- name: "eye",
1441
- size: 18,
1442
- color: themeStyles.primaryColor
1443
- })
1444
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
1445
- style: [fileManagementStyles.groupedActionBtn, {
1446
- backgroundColor: themeStyles.isDarkTheme ? '#333333' : '#F0F0F0'
1447
- }],
1448
- onPress: () => handleFileDownload(file.id, file.filename),
1449
- children: /*#__PURE__*/_jsx(Ionicons, {
1450
- name: "download",
1451
- size: 18,
1452
- color: themeStyles.primaryColor
1453
- })
1454
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
1455
- style: [fileManagementStyles.groupedActionBtn, {
1456
- backgroundColor: themeStyles.isDarkTheme ? '#400000' : '#FFEBEE'
1457
- }],
1458
- onPress: () => handleFileDelete(file.id, file.filename),
1459
- disabled: deleting === file.id,
1460
- children: deleting === file.id ? /*#__PURE__*/_jsx(ActivityIndicator, {
1461
- size: "small",
1462
- color: themeStyles.dangerColor
1463
- }) : /*#__PURE__*/_jsx(Ionicons, {
1464
- name: "trash",
1465
- size: 18,
1466
- color: themeStyles.dangerColor
1467
- })
1468
- })]
1469
- }) : undefined,
1470
- customContentBelow: file.metadata?.description ? /*#__PURE__*/_jsx(Text, {
1471
- style: [fileManagementStyles.groupedDescription, {
1472
- color: themeStyles.isDarkTheme ? '#AAAAAA' : '#666666'
1473
- }],
1474
- numberOfLines: 2,
1475
- children: file.metadata.description
1476
- }) : undefined
1477
- };
1478
- });
1479
- }, [filteredFiles, theme, themeStyles, deleting, handleFileDownload, handleFileDelete, handleFileOpen, getSafeDownloadUrlCallback, selectMode, selectedIds]);
1480
-
1481
- // Scroll to selected file after selection
1482
- useEffect(() => {
1483
- if (lastSelectedFileId && selectMode) {
1484
- if (viewMode === 'all' && scrollViewRef.current) {
1485
- // Find the index of the selected file
1486
- const itemIndex = itemRefs.current.get(lastSelectedFileId);
1487
- if (itemIndex !== undefined && itemIndex >= 0) {
1488
- // Estimate item height (GroupedItem with dense mode is approximately 60-70px)
1489
- // Account for description rows which add extra height
1490
- const baseItemHeight = 65;
1491
- const descriptionHeight = 30; // Approximate height for description
1492
- // Use filteredFiles which is already sorted according to user's selection
1493
- const sortedFiles = filteredFiles;
1494
-
1495
- // Calculate total height up to this item
1496
- let scrollPosition = 0;
1497
- for (let i = 0; i <= itemIndex && i < sortedFiles.length; i++) {
1498
- const file = sortedFiles[i];
1499
- scrollPosition += baseItemHeight;
1500
- if (file.metadata?.description) {
1501
- scrollPosition += descriptionHeight;
1502
- }
1503
- }
1504
-
1505
- // Add header, controls, search, and stats height (approximately 250px)
1506
- const headerHeight = 250;
1507
- const finalScrollPosition = headerHeight + scrollPosition - 150; // Offset to show item near top
1508
-
1509
- // Use requestAnimationFrame to ensure DOM is updated before scrolling
1510
- requestAnimationFrame(() => {
1511
- requestAnimationFrame(() => {
1512
- scrollViewRef.current?.scrollTo({
1513
- y: Math.max(0, finalScrollPosition),
1514
- animated: true
1515
- });
1516
- });
1517
- });
1518
- }
1519
- } else if (viewMode === 'photos' && photoScrollViewRef.current) {
1520
- // For photo grid, find the photo index
1521
- const photos = filteredFiles.filter(file => file.contentType.startsWith('image/'));
1522
- const photoIndex = photos.findIndex(p => p.id === lastSelectedFileId);
1523
- if (photoIndex >= 0) {
1524
- // Estimate photo item height based on grid layout
1525
- // Calculate items per row
1526
- let itemsPerRow = 3;
1527
- if (safeContainerWidth > 768) itemsPerRow = 6;else if (safeContainerWidth > 480) itemsPerRow = 4;
1528
- const scrollContainerPadding = 32;
1529
- const gaps = (itemsPerRow - 1) * 4;
1530
- const availableWidth = safeContainerWidth - scrollContainerPadding;
1531
- const itemWidth = (availableWidth - gaps) / itemsPerRow;
1532
-
1533
- // Calculate row and approximate scroll position
1534
- const row = Math.floor(photoIndex / itemsPerRow);
1535
- const headerHeight = 250;
1536
- const finalScrollPosition = headerHeight + row * (itemWidth + 4) - 150;
1537
-
1538
- // Use requestAnimationFrame to ensure DOM is updated before scrolling
1539
- requestAnimationFrame(() => {
1540
- requestAnimationFrame(() => {
1541
- photoScrollViewRef.current?.scrollTo({
1542
- y: Math.max(0, finalScrollPosition),
1543
- animated: true
1544
- });
1545
- });
1546
- });
1547
- }
1548
- }
1549
- }
1550
- }, [lastSelectedFileId, selectMode, viewMode, filteredFiles, safeContainerWidth]);
1551
-
1552
- // Clear selected file ID after scroll animation completes
1553
- useEffect(() => {
1554
- if (lastSelectedFileId && scrollViewRef.current) {
1555
- const timeoutId = setTimeout(() => {
1556
- setLastSelectedFileId(null);
1557
- }, 600); // Allow time for scroll animation to complete
1558
-
1559
- return () => clearTimeout(timeoutId);
1560
- }
1561
- }, [lastSelectedFileId]);
1562
- const renderPhotoItem = (photo, index) => {
1563
- const downloadUrl = getSafeDownloadUrlCallback(photo, 'thumb');
1564
-
1565
- // Calculate photo item width based on actual container size from bottom sheet
1566
- let itemsPerRow = 3; // Default for mobile
1567
- if (safeContainerWidth > 768) itemsPerRow = 6; // Tablet/Desktop
1568
- else if (safeContainerWidth > 480) itemsPerRow = 4; // Large mobile
1569
-
1570
- // Account for the photoScrollContainer padding (16px on each side = 32px total)
1571
- const scrollContainerPadding = 32; // Total horizontal padding from photoScrollContainer
1572
- const gaps = (itemsPerRow - 1) * 4; // Gap between items
1573
- const availableWidth = safeContainerWidth - scrollContainerPadding;
1574
- const itemWidth = (availableWidth - gaps) / itemsPerRow;
1575
- return /*#__PURE__*/_jsx(TouchableOpacity, {
1576
- style: [fileManagementStyles.photoItem, {
1577
- width: itemWidth,
1578
- height: itemWidth
1579
- }],
1580
- onPress: () => handleFileOpen(photo),
1581
- activeOpacity: 0.8,
1582
- children: /*#__PURE__*/_jsx(View, {
1583
- style: fileManagementStyles.photoContainer,
1584
- children: /*#__PURE__*/_jsx(ExpoImage, {
1585
- source: {
1586
- uri: downloadUrl
1587
- },
1588
- style: fileManagementStyles.photoImage,
1589
- contentFit: "cover",
1590
- transition: 120,
1591
- cachePolicy: "memory-disk",
1592
- onError: () => {
1593
- // Image preview failed to load
1594
- },
1595
- accessibilityLabel: photo.filename
1596
- })
1597
- })
1598
- }, photo.id);
1599
- };
1600
- const renderPhotoGrid = useCallback(() => {
1601
- const photos = filteredFiles.filter(file => file.contentType.startsWith('image/'));
1602
- if (photos.length === 0) {
1603
- return /*#__PURE__*/_jsxs(View, {
1604
- style: fileManagementStyles.emptyState,
1605
- children: [/*#__PURE__*/_jsx(Ionicons, {
1606
- name: "images-outline",
1607
- size: 64,
1608
- color: themeStyles.isDarkTheme ? '#666666' : '#CCCCCC'
1609
- }), /*#__PURE__*/_jsx(Text, {
1610
- style: [fileManagementStyles.emptyStateTitle, {
1611
- color: themeStyles.textColor
1612
- }],
1613
- children: "No Photos Yet"
1614
- }), /*#__PURE__*/_jsxs(Text, {
1615
- style: [fileManagementStyles.emptyStateDescription, {
1616
- color: themeStyles.isDarkTheme ? '#BBBBBB' : '#666666'
1617
- }],
1618
- children: [" ", user?.id === targetUserId ? `Upload photos to get started. You can select multiple photos at once.` : "This user hasn't uploaded any photos yet", " "]
1619
- }), user?.id === targetUserId && /*#__PURE__*/_jsx(TouchableOpacity, {
1620
- style: [fileManagementStyles.emptyStateButton, {
1621
- backgroundColor: themeStyles.primaryColor
1622
- }],
1623
- onPress: handleFileUpload,
1624
- disabled: uploading || isPickingDocument,
1625
- children: uploading ? /*#__PURE__*/_jsx(ActivityIndicator, {
1626
- size: "small",
1627
- color: "#FFFFFF"
1628
- }) : isPickingDocument ? /*#__PURE__*/_jsx(ActivityIndicator, {
1629
- size: "small",
1630
- color: "#FFFFFF"
1631
- }) : /*#__PURE__*/_jsxs(_Fragment, {
1632
- children: [/*#__PURE__*/_jsx(Ionicons, {
1633
- name: "cloud-upload",
1634
- size: 20,
1635
- color: "#FFFFFF"
1636
- }), /*#__PURE__*/_jsx(Text, {
1637
- style: fileManagementStyles.emptyStateButtonText,
1638
- children: "Upload Photos"
1639
- })]
1640
- })
1641
- })]
1642
- });
1643
- }
1644
- return /*#__PURE__*/_jsxs(ScrollView, {
1645
- ref: photoScrollViewRef,
1646
- style: fileManagementStyles.scrollView,
1647
- contentContainerStyle: fileManagementStyles.photoScrollContainer,
1648
- refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
1649
- refreshing: refreshing,
1650
- onRefresh: () => loadFiles('refresh'),
1651
- tintColor: themeStyles.primaryColor
1652
- }),
1653
- showsVerticalScrollIndicator: false,
1654
- onScroll: ({
1655
- nativeEvent
1656
- }) => {
1657
- const {
1658
- layoutMeasurement,
1659
- contentOffset,
1660
- contentSize
1661
- } = nativeEvent;
1662
- const distanceFromBottom = contentSize.height - (contentOffset.y + layoutMeasurement.height);
1663
- if (distanceFromBottom < 200 && !paging.loadingMore && paging.hasMore) {
1664
- loadFiles('more');
1665
- }
1666
- },
1667
- scrollEventThrottle: 250,
1668
- children: [loadingDimensions && /*#__PURE__*/_jsxs(View, {
1669
- style: fileManagementStyles.dimensionsLoadingIndicator,
1670
- children: [/*#__PURE__*/_jsx(ActivityIndicator, {
1671
- size: "small",
1672
- color: themeStyles.primaryColor
1673
- }), /*#__PURE__*/_jsx(Text, {
1674
- style: [fileManagementStyles.dimensionsLoadingText, {
1675
- color: themeStyles.isDarkTheme ? '#BBBBBB' : '#666666'
1676
- }],
1677
- children: "Loading photo layout..."
1678
- })]
1679
- }), /*#__PURE__*/_jsx(JustifiedPhotoGrid, {
1680
- photos: photos,
1681
- photoDimensions: photoDimensions,
1682
- loadPhotoDimensions: loadPhotoDimensions,
1683
- createJustifiedRows: createJustifiedRows,
1684
- renderJustifiedPhotoItem: renderJustifiedPhotoItem,
1685
- renderSimplePhotoItem: renderPhotoItem,
1686
- textColor: themeStyles.textColor,
1687
- containerWidth: safeContainerWidth
1688
- })]
1689
- });
1690
- }, [filteredFiles, themeStyles, user?.id, targetUserId, uploading, handleFileUpload, refreshing, loadFiles, loadingDimensions, photoDimensions, loadPhotoDimensions, createJustifiedRows, renderJustifiedPhotoItem, renderPhotoItem, safeContainerWidth]);
1691
-
1692
- // Inline justified grid removed (moved to components/photogrid/JustifiedPhotoGrid.tsx)
1693
-
1694
- const renderEmptyState = () => /*#__PURE__*/_jsxs(View, {
1695
- style: fileManagementStyles.emptyState,
1696
- children: [/*#__PURE__*/_jsx(Ionicons, {
1697
- name: "folder-open-outline",
1698
- size: 64,
1699
- color: themeStyles.isDarkTheme ? '#666666' : '#CCCCCC'
1700
- }), /*#__PURE__*/_jsx(Text, {
1701
- style: [fileManagementStyles.emptyStateTitle, {
1702
- color: themeStyles.textColor
1703
- }],
1704
- children: "No Files Yet"
1705
- }), /*#__PURE__*/_jsx(Text, {
1706
- style: [fileManagementStyles.emptyStateDescription, {
1707
- color: themeStyles.isDarkTheme ? '#BBBBBB' : '#666666'
1708
- }],
1709
- children: user?.id === targetUserId ? `Upload files to get started. You can select multiple files at once.` : "This user hasn't uploaded any files yet"
1710
- }), user?.id === targetUserId && /*#__PURE__*/_jsx(TouchableOpacity, {
1711
- style: [fileManagementStyles.emptyStateButton, {
1712
- backgroundColor: themeStyles.primaryColor
1713
- }],
1714
- onPress: handleFileUpload,
1715
- disabled: uploading || isPickingDocument,
1716
- children: uploading ? /*#__PURE__*/_jsx(ActivityIndicator, {
1717
- size: "small",
1718
- color: "#FFFFFF"
1719
- }) : isPickingDocument ? /*#__PURE__*/_jsx(ActivityIndicator, {
1720
- size: "small",
1721
- color: "#FFFFFF"
1722
- }) : /*#__PURE__*/_jsxs(_Fragment, {
1723
- children: [/*#__PURE__*/_jsx(Ionicons, {
1724
- name: "cloud-upload",
1725
- size: 20,
1726
- color: "#FFFFFF"
1727
- }), /*#__PURE__*/_jsx(Text, {
1728
- style: fileManagementStyles.emptyStateButtonText,
1729
- children: "Upload Files"
1730
- })]
1731
- })
1732
- })]
1733
- });
1734
-
1735
- // Professional Skeleton Loading Component with Advanced Shimmer Effect
1736
- const SkeletonLoader = /*#__PURE__*/React.memo(() => {
1737
- const shimmerAnim = useRef(new Animated.Value(0)).current;
1738
- const skeletonContainerWidth = safeContainerWidth;
1739
- useEffect(() => {
1740
- const shimmer = Animated.loop(Animated.timing(shimmerAnim, {
1741
- toValue: 1,
1742
- duration: 2000,
1743
- easing: Easing.linear,
1744
- useNativeDriver: true
1745
- }));
1746
- shimmer.start();
1747
- return () => shimmer.stop();
1748
- }, [shimmerAnim]);
1749
-
1750
- // Create a sweeping shimmer effect
1751
- const shimmerTranslateX = shimmerAnim.interpolate({
1752
- inputRange: [0, 1],
1753
- outputRange: [-skeletonContainerWidth * 2, skeletonContainerWidth * 2]
1754
- });
1755
- const SkeletonBox = ({
1756
- width,
1757
- height,
1758
- borderRadius = 8,
1759
- style,
1760
- delay = 0
1761
- }) => {
1762
- const delayedTranslateX = shimmerAnim.interpolate({
1763
- inputRange: [0, 1],
1764
- outputRange: [-skeletonContainerWidth * 2 + delay, skeletonContainerWidth * 2 + delay]
1765
- });
1766
- return /*#__PURE__*/_jsxs(View, {
1767
- style: [{
1768
- width,
1769
- height,
1770
- borderRadius,
1771
- backgroundColor: themeStyles.isDarkTheme ? '#1E1E1E' : '#F5F5F5',
1772
- overflow: 'hidden',
1773
- position: 'relative'
1774
- }, style],
1775
- children: [/*#__PURE__*/_jsx(View, {
1776
- style: {
1777
- position: 'absolute',
1778
- top: 0,
1779
- left: 0,
1780
- right: 0,
1781
- bottom: 0,
1782
- backgroundColor: themeStyles.isDarkTheme ? '#1E1E1E' : '#F5F5F5'
1783
- }
1784
- }), /*#__PURE__*/_jsx(Animated.View, {
1785
- style: {
1786
- position: 'absolute',
1787
- top: 0,
1788
- left: 0,
1789
- width: '100%',
1790
- height: '100%',
1791
- transform: [{
1792
- translateX: delayedTranslateX
1793
- }]
1794
- },
1795
- children: /*#__PURE__*/_jsx(View, {
1796
- style: {
1797
- width: skeletonContainerWidth,
1798
- height: '100%',
1799
- backgroundColor: themeStyles.isDarkTheme ? 'rgba(255, 255, 255, 0.08)' : 'rgba(255, 255, 255, 0.8)',
1800
- shadowColor: themeStyles.isDarkTheme ? '#000' : '#FFF',
1801
- shadowOffset: {
1802
- width: 0,
1803
- height: 0
1804
- },
1805
- shadowOpacity: 0.3,
1806
- shadowRadius: 10
1807
- }
1808
- })
1809
- })]
1810
- });
1811
- };
1812
-
1813
- // Skeleton file item matching GroupedSection structure
1814
- const SkeletonFileItem = ({
1815
- index
1816
- }) => /*#__PURE__*/_jsxs(View, {
1817
- style: [{
1818
- flexDirection: 'row',
1819
- alignItems: 'center',
1820
- paddingHorizontal: 16,
1821
- paddingVertical: 12,
1822
- backgroundColor: themeStyles.isDarkTheme ? '#121212' : '#FFFFFF',
1823
- borderBottomWidth: StyleSheet.hairlineWidth,
1824
- borderBottomColor: themeStyles.borderColor
1825
- }],
1826
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1827
- width: 44,
1828
- height: 44,
1829
- borderRadius: 8,
1830
- delay: index * 50
1831
- }), /*#__PURE__*/_jsxs(View, {
1832
- style: {
1833
- flex: 1,
1834
- marginLeft: 12,
1835
- justifyContent: 'center'
1836
- },
1837
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1838
- width: index % 3 === 0 ? '85%' : index % 3 === 1 ? '70%' : '90%',
1839
- height: 16,
1840
- style: {
1841
- marginBottom: 8
1842
- },
1843
- delay: index * 50 + 20
1844
- }), /*#__PURE__*/_jsx(SkeletonBox, {
1845
- width: index % 2 === 0 ? '50%' : '60%',
1846
- height: 12,
1847
- delay: index * 50 + 40
1848
- })]
1849
- })]
1850
- });
1851
- return /*#__PURE__*/_jsxs(View, {
1852
- style: [fileManagementStyles.container, {
1853
- backgroundColor
1854
- }],
1855
- children: [/*#__PURE__*/_jsxs(View, {
1856
- style: [fileManagementStyles.header, {
1857
- borderBottomColor: themeStyles.borderColor,
1858
- borderBottomWidth: StyleSheet.hairlineWidth
1859
- }],
1860
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1861
- width: 44,
1862
- height: 44,
1863
- borderRadius: 12
1864
- }), /*#__PURE__*/_jsxs(View, {
1865
- style: [fileManagementStyles.headerTitleContainer, {
1866
- flex: 1
1867
- }],
1868
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1869
- width: 140,
1870
- height: 20,
1871
- style: {
1872
- marginBottom: 6
1873
- }
1874
- }), /*#__PURE__*/_jsx(SkeletonBox, {
1875
- width: 100,
1876
- height: 14
1877
- })]
1878
- }), /*#__PURE__*/_jsx(SkeletonBox, {
1879
- width: 44,
1880
- height: 44,
1881
- borderRadius: 12
1882
- })]
1883
- }), /*#__PURE__*/_jsxs(View, {
1884
- style: fileManagementStyles.controlsBar,
1885
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1886
- width: 100,
1887
- height: 36,
1888
- borderRadius: 18
1889
- }), /*#__PURE__*/_jsx(SkeletonBox, {
1890
- width: 44,
1891
- height: 44,
1892
- borderRadius: 22
1893
- })]
1894
- }), /*#__PURE__*/_jsx(View, {
1895
- style: [fileManagementStyles.searchContainer, {
1896
- backgroundColor: themeStyles.colors.card
1897
- }],
1898
- children: /*#__PURE__*/_jsx(SkeletonBox, {
1899
- width: "100%",
1900
- height: 44,
1901
- borderRadius: 12
1902
- })
1903
- }), /*#__PURE__*/_jsx(View, {
1904
- style: [fileManagementStyles.statsContainer, {
1905
- backgroundColor: themeStyles.colors.card
1906
- }],
1907
- children: [1, 2, 3].map(i => /*#__PURE__*/_jsxs(View, {
1908
- style: fileManagementStyles.statItem,
1909
- children: [/*#__PURE__*/_jsx(SkeletonBox, {
1910
- width: 50,
1911
- height: 20,
1912
- style: {
1913
- marginBottom: 4
1914
- },
1915
- delay: i * 30
1916
- }), /*#__PURE__*/_jsx(SkeletonBox, {
1917
- width: 40,
1918
- height: 14,
1919
- delay: i * 30 + 15
1920
- })]
1921
- }, i))
1922
- }), /*#__PURE__*/_jsx(ScrollView, {
1923
- style: fileManagementStyles.scrollView,
1924
- contentContainerStyle: fileManagementStyles.scrollContainer,
1925
- showsVerticalScrollIndicator: false,
1926
- children: /*#__PURE__*/_jsx(View, {
1927
- style: {
1928
- backgroundColor: themeStyles.colors.card,
1929
- borderRadius: 18,
1930
- overflow: 'hidden',
1931
- marginTop: 8
1932
- },
1933
- children: [1, 2, 3, 4, 5, 6, 7, 8].map(i => /*#__PURE__*/_jsx(SkeletonFileItem, {
1934
- index: i
1935
- }, i))
1936
- })
1937
- })]
1938
- });
1939
- });
1940
- if (loading) {
1941
- return /*#__PURE__*/_jsx(SkeletonLoader, {});
1942
- }
1943
-
1944
- // If a file is opened, show the file viewer
1945
- if (!selectMode && openedFile) {
1946
- return /*#__PURE__*/_jsxs(_Fragment, {
1947
- children: [/*#__PURE__*/_jsx(FileViewer, {
1948
- file: openedFile,
1949
- fileContent: fileContent,
1950
- loadingFileContent: loadingFileContent,
1951
- showFileDetailsInViewer: showFileDetailsInViewer,
1952
- onToggleDetails: () => setShowFileDetailsInViewer(!showFileDetailsInViewer),
1953
- onClose: handleCloseFile,
1954
- onDownload: handleFileDownload,
1955
- onDelete: handleFileDelete,
1956
- themeStyles: themeStyles,
1957
- isOwner: user?.id === targetUserId
1958
- }), /*#__PURE__*/_jsx(FileDetailsModal, {
1959
- visible: showFileDetails,
1960
- file: selectedFile,
1961
- onClose: () => setShowFileDetails(false),
1962
- onDownload: handleFileDownload,
1963
- onDelete: handleFileDelete,
1964
- themeStyles: themeStyles,
1965
- isOwner: user?.id === targetUserId
1966
- })]
1967
- });
1968
- }
1969
-
1970
- // If upload preview is showing, render it inline instead of the file list
1971
- if (showUploadPreview) {
1972
- return /*#__PURE__*/_jsxs(View, {
1973
- style: fileManagementStyles.container,
1974
- children: [/*#__PURE__*/_jsx(Header, {
1975
- title: "Review Files",
1976
- subtitle: `${pendingFiles.length} file${pendingFiles.length !== 1 ? 's' : ''} ready to upload`,
1977
- onBack: handleCancelUpload,
1978
- showBackButton: true,
1979
- variant: "minimal",
1980
- elevation: "none",
1981
- titleAlignment: "left"
1982
- }), /*#__PURE__*/_jsx(UploadPreview, {
1983
- visible: true,
1984
- pendingFiles: pendingFiles,
1985
- onConfirm: handleConfirmUpload,
1986
- onCancel: handleCancelUpload,
1987
- onRemoveFile: removePendingFile,
1988
- themeStyles: themeStyles,
1989
- inline: true
1990
- })]
1991
- });
1992
- }
1993
- return /*#__PURE__*/_jsxs(View, {
1994
- style: fileManagementStyles.container,
1995
- children: [/*#__PURE__*/_jsx(Header, {
1996
- title: selectMode ? multiSelect ? `${selectedIds.size}${maxSelection ? '/' + maxSelection : ''} Selected` : 'Select a File' : viewMode === 'photos' ? 'Photos' : 'File Management',
1997
- subtitle: selectMode ? multiSelect ? `${filteredFiles.length} available` : 'Tap to select' : `${filteredFiles.length} ${filteredFiles.length === 1 ? 'item' : 'items'}`,
1998
- rightActions: selectMode && multiSelect ? [{
1999
- key: 'clear',
2000
- text: 'Clear',
2001
- onPress: () => setSelectedIds(new Set()),
2002
- disabled: selectedIds.size === 0
2003
- }, {
2004
- key: 'confirm',
2005
- text: 'Confirm',
2006
- onPress: confirmMultiSelection,
2007
- disabled: selectedIds.size === 0
2008
- }] : !selectMode && selectedIds.size > 0 ? [{
2009
- key: 'clear',
2010
- text: 'Clear',
2011
- onPress: () => setSelectedIds(new Set())
2012
- }, {
2013
- key: 'delete',
2014
- text: `Delete (${selectedIds.size})`,
2015
- onPress: handleBulkDelete,
2016
- icon: 'delete'
2017
- }, {
2018
- key: 'visibility',
2019
- text: 'Visibility',
2020
- onPress: () => {
2021
- // Show visibility options menu
2022
- Alert.alert('Change Visibility', `Change visibility for ${selectedIds.size} file(s)?`, [{
2023
- text: 'Cancel',
2024
- style: 'cancel'
2025
- }, {
2026
- text: 'Private',
2027
- onPress: () => handleBulkVisibilityChange('private')
2028
- }, {
2029
- text: 'Public',
2030
- onPress: () => handleBulkVisibilityChange('public')
2031
- }, {
2032
- text: 'Unlisted',
2033
- onPress: () => handleBulkVisibilityChange('unlisted')
2034
- }]);
2035
- },
2036
- icon: 'eye'
2037
- }] : undefined,
2038
- onBack: onClose || goBack,
2039
- showBackButton: true,
2040
- variant: "minimal",
2041
- elevation: "none",
2042
- titleAlignment: "left"
2043
- }), /*#__PURE__*/_jsxs(View, {
2044
- style: fileManagementStyles.controlsBar,
2045
- children: [/*#__PURE__*/_jsx(ScrollView, {
2046
- horizontal: true,
2047
- showsHorizontalScrollIndicator: false,
2048
- style: fileManagementStyles.viewModeScroll,
2049
- children: /*#__PURE__*/_jsxs(View, {
2050
- style: [fileManagementStyles.viewModeToggle, {
2051
- backgroundColor: themeStyles.colors.card
2052
- }],
2053
- children: [/*#__PURE__*/_jsx(AnimatedButton, {
2054
- isSelected: viewMode === 'all',
2055
- onPress: () => setViewMode('all'),
2056
- icon: viewMode === 'all' ? 'folder' : 'folder-outline',
2057
- primaryColor: themeStyles.primaryColor,
2058
- textColor: themeStyles.textColor,
2059
- style: fileManagementStyles.viewModeButton
2060
- }), /*#__PURE__*/_jsx(AnimatedButton, {
2061
- isSelected: viewMode === 'photos',
2062
- onPress: () => setViewMode('photos'),
2063
- icon: viewMode === 'photos' ? 'image-multiple' : 'image-multiple-outline',
2064
- primaryColor: themeStyles.primaryColor,
2065
- textColor: themeStyles.textColor,
2066
- style: fileManagementStyles.viewModeButton
2067
- }), /*#__PURE__*/_jsx(AnimatedButton, {
2068
- isSelected: viewMode === 'videos',
2069
- onPress: () => setViewMode('videos'),
2070
- icon: viewMode === 'videos' ? 'video' : 'video-outline',
2071
- primaryColor: themeStyles.primaryColor,
2072
- textColor: themeStyles.textColor,
2073
- style: fileManagementStyles.viewModeButton
2074
- }), /*#__PURE__*/_jsx(AnimatedButton, {
2075
- isSelected: viewMode === 'documents',
2076
- onPress: () => setViewMode('documents'),
2077
- icon: viewMode === 'documents' ? 'file-document' : 'file-document-outline',
2078
- primaryColor: themeStyles.primaryColor,
2079
- textColor: themeStyles.textColor,
2080
- style: fileManagementStyles.viewModeButton
2081
- }), /*#__PURE__*/_jsx(AnimatedButton, {
2082
- isSelected: viewMode === 'audio',
2083
- onPress: () => setViewMode('audio'),
2084
- icon: viewMode === 'audio' ? 'music-note' : 'music-note-outline',
2085
- primaryColor: themeStyles.primaryColor,
2086
- textColor: themeStyles.textColor,
2087
- style: fileManagementStyles.viewModeButton
2088
- })]
2089
- })
2090
- }), /*#__PURE__*/_jsxs(TouchableOpacity, {
2091
- style: [fileManagementStyles.sortButton, {
2092
- backgroundColor: themeStyles.colors.card
2093
- }],
2094
- onPress: () => {
2095
- // Cycle through sort options: date -> size -> name -> type -> date
2096
- const sortOrder = ['date', 'size', 'name', 'type'];
2097
- const currentIndex = sortOrder.indexOf(sortBy);
2098
- const nextIndex = (currentIndex + 1) % sortOrder.length;
2099
- setSortBy(sortOrder[nextIndex]);
2100
- // Toggle order when cycling back to date
2101
- if (nextIndex === 0) {
2102
- setSortOrder(prev => prev === 'asc' ? 'desc' : 'asc');
2103
- }
2104
- },
2105
- children: [/*#__PURE__*/_jsx(MaterialCommunityIcons, {
2106
- name: sortBy === 'date' ? 'calendar' : sortBy === 'size' ? 'sort-numeric-variant' : sortBy === 'name' ? 'sort-alphabetical-variant' : 'file-document-outline',
2107
- size: 16,
2108
- color: themeStyles.textColor
2109
- }), /*#__PURE__*/_jsx(MaterialCommunityIcons, {
2110
- name: sortOrder === 'asc' ? 'arrow-up' : 'arrow-down',
2111
- size: 14,
2112
- color: themeStyles.colors.secondaryText
2113
- })]
2114
- }), user?.id === targetUserId && (!selectMode || selectMode && allowUploadInSelectMode) && /*#__PURE__*/_jsx(TouchableOpacity, {
2115
- style: [fileManagementStyles.uploadButton, {
2116
- backgroundColor: themeStyles.primaryColor
2117
- }],
2118
- onPress: handleFileUpload,
2119
- disabled: uploading || isPickingDocument,
2120
- children: uploading ? /*#__PURE__*/_jsxs(View, {
2121
- style: fileManagementStyles.uploadProgress,
2122
- children: [/*#__PURE__*/_jsx(ActivityIndicator, {
2123
- size: "small",
2124
- color: "#FFFFFF"
2125
- }), uploadProgress && /*#__PURE__*/_jsxs(Text, {
2126
- style: fileManagementStyles.uploadProgressText,
2127
- children: [uploadProgress.current, "/", uploadProgress.total]
2128
- })]
2129
- }) : isPickingDocument ? /*#__PURE__*/_jsx(ActivityIndicator, {
2130
- size: "small",
2131
- color: "#FFFFFF"
2132
- }) : /*#__PURE__*/_jsx(Ionicons, {
2133
- name: "add",
2134
- size: 22,
2135
- color: "#FFFFFF"
2136
- })
2137
- })]
2138
- }), files.length > 0 && (viewMode === 'all' || files.some(f => f.contentType.startsWith('image/'))) && /*#__PURE__*/_jsxs(View, {
2139
- style: [fileManagementStyles.searchContainer, {
2140
- backgroundColor: themeStyles.colors.card
2141
- }],
2142
- children: [/*#__PURE__*/_jsx(Ionicons, {
2143
- name: "search",
2144
- size: 22,
2145
- color: themeStyles.colors.icon
2146
- }), /*#__PURE__*/_jsx(TextInput, {
2147
- style: [fileManagementStyles.searchInput, {
2148
- color: themeStyles.textColor
2149
- }],
2150
- placeholder: viewMode === 'photos' ? 'Search photos...' : 'Search files...',
2151
- placeholderTextColor: themeStyles.colors.secondaryText,
2152
- value: searchQuery,
2153
- onChangeText: setSearchQuery
2154
- }), searchQuery.length > 0 && /*#__PURE__*/_jsx(TouchableOpacity, {
2155
- onPress: () => setSearchQuery(''),
2156
- style: fileManagementStyles.searchClearButton,
2157
- children: /*#__PURE__*/_jsx(Ionicons, {
2158
- name: "close-circle",
2159
- size: 22,
2160
- color: themeStyles.colors.icon
2161
- })
2162
- })]
2163
- }), files.length > 0 && /*#__PURE__*/_jsxs(View, {
2164
- style: [fileManagementStyles.statsContainer, {
2165
- backgroundColor: themeStyles.colors.card
2166
- }],
2167
- children: [/*#__PURE__*/_jsxs(View, {
2168
- style: fileManagementStyles.statItem,
2169
- children: [/*#__PURE__*/_jsx(Text, {
2170
- style: [fileManagementStyles.statValue, {
2171
- color: themeStyles.textColor
2172
- }],
2173
- children: filteredFiles.length
2174
- }), /*#__PURE__*/_jsx(Text, {
2175
- style: [fileManagementStyles.statLabel, {
2176
- color: themeStyles.colors.secondaryText
2177
- }],
2178
- children: searchQuery.length > 0 ? 'Found' : filteredFiles.length === 1 ? viewMode === 'photos' ? 'Photo' : 'File' : viewMode === 'photos' ? 'Photos' : 'Files'
2179
- })]
2180
- }), /*#__PURE__*/_jsxs(View, {
2181
- style: fileManagementStyles.statItem,
2182
- children: [/*#__PURE__*/_jsx(Text, {
2183
- style: [fileManagementStyles.statValue, {
2184
- color: themeStyles.textColor
2185
- }],
2186
- children: formatFileSize(filteredFiles.reduce((total, file) => total + file.length, 0))
2187
- }), /*#__PURE__*/_jsx(Text, {
2188
- style: [fileManagementStyles.statLabel, {
2189
- color: themeStyles.colors.secondaryText
2190
- }],
2191
- children: searchQuery.length > 0 ? 'Size' : 'Total Size'
2192
- })]
2193
- }), searchQuery.length > 0 && /*#__PURE__*/_jsxs(View, {
2194
- style: fileManagementStyles.statItem,
2195
- children: [/*#__PURE__*/_jsx(Text, {
2196
- style: [fileManagementStyles.statValue, {
2197
- color: themeStyles.textColor
2198
- }],
2199
- children: files.length
2200
- }), /*#__PURE__*/_jsx(Text, {
2201
- style: [fileManagementStyles.statLabel, {
2202
- color: themeStyles.colors.secondaryText
2203
- }],
2204
- children: "Total"
2205
- })]
2206
- })]
2207
- }), viewMode === 'photos' ? renderPhotoGrid() : /*#__PURE__*/_jsx(ScrollView, {
2208
- ref: scrollViewRef,
2209
- style: fileManagementStyles.scrollView,
2210
- contentContainerStyle: fileManagementStyles.scrollContainer,
2211
- refreshControl: /*#__PURE__*/_jsx(RefreshControl, {
2212
- refreshing: refreshing,
2213
- onRefresh: () => loadFiles('refresh'),
2214
- tintColor: themeStyles.primaryColor
2215
- }),
2216
- onScroll: ({
2217
- nativeEvent
2218
- }) => {
2219
- const {
2220
- layoutMeasurement,
2221
- contentOffset,
2222
- contentSize
2223
- } = nativeEvent;
2224
- const distanceFromBottom = contentSize.height - (contentOffset.y + layoutMeasurement.height);
2225
- if (distanceFromBottom < 200 && !paging.loadingMore && paging.hasMore) {
2226
- loadFiles('more');
2227
- }
2228
- },
2229
- scrollEventThrottle: 250,
2230
- children: filteredFiles.length === 0 && searchQuery.length > 0 ? /*#__PURE__*/_jsxs(View, {
2231
- style: fileManagementStyles.emptyState,
2232
- children: [/*#__PURE__*/_jsx(Ionicons, {
2233
- name: "search",
2234
- size: 64,
2235
- color: themeStyles.isDarkTheme ? '#666666' : '#CCCCCC'
2236
- }), /*#__PURE__*/_jsx(Text, {
2237
- style: [fileManagementStyles.emptyStateTitle, {
2238
- color: themeStyles.textColor
2239
- }],
2240
- children: "No Results Found"
2241
- }), /*#__PURE__*/_jsxs(Text, {
2242
- style: [fileManagementStyles.emptyStateDescription, {
2243
- color: themeStyles.isDarkTheme ? '#BBBBBB' : '#666666'
2244
- }],
2245
- children: ["No files match your search for \"", searchQuery, "\""]
2246
- }), /*#__PURE__*/_jsxs(TouchableOpacity, {
2247
- style: [fileManagementStyles.emptyStateButton, {
2248
- backgroundColor: themeStyles.primaryColor
2249
- }],
2250
- onPress: () => setSearchQuery(''),
2251
- children: [/*#__PURE__*/_jsx(Ionicons, {
2252
- name: "refresh",
2253
- size: 20,
2254
- color: "#FFFFFF"
2255
- }), /*#__PURE__*/_jsx(Text, {
2256
- style: fileManagementStyles.emptyStateButtonText,
2257
- children: "Clear Search"
2258
- })]
2259
- })]
2260
- }) : filteredFiles.length === 0 ? renderEmptyState() : /*#__PURE__*/_jsxs(_Fragment, {
2261
- children: [/*#__PURE__*/_jsx(GroupedSection, {
2262
- items: groupedFileItems
2263
- }), paging.loadingMore && /*#__PURE__*/_jsxs(View, {
2264
- style: fileManagementStyles.loadingMoreBar,
2265
- children: [/*#__PURE__*/_jsx(ActivityIndicator, {
2266
- size: "small",
2267
- color: themeStyles.primaryColor
2268
- }), /*#__PURE__*/_jsx(Text, {
2269
- style: [fileManagementStyles.loadingMoreText, {
2270
- color: themeStyles.textColor
2271
- }],
2272
- children: "Loading more..."
2273
- })]
2274
- })]
2275
- })
2276
- }), !selectMode && /*#__PURE__*/_jsx(FileDetailsModal, {
2277
- visible: showFileDetails,
2278
- file: selectedFile,
2279
- onClose: () => setShowFileDetails(false),
2280
- onDownload: handleFileDownload,
2281
- onDelete: handleFileDelete,
2282
- themeStyles: themeStyles,
2283
- isOwner: user?.id === targetUserId
2284
- }), !selectMode && uploading && /*#__PURE__*/_jsx(View, {
2285
- style: [fileManagementStyles.uploadBannerContainer, {
2286
- pointerEvents: 'none'
2287
- }],
2288
- children: /*#__PURE__*/_jsxs(View, {
2289
- style: [fileManagementStyles.uploadBanner, {
2290
- backgroundColor: themeStyles.isDarkTheme ? '#222831EE' : '#FFFFFFEE',
2291
- borderColor: themeStyles.borderColor
2292
- }],
2293
- children: [/*#__PURE__*/_jsx(Ionicons, {
2294
- name: "cloud-upload",
2295
- size: 18,
2296
- color: themeStyles.primaryColor
2297
- }), /*#__PURE__*/_jsxs(View, {
2298
- style: fileManagementStyles.uploadBannerContent,
2299
- children: [/*#__PURE__*/_jsxs(Text, {
2300
- style: [fileManagementStyles.uploadBannerText, {
2301
- color: themeStyles.textColor
2302
- }],
2303
- children: ["Uploading", uploadProgress ? ` ${uploadProgress.current}/${uploadProgress.total}` : '...']
2304
- }), uploadProgress && uploadProgress.total > 0 && /*#__PURE__*/_jsx(View, {
2305
- style: [fileManagementStyles.uploadProgressBarContainer, {
2306
- backgroundColor: themeStyles.isDarkTheme ? 'rgba(255,255,255,0.1)' : 'rgba(0,0,0,0.1)'
2307
- }],
2308
- children: /*#__PURE__*/_jsx(View, {
2309
- style: [fileManagementStyles.uploadProgressBar, {
2310
- width: `${uploadProgress.current / uploadProgress.total * 100}%`,
2311
- backgroundColor: themeStyles.primaryColor
2312
- }]
2313
- })
2314
- })]
2315
- }), /*#__PURE__*/_jsx(ActivityIndicator, {
2316
- size: "small",
2317
- color: themeStyles.primaryColor
2318
- })]
2319
- })
2320
- })]
2321
- });
2322
- };
2323
-
2324
- // Styles have been moved to components/fileManagement/styles.ts
2325
-
2326
- export default FileManagementScreen;
2327
- //# sourceMappingURL=FileManagementScreen.js.map