@selfcommunity/react-core 0.1.2-alpha.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 (285) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +13 -0
  3. package/lib/cjs/components/provider/SCAlertMessagesProvider/index.js +67 -0
  4. package/lib/cjs/components/provider/SCContextProvider/index.js +117 -0
  5. package/lib/cjs/components/provider/SCLocaleProvider/index.js +158 -0
  6. package/lib/cjs/components/provider/SCNotificationProvider/index.js +73 -0
  7. package/lib/cjs/components/provider/SCPreferencesProvider/index.js +93 -0
  8. package/lib/cjs/components/provider/SCRoutingProvider/index.js +146 -0
  9. package/lib/cjs/components/provider/SCThemeProvider/index.js +123 -0
  10. package/lib/cjs/components/provider/SCUserProvider/index.js +310 -0
  11. package/lib/cjs/components/router/index.js +91 -0
  12. package/lib/cjs/constants/Actions.js +6 -0
  13. package/lib/cjs/constants/ContextProviders.js +29 -0
  14. package/lib/cjs/constants/Device.js +11 -0
  15. package/lib/cjs/constants/Errors.js +10 -0
  16. package/lib/cjs/constants/Features.js +84 -0
  17. package/lib/cjs/constants/Locale.js +19 -0
  18. package/lib/cjs/constants/Notification.js +67 -0
  19. package/lib/cjs/constants/Notifications.js +27 -0
  20. package/lib/cjs/constants/Preferences.js +344 -0
  21. package/lib/cjs/constants/Routes.js +68 -0
  22. package/lib/cjs/constants/Session.js +22 -0
  23. package/lib/cjs/constants/Theme.js +6 -0
  24. package/lib/cjs/constants/WebSocket.js +10 -0
  25. package/lib/cjs/hooks/useSCAuth.js +340 -0
  26. package/lib/cjs/hooks/useSCCachingManager.js +58 -0
  27. package/lib/cjs/hooks/useSCConnectionsManager.js +285 -0
  28. package/lib/cjs/hooks/useSCFetchCategories.js +71 -0
  29. package/lib/cjs/hooks/useSCFetchCategory.js +68 -0
  30. package/lib/cjs/hooks/useSCFetchCommentObject.js +68 -0
  31. package/lib/cjs/hooks/useSCFetchCommentObjects.js +296 -0
  32. package/lib/cjs/hooks/useSCFetchCustomAdv.js +84 -0
  33. package/lib/cjs/hooks/useSCFetchFeedObject.js +79 -0
  34. package/lib/cjs/hooks/useSCFetchIncubator.js +68 -0
  35. package/lib/cjs/hooks/useSCFetchTag.js +68 -0
  36. package/lib/cjs/hooks/useSCFetchUser.js +68 -0
  37. package/lib/cjs/hooks/useSCFollowedCategoriesManager.js +162 -0
  38. package/lib/cjs/hooks/useSCFollowersManager.js +232 -0
  39. package/lib/cjs/hooks/useSCMediaClick.js +27 -0
  40. package/lib/cjs/hooks/useSCSubscribedIncubatorsManager.js +165 -0
  41. package/lib/cjs/hooks/useSCWebPushMessaging.js +286 -0
  42. package/lib/cjs/hooks/useSCWebSocket.js +120 -0
  43. package/lib/cjs/index.js +169 -0
  44. package/lib/cjs/scss/styles.scss +1 -0
  45. package/lib/cjs/themes/theme.js +165 -0
  46. package/lib/cjs/types/context.js +3 -0
  47. package/lib/cjs/types/index.js +22 -0
  48. package/lib/cjs/utils/errors.js +196 -0
  49. package/lib/cjs/utils/locale.js +56 -0
  50. package/lib/cjs/utils/logger.js +32 -0
  51. package/lib/cjs/utils/object.js +44 -0
  52. package/lib/cjs/utils/session.js +17 -0
  53. package/lib/cjs/utils/string.js +57 -0
  54. package/lib/cjs/utils/url.js +70 -0
  55. package/lib/cjs/utils/user.js +83 -0
  56. package/lib/cjs/utils/validator.js +771 -0
  57. package/lib/cjs/utils/webPushMessaging.js +110 -0
  58. package/lib/cjs/utils/websocket.js +307 -0
  59. package/lib/esm/api-services/src/client/index.d.ts +115 -0
  60. package/lib/esm/api-services/src/client/index.d.ts.map +1 -0
  61. package/lib/esm/api-services/src/constants/Endpoints.d.ts +10 -0
  62. package/lib/esm/api-services/src/constants/Endpoints.d.ts.map +1 -0
  63. package/lib/esm/api-services/src/index.d.ts +24 -0
  64. package/lib/esm/api-services/src/index.d.ts.map +1 -0
  65. package/lib/esm/api-services/src/services/category/index.d.ts +13 -0
  66. package/lib/esm/api-services/src/services/category/index.d.ts.map +1 -0
  67. package/lib/esm/api-services/src/services/feature/index.d.ts +10 -0
  68. package/lib/esm/api-services/src/services/feature/index.d.ts.map +1 -0
  69. package/lib/esm/api-services/src/services/preference/index.d.ts +16 -0
  70. package/lib/esm/api-services/src/services/preference/index.d.ts.map +1 -0
  71. package/lib/esm/api-services/src/services/user/index.d.ts +16 -0
  72. package/lib/esm/api-services/src/services/user/index.d.ts.map +1 -0
  73. package/lib/esm/api-services/src/utils/http.d.ts +6 -0
  74. package/lib/esm/api-services/src/utils/http.d.ts.map +1 -0
  75. package/lib/esm/api-services/src/utils/token.d.ts +16 -0
  76. package/lib/esm/api-services/src/utils/token.d.ts.map +1 -0
  77. package/lib/esm/components/provider/SCAlertMessagesProvider/index.js +67 -0
  78. package/lib/esm/components/provider/SCContextProvider/index.js +117 -0
  79. package/lib/esm/components/provider/SCLocaleProvider/index.js +158 -0
  80. package/lib/esm/components/provider/SCNotificationProvider/index.js +73 -0
  81. package/lib/esm/components/provider/SCPreferencesProvider/index.js +93 -0
  82. package/lib/esm/components/provider/SCRoutingProvider/index.js +146 -0
  83. package/lib/esm/components/provider/SCThemeProvider/index.js +123 -0
  84. package/lib/esm/components/provider/SCUserProvider/index.js +310 -0
  85. package/lib/esm/components/router/index.js +91 -0
  86. package/lib/esm/constants/Actions.js +6 -0
  87. package/lib/esm/constants/ContextProviders.js +29 -0
  88. package/lib/esm/constants/Device.js +11 -0
  89. package/lib/esm/constants/Errors.js +10 -0
  90. package/lib/esm/constants/Features.js +84 -0
  91. package/lib/esm/constants/Locale.js +19 -0
  92. package/lib/esm/constants/Notification.js +67 -0
  93. package/lib/esm/constants/Notifications.js +27 -0
  94. package/lib/esm/constants/Preferences.js +344 -0
  95. package/lib/esm/constants/Routes.js +68 -0
  96. package/lib/esm/constants/Session.js +22 -0
  97. package/lib/esm/constants/Theme.js +6 -0
  98. package/lib/esm/constants/WebSocket.js +10 -0
  99. package/lib/esm/hooks/useSCAuth.js +340 -0
  100. package/lib/esm/hooks/useSCCachingManager.js +58 -0
  101. package/lib/esm/hooks/useSCConnectionsManager.js +285 -0
  102. package/lib/esm/hooks/useSCFetchCategories.js +71 -0
  103. package/lib/esm/hooks/useSCFetchCategory.js +68 -0
  104. package/lib/esm/hooks/useSCFetchCommentObject.js +68 -0
  105. package/lib/esm/hooks/useSCFetchCommentObjects.js +296 -0
  106. package/lib/esm/hooks/useSCFetchCustomAdv.js +84 -0
  107. package/lib/esm/hooks/useSCFetchFeedObject.js +79 -0
  108. package/lib/esm/hooks/useSCFetchIncubator.js +68 -0
  109. package/lib/esm/hooks/useSCFetchTag.js +68 -0
  110. package/lib/esm/hooks/useSCFetchUser.js +68 -0
  111. package/lib/esm/hooks/useSCFollowedCategoriesManager.js +162 -0
  112. package/lib/esm/hooks/useSCFollowersManager.js +232 -0
  113. package/lib/esm/hooks/useSCMediaClick.js +27 -0
  114. package/lib/esm/hooks/useSCSubscribedIncubatorsManager.js +165 -0
  115. package/lib/esm/hooks/useSCWebPushMessaging.js +286 -0
  116. package/lib/esm/hooks/useSCWebSocket.js +120 -0
  117. package/lib/esm/index.js +169 -0
  118. package/lib/esm/react-core/src/components/provider/SCAlertMessagesProvider/index.d.ts +37 -0
  119. package/lib/esm/react-core/src/components/provider/SCAlertMessagesProvider/index.d.ts.map +1 -0
  120. package/lib/esm/react-core/src/components/provider/SCContextProvider/index.d.ts +35 -0
  121. package/lib/esm/react-core/src/components/provider/SCContextProvider/index.d.ts.map +1 -0
  122. package/lib/esm/react-core/src/components/provider/SCLocaleProvider/index.d.ts +42 -0
  123. package/lib/esm/react-core/src/components/provider/SCLocaleProvider/index.d.ts.map +1 -0
  124. package/lib/esm/react-core/src/components/provider/SCNotificationProvider/index.d.ts +37 -0
  125. package/lib/esm/react-core/src/components/provider/SCNotificationProvider/index.d.ts.map +1 -0
  126. package/lib/esm/react-core/src/components/provider/SCPreferencesProvider/index.d.ts +38 -0
  127. package/lib/esm/react-core/src/components/provider/SCPreferencesProvider/index.d.ts.map +1 -0
  128. package/lib/esm/react-core/src/components/provider/SCRoutingProvider/index.d.ts +39 -0
  129. package/lib/esm/react-core/src/components/provider/SCRoutingProvider/index.d.ts.map +1 -0
  130. package/lib/esm/react-core/src/components/provider/SCThemeProvider/index.d.ts +49 -0
  131. package/lib/esm/react-core/src/components/provider/SCThemeProvider/index.d.ts.map +1 -0
  132. package/lib/esm/react-core/src/components/provider/SCUserProvider/index.d.ts +38 -0
  133. package/lib/esm/react-core/src/components/provider/SCUserProvider/index.d.ts.map +1 -0
  134. package/lib/esm/react-core/src/components/router/index.d.ts +34 -0
  135. package/lib/esm/react-core/src/components/router/index.d.ts.map +1 -0
  136. package/lib/esm/react-core/src/constants/Actions.d.ts +2 -0
  137. package/lib/esm/react-core/src/constants/Actions.d.ts.map +1 -0
  138. package/lib/esm/react-core/src/constants/ContextProviders.d.ts +6 -0
  139. package/lib/esm/react-core/src/constants/ContextProviders.d.ts.map +1 -0
  140. package/lib/esm/react-core/src/constants/Device.d.ts +6 -0
  141. package/lib/esm/react-core/src/constants/Device.d.ts.map +1 -0
  142. package/lib/esm/react-core/src/constants/Errors.d.ts +5 -0
  143. package/lib/esm/react-core/src/constants/Errors.d.ts.map +1 -0
  144. package/lib/esm/react-core/src/constants/Features.d.ts +41 -0
  145. package/lib/esm/react-core/src/constants/Features.d.ts.map +1 -0
  146. package/lib/esm/react-core/src/constants/Locale.d.ts +8 -0
  147. package/lib/esm/react-core/src/constants/Locale.d.ts.map +1 -0
  148. package/lib/esm/react-core/src/constants/Notification.d.ts +55 -0
  149. package/lib/esm/react-core/src/constants/Notification.d.ts.map +1 -0
  150. package/lib/esm/react-core/src/constants/Notifications.d.ts +11 -0
  151. package/lib/esm/react-core/src/constants/Notifications.d.ts.map +1 -0
  152. package/lib/esm/react-core/src/constants/Routes.d.ts +29 -0
  153. package/lib/esm/react-core/src/constants/Routes.d.ts.map +1 -0
  154. package/lib/esm/react-core/src/constants/Session.d.ts +10 -0
  155. package/lib/esm/react-core/src/constants/Session.d.ts.map +1 -0
  156. package/lib/esm/react-core/src/constants/Theme.d.ts +2 -0
  157. package/lib/esm/react-core/src/constants/Theme.d.ts.map +1 -0
  158. package/lib/esm/react-core/src/hooks/useSCAuth.d.ts +56 -0
  159. package/lib/esm/react-core/src/hooks/useSCAuth.d.ts.map +1 -0
  160. package/lib/esm/react-core/src/hooks/useSCCachingManager.d.ts +19 -0
  161. package/lib/esm/react-core/src/hooks/useSCCachingManager.d.ts.map +1 -0
  162. package/lib/esm/react-core/src/hooks/useSCConnectionsManager.d.ts +40 -0
  163. package/lib/esm/react-core/src/hooks/useSCConnectionsManager.d.ts.map +1 -0
  164. package/lib/esm/react-core/src/hooks/useSCFetchCategories.d.ts +17 -0
  165. package/lib/esm/react-core/src/hooks/useSCFetchCategories.d.ts.map +1 -0
  166. package/lib/esm/react-core/src/hooks/useSCFetchCategory.d.ts +19 -0
  167. package/lib/esm/react-core/src/hooks/useSCFetchCategory.d.ts.map +1 -0
  168. package/lib/esm/react-core/src/hooks/useSCFetchCommentObject.d.ts +19 -0
  169. package/lib/esm/react-core/src/hooks/useSCFetchCommentObject.d.ts.map +1 -0
  170. package/lib/esm/react-core/src/hooks/useSCFetchCommentObjects.d.ts +54 -0
  171. package/lib/esm/react-core/src/hooks/useSCFetchCommentObjects.d.ts.map +1 -0
  172. package/lib/esm/react-core/src/hooks/useSCFetchCustomAdv.d.ts +19 -0
  173. package/lib/esm/react-core/src/hooks/useSCFetchCustomAdv.d.ts.map +1 -0
  174. package/lib/esm/react-core/src/hooks/useSCFetchFeedObject.d.ts +21 -0
  175. package/lib/esm/react-core/src/hooks/useSCFetchFeedObject.d.ts.map +1 -0
  176. package/lib/esm/react-core/src/hooks/useSCFetchIncubator.d.ts +19 -0
  177. package/lib/esm/react-core/src/hooks/useSCFetchIncubator.d.ts.map +1 -0
  178. package/lib/esm/react-core/src/hooks/useSCFetchTag.d.ts +19 -0
  179. package/lib/esm/react-core/src/hooks/useSCFetchTag.d.ts.map +1 -0
  180. package/lib/esm/react-core/src/hooks/useSCFetchUser.d.ts +19 -0
  181. package/lib/esm/react-core/src/hooks/useSCFetchUser.d.ts.map +1 -0
  182. package/lib/esm/react-core/src/hooks/useSCFollowedCategoriesManager.d.ts +37 -0
  183. package/lib/esm/react-core/src/hooks/useSCFollowedCategoriesManager.d.ts.map +1 -0
  184. package/lib/esm/react-core/src/hooks/useSCFollowersManager.d.ts +37 -0
  185. package/lib/esm/react-core/src/hooks/useSCFollowersManager.d.ts.map +1 -0
  186. package/lib/esm/react-core/src/hooks/useSCMediaClick.d.ts +4 -0
  187. package/lib/esm/react-core/src/hooks/useSCMediaClick.d.ts.map +1 -0
  188. package/lib/esm/react-core/src/hooks/useSCSubscribedIncubatorsManager.d.ts +27 -0
  189. package/lib/esm/react-core/src/hooks/useSCSubscribedIncubatorsManager.d.ts.map +1 -0
  190. package/lib/esm/react-core/src/hooks/useSCWebPushMessaging.d.ts +9 -0
  191. package/lib/esm/react-core/src/hooks/useSCWebPushMessaging.d.ts.map +1 -0
  192. package/lib/esm/react-core/src/hooks/useSCWebSocket.d.ts +12 -0
  193. package/lib/esm/react-core/src/hooks/useSCWebSocket.d.ts.map +1 -0
  194. package/lib/esm/react-core/src/index.d.ts +77 -0
  195. package/lib/esm/react-core/src/index.d.ts.map +1 -0
  196. package/lib/esm/react-core/src/types/context.d.ts +428 -0
  197. package/lib/esm/react-core/src/types/context.d.ts.map +1 -0
  198. package/lib/esm/react-core/src/types/index.d.ts +3 -0
  199. package/lib/esm/react-core/src/types/index.d.ts.map +1 -0
  200. package/lib/esm/react-core/src/utils/errors.d.ts +98 -0
  201. package/lib/esm/react-core/src/utils/errors.d.ts.map +1 -0
  202. package/lib/esm/react-core/src/utils/locale.d.ts +10 -0
  203. package/lib/esm/react-core/src/utils/locale.d.ts.map +1 -0
  204. package/lib/esm/react-core/src/utils/logger.d.ts +11 -0
  205. package/lib/esm/react-core/src/utils/logger.d.ts.map +1 -0
  206. package/lib/esm/react-core/src/utils/object.d.ts +13 -0
  207. package/lib/esm/react-core/src/utils/object.d.ts.map +1 -0
  208. package/lib/esm/react-core/src/utils/session.d.ts +6 -0
  209. package/lib/esm/react-core/src/utils/session.d.ts.map +1 -0
  210. package/lib/esm/react-core/src/utils/string.d.ts +21 -0
  211. package/lib/esm/react-core/src/utils/string.d.ts.map +1 -0
  212. package/lib/esm/react-core/src/utils/url.d.ts +22 -0
  213. package/lib/esm/react-core/src/utils/url.d.ts.map +1 -0
  214. package/lib/esm/react-core/src/utils/user.d.ts +41 -0
  215. package/lib/esm/react-core/src/utils/user.d.ts.map +1 -0
  216. package/lib/esm/react-core/src/utils/validator.d.ts +239 -0
  217. package/lib/esm/react-core/src/utils/validator.d.ts.map +1 -0
  218. package/lib/esm/react-core/src/utils/webPushMessaging.d.ts +14 -0
  219. package/lib/esm/react-core/src/utils/webPushMessaging.d.ts.map +1 -0
  220. package/lib/esm/react-core/src/utils/websocket.d.ts +177 -0
  221. package/lib/esm/react-core/src/utils/websocket.d.ts.map +1 -0
  222. package/lib/esm/react-i18n/src/index.d.ts +815 -0
  223. package/lib/esm/react-i18n/src/index.d.ts.map +1 -0
  224. package/lib/esm/scss/styles.scss +1 -0
  225. package/lib/esm/themes/theme.js +165 -0
  226. package/lib/esm/types/context.js +3 -0
  227. package/lib/esm/types/index.js +22 -0
  228. package/lib/esm/types/src/index.d.ts +9 -0
  229. package/lib/esm/types/src/index.d.ts.map +1 -0
  230. package/lib/esm/types/src/types/auth.d.ts +26 -0
  231. package/lib/esm/types/src/types/auth.d.ts.map +1 -0
  232. package/lib/esm/types/src/types/broadcastMessage.d.ts +73 -0
  233. package/lib/esm/types/src/types/broadcastMessage.d.ts.map +1 -0
  234. package/lib/esm/types/src/types/category.d.ts +100 -0
  235. package/lib/esm/types/src/types/category.d.ts.map +1 -0
  236. package/lib/esm/types/src/types/comment.d.ts +97 -0
  237. package/lib/esm/types/src/types/comment.d.ts.map +1 -0
  238. package/lib/esm/types/src/types/customAdv.d.ts +53 -0
  239. package/lib/esm/types/src/types/customAdv.d.ts.map +1 -0
  240. package/lib/esm/types/src/types/customNotification.d.ts +28 -0
  241. package/lib/esm/types/src/types/customNotification.d.ts.map +1 -0
  242. package/lib/esm/types/src/types/embed.d.ts +33 -0
  243. package/lib/esm/types/src/types/embed.d.ts.map +1 -0
  244. package/lib/esm/types/src/types/feed.d.ts +208 -0
  245. package/lib/esm/types/src/types/feed.d.ts.map +1 -0
  246. package/lib/esm/types/src/types/incubator.d.ts +53 -0
  247. package/lib/esm/types/src/types/incubator.d.ts.map +1 -0
  248. package/lib/esm/types/src/types/index.d.ts +22 -0
  249. package/lib/esm/types/src/types/index.d.ts.map +1 -0
  250. package/lib/esm/types/src/types/location.d.ts +61 -0
  251. package/lib/esm/types/src/types/location.d.ts.map +1 -0
  252. package/lib/esm/types/src/types/media.d.ts +52 -0
  253. package/lib/esm/types/src/types/media.d.ts.map +1 -0
  254. package/lib/esm/types/src/types/notification.d.ts +416 -0
  255. package/lib/esm/types/src/types/notification.d.ts.map +1 -0
  256. package/lib/esm/types/src/types/poll.d.ts +77 -0
  257. package/lib/esm/types/src/types/poll.d.ts.map +1 -0
  258. package/lib/esm/types/src/types/privateMessage.d.ts +109 -0
  259. package/lib/esm/types/src/types/privateMessage.d.ts.map +1 -0
  260. package/lib/esm/types/src/types/prize.d.ts +48 -0
  261. package/lib/esm/types/src/types/prize.d.ts.map +1 -0
  262. package/lib/esm/types/src/types/tag.d.ts +47 -0
  263. package/lib/esm/types/src/types/tag.d.ts.map +1 -0
  264. package/lib/esm/types/src/types/user.d.ts +227 -0
  265. package/lib/esm/types/src/types/user.d.ts.map +1 -0
  266. package/lib/esm/utils/errors.js +196 -0
  267. package/lib/esm/utils/locale.js +56 -0
  268. package/lib/esm/utils/logger.js +32 -0
  269. package/lib/esm/utils/object.js +44 -0
  270. package/lib/esm/utils/session.js +17 -0
  271. package/lib/esm/utils/src/index.d.ts +7 -0
  272. package/lib/esm/utils/src/index.d.ts.map +1 -0
  273. package/lib/esm/utils/src/utils/string.d.ts +21 -0
  274. package/lib/esm/utils/src/utils/string.d.ts.map +1 -0
  275. package/lib/esm/utils/src/utils/url.d.ts +22 -0
  276. package/lib/esm/utils/src/utils/url.d.ts.map +1 -0
  277. package/lib/esm/utils/string.js +57 -0
  278. package/lib/esm/utils/url.js +70 -0
  279. package/lib/esm/utils/user.js +83 -0
  280. package/lib/esm/utils/validator.js +771 -0
  281. package/lib/esm/utils/webPushMessaging.js +110 -0
  282. package/lib/esm/utils/websocket.js +307 -0
  283. package/lib/umd/react-core.js +2 -0
  284. package/lib/umd/react-core.js.LICENSE.txt +1 -0
  285. package/package.json +128 -0
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCFetchIncubator;
5
+
6
+ var _react = require("react");
7
+
8
+ var _Errors = require("../constants/Errors");
9
+
10
+ var _apiServices = require("@selfcommunity/api-services");
11
+
12
+ var _logger = require("../utils/logger");
13
+
14
+ /**
15
+ :::info
16
+ This custom hook is used to fetch an incubator object.
17
+ :::
18
+ * @param object
19
+ * @param object.id
20
+ * @param object.incubator
21
+ */
22
+ function useSCFetchIncubator({
23
+ id = null,
24
+ incubator = null
25
+ }) {
26
+ const [scIncubator, setSCIncubator] = (0, _react.useState)(incubator);
27
+ const [error, setError] = (0, _react.useState)(null);
28
+ /**
29
+ * Memoized fetchIncubator
30
+ */
31
+
32
+ const fetchIncubator = (0, _react.useMemo)(() => () => {
33
+ return _apiServices.http.request({
34
+ url: _apiServices.Endpoints.GetASpecificIncubator.url({
35
+ id: id
36
+ }),
37
+ method: _apiServices.Endpoints.GetASpecificIncubator.method
38
+ }).then(res => {
39
+ if (res.status >= 300) {
40
+ return Promise.reject(res);
41
+ }
42
+
43
+ return Promise.resolve(res.data);
44
+ });
45
+ }, [id]);
46
+ /**
47
+ * If id resolve the obj
48
+ */
49
+
50
+ (0, _react.useEffect)(() => {
51
+ if (id) {
52
+ fetchIncubator().then(obj => {
53
+ setSCIncubator(obj);
54
+ }).catch(err => {
55
+ setError(`Incubator with id ${id} not found`);
56
+
57
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, `Incubator with id ${id} not found`);
58
+
59
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, err.message);
60
+ });
61
+ }
62
+ }, [id]);
63
+ return {
64
+ scIncubator,
65
+ setSCIncubator,
66
+ error
67
+ };
68
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCFetchTag;
5
+
6
+ var _react = require("react");
7
+
8
+ var _Errors = require("../constants/Errors");
9
+
10
+ var _apiServices = require("@selfcommunity/api-services");
11
+
12
+ var _logger = require("../utils/logger");
13
+
14
+ /**
15
+ :::info
16
+ This custom hook is used to fetch a tag object.
17
+ :::
18
+ * @param object
19
+ * @param object.id
20
+ * @param object.tag
21
+ */
22
+ function useSCFetchTag({
23
+ id = null,
24
+ tag = null
25
+ }) {
26
+ const [scTag, setSCTag] = (0, _react.useState)(tag);
27
+ const [error, setError] = (0, _react.useState)(null);
28
+ /**
29
+ * Memoized fetchTag
30
+ */
31
+
32
+ const fetchTag = (0, _react.useMemo)(() => () => {
33
+ return _apiServices.http.request({
34
+ url: _apiServices.Endpoints.Tag.url({
35
+ id: id
36
+ }),
37
+ method: _apiServices.Endpoints.Tag.method
38
+ }).then(res => {
39
+ if (res.status >= 300) {
40
+ return Promise.reject(res);
41
+ }
42
+
43
+ return Promise.resolve(res.data);
44
+ });
45
+ }, [id]);
46
+ /**
47
+ * If id attempt to get the tag by id
48
+ */
49
+
50
+ (0, _react.useEffect)(() => {
51
+ if (id) {
52
+ fetchTag().then(obj => {
53
+ setSCTag(obj);
54
+ }).catch(err => {
55
+ setError(`Tag with id ${id} not found`);
56
+
57
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, `Tag with id ${id} not found`);
58
+
59
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, err.message);
60
+ });
61
+ }
62
+ }, [id]);
63
+ return {
64
+ scTag,
65
+ setSCTag,
66
+ error
67
+ };
68
+ }
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCFetchUser;
5
+
6
+ var _react = require("react");
7
+
8
+ var _Errors = require("../constants/Errors");
9
+
10
+ var _apiServices = require("@selfcommunity/api-services");
11
+
12
+ var _logger = require("../utils/logger");
13
+
14
+ /**
15
+ :::info
16
+ This custom hook is used to fetch a user object.
17
+ :::
18
+ * @param object
19
+ * @param object.id
20
+ * @param object.user
21
+ */
22
+ function useSCFetchUser({
23
+ id = null,
24
+ user = null
25
+ }) {
26
+ const [scUser, setSCUser] = (0, _react.useState)(user);
27
+ const [error, setError] = (0, _react.useState)(null);
28
+ /**
29
+ * Memoized fetchUser
30
+ */
31
+
32
+ const fetchUser = (0, _react.useMemo)(() => () => {
33
+ return _apiServices.http.request({
34
+ url: _apiServices.Endpoints.User.url({
35
+ id: id
36
+ }),
37
+ method: _apiServices.Endpoints.User.method
38
+ }).then(res => {
39
+ if (res.status >= 300) {
40
+ return Promise.reject(res);
41
+ }
42
+
43
+ return Promise.resolve(res.data);
44
+ });
45
+ }, [id]);
46
+ /**
47
+ * If id resolve the obj
48
+ */
49
+
50
+ (0, _react.useEffect)(() => {
51
+ if (id) {
52
+ fetchUser().then(obj => {
53
+ setSCUser(obj);
54
+ }).catch(err => {
55
+ setError(`User with id ${id} not found`);
56
+
57
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, `User with id ${id} not found`);
58
+
59
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, err.message);
60
+ });
61
+ }
62
+ }, [id]);
63
+ return {
64
+ scUser,
65
+ setSCUser,
66
+ error
67
+ };
68
+ }
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCFollowedCategoriesManager;
5
+
6
+ var _react = require("react");
7
+
8
+ var _apiServices = require("@selfcommunity/api-services");
9
+
10
+ var _useSCCachingManager = _interopRequireDefault(require("./useSCCachingManager"));
11
+
12
+ var _Errors = require("../constants/Errors");
13
+
14
+ var _logger = require("../utils/logger");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
+
18
+ /**
19
+ :::info
20
+ This custom hook is used to manage the categories followed.
21
+ :::
22
+
23
+ :::tipHow to use it:
24
+ Follow these steps:
25
+ ```jsx
26
+ 1. const scUserContext: SCUserContextType = useSCUser();
27
+ 2. const scFollowedCategoriesManager: SCFollowedCategoriesManagerType = scUserContext.manager.categories;
28
+ 3. scFollowedCategoriesManager.isFollowed(category)
29
+ ```
30
+ :::
31
+ */
32
+ function useSCFollowedCategoriesManager(user) {
33
+ const {
34
+ cache,
35
+ updateCache,
36
+ emptyCache,
37
+ data,
38
+ setData,
39
+ loading,
40
+ setLoading,
41
+ isLoading
42
+ } = (0, _useSCCachingManager.default)();
43
+ /**
44
+ * Memoized refresh all categories
45
+ * It makes a single request to the server and retrieves
46
+ * all the categories followed by the user in a single solution
47
+ * It might be useful for multi-tab sync
48
+ */
49
+
50
+ const refresh = (0, _react.useMemo)(() => () => {
51
+ emptyCache();
52
+
53
+ if (user) {
54
+ // Only if user is authenticated
55
+ _apiServices.http.request({
56
+ url: _apiServices.Endpoints.FollowedCategories.url({
57
+ id: user.id
58
+ }),
59
+ method: _apiServices.Endpoints.FollowedCategories.method
60
+ }).then(res => {
61
+ if (res.status >= 300) {
62
+ return Promise.reject(res);
63
+ }
64
+
65
+ const categoryIds = res.data.map(c => c.id);
66
+ updateCache(categoryIds);
67
+ setData(categoryIds);
68
+ return Promise.resolve(res.data);
69
+ }).catch(e => {
70
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, 'Unable to refresh categories followed by the authenticated user.');
71
+
72
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, e);
73
+ });
74
+ }
75
+ }, [data, user, cache]);
76
+ /**
77
+ * Memoized follow/unfollow Category
78
+ * Toggle action
79
+ */
80
+
81
+ const follow = (0, _react.useMemo)(() => category => {
82
+ setLoading(prev => [...prev, ...[category.id]]);
83
+ return _apiServices.http.request({
84
+ url: _apiServices.Endpoints.FollowCategory.url({
85
+ id: category.id
86
+ }),
87
+ method: _apiServices.Endpoints.FollowCategory.method
88
+ }).then(res => {
89
+ if (res.status >= 300) {
90
+ return Promise.reject(res);
91
+ }
92
+
93
+ updateCache([category.id]);
94
+ const isFollowed = data.includes(category.id);
95
+ setData(prev => isFollowed ? prev.filter(id => id !== category.id) : [...[category.id], ...prev]);
96
+ setLoading(prev => prev.filter(c => c !== category.id));
97
+ return Promise.resolve(res.data);
98
+ });
99
+ }, [data, loading, cache]);
100
+ /**
101
+ * Check if the user follow the category
102
+ * Update the categories cached
103
+ * Update categories followed
104
+ * @param category
105
+ */
106
+
107
+ const checkIsCategoryFollowed = category => {
108
+ setLoading(prev => prev.includes(category.id) ? prev : [...prev, ...[category.id]]);
109
+
110
+ _apiServices.http.request({
111
+ url: _apiServices.Endpoints.CheckCategoryIsFollowed.url({
112
+ id: category.id
113
+ }),
114
+ method: _apiServices.Endpoints.CheckCategoryIsFollowed.method
115
+ }).then(res => {
116
+ if (res.status >= 300) {
117
+ return Promise.reject(res);
118
+ }
119
+
120
+ updateCache([category.id]);
121
+ setData(prev => res.data.is_followed ? [...[category.id], ...prev] : prev.filter(id => id !== category.id));
122
+ setLoading(prev => prev.filter(c => c !== category.id));
123
+ return Promise.resolve(res.data);
124
+ });
125
+ };
126
+ /**
127
+ * Memoized isFollowed
128
+ * If category is already in cache -> check if the category is in categories,
129
+ * otherwise, check if user follow the category
130
+ */
131
+
132
+
133
+ const isFollowed = (0, _react.useMemo)(() => category => {
134
+ if (cache.includes(category.id)) {
135
+ return Boolean(data.includes(category.id));
136
+ }
137
+
138
+ if (!loading.includes(category.id)) {
139
+ checkIsCategoryFollowed(category);
140
+ }
141
+
142
+ return false;
143
+ }, [data, loading, cache]);
144
+
145
+ if (!user) {
146
+ return {
147
+ categories: data,
148
+ loading,
149
+ isLoading
150
+ };
151
+ }
152
+
153
+ return {
154
+ categories: data,
155
+ loading,
156
+ isLoading,
157
+ follow,
158
+ isFollowed,
159
+ refresh,
160
+ emptyCache
161
+ };
162
+ }
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCFollowedManager;
5
+
6
+ var _react = require("react");
7
+
8
+ var _apiServices = require("@selfcommunity/api-services");
9
+
10
+ var _types = require("@selfcommunity/types");
11
+
12
+ var _logger = require("../utils/logger");
13
+
14
+ var _Errors = require("../constants/Errors");
15
+
16
+ var _SCPreferencesProvider = require("../components/provider/SCPreferencesProvider");
17
+
18
+ var _Preferences = require("../constants/Preferences");
19
+
20
+ var _useSCCachingManager = _interopRequireDefault(require("./useSCCachingManager"));
21
+
22
+ var _pubsubJs = _interopRequireDefault(require("pubsub-js"));
23
+
24
+ var _Notification = require("../constants/Notification");
25
+
26
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
27
+
28
+ /**
29
+ * Used on refresh and in isFollowed method
30
+ * Check if the user status is 'followed'
31
+ * to update the cache and data
32
+ */
33
+ const STATUS_FOLLOWED = 'followed';
34
+ /**
35
+ :::info
36
+ This custom hook is used to manage to manage followed users.
37
+ :::
38
+ :::tipHow to use it:
39
+
40
+ Follow these steps:
41
+ ```jsx
42
+ 1. const scUserContext: SCUserContextType = useSCUser();
43
+ 2. const scFollowedManager: SCFollowedManagerType = scUserContext.manager.followed;
44
+ 3. scFollowedManager.isFollowed(user)
45
+ ```
46
+ :::
47
+ */
48
+
49
+ function useSCFollowedManager(user) {
50
+ const {
51
+ cache,
52
+ updateCache,
53
+ emptyCache,
54
+ data,
55
+ setData,
56
+ loading,
57
+ setLoading,
58
+ isLoading
59
+ } = (0, _useSCCachingManager.default)();
60
+ const scPreferencesContext = (0, _SCPreferencesProvider.useSCPreferences)();
61
+ const followEnabled = _Preferences.CONFIGURATIONS_FOLLOW_ENABLED in scPreferencesContext.preferences && scPreferencesContext.preferences[_Preferences.CONFIGURATIONS_FOLLOW_ENABLED].value;
62
+ const notificationFollowSubscription = (0, _react.useRef)(null);
63
+ const notificationUnFollowSubscription = (0, _react.useRef)(null);
64
+ /**
65
+ * Notification subscriber only for FOLLOW
66
+ * @param msg
67
+ * @param data
68
+ */
69
+
70
+ const notificationSubscriber = (msg, data) => {
71
+ if (data.connection && data.connection_id !== undefined) {
72
+ updateCache([data.connection_id]);
73
+
74
+ if (_Notification.SCNotificationMapping[data.data.activity_type] === _types.SCNotificationTypologyType.USER_FOLLOW) {
75
+ if (!data.includes(user.id)) {
76
+ setData(prev => [...[data.connection_id], ...prev]);
77
+ }
78
+ } else if (_Notification.SCNotificationMapping[data.data.activity_type] === _types.SCNotificationTypologyType.USER_UNFOLLOW) {
79
+ if (data.includes(user.id)) {
80
+ setData(prev => prev.filter(id => id !== data.connection_id));
81
+ }
82
+ }
83
+ }
84
+ };
85
+ /**
86
+ * Subscribe to notification types user_follow, user_unfollow
87
+ */
88
+
89
+
90
+ (0, _react.useEffect)(() => {
91
+ notificationFollowSubscription.current = _pubsubJs.default.subscribe(`${_types.SCNotificationTopicType.INTERACTION}.${_types.SCNotificationTypologyType.USER_FOLLOW}`, notificationSubscriber);
92
+ notificationUnFollowSubscription.current = _pubsubJs.default.subscribe(`${_types.SCNotificationTopicType.INTERACTION}.${_types.SCNotificationTypologyType.USER_UNFOLLOW}`, notificationSubscriber);
93
+ return () => {
94
+ _pubsubJs.default.unsubscribe(notificationFollowSubscription.current);
95
+
96
+ _pubsubJs.default.unsubscribe(notificationUnFollowSubscription.current);
97
+ };
98
+ }, []);
99
+ /**
100
+ * Memoized refresh all followed
101
+ * It makes a single request to the server and retrieves
102
+ * all the users followed by the authenticated user in a single solution
103
+ * It might be useful for multi-tab sync
104
+ */
105
+
106
+ const refresh = (0, _react.useMemo)(() => () => {
107
+ emptyCache();
108
+
109
+ if (user && cache.length > 0) {
110
+ // Only if user is authenticated
111
+ _apiServices.http.request({
112
+ url: _apiServices.Endpoints.UserConnectionStatuses.url({}),
113
+ method: _apiServices.Endpoints.UserConnectionStatuses.method,
114
+ data: {
115
+ users: cache
116
+ }
117
+ }).then(res => {
118
+ if (res.status >= 300) {
119
+ return Promise.reject(res);
120
+ }
121
+
122
+ updateCache(Object.keys(res.data.connection_statuses).map(id => parseInt(id)));
123
+ setData(Object.entries(res.data.connection_statuses).filter(([k, v]) => v === STATUS_FOLLOWED).map(([k, v]) => parseInt(k)));
124
+ return Promise.resolve(res.data);
125
+ }).catch(e => {
126
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, 'Unable to refresh users followed by the authenticated user.');
127
+
128
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, e);
129
+ });
130
+ }
131
+ }, [data, user, cache]);
132
+ /**
133
+ * Memoized follow/unfollow User
134
+ * Toggle action
135
+ */
136
+
137
+ const follow = (0, _react.useMemo)(() => user => {
138
+ setLoading(prev => [...prev, ...[user.id]]);
139
+ return _apiServices.http.request({
140
+ url: _apiServices.Endpoints.FollowUser.url({
141
+ id: user.id
142
+ }),
143
+ method: _apiServices.Endpoints.FollowUser.method
144
+ }).then(res => {
145
+ if (res.status >= 300) {
146
+ return Promise.reject(res);
147
+ }
148
+
149
+ updateCache([user.id]);
150
+ const isFollowed = data.includes(user.id);
151
+ setData(prev => isFollowed ? prev.filter(id => id !== user.id) : [...[user.id], ...prev]);
152
+ setLoading(prev => prev.filter(u => u !== user.id));
153
+ return Promise.resolve(res.data);
154
+ });
155
+ }, [data, loading, cache]);
156
+ /**
157
+ * Check if the authenticated user follow the user
158
+ * Update the followed cached
159
+ * Update followed user
160
+ * @param user
161
+ */
162
+
163
+ const checkIsUserFollowed = user => {
164
+ setLoading(prev => prev.includes(user.id) ? prev : [...prev, ...[user.id]]);
165
+
166
+ _apiServices.http.request({
167
+ url: _apiServices.Endpoints.CheckUserFollowed.url({
168
+ id: user.id
169
+ }),
170
+ method: _apiServices.Endpoints.CheckUserFollowed.method
171
+ }).then(res => {
172
+ if (res.status >= 300) {
173
+ return Promise.reject(res);
174
+ }
175
+
176
+ updateCache([user.id]);
177
+ setData(prev => res.data.is_followed ? [...prev, ...[user.id]] : prev.filter(id => id !== user.id));
178
+ setLoading(prev => prev.filter(u => u !== user.id));
179
+ return Promise.resolve(res.data);
180
+ });
181
+ };
182
+ /**
183
+ * Bypass remote check if the user is followed
184
+ */
185
+
186
+
187
+ const getConnectionStatus = (0, _react.useMemo)(() => user => {
188
+ const isFollowed = user.connection_status === STATUS_FOLLOWED;
189
+ updateCache([user.id]);
190
+ setData(prev => isFollowed ? [...prev, ...[user.id]] : prev);
191
+ return isFollowed;
192
+ }, [data, cache]);
193
+ /**
194
+ * Memoized isFollowed
195
+ * If user is already in cache -> check if the user is in followed,
196
+ * otherwise, check if auth user follow the user
197
+ */
198
+
199
+ const isFollowed = (0, _react.useMemo)(() => user => {
200
+ if (cache.includes(user.id)) {
201
+ return Boolean(data.includes(user.id));
202
+ }
203
+
204
+ if ('connection_status' in user) {
205
+ return getConnectionStatus(user);
206
+ }
207
+
208
+ if (!loading.includes(user.id)) {
209
+ checkIsUserFollowed(user);
210
+ }
211
+
212
+ return false;
213
+ }, [data, loading, cache]);
214
+
215
+ if (!followEnabled || !user) {
216
+ return {
217
+ followed: data,
218
+ loading,
219
+ isLoading
220
+ };
221
+ }
222
+
223
+ return {
224
+ followed: data,
225
+ loading,
226
+ isLoading,
227
+ follow,
228
+ isFollowed,
229
+ refresh,
230
+ emptyCache
231
+ };
232
+ }
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = useSCMediaClick;
5
+
6
+ var _apiServices = require("@selfcommunity/api-services");
7
+
8
+ var _logger = require("../utils/logger");
9
+
10
+ var _Errors = require("../constants/Errors");
11
+
12
+ function useSCMediaClick() {
13
+ const handleMediaClick = mediaObj => {
14
+ _apiServices.http.request({
15
+ url: _apiServices.Endpoints.MediaClickTracker.url({
16
+ id: mediaObj.id
17
+ }),
18
+ method: _apiServices.Endpoints.MediaClickTracker.method
19
+ }).catch(error => {
20
+ _logger.Logger.error(_Errors.SCOPE_SC_CORE, error);
21
+ });
22
+ };
23
+
24
+ return {
25
+ handleMediaClick
26
+ };
27
+ }