@oxyhq/services 5.5.9 → 5.6.0

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 (393) 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 +26 -36
  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 +6 -14
  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 +31 -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 +26 -36
  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 +7 -15
  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 +27 -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/secureSession.d.ts +0 -1
  179. package/lib/typescript/models/secureSession.d.ts.map +1 -1
  180. package/lib/typescript/node/index.d.ts +0 -1
  181. package/lib/typescript/node/index.d.ts.map +1 -1
  182. package/lib/typescript/ui/components/FollowButton.d.ts +1 -77
  183. package/lib/typescript/ui/components/FollowButton.d.ts.map +1 -1
  184. package/lib/typescript/ui/components/OxyPayButton.d.ts +29 -0
  185. package/lib/typescript/ui/components/OxyPayButton.d.ts.map +1 -0
  186. package/lib/typescript/ui/components/OxyProvider.d.ts.map +1 -1
  187. package/lib/typescript/ui/components/OxySignInButton.d.ts.map +1 -1
  188. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts +8 -0
  189. package/lib/typescript/ui/components/icon/FAIRWalletIcon.d.ts.map +1 -0
  190. package/lib/typescript/ui/components/icon/index.d.ts +1 -0
  191. package/lib/typescript/ui/components/icon/index.d.ts.map +1 -1
  192. package/lib/typescript/ui/components/index.d.ts +1 -0
  193. package/lib/typescript/ui/components/index.d.ts.map +1 -1
  194. package/lib/typescript/ui/components/internal/GroupedPillButtons.d.ts.map +1 -1
  195. package/lib/typescript/ui/components/internal/PinInput.d.ts +12 -0
  196. package/lib/typescript/ui/components/internal/PinInput.d.ts.map +1 -0
  197. package/lib/typescript/ui/components/internal/TextField.d.ts +1 -0
  198. package/lib/typescript/ui/components/internal/TextField.d.ts.map +1 -1
  199. package/lib/typescript/ui/context/OxyContext.d.ts +0 -2
  200. package/lib/typescript/ui/context/OxyContext.d.ts.map +1 -1
  201. package/lib/typescript/ui/hooks/index.d.ts +1 -2
  202. package/lib/typescript/ui/hooks/index.d.ts.map +1 -1
  203. package/lib/typescript/ui/hooks/useFollow.d.ts +14 -15
  204. package/lib/typescript/ui/hooks/useFollow.d.ts.map +1 -1
  205. package/lib/typescript/ui/hooks/useSessionSocket.d.ts +11 -0
  206. package/lib/typescript/ui/hooks/useSessionSocket.d.ts.map +1 -0
  207. package/lib/typescript/ui/index.d.ts +2 -5
  208. package/lib/typescript/ui/index.d.ts.map +1 -1
  209. package/lib/typescript/ui/navigation/OxyRouter.d.ts.map +1 -1
  210. package/lib/typescript/ui/navigation/types.d.ts +5 -23
  211. package/lib/typescript/ui/navigation/types.d.ts.map +1 -1
  212. package/lib/typescript/ui/screens/AccountCenterScreen.d.ts.map +1 -1
  213. package/lib/typescript/ui/screens/AccountOverviewScreen.d.ts.map +1 -1
  214. package/lib/typescript/ui/screens/AccountSettingsScreen.d.ts.map +1 -1
  215. package/lib/typescript/ui/screens/AccountSwitcherScreen.d.ts.map +1 -1
  216. package/lib/typescript/ui/screens/AppInfoScreen.d.ts.map +1 -1
  217. package/lib/typescript/ui/screens/FeedbackScreen.d.ts.map +1 -1
  218. package/lib/typescript/ui/screens/FileManagementScreen.d.ts.map +1 -1
  219. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts +27 -0
  220. package/lib/typescript/ui/screens/PaymentGatewayScreen.d.ts.map +1 -0
  221. package/lib/typescript/ui/screens/PremiumSubscriptionScreen.d.ts.map +1 -1
  222. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts +8 -0
  223. package/lib/typescript/ui/screens/RecoverAccountScreen.d.ts.map +1 -0
  224. package/lib/typescript/ui/screens/SessionManagementScreen.d.ts.map +1 -1
  225. package/lib/typescript/ui/screens/SignInScreen.d.ts.map +1 -1
  226. package/lib/typescript/ui/screens/SignUpScreen.d.ts.map +1 -1
  227. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts +27 -0
  228. package/lib/typescript/ui/screens/internal/SignInPasswordStep.d.ts.map +1 -0
  229. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts +26 -0
  230. package/lib/typescript/ui/screens/internal/SignInUsernameStep.d.ts.map +1 -0
  231. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts +20 -0
  232. package/lib/typescript/ui/screens/internal/SignUpIdentityStep.d.ts.map +1 -0
  233. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts +24 -0
  234. package/lib/typescript/ui/screens/internal/SignUpSecurityStep.d.ts.map +1 -0
  235. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts +15 -0
  236. package/lib/typescript/ui/screens/internal/SignUpSummaryStep.d.ts.map +1 -0
  237. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts +13 -0
  238. package/lib/typescript/ui/screens/internal/SignUpWelcomeStep.d.ts.map +1 -0
  239. package/lib/typescript/ui/screens/karma/KarmaRewardsScreen.d.ts.map +1 -1
  240. package/lib/typescript/ui/stores/authStore.d.ts +14 -0
  241. package/lib/typescript/ui/stores/authStore.d.ts.map +1 -0
  242. package/lib/typescript/ui/stores/followStore.d.ts +15 -0
  243. package/lib/typescript/ui/stores/followStore.d.ts.map +1 -0
  244. package/lib/typescript/ui/styles/index.d.ts +0 -1
  245. package/lib/typescript/ui/styles/index.d.ts.map +1 -1
  246. package/lib/typescript/ui/utils/confirmAction.d.ts +7 -0
  247. package/lib/typescript/ui/utils/confirmAction.d.ts.map +1 -0
  248. package/package.json +12 -7
  249. package/src/core/index.ts +78 -88
  250. package/src/index.ts +8 -45
  251. package/src/models/secureSession.ts +1 -2
  252. package/src/node/index.ts +0 -3
  253. package/src/ui/components/FollowButton.tsx +100 -322
  254. package/src/ui/components/OxyPayButton.tsx +133 -0
  255. package/src/ui/components/OxyProvider.tsx +39 -201
  256. package/src/ui/components/OxySignInButton.tsx +13 -2
  257. package/src/ui/components/icon/FAIRWalletIcon.tsx +49 -0
  258. package/src/ui/components/icon/index.ts +1 -0
  259. package/src/ui/components/index.ts +1 -0
  260. package/src/ui/components/internal/GroupedPillButtons.tsx +12 -8
  261. package/src/ui/components/internal/PinInput.tsx +102 -0
  262. package/src/ui/components/internal/TextField.tsx +9 -0
  263. package/src/ui/context/OxyContext.tsx +26 -40
  264. package/src/ui/hooks/index.ts +1 -2
  265. package/src/ui/hooks/useFollow.ts +58 -129
  266. package/src/ui/hooks/useSessionSocket.ts +50 -0
  267. package/src/ui/index.ts +2 -37
  268. package/src/ui/navigation/OxyRouter.tsx +47 -63
  269. package/src/ui/navigation/types.ts +5 -26
  270. package/src/ui/screens/AccountCenterScreen.tsx +12 -21
  271. package/src/ui/screens/AccountOverviewScreen.tsx +6 -30
  272. package/src/ui/screens/AccountSettingsScreen.tsx +7 -22
  273. package/src/ui/screens/AccountSwitcherScreen.tsx +46 -88
  274. package/src/ui/screens/AppInfoScreen.tsx +27 -47
  275. package/src/ui/screens/FeedbackScreen.tsx +34 -19
  276. package/src/ui/screens/FileManagementScreen.tsx +293 -321
  277. package/src/ui/screens/PaymentGatewayScreen.tsx +1315 -0
  278. package/src/ui/screens/PremiumSubscriptionScreen.tsx +109 -124
  279. package/src/ui/screens/RecoverAccountScreen.tsx +260 -0
  280. package/src/ui/screens/SessionManagementScreen.tsx +65 -137
  281. package/src/ui/screens/SignInScreen.tsx +89 -283
  282. package/src/ui/screens/SignUpScreen.tsx +138 -291
  283. package/src/ui/screens/internal/SignInPasswordStep.tsx +179 -0
  284. package/src/ui/screens/internal/SignInUsernameStep.tsx +139 -0
  285. package/src/ui/screens/internal/SignUpIdentityStep.tsx +114 -0
  286. package/src/ui/screens/internal/SignUpSecurityStep.tsx +132 -0
  287. package/src/ui/screens/internal/SignUpSummaryStep.tsx +66 -0
  288. package/src/ui/screens/internal/SignUpWelcomeStep.tsx +52 -0
  289. package/src/ui/screens/karma/KarmaRewardsScreen.tsx +13 -3
  290. package/src/ui/stores/authStore.ts +24 -0
  291. package/src/ui/stores/followStore.ts +80 -0
  292. package/src/ui/styles/index.ts +0 -1
  293. package/src/ui/utils/confirmAction.ts +23 -0
  294. package/lib/commonjs/ui/components/bottomSheet/index.js +0 -37
  295. package/lib/commonjs/ui/components/bottomSheet/index.js.map +0 -1
  296. package/lib/commonjs/ui/hooks/useAuthFetch.js +0 -217
  297. package/lib/commonjs/ui/hooks/useAuthFetch.js.map +0 -1
  298. package/lib/commonjs/ui/hooks/useOxyFollow.js +0 -190
  299. package/lib/commonjs/ui/hooks/useOxyFollow.js.map +0 -1
  300. package/lib/commonjs/ui/screens/BillingManagementScreen.js +0 -636
  301. package/lib/commonjs/ui/screens/BillingManagementScreen.js.map +0 -1
  302. package/lib/commonjs/ui/store/index.js +0 -67
  303. package/lib/commonjs/ui/store/index.js.map +0 -1
  304. package/lib/commonjs/ui/store/setupOxyStore.js +0 -63
  305. package/lib/commonjs/ui/store/setupOxyStore.js.map +0 -1
  306. package/lib/commonjs/ui/store/slices/authSlice.js +0 -56
  307. package/lib/commonjs/ui/store/slices/authSlice.js.map +0 -1
  308. package/lib/commonjs/ui/store/slices/followSlice.js +0 -238
  309. package/lib/commonjs/ui/store/slices/followSlice.js.map +0 -1
  310. package/lib/commonjs/ui/store/slices/index.js +0 -129
  311. package/lib/commonjs/ui/store/slices/index.js.map +0 -1
  312. package/lib/commonjs/ui/store/slices/types.js +0 -19
  313. package/lib/commonjs/ui/store/slices/types.js.map +0 -1
  314. package/lib/commonjs/ui/styles/shadows.js +0 -123
  315. package/lib/commonjs/ui/styles/shadows.js.map +0 -1
  316. package/lib/commonjs/utils/polyfills.js +0 -42
  317. package/lib/commonjs/utils/polyfills.js.map +0 -1
  318. package/lib/module/ui/components/bottomSheet/index.js +0 -5
  319. package/lib/module/ui/components/bottomSheet/index.js.map +0 -1
  320. package/lib/module/ui/hooks/useAuthFetch.js +0 -212
  321. package/lib/module/ui/hooks/useAuthFetch.js.map +0 -1
  322. package/lib/module/ui/hooks/useOxyFollow.js +0 -186
  323. package/lib/module/ui/hooks/useOxyFollow.js.map +0 -1
  324. package/lib/module/ui/screens/BillingManagementScreen.js +0 -631
  325. package/lib/module/ui/screens/BillingManagementScreen.js.map +0 -1
  326. package/lib/module/ui/store/index.js +0 -33
  327. package/lib/module/ui/store/index.js.map +0 -1
  328. package/lib/module/ui/store/setupOxyStore.js +0 -59
  329. package/lib/module/ui/store/setupOxyStore.js.map +0 -1
  330. package/lib/module/ui/store/slices/authSlice.js +0 -48
  331. package/lib/module/ui/store/slices/authSlice.js.map +0 -1
  332. package/lib/module/ui/store/slices/followSlice.js +0 -232
  333. package/lib/module/ui/store/slices/followSlice.js.map +0 -1
  334. package/lib/module/ui/store/slices/index.js +0 -11
  335. package/lib/module/ui/store/slices/index.js.map +0 -1
  336. package/lib/module/ui/store/slices/types.js +0 -15
  337. package/lib/module/ui/store/slices/types.js.map +0 -1
  338. package/lib/module/ui/styles/shadows.js +0 -119
  339. package/lib/module/ui/styles/shadows.js.map +0 -1
  340. package/lib/module/utils/polyfills.js +0 -36
  341. package/lib/module/utils/polyfills.js.map +0 -1
  342. package/lib/typescript/types/react-redux.d.ts +0 -5
  343. package/lib/typescript/ui/components/bottomSheet/index.d.ts +0 -4
  344. package/lib/typescript/ui/components/bottomSheet/index.d.ts.map +0 -1
  345. package/lib/typescript/ui/hooks/useAuthFetch.d.ts +0 -34
  346. package/lib/typescript/ui/hooks/useAuthFetch.d.ts.map +0 -1
  347. package/lib/typescript/ui/hooks/useOxyFollow.d.ts +0 -81
  348. package/lib/typescript/ui/hooks/useOxyFollow.d.ts.map +0 -1
  349. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts +0 -5
  350. package/lib/typescript/ui/screens/BillingManagementScreen.d.ts.map +0 -1
  351. package/lib/typescript/ui/store/index.d.ts +0 -27
  352. package/lib/typescript/ui/store/index.d.ts.map +0 -1
  353. package/lib/typescript/ui/store/setupOxyStore.d.ts +0 -29
  354. package/lib/typescript/ui/store/setupOxyStore.d.ts.map +0 -1
  355. package/lib/typescript/ui/store/slices/authSlice.d.ts +0 -32
  356. package/lib/typescript/ui/store/slices/authSlice.d.ts.map +0 -1
  357. package/lib/typescript/ui/store/slices/followSlice.d.ts +0 -120
  358. package/lib/typescript/ui/store/slices/followSlice.d.ts.map +0 -1
  359. package/lib/typescript/ui/store/slices/index.d.ts +0 -9
  360. package/lib/typescript/ui/store/slices/index.d.ts.map +0 -1
  361. package/lib/typescript/ui/store/slices/types.d.ts +0 -16
  362. package/lib/typescript/ui/store/slices/types.d.ts.map +0 -1
  363. package/lib/typescript/ui/styles/shadows.d.ts +0 -233
  364. package/lib/typescript/ui/styles/shadows.d.ts.map +0 -1
  365. package/lib/typescript/utils/polyfills.d.ts +0 -6
  366. package/lib/typescript/utils/polyfills.d.ts.map +0 -1
  367. package/src/__tests__/backend-middleware.test.ts +0 -209
  368. package/src/__tests__/polyfills.test.ts +0 -30
  369. package/src/__tests__/setup.ts +0 -43
  370. package/src/__tests__/ui/hooks/authfetch-integration.test.ts +0 -197
  371. package/src/__tests__/ui/hooks/backward-compatibility.test.ts +0 -159
  372. package/src/__tests__/ui/hooks/real-world-scenarios.test.ts +0 -224
  373. package/src/__tests__/ui/hooks/url-resolution.test.ts +0 -129
  374. package/src/__tests__/ui/hooks/useAuthFetch-separation.test.ts +0 -69
  375. package/src/__tests__/ui/hooks/useAuthFetch.test.ts +0 -70
  376. package/src/__tests__/ui/hooks/useOxyFollow.test.tsx +0 -92
  377. package/src/__tests__/ui/screens/AccountSettingsScreen.test.tsx +0 -112
  378. package/src/__tests__/ui/store/setupOxyStore.test.ts +0 -50
  379. package/src/__tests__/validate-structure.js +0 -91
  380. package/src/__tests__/validation.js +0 -42
  381. package/src/types/react-redux.d.ts +0 -5
  382. package/src/ui/components/bottomSheet/index.tsx +0 -14
  383. package/src/ui/hooks/useAuthFetch.ts +0 -238
  384. package/src/ui/hooks/useOxyFollow.ts +0 -188
  385. package/src/ui/screens/BillingManagementScreen.tsx +0 -589
  386. package/src/ui/store/index.ts +0 -36
  387. package/src/ui/store/setupOxyStore.ts +0 -58
  388. package/src/ui/store/slices/authSlice.ts +0 -43
  389. package/src/ui/store/slices/followSlice.ts +0 -207
  390. package/src/ui/store/slices/index.ts +0 -31
  391. package/src/ui/store/slices/types.ts +0 -33
  392. package/src/ui/styles/shadows.ts +0 -112
  393. 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;