@chem-po/react-native 0.0.51 → 0.0.53

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 (292) hide show
  1. package/lib/commonjs/components/box/Center.js.map +1 -1
  2. package/lib/commonjs/components/box/CollapseHorizontal.js.map +1 -1
  3. package/lib/commonjs/components/box/ContentBox.js.map +1 -1
  4. package/lib/commonjs/components/box/DropShadow.js.map +1 -1
  5. package/lib/commonjs/components/box/ExpandOnMount.js.map +1 -1
  6. package/lib/commonjs/components/box/Expandable.js.map +1 -1
  7. package/lib/commonjs/components/box/FullSizeContainer.js.map +1 -1
  8. package/lib/commonjs/components/box/index.js.map +1 -1
  9. package/lib/commonjs/components/button/ActionButton.js.map +1 -1
  10. package/lib/commonjs/components/button/ButtonText.js.map +1 -1
  11. package/lib/commonjs/components/button/DeleteButton.js.map +1 -1
  12. package/lib/commonjs/components/button/LoadingButton.js.map +1 -1
  13. package/lib/commonjs/components/button/Toggle.js.map +1 -1
  14. package/lib/commonjs/components/button/hooks.js.map +1 -1
  15. package/lib/commonjs/components/button/index.js.map +1 -1
  16. package/lib/commonjs/components/feed/FeedContentPane.js.map +1 -1
  17. package/lib/commonjs/components/feed/MediaFeed.js.map +1 -1
  18. package/lib/commonjs/components/feed/MediaFeedBackground.js.map +1 -1
  19. package/lib/commonjs/components/feed/MediaFeedRefresh.js.map +1 -1
  20. package/lib/commonjs/components/feed/constants.js.map +1 -1
  21. package/lib/commonjs/components/feed/context.js.map +1 -1
  22. package/lib/commonjs/components/feed/hooks.js.map +1 -1
  23. package/lib/commonjs/components/feed/index.js.map +1 -1
  24. package/lib/commonjs/components/form/Condition.js.map +1 -1
  25. package/lib/commonjs/components/form/Field.js.map +1 -1
  26. package/lib/commonjs/components/form/Form.js.map +1 -1
  27. package/lib/commonjs/components/form/FormFooter.js.map +1 -1
  28. package/lib/commonjs/components/form/UploadProgress/index.js.map +1 -1
  29. package/lib/commonjs/components/form/index.js.map +1 -1
  30. package/lib/commonjs/components/form/input/Editable.js.map +1 -1
  31. package/lib/commonjs/components/form/input/InputSlider.js.map +1 -1
  32. package/lib/commonjs/components/form/input/OptionalTag.js.map +1 -1
  33. package/lib/commonjs/components/form/input/StandaloneInput.js.map +1 -1
  34. package/lib/commonjs/components/form/input/boolean/index.js.map +1 -1
  35. package/lib/commonjs/components/form/input/color/index.js.map +1 -1
  36. package/lib/commonjs/components/form/input/common/InputClearButton.js.map +1 -1
  37. package/lib/commonjs/components/form/input/date/index.js.map +1 -1
  38. package/lib/commonjs/components/form/input/datetime/index.js.map +1 -1
  39. package/lib/commonjs/components/form/input/file/index.js.map +1 -1
  40. package/lib/commonjs/components/form/input/hooks/index.js.map +1 -1
  41. package/lib/commonjs/components/form/input/hooks/useInputColor.js.map +1 -1
  42. package/lib/commonjs/components/form/input/hooks/useInputImperativeHandle.js.map +1 -1
  43. package/lib/commonjs/components/form/input/hooks/useInputStyles.js.map +1 -1
  44. package/lib/commonjs/components/form/input/index.js.map +1 -1
  45. package/lib/commonjs/components/form/input/input.js.map +1 -1
  46. package/lib/commonjs/components/form/input/multipleSelect/index.js.map +1 -1
  47. package/lib/commonjs/components/form/input/number/index.js.map +1 -1
  48. package/lib/commonjs/components/form/input/select/index.js.map +1 -1
  49. package/lib/commonjs/components/form/input/socialMedia/index.js.map +1 -1
  50. package/lib/commonjs/components/form/input/text/AutoResizeTextarea.js.map +1 -1
  51. package/lib/commonjs/components/form/input/text/index.js.map +1 -1
  52. package/lib/commonjs/components/form/input/text/textarea.js.map +1 -1
  53. package/lib/commonjs/components/form/input/text/useWebAutoResize.js.map +1 -1
  54. package/lib/commonjs/components/form/input/time/index.js.map +1 -1
  55. package/lib/commonjs/components/form/types.js.map +1 -1
  56. package/lib/commonjs/components/form/view/file.js.map +1 -1
  57. package/lib/commonjs/components/form/view/index.js.map +1 -1
  58. package/lib/commonjs/components/form/view/multipleSelect.js.map +1 -1
  59. package/lib/commonjs/components/form/view/select.js.map +1 -1
  60. package/lib/commonjs/components/form/view/styles.js.map +1 -1
  61. package/lib/commonjs/components/icons/index.js.map +1 -1
  62. package/lib/commonjs/components/image/ImageViewModal.js.map +1 -1
  63. package/lib/commonjs/components/image/index.js.map +1 -1
  64. package/lib/commonjs/components/index.js.map +1 -1
  65. package/lib/commonjs/components/layout/CollapseHorizontal.js.map +1 -1
  66. package/lib/commonjs/components/loading/CircularProgress.js.map +1 -1
  67. package/lib/commonjs/components/loading/Loading.js.map +1 -1
  68. package/lib/commonjs/components/loading/LoadingImage.js.map +1 -1
  69. package/lib/commonjs/components/loading/LoadingOverlay.js.map +1 -1
  70. package/lib/commonjs/components/loading/LoadingSwitch.js.map +1 -1
  71. package/lib/commonjs/components/loading/ProgressBar.js.map +1 -1
  72. package/lib/commonjs/components/loading/index.js.map +1 -1
  73. package/lib/commonjs/components/text/AnimatedText.js.map +1 -1
  74. package/lib/commonjs/components/text/Txt.js.map +1 -1
  75. package/lib/commonjs/components/text/index.js.map +1 -1
  76. package/lib/commonjs/components/theme/colorMode/DarkModeToggle.js.map +1 -1
  77. package/lib/commonjs/components/theme/colorMode/index.js.map +1 -1
  78. package/lib/commonjs/components/theme/index.js.map +1 -1
  79. package/lib/commonjs/constants/index.js.map +1 -1
  80. package/lib/commonjs/constants/toast.js.map +1 -1
  81. package/lib/commonjs/contexts/fonts.js.map +1 -1
  82. package/lib/commonjs/contexts/index.js.map +1 -1
  83. package/lib/commonjs/contexts/root.js.map +1 -1
  84. package/lib/commonjs/hooks/index.js.map +1 -1
  85. package/lib/commonjs/hooks/useFadeIn.js.map +1 -1
  86. package/lib/commonjs/hooks/useFont.js.map +1 -1
  87. package/lib/commonjs/hooks/useRefreshFontScale.js.map +1 -1
  88. package/lib/commonjs/hooks/useThemeState.js.map +1 -1
  89. package/lib/commonjs/index.js.map +1 -1
  90. package/lib/commonjs/store/index.js.map +1 -1
  91. package/lib/commonjs/store/useFontScale.js.map +1 -1
  92. package/lib/commonjs/store/useScreen.js.map +1 -1
  93. package/lib/commonjs/styles/fill.js.map +1 -1
  94. package/lib/commonjs/types/forms.js.map +1 -1
  95. package/lib/commonjs/types/index.js.map +1 -1
  96. package/lib/commonjs/utils/downloadFile.js.map +1 -1
  97. package/lib/commonjs/utils/downloadFileLegacy.js.map +1 -1
  98. package/lib/module/components/box/Center.js.map +1 -1
  99. package/lib/module/components/box/CollapseHorizontal.js.map +1 -1
  100. package/lib/module/components/box/ContentBox.js.map +1 -1
  101. package/lib/module/components/box/DropShadow.js.map +1 -1
  102. package/lib/module/components/box/ExpandOnMount.js.map +1 -1
  103. package/lib/module/components/box/Expandable.js.map +1 -1
  104. package/lib/module/components/box/FullSizeContainer.js.map +1 -1
  105. package/lib/module/components/box/index.js.map +1 -1
  106. package/lib/module/components/button/ActionButton.js.map +1 -1
  107. package/lib/module/components/button/ButtonText.js.map +1 -1
  108. package/lib/module/components/button/DeleteButton.js.map +1 -1
  109. package/lib/module/components/button/LoadingButton.js.map +1 -1
  110. package/lib/module/components/button/Toggle.js.map +1 -1
  111. package/lib/module/components/button/hooks.js.map +1 -1
  112. package/lib/module/components/button/index.js.map +1 -1
  113. package/lib/module/components/feed/FeedContentPane.js.map +1 -1
  114. package/lib/module/components/feed/MediaFeed.js.map +1 -1
  115. package/lib/module/components/feed/MediaFeedBackground.js.map +1 -1
  116. package/lib/module/components/feed/MediaFeedRefresh.js.map +1 -1
  117. package/lib/module/components/feed/constants.js.map +1 -1
  118. package/lib/module/components/feed/context.js.map +1 -1
  119. package/lib/module/components/feed/hooks.js.map +1 -1
  120. package/lib/module/components/feed/index.js.map +1 -1
  121. package/lib/module/components/form/Condition.js.map +1 -1
  122. package/lib/module/components/form/Field.js.map +1 -1
  123. package/lib/module/components/form/Form.js.map +1 -1
  124. package/lib/module/components/form/FormFooter.js.map +1 -1
  125. package/lib/module/components/form/UploadProgress/index.js.map +1 -1
  126. package/lib/module/components/form/index.js.map +1 -1
  127. package/lib/module/components/form/input/Editable.js.map +1 -1
  128. package/lib/module/components/form/input/InputSlider.js.map +1 -1
  129. package/lib/module/components/form/input/OptionalTag.js.map +1 -1
  130. package/lib/module/components/form/input/StandaloneInput.js.map +1 -1
  131. package/lib/module/components/form/input/boolean/index.js.map +1 -1
  132. package/lib/module/components/form/input/color/index.js.map +1 -1
  133. package/lib/module/components/form/input/common/InputClearButton.js.map +1 -1
  134. package/lib/module/components/form/input/date/index.js.map +1 -1
  135. package/lib/module/components/form/input/datetime/index.js.map +1 -1
  136. package/lib/module/components/form/input/file/index.js.map +1 -1
  137. package/lib/module/components/form/input/hooks/index.js.map +1 -1
  138. package/lib/module/components/form/input/hooks/useInputColor.js.map +1 -1
  139. package/lib/module/components/form/input/hooks/useInputImperativeHandle.js.map +1 -1
  140. package/lib/module/components/form/input/hooks/useInputStyles.js.map +1 -1
  141. package/lib/module/components/form/input/index.js.map +1 -1
  142. package/lib/module/components/form/input/input.js.map +1 -1
  143. package/lib/module/components/form/input/multipleSelect/index.js.map +1 -1
  144. package/lib/module/components/form/input/number/index.js.map +1 -1
  145. package/lib/module/components/form/input/select/index.js.map +1 -1
  146. package/lib/module/components/form/input/socialMedia/index.js.map +1 -1
  147. package/lib/module/components/form/input/text/AutoResizeTextarea.js.map +1 -1
  148. package/lib/module/components/form/input/text/index.js.map +1 -1
  149. package/lib/module/components/form/input/text/textarea.js.map +1 -1
  150. package/lib/module/components/form/input/text/useWebAutoResize.js.map +1 -1
  151. package/lib/module/components/form/input/time/index.js.map +1 -1
  152. package/lib/module/components/form/types.js.map +1 -1
  153. package/lib/module/components/form/view/file.js.map +1 -1
  154. package/lib/module/components/form/view/index.js.map +1 -1
  155. package/lib/module/components/form/view/multipleSelect.js.map +1 -1
  156. package/lib/module/components/form/view/select.js.map +1 -1
  157. package/lib/module/components/form/view/styles.js.map +1 -1
  158. package/lib/module/components/icons/index.js.map +1 -1
  159. package/lib/module/components/image/ImageViewModal.js.map +1 -1
  160. package/lib/module/components/image/index.js.map +1 -1
  161. package/lib/module/components/index.js.map +1 -1
  162. package/lib/module/components/layout/CollapseHorizontal.js.map +1 -1
  163. package/lib/module/components/loading/CircularProgress.js.map +1 -1
  164. package/lib/module/components/loading/Loading.js.map +1 -1
  165. package/lib/module/components/loading/LoadingImage.js.map +1 -1
  166. package/lib/module/components/loading/LoadingOverlay.js.map +1 -1
  167. package/lib/module/components/loading/LoadingSwitch.js.map +1 -1
  168. package/lib/module/components/loading/ProgressBar.js.map +1 -1
  169. package/lib/module/components/loading/index.js.map +1 -1
  170. package/lib/module/components/text/AnimatedText.js.map +1 -1
  171. package/lib/module/components/text/Txt.js.map +1 -1
  172. package/lib/module/components/text/index.js.map +1 -1
  173. package/lib/module/components/theme/colorMode/DarkModeToggle.js.map +1 -1
  174. package/lib/module/components/theme/colorMode/index.js.map +1 -1
  175. package/lib/module/components/theme/index.js.map +1 -1
  176. package/lib/module/constants/index.js.map +1 -1
  177. package/lib/module/constants/toast.js.map +1 -1
  178. package/lib/module/contexts/fonts.js.map +1 -1
  179. package/lib/module/contexts/index.js.map +1 -1
  180. package/lib/module/contexts/root.js.map +1 -1
  181. package/lib/module/hooks/index.js.map +1 -1
  182. package/lib/module/hooks/useFadeIn.js.map +1 -1
  183. package/lib/module/hooks/useFont.js.map +1 -1
  184. package/lib/module/hooks/useRefreshFontScale.js.map +1 -1
  185. package/lib/module/hooks/useThemeState.js.map +1 -1
  186. package/lib/module/index.js.map +1 -1
  187. package/lib/module/store/index.js.map +1 -1
  188. package/lib/module/store/useFontScale.js.map +1 -1
  189. package/lib/module/store/useScreen.js.map +1 -1
  190. package/lib/module/styles/fill.js.map +1 -1
  191. package/lib/module/types/forms.js.map +1 -1
  192. package/lib/module/types/index.js.map +1 -1
  193. package/lib/module/utils/downloadFile.js.map +1 -1
  194. package/lib/module/utils/downloadFileLegacy.js.map +1 -1
  195. package/package.json +5 -20
  196. package/src/components/box/Center.tsx +0 -19
  197. package/src/components/box/CollapseHorizontal.tsx +0 -44
  198. package/src/components/box/ContentBox.tsx +0 -24
  199. package/src/components/box/DropShadow.tsx +0 -28
  200. package/src/components/box/ExpandOnMount.tsx +0 -74
  201. package/src/components/box/Expandable.tsx +0 -143
  202. package/src/components/box/FullSizeContainer.tsx +0 -64
  203. package/src/components/box/index.ts +0 -7
  204. package/src/components/button/ActionButton.tsx +0 -196
  205. package/src/components/button/ButtonText.tsx +0 -60
  206. package/src/components/button/DeleteButton.tsx +0 -288
  207. package/src/components/button/LoadingButton.tsx +0 -41
  208. package/src/components/button/Toggle.tsx +0 -109
  209. package/src/components/button/hooks.ts +0 -66
  210. package/src/components/button/index.ts +0 -5
  211. package/src/components/feed/FeedContentPane.tsx +0 -97
  212. package/src/components/feed/MediaFeed.tsx +0 -199
  213. package/src/components/feed/MediaFeedBackground.tsx +0 -136
  214. package/src/components/feed/MediaFeedRefresh.tsx +0 -113
  215. package/src/components/feed/constants.ts +0 -2
  216. package/src/components/feed/context.tsx +0 -19
  217. package/src/components/feed/hooks.ts +0 -279
  218. package/src/components/feed/index.ts +0 -2
  219. package/src/components/form/Condition.tsx +0 -27
  220. package/src/components/form/Field.tsx +0 -44
  221. package/src/components/form/Form.tsx +0 -452
  222. package/src/components/form/FormFooter.tsx +0 -164
  223. package/src/components/form/UploadProgress/index.tsx +0 -50
  224. package/src/components/form/index.ts +0 -3
  225. package/src/components/form/input/Editable.tsx +0 -206
  226. package/src/components/form/input/InputSlider.tsx +0 -71
  227. package/src/components/form/input/OptionalTag.tsx +0 -43
  228. package/src/components/form/input/StandaloneInput.tsx +0 -49
  229. package/src/components/form/input/boolean/index.tsx +0 -53
  230. package/src/components/form/input/color/index.tsx +0 -145
  231. package/src/components/form/input/common/InputClearButton.tsx +0 -57
  232. package/src/components/form/input/date/index.tsx +0 -125
  233. package/src/components/form/input/datetime/index.tsx +0 -176
  234. package/src/components/form/input/file/index.tsx +0 -310
  235. package/src/components/form/input/hooks/index.ts +0 -2
  236. package/src/components/form/input/hooks/useInputColor.ts +0 -7
  237. package/src/components/form/input/hooks/useInputImperativeHandle.ts +0 -22
  238. package/src/components/form/input/hooks/useInputStyles.ts +0 -114
  239. package/src/components/form/input/index.ts +0 -4
  240. package/src/components/form/input/input.tsx +0 -218
  241. package/src/components/form/input/multipleSelect/index.tsx +0 -221
  242. package/src/components/form/input/number/index.tsx +0 -108
  243. package/src/components/form/input/select/index.tsx +0 -152
  244. package/src/components/form/input/socialMedia/index.tsx +0 -235
  245. package/src/components/form/input/text/AutoResizeTextarea.tsx +0 -41
  246. package/src/components/form/input/text/index.tsx +0 -99
  247. package/src/components/form/input/text/textarea.tsx +0 -32
  248. package/src/components/form/input/text/useWebAutoResize.tsx +0 -73
  249. package/src/components/form/input/time/index.tsx +0 -125
  250. package/src/components/form/types.ts +0 -8
  251. package/src/components/form/view/file.tsx +0 -80
  252. package/src/components/form/view/index.tsx +0 -125
  253. package/src/components/form/view/multipleSelect.tsx +0 -85
  254. package/src/components/form/view/select.tsx +0 -83
  255. package/src/components/form/view/styles.ts +0 -12
  256. package/src/components/icons/index.tsx +0 -28
  257. package/src/components/image/ImageViewModal.tsx +0 -319
  258. package/src/components/image/index.ts +0 -1
  259. package/src/components/index.ts +0 -8
  260. package/src/components/layout/CollapseHorizontal.tsx +0 -92
  261. package/src/components/loading/CircularProgress.tsx +0 -56
  262. package/src/components/loading/Loading.tsx +0 -146
  263. package/src/components/loading/LoadingImage.tsx +0 -163
  264. package/src/components/loading/LoadingOverlay.tsx +0 -74
  265. package/src/components/loading/LoadingSwitch.tsx +0 -110
  266. package/src/components/loading/ProgressBar.tsx +0 -75
  267. package/src/components/loading/index.ts +0 -6
  268. package/src/components/text/AnimatedText.tsx +0 -68
  269. package/src/components/text/Txt.tsx +0 -12
  270. package/src/components/text/index.ts +0 -1
  271. package/src/components/theme/colorMode/DarkModeToggle.tsx +0 -47
  272. package/src/components/theme/colorMode/index.ts +0 -1
  273. package/src/components/theme/index.ts +0 -1
  274. package/src/constants/index.ts +0 -1
  275. package/src/constants/toast.ts +0 -24
  276. package/src/contexts/fonts.tsx +0 -23
  277. package/src/contexts/index.ts +0 -1
  278. package/src/contexts/root.tsx +0 -190
  279. package/src/hooks/index.ts +0 -3
  280. package/src/hooks/useFadeIn.ts +0 -48
  281. package/src/hooks/useFont.ts +0 -25
  282. package/src/hooks/useRefreshFontScale.ts +0 -39
  283. package/src/hooks/useThemeState.ts +0 -43
  284. package/src/index.ts +0 -6
  285. package/src/store/index.ts +0 -2
  286. package/src/store/useFontScale.ts +0 -8
  287. package/src/store/useScreen.ts +0 -25
  288. package/src/styles/fill.ts +0 -19
  289. package/src/types/forms.ts +0 -14
  290. package/src/types/index.ts +0 -1
  291. package/src/utils/downloadFile.ts +0 -61
  292. package/src/utils/downloadFileLegacy.ts +0 -66
