@oxyhq/services 5.5.9 → 5.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) hide show
  1. package/README.md +16 -2
  2. package/lib/commonjs/core/index.js +69 -82
  3. package/lib/commonjs/core/index.js.map +1 -1
  4. package/lib/commonjs/index.js +24 -183
  5. package/lib/commonjs/index.js.map +1 -1
  6. package/lib/commonjs/node/index.js +0 -2
  7. package/lib/commonjs/node/index.js.map +1 -1
  8. package/lib/commonjs/ui/components/FollowButton.js +100 -229
  9. package/lib/commonjs/ui/components/FollowButton.js.map +1 -1
  10. package/lib/commonjs/ui/components/OxyPayButton.js +131 -0
  11. package/lib/commonjs/ui/components/OxyPayButton.js.map +1 -0
  12. package/lib/commonjs/ui/components/OxyProvider.js +41 -198
  13. package/lib/commonjs/ui/components/OxyProvider.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxySignInButton.js +15 -2
  15. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  16. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js +66 -0
  17. package/lib/commonjs/ui/components/icon/FAIRWalletIcon.js.map +1 -0
  18. package/lib/commonjs/ui/components/icon/index.js +7 -0
  19. package/lib/commonjs/ui/components/icon/index.js.map +1 -1
  20. package/lib/commonjs/ui/components/index.js +7 -0
  21. package/lib/commonjs/ui/components/index.js.map +1 -1
  22. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js +14 -7
  23. package/lib/commonjs/ui/components/internal/GroupedPillButtons.js.map +1 -1
  24. package/lib/commonjs/ui/components/internal/PinInput.js +108 -0
  25. package/lib/commonjs/ui/components/internal/PinInput.js.map +1 -0
  26. package/lib/commonjs/ui/components/internal/TextField.js +20 -0
  27. package/lib/commonjs/ui/components/internal/TextField.js.map +1 -1
  28. package/lib/commonjs/ui/context/OxyContext.js +116 -84
  29. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  30. package/lib/commonjs/ui/hooks/index.js +2 -15
  31. package/lib/commonjs/ui/hooks/index.js.map +1 -1
  32. package/lib/commonjs/ui/hooks/useFollow.js +52 -136
  33. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  34. package/lib/commonjs/ui/hooks/useSessionSocket.js +52 -0
  35. package/lib/commonjs/ui/hooks/useSessionSocket.js.map +1 -0
  36. package/lib/commonjs/ui/index.js +8 -191
  37. package/lib/commonjs/ui/index.js.map +1 -1
  38. package/lib/commonjs/ui/navigation/OxyRouter.js +52 -60
  39. package/lib/commonjs/ui/navigation/OxyRouter.js.map +1 -1
  40. package/lib/commonjs/ui/screens/AccountCenterScreen.js +18 -30
  41. package/lib/commonjs/ui/screens/AccountCenterScreen.js.map +1 -1
  42. package/lib/commonjs/ui/screens/AccountOverviewScreen.js +4 -22
  43. package/lib/commonjs/ui/screens/AccountOverviewScreen.js.map +1 -1
  44. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +90 -39
  45. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  46. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js +37 -66
  47. package/lib/commonjs/ui/screens/AccountSwitcherScreen.js.map +1 -1
  48. package/lib/commonjs/ui/screens/AppInfoScreen.js +21 -44
  49. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  50. package/lib/commonjs/ui/screens/FeedbackScreen.js +44 -23
  51. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +1 -1
  52. package/lib/commonjs/ui/screens/FileManagementScreen.js +59 -78
  53. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  54. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js +1588 -0
  55. package/lib/commonjs/ui/screens/PaymentGatewayScreen.js.map +1 -0
  56. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +22 -36
  57. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  58. package/lib/commonjs/ui/screens/RecoverAccountScreen.js +269 -0
  59. package/lib/commonjs/ui/screens/RecoverAccountScreen.js.map +1 -0
  60. package/lib/commonjs/ui/screens/SessionManagementScreen.js +47 -69
  61. package/lib/commonjs/ui/screens/SessionManagementScreen.js.map +1 -1
  62. package/lib/commonjs/ui/screens/SignInScreen.js +99 -333
  63. package/lib/commonjs/ui/screens/SignInScreen.js.map +1 -1
  64. package/lib/commonjs/ui/screens/SignUpScreen.js +136 -340
  65. package/lib/commonjs/ui/screens/SignUpScreen.js.map +1 -1
  66. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js +192 -0
  67. package/lib/commonjs/ui/screens/internal/SignInPasswordStep.js.map +1 -0
  68. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js +135 -0
  69. package/lib/commonjs/ui/screens/internal/SignInUsernameStep.js.map +1 -0
  70. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js +108 -0
  71. package/lib/commonjs/ui/screens/internal/SignUpIdentityStep.js.map +1 -0
  72. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js +126 -0
  73. package/lib/commonjs/ui/screens/internal/SignUpSecurityStep.js.map +1 -0
  74. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js +84 -0
  75. package/lib/commonjs/ui/screens/internal/SignUpSummaryStep.js.map +1 -0
  76. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js +59 -0
  77. package/lib/commonjs/ui/screens/internal/SignUpWelcomeStep.js.map +1 -0
  78. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js +15 -2
  79. package/lib/commonjs/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  80. package/lib/commonjs/ui/stores/authStore.js +66 -0
  81. package/lib/commonjs/ui/stores/authStore.js.map +1 -0
  82. package/lib/commonjs/ui/stores/followStore.js +124 -0
  83. package/lib/commonjs/ui/stores/followStore.js.map +1 -0
  84. package/lib/commonjs/ui/styles/index.js +0 -11
  85. package/lib/commonjs/ui/styles/index.js.map +1 -1
  86. package/lib/commonjs/ui/utils/confirmAction.js +28 -0
  87. package/lib/commonjs/ui/utils/confirmAction.js.map +1 -0
  88. package/lib/module/core/index.js +69 -81
  89. package/lib/module/core/index.js.map +1 -1
  90. package/lib/module/index.js +14 -17
  91. package/lib/module/index.js.map +1 -1
  92. package/lib/module/node/index.js +0 -3
  93. package/lib/module/node/index.js.map +1 -1
  94. package/lib/module/ui/components/FollowButton.js +100 -229
  95. package/lib/module/ui/components/FollowButton.js.map +1 -1
  96. package/lib/module/ui/components/OxyPayButton.js +125 -0
  97. package/lib/module/ui/components/OxyPayButton.js.map +1 -0
  98. package/lib/module/ui/components/OxyProvider.js +42 -199
  99. package/lib/module/ui/components/OxyProvider.js.map +1 -1
  100. package/lib/module/ui/components/OxySignInButton.js +15 -2
  101. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  102. package/lib/module/ui/components/icon/FAIRWalletIcon.js +60 -0
  103. package/lib/module/ui/components/icon/FAIRWalletIcon.js.map +1 -0
  104. package/lib/module/ui/components/icon/index.js +1 -0
  105. package/lib/module/ui/components/icon/index.js.map +1 -1
  106. package/lib/module/ui/components/index.js +1 -0
  107. package/lib/module/ui/components/index.js.map +1 -1
  108. package/lib/module/ui/components/internal/GroupedPillButtons.js +15 -8
  109. package/lib/module/ui/components/internal/GroupedPillButtons.js.map +1 -1
  110. package/lib/module/ui/components/internal/PinInput.js +103 -0
  111. package/lib/module/ui/components/internal/PinInput.js.map +1 -0
  112. package/lib/module/ui/components/internal/TextField.js +20 -0
  113. package/lib/module/ui/components/internal/TextField.js.map +1 -1
  114. package/lib/module/ui/context/OxyContext.js +117 -85
  115. package/lib/module/ui/context/OxyContext.js.map +1 -1
  116. package/lib/module/ui/hooks/index.js +1 -2
  117. package/lib/module/ui/hooks/index.js.map +1 -1
  118. package/lib/module/ui/hooks/useFollow.js +52 -137
  119. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  120. package/lib/module/ui/hooks/useSessionSocket.js +47 -0
  121. package/lib/module/ui/hooks/useSessionSocket.js.map +1 -0
  122. package/lib/module/ui/index.js +2 -13
  123. package/lib/module/ui/index.js.map +1 -1
  124. package/lib/module/ui/navigation/OxyRouter.js +53 -61
  125. package/lib/module/ui/navigation/OxyRouter.js.map +1 -1
  126. package/lib/module/ui/screens/AccountCenterScreen.js +6 -18
  127. package/lib/module/ui/screens/AccountCenterScreen.js.map +1 -1
  128. package/lib/module/ui/screens/AccountOverviewScreen.js +5 -23
  129. package/lib/module/ui/screens/AccountOverviewScreen.js.map +1 -1
  130. package/lib/module/ui/screens/AccountSettingsScreen.js +91 -40
  131. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  132. package/lib/module/ui/screens/AccountSwitcherScreen.js +38 -67
  133. package/lib/module/ui/screens/AccountSwitcherScreen.js.map +1 -1
  134. package/lib/module/ui/screens/AppInfoScreen.js +22 -45
  135. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  136. package/lib/module/ui/screens/FeedbackScreen.js +44 -23
  137. package/lib/module/ui/screens/FeedbackScreen.js.map +1 -1
  138. package/lib/module/ui/screens/FileManagementScreen.js +59 -78
  139. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  140. package/lib/module/ui/screens/PaymentGatewayScreen.js +1583 -0
  141. package/lib/module/ui/screens/PaymentGatewayScreen.js.map +1 -0
  142. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +23 -37
  143. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +1 -1
  144. package/lib/module/ui/screens/RecoverAccountScreen.js +263 -0
  145. package/lib/module/ui/screens/RecoverAccountScreen.js.map +1 -0
  146. package/lib/module/ui/screens/SessionManagementScreen.js +47 -69
  147. package/lib/module/ui/screens/SessionManagementScreen.js.map +1 -1
  148. package/lib/module/ui/screens/SignInScreen.js +100 -334
  149. package/lib/module/ui/screens/SignInScreen.js.map +1 -1
  150. package/lib/module/ui/screens/SignUpScreen.js +137 -341
  151. package/lib/module/ui/screens/SignUpScreen.js.map +1 -1
  152. package/lib/module/ui/screens/internal/SignInPasswordStep.js +186 -0
  153. package/lib/module/ui/screens/internal/SignInPasswordStep.js.map +1 -0
  154. package/lib/module/ui/screens/internal/SignInUsernameStep.js +129 -0
  155. package/lib/module/ui/screens/internal/SignInUsernameStep.js.map +1 -0
  156. package/lib/module/ui/screens/internal/SignUpIdentityStep.js +102 -0
  157. package/lib/module/ui/screens/internal/SignUpIdentityStep.js.map +1 -0
  158. package/lib/module/ui/screens/internal/SignUpSecurityStep.js +120 -0
  159. package/lib/module/ui/screens/internal/SignUpSecurityStep.js.map +1 -0
  160. package/lib/module/ui/screens/internal/SignUpSummaryStep.js +79 -0
  161. package/lib/module/ui/screens/internal/SignUpSummaryStep.js.map +1 -0
  162. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js +54 -0
  163. package/lib/module/ui/screens/internal/SignUpWelcomeStep.js.map +1 -0
  164. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js +16 -3
  165. package/lib/module/ui/screens/karma/KarmaRewardsScreen.js.map +1 -1
  166. package/lib/module/ui/stores/authStore.js +62 -0
  167. package/lib/module/ui/stores/authStore.js.map +1 -0
  168. package/lib/module/ui/stores/followStore.js +120 -0
  169. package/lib/module/ui/stores/followStore.js.map +1 -0
  170. package/lib/module/ui/styles/index.js +0 -1
  171. package/lib/module/ui/styles/index.js.map +1 -1
  172. package/lib/module/ui/utils/confirmAction.js +25 -0
  173. package/lib/module/ui/utils/confirmAction.js.map +1 -0
  174. package/lib/typescript/core/index.d.ts +28 -10
  175. package/lib/typescript/core/index.d.ts.map +1 -1
  176. package/lib/typescript/index.d.ts +5 -4
  177. package/lib/typescript/index.d.ts.map +1 -1
  178. package/lib/typescript/models/interfaces.d.ts +6 -0
  179. package/lib/typescript/models/interfaces.d.ts.map +1 -1
  180. package/lib/typescript/models/secureSession.d.ts +0 -1
  181. package/lib/typescript/models/secureSession.d.ts.map +1 -1
  182. package/lib/typescript/node/index.d.ts +0 -1
  183. package/lib/typescript/node/index.d.ts.map +1 -1
  184. package/lib/typescript/ui/components/FollowButton.d.ts +1 -77
  185. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  186. package/lib/typescript/ui/components/OxyPayButton.d.ts +29 -0
  187. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +1 -0
  188. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  189. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  190. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts +8 -0
  191. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -0
  192. package/lib/typescript/ui/components/icon/index.d.ts +1 -0
  193. package/lib/typescript/ui/components/icon/index.d.ts.map +1 -1
  194. package/lib/typescript/ui/components/index.d.ts +1 -0
  195. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  196. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  197. package/lib/typescript/ui/components/internal/PinInput.d.ts +12 -0
  198. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -0
  199. package/lib/typescript/ui/components/internal/TextField.d.ts +1 -0
  200. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  201. package/lib/typescript/ui/context/OxyContext.d.ts +0 -2
  202. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  203. package/lib/typescript/ui/hooks/index.d.ts +1 -2
  204. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  205. package/lib/typescript/ui/hooks/useFollow.d.ts +14 -15
  206. package/lib/typescript/ui/hooks/useFollow.d.ts.map +1 -1
  207. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +11 -0
  208. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -0
  209. package/lib/typescript/ui/index.d.ts +2 -5
  210. package/lib/typescript/ui/index.d.ts.map +1 -1
  211. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  212. package/lib/typescript/ui/navigation/types.d.ts +5 -23
  213. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  214. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  215. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  216. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  217. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  218. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  219. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  220. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  221. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +27 -0
  222. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -0
  223. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  224. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +8 -0
  225. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -0
  226. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  227. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  228. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  229. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +27 -0
  230. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -0
  231. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +26 -0
  232. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -0
  233. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts +20 -0
  234. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -0
  235. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts +24 -0
  236. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -0
  237. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts +15 -0
  238. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts.map +1 -0
  239. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts +13 -0
  240. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts.map +1 -0
  241. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  242. package/lib/typescript/ui/stores/authStore.d.ts +16 -0
  243. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -0
  244. package/lib/typescript/ui/stores/followStore.d.ts +15 -0
  245. package/lib/typescript/ui/stores/followStore.d.ts.map +1 -0
  246. package/lib/typescript/ui/styles/index.d.ts +0 -1
  247. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  248. package/lib/typescript/ui/utils/confirmAction.d.ts +7 -0
  249. package/lib/typescript/ui/utils/confirmAction.d.ts.map +1 -0
  250. package/package.json +12 -7
  251. package/src/core/index.ts +78 -88
  252. package/src/index.ts +8 -45
  253. package/src/models/interfaces.ts +7 -1
  254. package/src/models/secureSession.ts +1 -2
  255. package/src/node/index.ts +0 -3
  256. package/src/ui/components/FollowButton.tsx +100 -322
  257. package/src/ui/components/OxyPayButton.tsx +133 -0
  258. package/src/ui/components/OxyProvider.tsx +39 -201
  259. package/src/ui/components/OxySignInButton.tsx +13 -2
  260. package/src/ui/components/icon/FAIRWalletIcon.tsx +49 -0
  261. package/src/ui/components/icon/index.ts +1 -0
  262. package/src/ui/components/index.ts +1 -0
  263. package/src/ui/components/internal/GroupedPillButtons.tsx +12 -8
  264. package/src/ui/components/internal/PinInput.tsx +102 -0
  265. package/src/ui/components/internal/TextField.tsx +9 -0
  266. package/src/ui/context/OxyContext.tsx +74 -91
  267. package/src/ui/hooks/index.ts +1 -2
  268. package/src/ui/hooks/useFollow.ts +58 -129
  269. package/src/ui/hooks/useSessionSocket.ts +50 -0
  270. package/src/ui/index.ts +2 -37
  271. package/src/ui/navigation/OxyRouter.tsx +47 -63
  272. package/src/ui/navigation/types.ts +5 -26
  273. package/src/ui/screens/AccountCenterScreen.tsx +12 -21
  274. package/src/ui/screens/AccountOverviewScreen.tsx +6 -30
  275. package/src/ui/screens/AccountSettingsScreen.tsx +75 -46
  276. package/src/ui/screens/AccountSwitcherScreen.tsx +46 -88
  277. package/src/ui/screens/AppInfoScreen.tsx +27 -47
  278. package/src/ui/screens/FeedbackScreen.tsx +34 -19
  279. package/src/ui/screens/FileManagementScreen.tsx +293 -321
  280. package/src/ui/screens/PaymentGatewayScreen.tsx +1315 -0
  281. package/src/ui/screens/PremiumSubscriptionScreen.tsx +109 -124
  282. package/src/ui/screens/RecoverAccountScreen.tsx +260 -0
  283. package/src/ui/screens/SessionManagementScreen.tsx +65 -137
  284. package/src/ui/screens/SignInScreen.tsx +89 -283
  285. package/src/ui/screens/SignUpScreen.tsx +138 -291
  286. package/src/ui/screens/internal/SignInPasswordStep.tsx +179 -0
  287. package/src/ui/screens/internal/SignInUsernameStep.tsx +139 -0
  288. package/src/ui/screens/internal/SignUpIdentityStep.tsx +114 -0
  289. package/src/ui/screens/internal/SignUpSecurityStep.tsx +132 -0
  290. package/src/ui/screens/internal/SignUpSummaryStep.tsx +66 -0
  291. package/src/ui/screens/internal/SignUpWelcomeStep.tsx +52 -0
  292. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +13 -3
  293. package/src/ui/stores/authStore.ts +45 -0
  294. package/src/ui/stores/followStore.ts +80 -0
  295. package/src/ui/styles/index.ts +0 -1
  296. package/src/ui/utils/confirmAction.ts +23 -0
  297. package/lib/commonjs/ui/components/bottomSheet/index.js +0 -37
  298. package/lib/commonjs/ui/components/bottomSheet/index.js.map +0 -1
  299. package/lib/commonjs/ui/hooks/useAuthFetch.js +0 -217
  300. package/lib/commonjs/ui/hooks/useAuthFetch.js.map +0 -1
  301. package/lib/commonjs/ui/hooks/useOxyFollow.js +0 -190
  302. package/lib/commonjs/ui/hooks/useOxyFollow.js.map +0 -1
  303. package/lib/commonjs/ui/screens/BillingManagementScreen.js +0 -636
  304. package/lib/commonjs/ui/screens/BillingManagementScreen.js.map +0 -1
  305. package/lib/commonjs/ui/store/index.js +0 -67
  306. package/lib/commonjs/ui/store/index.js.map +0 -1
  307. package/lib/commonjs/ui/store/setupOxyStore.js +0 -63
  308. package/lib/commonjs/ui/store/setupOxyStore.js.map +0 -1
  309. package/lib/commonjs/ui/store/slices/authSlice.js +0 -56
  310. package/lib/commonjs/ui/store/slices/authSlice.js.map +0 -1
  311. package/lib/commonjs/ui/store/slices/followSlice.js +0 -238
  312. package/lib/commonjs/ui/store/slices/followSlice.js.map +0 -1
  313. package/lib/commonjs/ui/store/slices/index.js +0 -129
  314. package/lib/commonjs/ui/store/slices/index.js.map +0 -1
  315. package/lib/commonjs/ui/store/slices/types.js +0 -19
  316. package/lib/commonjs/ui/store/slices/types.js.map +0 -1
  317. package/lib/commonjs/ui/styles/shadows.js +0 -123
  318. package/lib/commonjs/ui/styles/shadows.js.map +0 -1
  319. package/lib/commonjs/utils/polyfills.js +0 -42
  320. package/lib/commonjs/utils/polyfills.js.map +0 -1
  321. package/lib/module/ui/components/bottomSheet/index.js +0 -5
  322. package/lib/module/ui/components/bottomSheet/index.js.map +0 -1
  323. package/lib/module/ui/hooks/useAuthFetch.js +0 -212
  324. package/lib/module/ui/hooks/useAuthFetch.js.map +0 -1
  325. package/lib/module/ui/hooks/useOxyFollow.js +0 -186
  326. package/lib/module/ui/hooks/useOxyFollow.js.map +0 -1
  327. package/lib/module/ui/screens/BillingManagementScreen.js +0 -631
  328. package/lib/module/ui/screens/BillingManagementScreen.js.map +0 -1
  329. package/lib/module/ui/store/index.js +0 -33
  330. package/lib/module/ui/store/index.js.map +0 -1
  331. package/lib/module/ui/store/setupOxyStore.js +0 -59
  332. package/lib/module/ui/store/setupOxyStore.js.map +0 -1
  333. package/lib/module/ui/store/slices/authSlice.js +0 -48
  334. package/lib/module/ui/store/slices/authSlice.js.map +0 -1
  335. package/lib/module/ui/store/slices/followSlice.js +0 -232
  336. package/lib/module/ui/store/slices/followSlice.js.map +0 -1
  337. package/lib/module/ui/store/slices/index.js +0 -11
  338. package/lib/module/ui/store/slices/index.js.map +0 -1
  339. package/lib/module/ui/store/slices/types.js +0 -15
  340. package/lib/module/ui/store/slices/types.js.map +0 -1
  341. package/lib/module/ui/styles/shadows.js +0 -119
  342. package/lib/module/ui/styles/shadows.js.map +0 -1
  343. package/lib/module/utils/polyfills.js +0 -36
  344. package/lib/module/utils/polyfills.js.map +0 -1
  345. package/lib/typescript/types/react-redux.d.ts +0 -5
  346. package/lib/typescript/ui/components/bottomSheet/index.d.ts +0 -4
  347. package/lib/typescript/ui/components/bottomSheet/index.d.ts.map +0 -1
  348. package/lib/typescript/ui/hooks/useAuthFetch.d.ts +0 -34
  349. package/lib/typescript/ui/hooks/useAuthFetch.d.ts.map +0 -1
  350. package/lib/typescript/ui/hooks/useOxyFollow.d.ts +0 -81
  351. package/lib/typescript/ui/hooks/useOxyFollow.d.ts.map +0 -1
  352. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts +0 -5
  353. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts.map +0 -1
  354. package/lib/typescript/ui/store/index.d.ts +0 -27
  355. package/lib/typescript/ui/store/index.d.ts.map +0 -1
  356. package/lib/typescript/ui/store/setupOxyStore.d.ts +0 -29
  357. package/lib/typescript/ui/store/setupOxyStore.d.ts.map +0 -1
  358. package/lib/typescript/ui/store/slices/authSlice.d.ts +0 -32
  359. package/lib/typescript/ui/store/slices/authSlice.d.ts.map +0 -1
  360. package/lib/typescript/ui/store/slices/followSlice.d.ts +0 -120
  361. package/lib/typescript/ui/store/slices/followSlice.d.ts.map +0 -1
  362. package/lib/typescript/ui/store/slices/index.d.ts +0 -9
  363. package/lib/typescript/ui/store/slices/index.d.ts.map +0 -1
  364. package/lib/typescript/ui/store/slices/types.d.ts +0 -16
  365. package/lib/typescript/ui/store/slices/types.d.ts.map +0 -1
  366. package/lib/typescript/ui/styles/shadows.d.ts +0 -233
  367. package/lib/typescript/ui/styles/shadows.d.ts.map +0 -1
  368. package/lib/typescript/utils/polyfills.d.ts +0 -6
  369. package/lib/typescript/utils/polyfills.d.ts.map +0 -1
  370. package/src/__tests__/backend-middleware.test.ts +0 -209
  371. package/src/__tests__/polyfills.test.ts +0 -30
  372. package/src/__tests__/setup.ts +0 -43
  373. package/src/__tests__/ui/hooks/authfetch-integration.test.ts +0 -197
  374. package/src/__tests__/ui/hooks/backward-compatibility.test.ts +0 -159
  375. package/src/__tests__/ui/hooks/real-world-scenarios.test.ts +0 -224
  376. package/src/__tests__/ui/hooks/url-resolution.test.ts +0 -129
  377. package/src/__tests__/ui/hooks/useAuthFetch-separation.test.ts +0 -69
  378. package/src/__tests__/ui/hooks/useAuthFetch.test.ts +0 -70
  379. package/src/__tests__/ui/hooks/useOxyFollow.test.tsx +0 -92
  380. package/src/__tests__/ui/screens/AccountSettingsScreen.test.tsx +0 -112
  381. package/src/__tests__/ui/store/setupOxyStore.test.ts +0 -50
  382. package/src/__tests__/validate-structure.js +0 -91
  383. package/src/__tests__/validation.js +0 -42
  384. package/src/types/react-redux.d.ts +0 -5
  385. package/src/ui/components/bottomSheet/index.tsx +0 -14
  386. package/src/ui/hooks/useAuthFetch.ts +0 -238
  387. package/src/ui/hooks/useOxyFollow.ts +0 -188
  388. package/src/ui/screens/BillingManagementScreen.tsx +0 -589
  389. package/src/ui/store/index.ts +0 -36
  390. package/src/ui/store/setupOxyStore.ts +0 -58
  391. package/src/ui/store/slices/authSlice.ts +0 -43
  392. package/src/ui/store/slices/followSlice.ts +0 -207
  393. package/src/ui/store/slices/index.ts +0 -31
  394. package/src/ui/store/slices/types.ts +0 -33
  395. package/src/ui/styles/shadows.ts +0 -112
  396. package/src/utils/polyfills.ts +0 -34
