@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
package/src/index.ts CHANGED
@@ -2,9 +2,6 @@
2
2
  * OxyHQServices Main Export File
3
3
  */
4
4
 
5
- // ------------- Polyfills -------------
6
- import './utils/polyfills';
7
-
8
5
  // ------------- Core Imports -------------
9
6
  import OxyCore from './core';
10
7
  import { OxyServices } from './core';
@@ -18,10 +15,10 @@ import {
18
15
  OxyProvider,
19
16
  OxyContextProvider,
20
17
  useOxy,
21
- useAuthFetch,
22
18
 
23
19
  // Components
24
20
  OxySignInButton,
21
+ OxyPayButton,
25
22
  OxyLogo,
26
23
  Avatar,
27
24
  FollowButton,
@@ -30,9 +27,7 @@ import {
30
27
  useFollow,
31
28
  ProfileScreen,
32
29
  OxyRouter,
33
- store,
34
- type RootState,
35
- type AppDispatch,
30
+ // Remove store, RootState, AppDispatch exports
36
31
  } from './ui';
37
32
 
38
33
  // ------------- Type Imports -------------
@@ -40,8 +35,9 @@ import { OxyContextState, OxyContextProviderProps } from './ui/context/OxyContex
40
35
  import * as Models from './models/interfaces';
41
36
 
42
37
  // ------------- Core Exports -------------
43
- export { OxyCore, OxyServices };
44
- export default OxyServices; // Default export for backward compatibility
38
+ export default OxyCore; // Default export for backward compatibility
39
+ export { OxyServices };
40
+ export * from './core';
45
41
 
46
42
  // ------------- Utility Exports -------------
47
43
  export { DeviceManager } from './utils';
@@ -57,10 +53,10 @@ export {
57
53
  OxyProvider,
58
54
  OxyContextProvider,
59
55
  useOxy,
60
- useAuthFetch,
61
56
 
62
57
  // Components
63
58
  OxySignInButton,
59
+ OxyPayButton,
64
60
  OxyLogo,
65
61
  Avatar,
66
62
  FollowButton,
@@ -69,41 +65,8 @@ export {
69
65
  useFollow,
70
66
  ProfileScreen,
71
67
  OxyRouter,
72
-
73
- // Redux Store - NEW ARCHITECTURE
74
- setupOxyStore,
75
- oxyReducers,
76
- // Individual slices
77
- authSlice,
78
- authActions,
79
- authSelectors,
80
- authReducer,
81
- followSlice,
82
- followActions,
83
- followSelectors,
84
- followThunks,
85
- followReducer,
86
- // Action creators
87
- loginStart,
88
- loginSuccess,
89
- loginFailure,
90
- logout,
91
- setFollowingStatus,
92
- clearFollowError,
93
- resetFollowState,
94
- fetchFollowStatus,
95
- toggleFollowUser,
96
- // Types
97
- type AuthState,
98
- type FollowState,
99
- initialAuthState,
100
- initialFollowState,
101
-
102
- // Legacy exports (deprecated)
103
- store,
104
- type RootState,
105
- type AppDispatch,
106
- } from './ui';
68
+ // Remove store, RootState, AppDispatch exports
69
+ };
107
70
 
108
71
  // ------------- Type Exports -------------
109
72
  export { OxyContextState, OxyContextProviderProps };
@@ -14,7 +14,7 @@ export interface User {
14
14
  name?: {
15
15
  first?: string;
16
16
  last?: string;
17
- full?: string;
17
+ full?: string; // virtual, not stored in DB, returned by API
18
18
  [key: string]: any;
19
19
  };
20
20
  bio?: string;
@@ -23,6 +23,12 @@ export interface User {
23
23
  website?: string;
24
24
  createdAt?: string;
25
25
  updatedAt?: string;
26
+ links?: Array<{
27
+ title?: string;
28
+ description?: string;
29
+ image?: string;
30
+ link: string;
31
+ }>;
26
32
  [key: string]: any;
27
33
  }
28
34
 
@@ -3,9 +3,8 @@ export interface SecureClientSession {
3
3
  deviceId: string;
4
4
  expiresAt: string;
5
5
  lastActive: string;
6
- // Add user info for efficient duplicate detection
6
+ // Only userId for identification, do not store username
7
7
  userId?: string;
8
- username?: string;
9
8
  }
10
9
 
11
10
  export interface SecureStorageKeys {
package/src/node/index.ts CHANGED
@@ -2,9 +2,6 @@
2
2
  * OxyHQServices Node.js Entry Point
3
3
  */
4
4
 
5
- // ------------- Polyfills -------------
6
- import '../utils/polyfills';
7
-
8
5
  // ------------- Core Imports -------------
9
6
  import { OxyServices, OXY_CLOUD_URL } from '../core'; // Adjusted path
10
7
  import { createAuth } from './createAuth';
@@ -17,116 +17,23 @@ import Animated, {
17
17
  Easing,
18
18
  withTiming
19
19
  } from 'react-native-reanimated';
20
- import { useDispatch, useSelector } from 'react-redux';
21
20
  import { useOxy } from '../context/OxyContext';
22
21
  import { fontFamilies } from '../styles/fonts';
23
22
  import { toast } from '../../lib/sonner';
24
- import {
25
- toggleFollowUser,
26
- setFollowingStatus,
27
- clearFollowError,
28
- fetchFollowStatus
29
- } from '../store';
30
- import type { RootState, AppDispatch } from '../store';
23
+ import { useFollow } from '../hooks/useFollow';
31
24
 
32
25
  export interface FollowButtonProps {
33
- /**
34
- * The user ID to follow/unfollow
35
- */
36
26
  userId: string;
37
-
38
- /**
39
- * Initial follow state, if known
40
- * @default false
41
- */
42
27
  initiallyFollowing?: boolean;
43
-
44
- /**
45
- * Button size
46
- * @default 'medium'
47
- */
48
28
  size?: 'small' | 'medium' | 'large';
49
-
50
- /**
51
- * Custom callback when follow/unfollow action happens
52
- */
53
29
  onFollowChange?: (isFollowing: boolean) => void;
54
-
55
- /**
56
- * Additional styles for the button container
57
- */
58
30
  style?: StyleProp<ViewStyle>;
59
-
60
- /**
61
- * Additional styles for the button text
62
- */
63
31
  textStyle?: StyleProp<TextStyle>;
64
-
65
- /**
66
- * Whether to disable the button
67
- * @default false
68
- */
69
32
  disabled?: boolean;
70
-
71
- /**
72
- * Whether to show loading indicator during API calls
73
- * @default true
74
- */
75
33
  showLoadingState?: boolean;
76
-
77
- /**
78
- * Whether to prevent default action and stop event propagation
79
- * Useful when the button is inside links or other pressable containers
80
- * @default true
81
- */
82
34
  preventParentActions?: boolean;
83
-
84
- /**
85
- * Custom onPress handler - if provided, will override default follow/unfollow behavior
86
- * Event object is passed to allow for preventDefault/stopPropagation
87
- */
88
- onPress?: (event: any) => void;
89
35
  }
90
36
 
91
- /**
92
- * An animated follow button with interactive state changes and preventDefault support
93
- * Uses Redux for state management to ensure all buttons with the same user ID stay synchronized
94
- *
95
- * @example
96
- * ```tsx
97
- * // Basic usage
98
- * <FollowButton userId="123" />
99
- *
100
- * // With custom styling
101
- * <FollowButton
102
- * userId="123"
103
- * initiallyFollowing={true}
104
- * size="large"
105
- * style={{ borderRadius: 12 }}
106
- * onFollowChange={(isFollowing) => console.log(`User is now ${isFollowing ? 'followed' : 'unfollowed'}`)}
107
- * />
108
- *
109
- * // Inside a pressable container (prevents parent actions)
110
- * <TouchableOpacity onPress={() => navigateToProfile()}>
111
- * <View>
112
- * <Text>User Profile</Text>
113
- * <FollowButton
114
- * userId="123"
115
- * preventParentActions={true} // Default: true
116
- * />
117
- * </View>
118
- * </TouchableOpacity>
119
- *
120
- * // Custom onPress handler
121
- * <FollowButton
122
- * userId="123"
123
- * onPress={(event) => {
124
- * event.preventDefault(); // Custom preventDefault
125
- * // Custom logic here
126
- * }}
127
- * />
128
- * ```
129
- */
130
37
  const FollowButton: React.FC<FollowButtonProps> = ({
131
38
  userId,
132
39
  initiallyFollowing = false,
@@ -137,270 +44,141 @@ const FollowButton: React.FC<FollowButtonProps> = ({
137
44
  disabled = false,
138
45
  showLoadingState = true,
139
46
  preventParentActions = true,
140
- onPress,
141
47
  }) => {
142
- const dispatch = useDispatch();
143
48
  const { oxyServices, isAuthenticated } = useOxy();
144
-
145
- // Optimized single selector to prevent multiple re-renders
146
- const followState = useSelector((state: RootState) => ({
147
- isFollowing: state.follow.followingUsers[userId] ?? initiallyFollowing ?? false,
148
- isLoading: state.follow.loadingUsers[userId] ?? false,
149
- error: state.follow.errors[userId]
150
- }));
151
-
152
- // Whether the follow status has been loaded from the store
153
- const isStatusKnown = useSelector((state: RootState) =>
154
- Object.prototype.hasOwnProperty.call(state.follow.followingUsers, userId)
155
- );
156
-
157
- const { isFollowing, isLoading, error } = followState;
49
+ const {
50
+ isFollowing,
51
+ isLoading,
52
+ error,
53
+ toggleFollow,
54
+ setFollowStatus,
55
+ fetchStatus,
56
+ clearError,
57
+ } = useFollow(userId);
158
58
 
159
59
  // Animation values
160
60
  const animationProgress = useSharedValue(isFollowing ? 1 : 0);
161
61
  const scale = useSharedValue(1);
162
62
 
163
- // Initialize Redux state with initial value if not already set
63
+ // Initialize Zustand state with initial value if not already set
164
64
  useEffect(() => {
165
- if (userId && !isStatusKnown) {
166
- // Set the initial state regardless of whether initiallyFollowing is defined
167
- const initialState = initiallyFollowing ?? false;
168
- dispatch(setFollowingStatus({ userId, isFollowing: initialState }));
65
+ if (userId && !isFollowing && initiallyFollowing) {
66
+ setFollowStatus?.(initiallyFollowing);
169
67
  }
170
- }, [userId, initiallyFollowing, isStatusKnown, dispatch]);
68
+ // eslint-disable-next-line react-hooks/exhaustive-deps
69
+ }, [userId, initiallyFollowing]);
171
70
 
172
71
  // Fetch latest follow status from backend on mount if authenticated
173
- // This runs separately and will overwrite the initial state with actual data
174
72
  useEffect(() => {
175
73
  if (userId && isAuthenticated) {
176
- dispatch(fetchFollowStatus({ userId, oxyServices }));
74
+ fetchStatus?.();
177
75
  }
178
- }, [userId, oxyServices, isAuthenticated, dispatch]);
76
+ // eslint-disable-next-line react-hooks/exhaustive-deps
77
+ }, [userId, oxyServices, isAuthenticated]);
179
78
 
180
- // Update the animation value when isFollowing changes
79
+ // Animate button on follow/unfollow
181
80
  useEffect(() => {
182
- animationProgress.value = withTiming(isFollowing ? 1 : 0, {
183
- duration: 300,
184
- easing: Easing.bezier(0.25, 0.1, 0.25, 1),
185
- });
186
- }, [isFollowing]); // Removed animationProgress from dependencies as it's stable
187
-
188
- // Show error toast when error occurs
189
- useEffect(() => {
190
- if (error) {
191
- toast.error(error);
192
- dispatch(clearFollowError(userId));
81
+ animationProgress.value = withTiming(isFollowing ? 1 : 0, { duration: 300, easing: Easing.inOut(Easing.ease) });
82
+ }, [isFollowing, animationProgress]);
83
+
84
+ // Button press handler
85
+ const handlePress = useCallback(async (event: any) => {
86
+ if (preventParentActions && event && event.preventDefault) {
87
+ event.preventDefault();
88
+ event.stopPropagation();
193
89
  }
194
- }, [error]); // Removed userId and dispatch to prevent unnecessary runs
195
-
196
- // The button press handler with preventDefault support - memoized to prevent recreation
197
- const handlePress = useCallback(async (event?: any) => {
198
- // Prevent parent actions if enabled (e.g., if inside a link or pressable container)
199
- if (preventParentActions && event) {
200
- // For React Native Web compatibility
201
- if (Platform.OS === 'web' && event.preventDefault) {
202
- event.preventDefault();
203
- }
204
-
205
- // Stop event propagation to prevent parent TouchableOpacity/Pressable actions
206
- if (event.stopPropagation) {
207
- event.stopPropagation();
208
- }
209
-
210
- // For React Native, prevent gesture bubbling
211
- if (event.nativeEvent && event.nativeEvent.stopPropagation) {
212
- event.nativeEvent.stopPropagation();
213
- }
214
- }
215
-
216
- // If custom onPress is provided, use it instead of default behavior
217
- if (onPress) {
218
- onPress(event);
219
- return;
220
- }
221
-
222
- if (disabled || followState.isLoading) return;
223
-
224
- // Check if user is authenticated - show toast instead of disabling
225
- if (!isAuthenticated) {
226
- toast.error('Please sign in to follow users');
227
- return;
228
- }
229
-
230
- // Touch feedback animation
231
- scale.value = withSpring(0.95, { damping: 10 }, () => {
232
- scale.value = withSpring(1);
233
- });
234
-
90
+ if (disabled || isLoading) return;
235
91
  try {
236
- // Dispatch the async action to follow/unfollow
237
- const result = await dispatch(toggleFollowUser({
238
- userId,
239
- oxyServices,
240
- isCurrentlyFollowing: followState.isFollowing
241
- })).unwrap();
242
-
243
- // Call the callback if provided
244
- if (onFollowChange) {
245
- onFollowChange(result.isFollowing);
246
- }
247
-
248
- // Show success toast
249
- toast.success(result.isFollowing ? 'Following user!' : 'Unfollowed user');
250
- } catch (error: any) {
251
- console.error('Follow action failed:', error);
252
-
253
- // Show user-friendly error messages for state mismatches
254
- const errorMessage = error?.toString() || 'Unknown error';
255
- if (errorMessage.includes('State synced with backend')) {
256
- toast.info('Status updated. Please try again.');
257
- } else {
258
- toast.error(`Failed to ${followState.isFollowing ? 'unfollow' : 'follow'} user. Please try again.`);
259
- }
260
- }
261
- }, [
262
- preventParentActions,
263
- onPress,
264
- disabled,
265
- followState.isLoading,
266
- followState.isFollowing,
267
- isAuthenticated,
268
- scale,
269
- dispatch,
270
- userId,
271
- oxyServices,
272
- onFollowChange
273
- ]);
274
-
275
- // Animated styles for the button
276
- const animatedButtonStyle = useAnimatedStyle(() => {
277
- const backgroundColor = interpolateColor(
278
- animationProgress.value,
279
- [0, 1],
280
- ['#d169e5', '#FFFFFF']
281
- );
282
-
283
- const borderColor = interpolateColor(
284
- animationProgress.value,
285
- [0, 1],
286
- ['#d169e5', '#d169e5']
287
- );
288
-
289
- // Add a slight scaling effect during the transition
290
- const transitionScale = 1 + 0.05 * Math.sin(animationProgress.value * Math.PI);
291
-
292
- return {
293
- backgroundColor,
294
- borderColor,
295
- borderWidth: 1,
296
- transform: [
297
- { scale: scale.value * transitionScale },
298
- ],
299
- };
300
- });
301
-
302
- // Animated styles for the text
303
- const animatedTextStyle = useAnimatedStyle(() => {
304
- const color = interpolateColor(
305
- animationProgress.value,
306
- [0, 1],
307
- ['#FFFFFF', '#d169e5']
308
- );
309
-
310
- return {
311
- color,
312
- };
313
- });
314
-
315
- // Get size-specific styles
316
- const getSizeStyles = () => {
317
- switch (size) {
318
- case 'small':
319
- return {
320
- button: {
321
- paddingVertical: 6,
322
- paddingHorizontal: 12,
323
- } as ViewStyle,
324
- text: {
325
- fontSize: 12,
326
- } as TextStyle,
327
- };
328
- case 'large':
329
- return {
330
- button: {
331
- paddingVertical: 12,
332
- paddingHorizontal: 24,
333
- } as ViewStyle,
334
- text: {
335
- fontSize: 18,
336
- } as TextStyle,
337
- };
338
- default: // medium
339
- return {
340
- button: {
341
- paddingVertical: 8,
342
- paddingHorizontal: 16,
343
- } as ViewStyle,
344
- text: {
345
- fontSize: 14,
346
- } as TextStyle,
347
- };
92
+ await toggleFollow?.();
93
+ if (onFollowChange) onFollowChange(!isFollowing);
94
+ } catch (err: any) {
95
+ toast.error(err?.message || 'Failed to update follow status');
348
96
  }
97
+ }, [disabled, isLoading, toggleFollow, onFollowChange, isFollowing, preventParentActions]);
98
+
99
+ // Button styles
100
+ const getButtonStyle = (): StyleProp<ViewStyle> => {
101
+ let baseStyle = styles.buttonMedium;
102
+ if (size === 'small') baseStyle = styles.buttonSmall;
103
+ if (size === 'large') baseStyle = styles.buttonLarge;
104
+ return [baseStyle, isFollowing ? styles.following : styles.notFollowing, style];
349
105
  };
350
106
 
351
- const sizeStyles = getSizeStyles();
107
+ const getTextStyle = (): StyleProp<TextStyle> => {
108
+ let baseStyle = styles.textMedium;
109
+ if (size === 'small') baseStyle = styles.textSmall;
110
+ if (size === 'large') baseStyle = styles.textLarge;
111
+ return [baseStyle, isFollowing ? styles.textFollowing : styles.textNotFollowing, textStyle];
112
+ };
352
113
 
353
114
  return (
354
115
  <TouchableOpacity
355
- activeOpacity={0.8}
116
+ style={getButtonStyle()}
356
117
  onPress={handlePress}
357
118
  disabled={disabled || isLoading}
119
+ activeOpacity={0.8}
358
120
  >
359
- <Animated.View
360
- style={[
361
- styles.button,
362
- sizeStyles.button,
363
- animatedButtonStyle,
364
- style,
365
- ]}
366
- >
367
- {isLoading && showLoadingState ? (
368
- <ActivityIndicator
369
- size="small"
370
- color={isFollowing ? '#d169e5' : '#FFFFFF'}
371
- />
372
- ) : (
373
- <Animated.Text
374
- style={[
375
- styles.text,
376
- sizeStyles.text,
377
- animatedTextStyle,
378
- textStyle,
379
- ]}
380
- >
381
- {isFollowing ? 'Following' : 'Follow'}
382
- </Animated.Text>
383
- )}
384
- </Animated.View>
121
+ {showLoadingState && isLoading ? (
122
+ <ActivityIndicator size={size === 'small' ? 'small' : 'large'} color={isFollowing ? '#fff' : '#007AFF'} />
123
+ ) : (
124
+ <Text style={getTextStyle()}>{isFollowing ? 'Following' : 'Follow'}</Text>
125
+ )}
385
126
  </TouchableOpacity>
386
127
  );
387
128
  };
388
129
 
389
130
  const styles = StyleSheet.create({
390
- button: {
131
+ buttonSmall: {
132
+ paddingVertical: 4,
133
+ paddingHorizontal: 12,
134
+ borderRadius: 16,
135
+ minWidth: 60,
136
+ alignItems: 'center',
391
137
  justifyContent: 'center',
138
+ },
139
+ buttonMedium: {
140
+ paddingVertical: 8,
141
+ paddingHorizontal: 20,
142
+ borderRadius: 20,
143
+ minWidth: 90,
392
144
  alignItems: 'center',
393
- flexDirection: 'row',
394
- borderRadius: 100,
145
+ justifyContent: 'center',
146
+ },
147
+ buttonLarge: {
148
+ paddingVertical: 12,
149
+ paddingHorizontal: 32,
150
+ borderRadius: 24,
151
+ minWidth: 120,
152
+ alignItems: 'center',
153
+ justifyContent: 'center',
154
+ },
155
+ following: {
156
+ backgroundColor: '#007AFF',
157
+ },
158
+ notFollowing: {
159
+ backgroundColor: '#fff',
160
+ borderWidth: 1,
161
+ borderColor: '#007AFF',
162
+ },
163
+ textSmall: {
164
+ fontSize: 13,
165
+ fontFamily: fontFamilies.phuduMedium,
166
+ },
167
+ textMedium: {
168
+ fontSize: 15,
169
+ fontFamily: fontFamilies.phuduMedium,
170
+ },
171
+ textLarge: {
172
+ fontSize: 18,
173
+ fontFamily: fontFamilies.phuduMedium,
174
+ },
175
+ textFollowing: {
176
+ color: '#fff',
395
177
  },
396
- text: {
397
- fontFamily: Platform.select({
398
- web: 'Phudu',
399
- default: fontFamilies.phuduSemiBold,
400
- }),
401
- fontWeight: Platform.OS === 'web' ? '600' : undefined,
402
- textAlign: 'center',
178
+ textNotFollowing: {
179
+ color: '#007AFF',
403
180
  },
404
181
  });
405
182
 
183
+ export { FollowButton };
406
184
  export default FollowButton;