@@ -1,279 +0,0 @@
1
- import { FetchFeedFunction } from '@chem-po/core'
2
- import { UpdatePanelsArgs, useAuth, useToast } from '@chem-po/react'
3
- import { useCallback, useEffect, useMemo, useRef, useState } from 'react'
4
-
5
- const DEFAULT_LIMIT = 10
6
- export const useMediaFeed = (
7
- fetch: FetchFeedFunction,
8
- onUpdatePanels: (items: UpdatePanelsArgs) => void,
9
- limit: number = DEFAULT_LIMIT,
10
- authRequired = false,
11
- ) => {
12
- // first element is prev ids, second element is curr ids, third element is next ids
13
- const [ids, setIds] = useState<[string[] | null, string[] | null, string[] | null]>([
14
- null,
15
- null,
16
- null,
17
- ])
18
- const [idIdx, setIdIdx] = useState<number>(0)
19
- const user = useAuth(s => s.user)
20
-
21
- const [loading, setLoading] = useState(false)
22
- const [refreshing, setRefreshing] = useState(false)
23
- const [error, setError] = useState<string | null>(null)
24
- const [itemLoading, setItemLoading] = useState(false)
25
- const [direction, setDirection] = useState<'next' | 'prev' | null>(null)
26
-
27
- const fetchingId = useRef<string | null>(null)
28
-
29
- const idsRef = useRef<{ prev: string | null; curr: string | null; next: string | null }>({
30
- prev: null,
31
- curr: null,
32
- next: null,
33
- })
34
-
35
- const { showInfo, showError } = useToast()
36
-
37
- const updateCurr = useCallback(
38
- (id: string | null) => {
39
- if (id) {
40
- if (idsRef.current.prev === id) {
41
- idsRef.current.prev = null
42
- }
43
- if (idsRef.current.next === id) {
44
- idsRef.current.next = null
45
- }
46
- }
47
- idsRef.current.curr = id
48
- onUpdatePanels({ ...idsRef.current })
49
- },
50
- [onUpdatePanels],
51
- )
52
-
53
- const updateNext = useCallback(
54
- (id: string | null) => {
55
- if (id) {
56
- if (idsRef.current.prev === id) {
57
- idsRef.current.prev = null
58
- }
59
- if (idsRef.current.curr === id) {
60
- idsRef.current.curr = null
61
- }
62
- }
63
- idsRef.current.next = id
64
- onUpdatePanels({ ...idsRef.current })
65
- },
66
- [onUpdatePanels],
67
- )
68
-
69
- const updatePrev = useCallback(
70
- (id: string | null) => {
71
- if (id) {
72
- if (idsRef.current.curr === id) {
73
- idsRef.current.curr = null
74
- }
75
- if (idsRef.current.next === id) {
76
- idsRef.current.next = null
77
- }
78
- }
79
- idsRef.current.prev = id
80
- onUpdatePanels({ ...idsRef.current })
81
- },
82
- [onUpdatePanels],
83
- )
84
-
85
- const fetchIds = useCallback(
86
- async (
87
- startBefore: string | null,
88
- startAfter: string | null,
89
- isPrefetch: boolean,
90
- ): Promise<string[]> => {
91
- if (!user && authRequired) return []
92
- if (!isPrefetch) setLoading(true)
93
-
94
- try {
95
- const data = await fetch({ limit, startAfter, startBefore })
96
- if (!isPrefetch) {
97
- const firstId = data.ids[0]
98
- const secondId = data.ids[1] || null
99
- updateCurr(firstId)
100
- updateNext(secondId)
101
- updatePrev(startAfter)
102
- if (startAfter) {
103
- setIds(s => [s[1], data.ids, null])
104
- } else if (startBefore) {
105
- setIds(s => [null, data.ids, s[1]])
106
- } else {
107
- setIds([null, data.ids, null])
108
- }
109
- const newLastId = data.ids[data.ids.length - 1]
110
- if (newLastId) {
111
- fetchIds(null, newLastId, true)
112
- }
113
- } else if (startAfter) {
114
- setIds(s => [s[0], s[1], data.ids])
115
- } else if (startBefore) {
116
- setIds(s => [data.ids, s[1], s[2]])
117
- }
118
- setLoading(false)
119
- return data.ids || []
120
- } catch (err: any) {
121
- setError(err.message)
122
- // toast({
123
- // title: 'Error fetching feed',
124
- // description: err.message,
125
- // status: 'error',
126
- // duration: 9000,
127
- // isClosable: true,
128
- // })
129
- showError('Error fetching feed')
130
- }
131
- setLoading(false)
132
- return []
133
- },
134
- [fetch, user, authRequired, updateCurr, updateNext, updatePrev, limit, showError],
135
- )
136
-
137
- // handles prefetching of next items
138
- const getNextId = useCallback(
139
- async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {
140
- const currIds = ids[1] ?? []
141
- const nextIds = ids[2] ?? []
142
- const nextIdx = currIdx + 1
143
- if (nextIdx < currIds.length) {
144
- return { id: currIds[nextIdx], idx: nextIdx }
145
- }
146
- if (nextIds[0]) {
147
- const newLastId = nextIds[nextIds.length - 1]
148
- if (!isPrefetch) {
149
- setIds(s => [s[1], s[2], null])
150
- fetchIds(null, newLastId, true)
151
- }
152
- return { id: nextIds[0], idx: 0 }
153
- }
154
- const fetchedNextIds = await fetchIds(null, currIds[currIds.length - 1], isPrefetch)
155
- const fetchedNextId = fetchedNextIds[0]
156
- return fetchedNextId ? { id: fetchedNextId, idx: 0 } : null
157
- },
158
- [ids, fetchIds],
159
- )
160
-
161
- const getPrevId = useCallback(
162
- async (currIdx: number, isPrefetch: boolean): Promise<{ id: string; idx: number } | null> => {
163
- const currIds = ids[1] ?? []
164
- const prevIds = ids[0] ?? []
165
- const prevIdx = currIdx - 1
166
- if (prevIdx >= 0) {
167
- return { id: currIds[prevIdx], idx: prevIdx }
168
- }
169
- if (prevIds[prevIds.length - 1]) {
170
- const newFirstId = prevIds[0]
171
- if (!isPrefetch) {
172
- setIds([null, ids[0], ids[1]])
173
- fetchIds(newFirstId, null, true)
174
- }
175
- return { id: prevIds[prevIds.length - 1], idx: prevIds.length - 1 }
176
- }
177
- const fetchedPrevIds = await fetchIds(currIds[0], null, isPrefetch)
178
- const fetchedPrevId = fetchedPrevIds[fetchedPrevIds.length - 1]
179
- return fetchedPrevId ? { id: fetchedPrevId, idx: fetchedPrevIds.length - 1 } : null
180
- },
181
- [ids, fetchIds],
182
- )
183
-
184
- const goNext = useCallback(async () => {
185
- if (itemLoading) return
186
- // case 1: next item ID is fetched
187
- const newPrev = idsRef.current.curr
188
-
189
- setItemLoading(true)
190
- const nextIdData = await getNextId(idIdx, false)
191
- setDirection('next')
192
- if (nextIdData) {
193
- const { id: nextId, idx: nextIdx } = nextIdData
194
- fetchingId.current = nextId
195
- setIdIdx(nextIdx)
196
- updateCurr(nextId)
197
- updateNext(null)
198
- updatePrev(newPrev)
199
- getNextId(nextIdx, true).then(newNextId => updateNext(newNextId?.id ?? null))
200
- } else {
201
- showInfo('No more items')
202
- }
203
- setItemLoading(false)
204
- }, [idIdx, getNextId, updateCurr, updateNext, updatePrev, itemLoading, showInfo])
205
-
206
- const goPrev = useCallback(async () => {
207
- if (itemLoading) return
208
- // case 1: next item ID is fetched
209
- const newNext = idsRef.current.curr
210
-
211
- setDirection('prev')
212
- setItemLoading(true)
213
- const prevIdData = await getPrevId(idIdx, false)
214
- if (prevIdData) {
215
- const { id: prevId, idx: prevIdx } = prevIdData
216
- fetchingId.current = prevId
217
- setIdIdx(prevIdx)
218
- updateCurr(prevId)
219
- updatePrev(null)
220
- updateNext(newNext)
221
- getPrevId(prevIdx, true).then(newPrevId => updatePrev(newPrevId?.id ?? null))
222
- } else {
223
- showInfo('No more items')
224
- }
225
- setItemLoading(false)
226
- }, [idIdx, getPrevId, updateCurr, updateNext, updatePrev, itemLoading, showInfo])
227
-
228
- const refresh = useCallback(async () => {
229
- setLoading(true)
230
- setRefreshing(true)
231
- setIds([null, null, null])
232
- updateCurr(null)
233
- updateNext(null)
234
- updatePrev(null)
235
- setDirection(null)
236
- setIdIdx(0)
237
- await fetchIds(null, null, false)
238
- setRefreshing(false)
239
- }, [fetchIds, updateCurr, updateNext, updatePrev])
240
-
241
- const [initFetchIds] = useState(() => fetchIds)
242
- useEffect(() => {
243
- initFetchIds(null, null, false)
244
- }, [initFetchIds])
245
-
246
- const canGoPrev = useMemo(() => (idIdx > 0 && !!ids[1]?.length) || !!ids[0]?.length, [ids, idIdx])
247
- const canGoNext = useMemo(
248
- () => (ids[1] && idIdx < ids[1].length) ?? !!ids[2]?.length,
249
- [ids, idIdx],
250
- )
251
- return useMemo(
252
- () => ({
253
- ids,
254
- goNext,
255
- goPrev,
256
- error,
257
- refresh,
258
- refreshing,
259
- loading,
260
- canGoNext,
261
- direction,
262
- canGoPrev,
263
- itemLoading,
264
- }),
265
- [
266
- ids,
267
- goNext,
268
- goPrev,
269
- loading,
270
- error,
271
- itemLoading,
272
- canGoNext,
273
- canGoPrev,
274
- refresh,
275
- refreshing,
276
- direction,
277
- ],
278
- )
279
- }
@@ -1,2 +0,0 @@
1
- export { useMediaFeed } from './context'
2
- export * from './MediaFeed'
@@ -1,27 +0,0 @@
1
- import React, { PropsWithChildren, useMemo } from 'react'
2
- import { useWatch } from 'react-hook-form'
3
- import { Animated } from 'react-native'
4
-
5
- export const Condition = ({
6
- path,
7
- condition,
8
- children,
9
- }: PropsWithChildren<{
10
- path: string
11
- condition: (values: any) => boolean
12
- }>) => {
13
- const value = useWatch({ exact: true, name: path })
14
- const isVisible = useMemo(() => condition(value), [value, condition])
15
-
16
- if (!isVisible) return null
17
-
18
- return (
19
- <Animated.View
20
- style={{
21
- paddingVertical: 3,
22
- opacity: 1,
23
- }}>
24
- {children}
25
- </Animated.View>
26
- )
27
- }
@@ -1,44 +0,0 @@
1
- import { InputRef, InputSize, getFieldValidate } from '@chem-po/core'
2
- import { Field, useField } from '@chem-po/react'
3
- import React, { ForwardedRef, forwardRef, useMemo } from 'react'
4
- import { ChangeHandler, Controller } from 'react-hook-form'
5
- import { Input } from './input/input'
6
-
7
- const FieldComponentBase = (
8
- { field, name, size: formSize }: { field: Field; name: string; size?: InputSize },
9
- ref: ForwardedRef<InputRef>,
10
- ) => {
11
- const { control, getOnChange, meta, onFocus, onBlur: fieldBlur } = useField(name, field)
12
- const validate = useMemo(() => field.validate ?? getFieldValidate(field), [field])
13
-
14
- return (
15
- <Controller<Field['defaultValue']>
16
- control={control}
17
- rules={{ validate }}
18
- name={name}
19
- render={({ field: { name: _, ref: _r, onBlur, ...inputProps } }) => {
20
- return (
21
- <Input
22
- ref={ref}
23
- field={field}
24
- input={{
25
- ...inputProps,
26
- onFocus,
27
- onBlur: () => {
28
- fieldBlur()
29
- onBlur()
30
- },
31
- onChange: getOnChange(inputProps.onChange as ChangeHandler),
32
- }}
33
- meta={meta}
34
- formSize={formSize}
35
- />
36
- )
37
- }}
38
- />
39
- )
40
- }
41
-
42
- export const FieldComponent = forwardRef(FieldComponentBase)
43
-
44
- export default FieldComponent