@@ -1,112 +0,0 @@
1
- import React from 'react';
2
- import { render, fireEvent, waitFor } from '@testing-library/react-native';
3
- import AccountSettingsScreen from '../../../ui/screens/AccountSettingsScreen';
4
- import { OxyContextProvider } from '../../../ui/context/OxyContext';
5
- import { OxyServices } from '../../../core';
6
-
7
- // Mock the OxyContext
8
- jest.mock('../../../ui/context/OxyContext', () => ({
9
- useOxy: jest.fn(() => ({
10
- user: {
11
- id: '123',
12
- username: 'testuser',
13
- email: 'test@example.com',
14
- bio: 'Test bio',
15
- avatar: { url: 'https://example.com/avatar.jpg' }
16
- },
17
- oxyServices: {
18
- updateProfile: jest.fn(() => Promise.resolve({
19
- id: '123',
20
- username: 'testuser',
21
- email: 'test@example.com'
22
- }))
23
- },
24
- isLoading: false
25
- })),
26
- OxyContextProvider: ({ children }: { children: React.ReactNode }) => <>{children}</>
27
- }));
28
-
29
- // Mock the Avatar component
30
- jest.mock('../../../ui/components/Avatar', () => 'Avatar');
31
-
32
- describe('AccountSettingsScreen', () => {
33
- const mockOxyServices = {
34
- updateProfile: jest.fn(() => Promise.resolve({
35
- id: '123',
36
- username: 'testuser',
37
- email: 'test@example.com'
38
- }))
39
- } as unknown as OxyServices;
40
-
41
- const defaultProps = {
42
- goBack: jest.fn(),
43
- theme: 'light' as const,
44
- navigate: jest.fn(),
45
- oxyServices: mockOxyServices,
46
- };
47
-
48
- it('renders correctly with default props', () => {
49
- const { getByText, getByTestId } = render(
50
- <AccountSettingsScreen {...defaultProps} />
51
- );
52
-
53
- // Check if the screen title is rendered
54
- expect(getByText('Account Settings')).toBeTruthy();
55
-
56
- // Check if profile form is rendered by default
57
- expect(getByTestId('username-input')).toBeTruthy();
58
- expect(getByTestId('email-input')).toBeTruthy();
59
- expect(getByTestId('bio-input')).toBeTruthy();
60
- });
61
-
62
- it('switches between tabs correctly', async () => {
63
- const { getByText, queryByTestId } = render(
64
- <AccountSettingsScreen {...defaultProps} />
65
- );
66
-
67
- // Initially on profile tab
68
- expect(queryByTestId('username-input')).toBeTruthy();
69
-
70
- // Switch to password tab
71
- fireEvent.press(getByText('Password'));
72
- expect(queryByTestId('current-password-input')).toBeTruthy();
73
- expect(queryByTestId('username-input')).toBeFalsy();
74
-
75
- // Switch to notifications tab
76
- fireEvent.press(getByText('Notifications'));
77
- expect(queryByTestId('email-notifications-switch')).toBeTruthy();
78
- expect(queryByTestId('current-password-input')).toBeFalsy();
79
-
80
- // Switch back to profile tab
81
- fireEvent.press(getByText('Profile'));
82
- expect(queryByTestId('username-input')).toBeTruthy();
83
- expect(queryByTestId('email-notifications-switch')).toBeFalsy();
84
- });
85
-
86
- it('validates profile form inputs', async () => {
87
- const { getByText, getByTestId } = render(
88
- <AccountSettingsScreen {...defaultProps} />
89
- );
90
-
91
- // Clear username (which is required)
92
- fireEvent.changeText(getByTestId('username-input'), '');
93
-
94
- // Try to save with empty username
95
- fireEvent.press(getByTestId('save-profile-button'));
96
-
97
- // Should display error message
98
- await waitFor(() => {
99
- expect(getByText('Username is required')).toBeTruthy();
100
- });
101
- });
102
-
103
- it('opens with the specified activeTab', () => {
104
- const { queryByTestId } = render(
105
- <AccountSettingsScreen {...defaultProps} activeTab="password" />
106
- );
107
-
108
- // Should be on password tab
109
- expect(queryByTestId('current-password-input')).toBeTruthy();
110
- expect(queryByTestId('username-input')).toBeFalsy();
111
- });
112
- });
@@ -1,50 +0,0 @@
1
- import { configureStore } from '@reduxjs/toolkit';
2
- import { setupOxyStore, oxyReducers } from '../../../ui/store/setupOxyStore';
3
- import { authSlice, followSlice } from '../../../ui/store/slices';
4
-
5
- describe('setupOxyStore', () => {
6
- test('should return all Oxy reducers', () => {
7
- const reducers = setupOxyStore();
8
-
9
- expect(reducers).toHaveProperty('auth');
10
- expect(reducers).toHaveProperty('follow');
11
- expect(reducers.auth).toBe(authSlice.reducer);
12
- expect(reducers.follow).toBe(followSlice.reducer);
13
- });
14
-
15
- test('should work with configureStore', () => {
16
- const store = configureStore({
17
- reducer: {
18
- ...setupOxyStore(),
19
- customReducer: (state = { test: true }) => state,
20
- },
21
- });
22
-
23
- const state = store.getState();
24
- expect(state).toHaveProperty('auth');
25
- expect(state).toHaveProperty('follow');
26
- expect(state).toHaveProperty('customReducer');
27
- expect(state.customReducer.test).toBe(true);
28
- });
29
-
30
- test('should support tree-shaking with pick method', () => {
31
- const authOnly = setupOxyStore.pick('auth');
32
- expect(authOnly).toHaveProperty('auth');
33
- expect(authOnly).not.toHaveProperty('follow');
34
-
35
- const followOnly = setupOxyStore.pick('follow');
36
- expect(followOnly).toHaveProperty('follow');
37
- expect(followOnly).not.toHaveProperty('auth');
38
-
39
- const both = setupOxyStore.pick('auth', 'follow');
40
- expect(both).toHaveProperty('auth');
41
- expect(both).toHaveProperty('follow');
42
- });
43
-
44
- test('should export individual reducers', () => {
45
- expect(oxyReducers).toHaveProperty('auth');
46
- expect(oxyReducers).toHaveProperty('follow');
47
- expect(oxyReducers.auth).toBe(authSlice.reducer);
48
- expect(oxyReducers.follow).toBe(followSlice.reducer);
49
- });
50
- });
@@ -1,91 +0,0 @@
1
- /**
2
- * Simple file structure validation for the new Redux architecture
3
- */
4
-
5
- const fs = require('fs');
6
- const path = require('path');
7
-
8
- const requiredFiles = [
9
- 'src/ui/store/setupOxyStore.ts',
10
- 'src/ui/store/slices/authSlice.ts',
11
- 'src/ui/store/slices/followSlice.ts',
12
- 'src/ui/store/slices/types.ts',
13
- 'src/ui/store/slices/index.ts',
14
- 'src/ui/hooks/useOxyFollow.ts',
15
- 'docs/redux-integration.md',
16
- 'docs/migration-guide-redux.md',
17
- ];
18
-
19
- const requiredExports = [
20
- 'setupOxyStore',
21
- 'authSlice',
22
- 'followSlice',
23
- 'authReducer',
24
- 'followReducer',
25
- 'useOxyFollow',
26
- ];
27
-
28
- console.log('🔍 Validating new Redux architecture...\n');
29
-
30
- // Check required files exist
31
- let filesValid = true;
32
- for (const file of requiredFiles) {
33
- const fullPath = path.join(__dirname, '..', '..', file);
34
- if (fs.existsSync(fullPath)) {
35
- console.log(`✅ ${file}`);
36
- } else {
37
- console.log(`❌ ${file} - MISSING`);
38
- filesValid = false;
39
- }
40
- }
41
-
42
- // Check key exports in files
43
- const setupOxyStoreFile = path.join(__dirname, '..', 'ui', 'store', 'setupOxyStore.ts');
44
- if (fs.existsSync(setupOxyStoreFile)) {
45
- const content = fs.readFileSync(setupOxyStoreFile, 'utf8');
46
- if (content.includes('export function setupOxyStore')) {
47
- console.log('✅ setupOxyStore function exported');
48
- } else {
49
- console.log('❌ setupOxyStore function not found');
50
- filesValid = false;
51
- }
52
- }
53
-
54
- const indexFile = path.join(__dirname, '..', 'ui', 'index.ts');
55
- if (fs.existsSync(indexFile)) {
56
- const content = fs.readFileSync(indexFile, 'utf8');
57
- const exportsFound = requiredExports.filter(exp => content.includes(exp));
58
- console.log(`✅ Exports found in ui/index.ts: ${exportsFound.join(', ')}`);
59
-
60
- if (exportsFound.length < requiredExports.length) {
61
- const missing = requiredExports.filter(exp => !exportsFound.includes(exp));
62
- console.log(`⚠️ Missing exports: ${missing.join(', ')}`);
63
- }
64
- }
65
-
66
- // Check main index file
67
- const mainIndexFile = path.join(__dirname, '..', 'index.ts');
68
- if (fs.existsSync(mainIndexFile)) {
69
- const content = fs.readFileSync(mainIndexFile, 'utf8');
70
- if (content.includes('setupOxyStore')) {
71
- console.log('✅ setupOxyStore exported from main index');
72
- } else {
73
- console.log('❌ setupOxyStore not exported from main index');
74
- filesValid = false;
75
- }
76
- }
77
-
78
- console.log('\n' + '='.repeat(50));
79
- if (filesValid) {
80
- console.log('🎉 All validations passed! New Redux architecture is properly implemented.');
81
- console.log('\nKey features:');
82
- console.log('- ✅ Framework-agnostic Redux integration');
83
- console.log('- ✅ Tree-shakable with setupOxyStore.pick()');
84
- console.log('- ✅ Individual slice exports');
85
- console.log('- ✅ External store support');
86
- console.log('- ✅ Backward compatibility');
87
- console.log('- ✅ Comprehensive documentation');
88
- } else {
89
- console.log('❌ Some validations failed. Please check the missing files/exports.');
90
- process.exit(1);
91
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * Simple validation test for the new Redux architecture
3
- * This test can be run to ensure the refactoring works correctly
4
- */
5
-
6
- import { configureStore } from '@reduxjs/toolkit';
7
-
8
- // Test that setupOxyStore can be imported and used
9
- try {
10
- const { setupOxyStore } = require('../ui/store/setupOxyStore');
11
-
12
- console.log('✅ setupOxyStore imported successfully');
13
-
14
- // Test basic usage
15
- const reducers = setupOxyStore();
16
- console.log('✅ setupOxyStore() returns reducers:', Object.keys(reducers));
17
-
18
- // Test tree-shaking
19
- const authOnly = setupOxyStore.pick('auth');
20
- console.log('✅ Tree-shaking works:', Object.keys(authOnly));
21
-
22
- // Test with configureStore
23
- const store = configureStore({
24
- reducer: {
25
- ...setupOxyStore(),
26
- custom: (state = { test: true }) => state,
27
- },
28
- });
29
-
30
- const state = store.getState();
31
- console.log('✅ Store integration works:', Object.keys(state));
32
-
33
- // Test individual exports
34
- const { authSlice, followSlice } = require('../ui/store/slices');
35
- console.log('✅ Individual slices exported:', authSlice.name, followSlice.name);
36
-
37
- console.log('\n🎉 All tests passed! The new Redux architecture is working correctly.');
38
-
39
- } catch (error) {
40
- console.error('❌ Test failed:', error);
41
- process.exit(1);
42
- }
@@ -1,5 +0,0 @@
1
- declare module 'react-redux' {
2
- export const Provider: any;
3
- export function useDispatch(): any;
4
- export function useSelector(fn: any): any;
5
- }
@@ -1,14 +0,0 @@
1
- // Re-export bottom sheet components from @gorhom/bottom-sheet
2
- export {
3
- BottomSheetModal,
4
- BottomSheetBackdrop,
5
- BottomSheetModalProvider,
6
- BottomSheetView,
7
- BottomSheetScrollView,
8
- } from '@gorhom/bottom-sheet';
9
-
10
- export type {
11
- BottomSheetModalProps,
12
- BottomSheetBackdropProps,
13
- } from '@gorhom/bottom-sheet';
14
- export type { BottomSheetModalMethods as BottomSheetModalRef } from '@gorhom/bottom-sheet/lib/typescript/types';
@@ -1,238 +0,0 @@
1
- /**
2
- * Zero Config Authenticated Fetch Hook
3
- *
4
- * Simple hook that provides fetch-like API with automatic authentication
5
- * Leverages the existing useOxy hook and OxyProvider infrastructure
6
- *
7
- * Usage:
8
- * const authFetch = useAuthFetch();
9
- * const response = await authFetch('/api/protected');
10
- * const data = await authFetch.get('/api/users');
11
- */
12
-
13
- import { useCallback } from 'react';
14
- import { useOxy } from '../context/OxyContext';
15
-
16
- export interface AuthFetchOptions extends Omit<RequestInit, 'body'> {
17
- body?: any; // Allow any type for body, we'll JSON.stringify if needed
18
- }
19
-
20
- export interface AuthFetchAPI {
21
- // Main fetch function (drop-in replacement)
22
- (input: RequestInfo | URL, init?: AuthFetchOptions): Promise<Response>;
23
-
24
- // Convenience methods for JSON APIs
25
- get: (endpoint: string, options?: AuthFetchOptions) => Promise<any>;
26
- post: (endpoint: string, data?: any, options?: AuthFetchOptions) => Promise<any>;
27
- put: (endpoint: string, data?: any, options?: AuthFetchOptions) => Promise<any>;
28
- delete: (endpoint: string, options?: AuthFetchOptions) => Promise<any>;
29
-
30
- // Access to auth state and methods
31
- isAuthenticated: boolean;
32
- user: any;
33
- login: (username: string, password: string) => Promise<any>;
34
- logout: () => Promise<void>;
35
- signUp: (username: string, email: string, password: string) => Promise<any>;
36
-
37
- // API configuration
38
- setApiUrl: (url: string) => void;
39
- }
40
-
41
- /**
42
- * Hook that provides authenticated fetch functionality
43
- * Uses the existing OxyServices instance from useOxy context
44
- */
45
- export function useAuthFetch(): AuthFetchAPI {
46
- const { oxyServices, isAuthenticated, user, login, logout, signUp, activeSessionId, setApiUrl, getAppBaseURL } = useOxy();
47
-
48
- // Validate that we have the required dependencies
49
- if (!oxyServices) {
50
- throw new Error('useAuthFetch requires OxyServices to be initialized. Make sure your app is wrapped with OxyProvider.');
51
- }
52
-
53
- // Main fetch function with automatic auth headers
54
- const authFetch = useCallback(async (input: RequestInfo | URL, init?: AuthFetchOptions): Promise<Response> => {
55
- if (!oxyServices) {
56
- throw new Error('OxyServices not initialized. Make sure to wrap your app in OxyProvider.');
57
- }
58
-
59
- const url = resolveURL(input, getAppBaseURL());
60
- const options = await addAuthHeaders(init, oxyServices, activeSessionId || undefined, isAuthenticated);
61
-
62
- try {
63
- let response = await fetch(url, options);
64
-
65
- // Handle token expiry and automatic refresh
66
- if (response.status === 401 && isAuthenticated) {
67
- // Try to refresh token if we have refresh capability
68
- if (oxyServices.refreshTokens) {
69
- try {
70
- await oxyServices.refreshTokens();
71
- const retryOptions = await addAuthHeaders(init, oxyServices, activeSessionId || undefined, isAuthenticated);
72
- response = await fetch(url, retryOptions);
73
- } catch (refreshError) {
74
- // Refresh failed, throw authentication error
75
- const error = new Error('Authentication expired. Please login again.') as any;
76
- error.status = 401;
77
- error.code = 'AUTH_EXPIRED';
78
- throw error;
79
- }
80
- }
81
- }
82
-
83
- return response;
84
- } catch (error) {
85
- // Re-throw with additional context if needed
86
- if (error instanceof Error) {
87
- throw error;
88
- }
89
- throw new Error('Request failed');
90
- }
91
- }, [oxyServices, activeSessionId, isAuthenticated, getAppBaseURL]);
92
-
93
- // JSON convenience methods
94
- const get = useCallback(async (endpoint: string, options?: AuthFetchOptions) => {
95
- const response = await authFetch(endpoint, { ...options, method: 'GET' });
96
- return handleJsonResponse(response);
97
- }, [authFetch]);
98
-
99
- const post = useCallback(async (endpoint: string, data?: any, options?: AuthFetchOptions) => {
100
- const response = await authFetch(endpoint, {
101
- ...options,
102
- method: 'POST',
103
- headers: {
104
- 'Content-Type': 'application/json',
105
- ...options?.headers
106
- },
107
- body: data ? JSON.stringify(data) : undefined
108
- });
109
- return handleJsonResponse(response);
110
- }, [authFetch]);
111
-
112
- const put = useCallback(async (endpoint: string, data?: any, options?: AuthFetchOptions) => {
113
- const response = await authFetch(endpoint, {
114
- ...options,
115
- method: 'PUT',
116
- headers: {
117
- 'Content-Type': 'application/json',
118
- ...options?.headers
119
- },
120
- body: data ? JSON.stringify(data) : undefined
121
- });
122
- return handleJsonResponse(response);
123
- }, [authFetch]);
124
-
125
- const del = useCallback(async (endpoint: string, options?: AuthFetchOptions) => {
126
- const response = await authFetch(endpoint, { ...options, method: 'DELETE' });
127
- return handleJsonResponse(response);
128
- }, [authFetch]);
129
-
130
- // Attach convenience methods and auth state to the main function
131
- const fetchWithMethods = authFetch as AuthFetchAPI;
132
- fetchWithMethods.get = get;
133
- fetchWithMethods.post = post;
134
- fetchWithMethods.put = put;
135
- fetchWithMethods.delete = del;
136
- fetchWithMethods.isAuthenticated = isAuthenticated;
137
- fetchWithMethods.user = user;
138
- fetchWithMethods.login = login;
139
- fetchWithMethods.logout = logout;
140
- fetchWithMethods.signUp = signUp;
141
- fetchWithMethods.setApiUrl = setApiUrl;
142
-
143
- return fetchWithMethods;
144
- }
145
-
146
- /**
147
- * Helper functions
148
- */
149
-
150
- function resolveURL(input: RequestInfo | URL, baseURL: string): string {
151
- if (!baseURL) {
152
- throw new Error('Base URL not configured. Please provide a baseURL in OxyServices configuration.');
153
- }
154
-
155
- const url = input.toString();
156
-
157
- // If it's already a full URL (http/https), return as is
158
- if (url.startsWith('http://') || url.startsWith('https://')) {
159
- return url;
160
- }
161
-
162
- // Normalize base URL (remove trailing slash)
163
- const normalizedBaseURL = baseURL.replace(/\/$/, '');
164
-
165
- // If URL starts with /, it's relative to base URL
166
- if (url.startsWith('/')) {
167
- return `${normalizedBaseURL}${url}`;
168
- }
169
-
170
- // Otherwise, append to base URL with /
171
- return `${normalizedBaseURL}/${url}`;
172
- }
173
-
174
- async function addAuthHeaders(init?: AuthFetchOptions, oxyServices?: any, activeSessionId?: string, isAuthenticated?: boolean): Promise<RequestInit> {
175
- const headers = new Headers(init?.headers);
176
-
177
- // Add auth header if user is authenticated
178
- if (isAuthenticated && oxyServices && !headers.has('Authorization')) {
179
- try {
180
- // First try to get regular JWT access token
181
- let accessToken = oxyServices.getAccessToken?.();
182
-
183
- // If no JWT token but we have a secure session, try to get token from session
184
- if (!accessToken && activeSessionId) {
185
- try {
186
- const tokenData = await oxyServices.getTokenBySession(activeSessionId);
187
- accessToken = tokenData.accessToken;
188
- } catch (error) {
189
- // Silent fail - will attempt request without token
190
- }
191
- }
192
-
193
- if (accessToken) {
194
- headers.set('Authorization', `Bearer ${accessToken}`);
195
- }
196
- } catch (error) {
197
- // Silent fail - will attempt request without token
198
- }
199
- }
200
-
201
- const body = init?.body;
202
- const processedBody = body && typeof body === 'object' && !(body instanceof FormData) && !(body instanceof URLSearchParams)
203
- ? JSON.stringify(body)
204
- : body;
205
-
206
- return {
207
- ...init,
208
- headers,
209
- body: processedBody
210
- };
211
- }
212
-
213
- async function handleJsonResponse(response: Response): Promise<any> {
214
- if (!response.ok) {
215
- let errorMessage = `HTTP ${response.status}: ${response.statusText}`;
216
-
217
- try {
218
- const errorData = await response.json();
219
- errorMessage = errorData.message || errorData.error || errorMessage;
220
- } catch {
221
- // Ignore JSON parsing errors
222
- }
223
-
224
- const error = new Error(errorMessage) as any;
225
- error.status = response.status;
226
- error.response = response;
227
- throw error;
228
- }
229
-
230
- try {
231
- return await response.json();
232
- } catch {
233
- // If response isn't JSON, return the response itself
234
- return response;
235
- }
236
- }
237
-
238
- export default useAuthFetch;