stream-chat-react-native-core 5.44.2-beta.1 → 6.0.0-beta.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 (1305) hide show
  1. package/README.md +1 -2
  2. package/lib/commonjs/components/Attachment/Attachment.js +1 -1
  3. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  4. package/lib/commonjs/components/Attachment/Card.js +6 -6
  5. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  6. package/lib/commonjs/components/Attachment/FileAttachment.js +5 -5
  7. package/lib/commonjs/components/Attachment/FileAttachment.js.map +1 -1
  8. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js +1 -1
  9. package/lib/commonjs/components/Attachment/FileAttachmentGroup.js.map +1 -1
  10. package/lib/commonjs/components/Attachment/Gallery.js +32 -23
  11. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  12. package/lib/commonjs/components/Attachment/Giphy.js +8 -8
  13. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  14. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js +7 -0
  15. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  16. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +3 -1
  17. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  18. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +3 -0
  19. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  20. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +4 -0
  21. package/lib/commonjs/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  22. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +2 -0
  23. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  24. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +2 -0
  25. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  26. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +2 -2
  27. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  28. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js +40 -136
  29. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  30. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +9 -6
  31. package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  32. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -2
  33. package/lib/commonjs/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  34. package/lib/commonjs/components/Avatar/Avatar.js +4 -0
  35. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  36. package/lib/commonjs/components/Avatar/GroupAvatar.js +4 -0
  37. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  38. package/lib/commonjs/components/Channel/Channel.js +576 -1262
  39. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  40. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js +174 -0
  41. package/lib/commonjs/components/Channel/hooks/useChannelDataState.js.map +1 -0
  42. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js +0 -8
  43. package/lib/commonjs/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  44. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  45. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  46. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +26 -10
  47. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  48. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  49. package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  50. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js +324 -0
  51. package/lib/commonjs/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  52. package/lib/commonjs/components/ChannelList/ChannelList.js +0 -2
  53. package/lib/commonjs/components/ChannelList/ChannelList.js.map +1 -1
  54. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  55. package/lib/commonjs/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  56. package/lib/commonjs/components/ChannelList/Skeleton.js +7 -3
  57. package/lib/commonjs/components/ChannelList/Skeleton.js.map +1 -1
  58. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js +8 -18
  59. package/lib/commonjs/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  60. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +85 -46
  61. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  62. package/lib/commonjs/components/Chat/Chat.js +31 -16
  63. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  64. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +312 -173
  65. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  66. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +31 -18
  67. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
  68. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +0 -2
  69. package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  70. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +16 -13
  71. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  72. package/lib/commonjs/components/ImageGallery/ImageGallery.js +57 -96
  73. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  74. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +14 -35
  75. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  76. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +17 -35
  77. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  78. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +72 -64
  79. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  80. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +38 -39
  81. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  82. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  83. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +54 -0
  84. package/lib/commonjs/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -0
  85. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js +230 -225
  86. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  87. package/lib/commonjs/components/Indicators/LoadingIndicator.js +1 -1
  88. package/lib/commonjs/components/Indicators/LoadingIndicator.js.map +1 -1
  89. package/lib/commonjs/components/Message/Message.js +136 -192
  90. package/lib/commonjs/components/Message/Message.js.map +1 -1
  91. package/lib/commonjs/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  92. package/lib/commonjs/components/Message/MessageSimple/MessageBounce.js +23 -6
  93. package/lib/commonjs/components/Message/MessageSimple/MessageBounce.js.map +1 -1
  94. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +40 -145
  95. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  96. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js +1 -1
  97. package/lib/commonjs/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  98. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js +0 -1
  99. package/lib/commonjs/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  100. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js +20 -34
  101. package/lib/commonjs/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  102. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +182 -44
  103. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  104. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  105. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  106. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListBottom.js +234 -0
  107. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListBottom.js.map +1 -0
  108. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListTop.js +195 -0
  109. package/lib/commonjs/components/Message/MessageSimple/ReactionList/ReactionListTop.js.map +1 -0
  110. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +4 -16
  111. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  112. package/lib/commonjs/components/Message/hooks/useMessageActions.js +36 -72
  113. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  114. package/lib/commonjs/components/Message/hooks/useMessageData.js +38 -0
  115. package/lib/commonjs/components/Message/hooks/useMessageData.js.map +1 -0
  116. package/lib/commonjs/components/Message/hooks/useProcessReactions.js +3 -3
  117. package/lib/commonjs/components/Message/hooks/useProcessReactions.js.map +1 -1
  118. package/lib/commonjs/components/Message/utils/messageActions.js +4 -6
  119. package/lib/commonjs/components/Message/utils/messageActions.js.map +1 -1
  120. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +1 -1
  121. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  122. package/lib/commonjs/components/MessageInput/MessageInput.js +1 -2
  123. package/lib/commonjs/components/MessageInput/MessageInput.js.map +1 -1
  124. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +1 -0
  125. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  126. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +1 -2
  127. package/lib/commonjs/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -1
  128. package/lib/commonjs/components/MessageInput/components/NativeAttachmentPicker.js +8 -5
  129. package/lib/commonjs/components/MessageInput/components/NativeAttachmentPicker.js.map +1 -1
  130. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js +46 -64
  131. package/lib/commonjs/components/MessageInput/hooks/useAudioController.js.map +1 -1
  132. package/lib/commonjs/components/MessageList/MessageList.js +67 -60
  133. package/lib/commonjs/components/MessageList/MessageList.js.map +1 -1
  134. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js +1 -1
  135. package/lib/commonjs/components/MessageList/ScrollToBottomButton.js.map +1 -1
  136. package/lib/commonjs/components/MessageList/hooks/useMessageList.js.map +1 -1
  137. package/lib/commonjs/components/MessageList/utils/getReadStates.js.map +1 -1
  138. package/lib/commonjs/components/MessageMenu/MessageActionList.js +35 -0
  139. package/lib/commonjs/components/MessageMenu/MessageActionList.js.map +1 -0
  140. package/lib/commonjs/components/MessageMenu/MessageActionListItem.js +60 -0
  141. package/lib/commonjs/components/MessageMenu/MessageActionListItem.js.map +1 -0
  142. package/lib/commonjs/components/MessageMenu/MessageMenu.js +70 -0
  143. package/lib/commonjs/components/MessageMenu/MessageMenu.js.map +1 -0
  144. package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js +81 -0
  145. package/lib/commonjs/components/MessageMenu/MessageReactionPicker.js.map +1 -0
  146. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js +169 -0
  147. package/lib/commonjs/components/MessageMenu/MessageUserReactions.js.map +1 -0
  148. package/lib/commonjs/components/{MessageOverlay/OverlayReactionsAvatar.js → MessageMenu/MessageUserReactionsAvatar.js} +5 -6
  149. package/lib/commonjs/components/MessageMenu/MessageUserReactionsAvatar.js.map +1 -0
  150. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js +112 -0
  151. package/lib/commonjs/components/MessageMenu/MessageUserReactionsItem.js.map +1 -0
  152. package/lib/commonjs/components/MessageMenu/ReactionButton.js +59 -0
  153. package/lib/commonjs/components/MessageMenu/ReactionButton.js.map +1 -0
  154. package/lib/commonjs/components/{MessageOverlay → MessageMenu}/hooks/useFetchReactions.js +65 -41
  155. package/lib/commonjs/components/MessageMenu/hooks/useFetchReactions.js.map +1 -0
  156. package/lib/commonjs/components/Poll/CreatePollContent.js +14 -9
  157. package/lib/commonjs/components/Poll/CreatePollContent.js.map +1 -1
  158. package/lib/commonjs/components/Poll/Poll.js +2 -8
  159. package/lib/commonjs/components/Poll/Poll.js.map +1 -1
  160. package/lib/commonjs/components/Poll/components/Button.js +9 -474
  161. package/lib/commonjs/components/Poll/components/Button.js.map +1 -1
  162. package/lib/commonjs/components/Poll/components/CreatePollIcon.js +2 -2
  163. package/lib/commonjs/components/Poll/components/CreatePollIcon.js.map +1 -1
  164. package/lib/commonjs/components/Poll/components/CreatePollOptions.js +9 -4
  165. package/lib/commonjs/components/Poll/components/CreatePollOptions.js.map +1 -1
  166. package/lib/commonjs/components/Poll/components/PollAnswersList.js +99 -26
  167. package/lib/commonjs/components/Poll/components/PollAnswersList.js.map +1 -1
  168. package/lib/commonjs/components/Poll/components/PollButtons.js +291 -0
  169. package/lib/commonjs/components/Poll/components/PollButtons.js.map +1 -0
  170. package/lib/commonjs/components/Poll/components/PollInputDialog.js +14 -4
  171. package/lib/commonjs/components/Poll/components/PollInputDialog.js.map +1 -1
  172. package/lib/commonjs/components/Poll/components/PollModalHeader.js +7 -1
  173. package/lib/commonjs/components/Poll/components/PollModalHeader.js.map +1 -1
  174. package/lib/commonjs/components/Poll/components/PollOption.js +88 -6
  175. package/lib/commonjs/components/Poll/components/PollOption.js.map +1 -1
  176. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  177. package/lib/commonjs/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  178. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js +62 -67
  179. package/lib/commonjs/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  180. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js +89 -0
  181. package/lib/commonjs/components/Poll/components/PollResults/PollVote.js.map +1 -0
  182. package/lib/commonjs/components/Poll/components/index.js +11 -0
  183. package/lib/commonjs/components/Poll/components/index.js.map +1 -1
  184. package/lib/commonjs/components/ProgressControl/ProgressControl.js +21 -28
  185. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -1
  186. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js +22 -27
  187. package/lib/commonjs/components/ProgressControl/WaveProgressBar.js.map +1 -1
  188. package/lib/commonjs/components/Reply/Reply.js +6 -2
  189. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  190. package/lib/commonjs/components/UIComponents/BottomSheetModal.js +158 -0
  191. package/lib/commonjs/components/UIComponents/BottomSheetModal.js.map +1 -0
  192. package/lib/commonjs/components/{ImageBackground.js → UIComponents/ImageBackground.js} +1 -1
  193. package/lib/commonjs/components/UIComponents/ImageBackground.js.map +1 -0
  194. package/lib/{module/components/Spinner → commonjs/components/UIComponents}/Spinner.js +1 -1
  195. package/lib/commonjs/components/UIComponents/Spinner.js.map +1 -0
  196. package/lib/commonjs/components/UIComponents/index.js +37 -0
  197. package/lib/commonjs/components/UIComponents/index.js.map +1 -0
  198. package/lib/commonjs/components/docs/data.js.map +1 -1
  199. package/lib/commonjs/components/index.js +56 -45
  200. package/lib/commonjs/components/index.js.map +1 -1
  201. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -13
  202. package/lib/commonjs/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  203. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -11
  204. package/lib/commonjs/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  205. package/lib/commonjs/contexts/channelContext/ChannelContext.js +1 -11
  206. package/lib/commonjs/contexts/channelContext/ChannelContext.js.map +1 -1
  207. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js +1 -11
  208. package/lib/commonjs/contexts/channelsContext/ChannelsContext.js.map +1 -1
  209. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js +1 -46
  210. package/lib/commonjs/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  211. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js +7 -84
  212. package/lib/commonjs/contexts/channelsStateContext/useChannelState.js.map +1 -1
  213. package/lib/commonjs/contexts/chatConfigContext/ChatConfigContext.js +33 -0
  214. package/lib/commonjs/contexts/chatConfigContext/ChatConfigContext.js.map +1 -0
  215. package/lib/commonjs/contexts/chatContext/ChatContext.js +1 -11
  216. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  217. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js +1 -11
  218. package/lib/commonjs/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  219. package/lib/commonjs/contexts/index.js +11 -11
  220. package/lib/commonjs/contexts/index.js.map +1 -1
  221. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js +1 -11
  222. package/lib/commonjs/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  223. package/lib/commonjs/contexts/messageContext/MessageContext.js +1 -11
  224. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  225. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +52 -51
  226. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  227. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +1 -1
  228. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  229. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +1 -11
  230. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  231. package/lib/commonjs/contexts/overlayContext/OverlayContext.js +1 -14
  232. package/lib/commonjs/contexts/overlayContext/OverlayContext.js.map +1 -1
  233. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js +18 -54
  234. package/lib/commonjs/contexts/overlayContext/OverlayProvider.js.map +1 -1
  235. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -11
  236. package/lib/commonjs/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  237. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js +1 -11
  238. package/lib/commonjs/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  239. package/lib/commonjs/contexts/themeContext/utils/theme.js +75 -49
  240. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  241. package/lib/commonjs/contexts/threadContext/ThreadContext.js +1 -11
  242. package/lib/commonjs/contexts/threadContext/ThreadContext.js.map +1 -1
  243. package/lib/commonjs/contexts/translationContext/TranslationContext.js +1 -11
  244. package/lib/commonjs/contexts/translationContext/TranslationContext.js.map +1 -1
  245. package/lib/commonjs/contexts/typingContext/TypingContext.js +1 -11
  246. package/lib/commonjs/contexts/typingContext/TypingContext.js.map +1 -1
  247. package/lib/commonjs/hooks/useTranslatedMessage.js +1 -4
  248. package/lib/commonjs/hooks/useTranslatedMessage.js.map +1 -1
  249. package/lib/commonjs/icons/PinHeader.js +17 -6
  250. package/lib/commonjs/icons/PinHeader.js.map +1 -1
  251. package/lib/commonjs/index.js +4 -23
  252. package/lib/commonjs/index.js.map +1 -1
  253. package/lib/commonjs/mock-builders/DB/mock.js +159 -88
  254. package/lib/commonjs/mock-builders/DB/mock.js.map +1 -1
  255. package/lib/commonjs/native.js +38 -26
  256. package/lib/commonjs/native.js.map +1 -1
  257. package/lib/commonjs/store/SqliteClient.js +330 -0
  258. package/lib/commonjs/store/SqliteClient.js.map +1 -0
  259. package/lib/commonjs/store/apis/addPendingTask.js +56 -30
  260. package/lib/commonjs/store/apis/addPendingTask.js.map +1 -1
  261. package/lib/commonjs/store/apis/deleteChannel.js +36 -17
  262. package/lib/commonjs/store/apis/deleteChannel.js.map +1 -1
  263. package/lib/commonjs/store/apis/deleteMember.js +38 -20
  264. package/lib/commonjs/store/apis/deleteMember.js.map +1 -1
  265. package/lib/commonjs/store/apis/deleteMessage.js +36 -17
  266. package/lib/commonjs/store/apis/deleteMessage.js.map +1 -1
  267. package/lib/commonjs/store/apis/deleteMessagesForChannel.js +36 -17
  268. package/lib/commonjs/store/apis/deleteMessagesForChannel.js.map +1 -1
  269. package/lib/commonjs/store/apis/deletePendingTask.js +31 -12
  270. package/lib/commonjs/store/apis/deletePendingTask.js.map +1 -1
  271. package/lib/commonjs/store/apis/deleteReaction.js +39 -22
  272. package/lib/commonjs/store/apis/deleteReaction.js.map +1 -1
  273. package/lib/commonjs/store/apis/deleteReactions.js +36 -17
  274. package/lib/commonjs/store/apis/deleteReactions.js.map +1 -1
  275. package/lib/commonjs/store/apis/getAllChannelIds.js +28 -8
  276. package/lib/commonjs/store/apis/getAllChannelIds.js.map +1 -1
  277. package/lib/commonjs/store/apis/getAppSettings.js +31 -11
  278. package/lib/commonjs/store/apis/getAppSettings.js.map +1 -1
  279. package/lib/commonjs/store/apis/getChannelMessages.js +77 -52
  280. package/lib/commonjs/store/apis/getChannelMessages.js.map +1 -1
  281. package/lib/commonjs/store/apis/getChannels.js +58 -30
  282. package/lib/commonjs/store/apis/getChannels.js.map +1 -1
  283. package/lib/commonjs/store/apis/getChannelsForFilterSort.js +58 -26
  284. package/lib/commonjs/store/apis/getChannelsForFilterSort.js.map +1 -1
  285. package/lib/commonjs/store/apis/getLastSyncedAt.js +31 -11
  286. package/lib/commonjs/store/apis/getLastSyncedAt.js.map +1 -1
  287. package/lib/commonjs/store/apis/getMembers.js +36 -16
  288. package/lib/commonjs/store/apis/getMembers.js.map +1 -1
  289. package/lib/commonjs/store/apis/getPendingTasks.js +37 -14
  290. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
  291. package/lib/commonjs/store/apis/getReactions.js +2 -2
  292. package/lib/commonjs/store/apis/getReactions.js.map +1 -1
  293. package/lib/commonjs/store/apis/getReactionsforFilterSort.js +54 -22
  294. package/lib/commonjs/store/apis/getReactionsforFilterSort.js.map +1 -1
  295. package/lib/commonjs/store/apis/getReads.js +36 -16
  296. package/lib/commonjs/store/apis/getReads.js.map +1 -1
  297. package/lib/commonjs/store/apis/insertReaction.js +41 -23
  298. package/lib/commonjs/store/apis/insertReaction.js.map +1 -1
  299. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js +36 -17
  300. package/lib/commonjs/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  301. package/lib/commonjs/store/apis/queries/selectChannels.js +44 -19
  302. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
  303. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js +37 -17
  304. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
  305. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js +37 -17
  306. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  307. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js +37 -17
  308. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  309. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js +37 -17
  310. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
  311. package/lib/commonjs/store/apis/updateMessage.js +71 -47
  312. package/lib/commonjs/store/apis/updateMessage.js.map +1 -1
  313. package/lib/commonjs/store/apis/updatePollMessage.js +68 -59
  314. package/lib/commonjs/store/apis/updatePollMessage.js.map +1 -1
  315. package/lib/commonjs/store/apis/updateReaction.js +53 -38
  316. package/lib/commonjs/store/apis/updateReaction.js.map +1 -1
  317. package/lib/commonjs/store/apis/upsertAppSettings.js +37 -20
  318. package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -1
  319. package/lib/commonjs/store/apis/upsertChannelData.js +35 -16
  320. package/lib/commonjs/store/apis/upsertChannelData.js.map +1 -1
  321. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js +37 -13
  322. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js.map +1 -1
  323. package/lib/commonjs/store/apis/upsertChannels.js +115 -60
  324. package/lib/commonjs/store/apis/upsertChannels.js.map +1 -1
  325. package/lib/commonjs/store/apis/upsertCidsForQuery.js +43 -26
  326. package/lib/commonjs/store/apis/upsertCidsForQuery.js.map +1 -1
  327. package/lib/commonjs/store/apis/upsertMembers.js +51 -33
  328. package/lib/commonjs/store/apis/upsertMembers.js.map +1 -1
  329. package/lib/commonjs/store/apis/upsertMessages.js +62 -44
  330. package/lib/commonjs/store/apis/upsertMessages.js.map +1 -1
  331. package/lib/commonjs/store/apis/upsertReads.js +51 -34
  332. package/lib/commonjs/store/apis/upsertReads.js.map +1 -1
  333. package/lib/commonjs/store/apis/upsertUserSyncStatus.js +31 -14
  334. package/lib/commonjs/store/apis/upsertUserSyncStatus.js.map +1 -1
  335. package/lib/commonjs/test-utils/BetterSqlite.js +40 -15
  336. package/lib/commonjs/test-utils/BetterSqlite.js.map +1 -1
  337. package/lib/commonjs/utils/DBSyncManager.js +238 -152
  338. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  339. package/lib/commonjs/utils/getResizedImageUrl.js +5 -3
  340. package/lib/commonjs/utils/getResizedImageUrl.js.map +1 -1
  341. package/lib/commonjs/utils/utils.js +1 -1
  342. package/lib/commonjs/utils/utils.js.map +1 -1
  343. package/lib/commonjs/version.json +1 -1
  344. package/lib/module/components/Attachment/Attachment.js +1 -1
  345. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  346. package/lib/module/components/Attachment/Card.js +6 -6
  347. package/lib/module/components/Attachment/Card.js.map +1 -1
  348. package/lib/module/components/Attachment/FileAttachment.js +5 -5
  349. package/lib/module/components/Attachment/FileAttachment.js.map +1 -1
  350. package/lib/module/components/Attachment/FileAttachmentGroup.js +1 -1
  351. package/lib/module/components/Attachment/FileAttachmentGroup.js.map +1 -1
  352. package/lib/module/components/Attachment/Gallery.js +32 -23
  353. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  354. package/lib/module/components/Attachment/Giphy.js +8 -8
  355. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  356. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js +7 -0
  357. package/lib/module/components/Attachment/utils/buildGallery/buildGallery.js.map +1 -1
  358. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js +3 -1
  359. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.js.map +1 -1
  360. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js +3 -0
  361. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.js.map +1 -1
  362. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js +4 -0
  363. package/lib/module/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.js.map +1 -1
  364. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +2 -0
  365. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  366. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js +2 -0
  367. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnailGrid.js.map +1 -1
  368. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +2 -2
  369. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  370. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +40 -136
  371. package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
  372. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js +9 -6
  373. package/lib/module/components/AttachmentPicker/components/AttachmentPickerSelectionBar.js.map +1 -1
  374. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js +1 -2
  375. package/lib/module/components/AutoCompleteInput/AutoCompleteSuggestionList.js.map +1 -1
  376. package/lib/module/components/Avatar/Avatar.js +4 -0
  377. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  378. package/lib/module/components/Avatar/GroupAvatar.js +4 -0
  379. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  380. package/lib/module/components/Channel/Channel.js +576 -1262
  381. package/lib/module/components/Channel/Channel.js.map +1 -1
  382. package/lib/module/components/Channel/hooks/useChannelDataState.js +174 -0
  383. package/lib/module/components/Channel/hooks/useChannelDataState.js.map +1 -0
  384. package/lib/module/components/Channel/hooks/useCreateChannelContext.js +0 -8
  385. package/lib/module/components/Channel/hooks/useCreateChannelContext.js.map +1 -1
  386. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -2
  387. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  388. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +26 -10
  389. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  390. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +3 -3
  391. package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
  392. package/lib/module/components/Channel/hooks/useMessageListPagination.js +324 -0
  393. package/lib/module/components/Channel/hooks/useMessageListPagination.js.map +1 -0
  394. package/lib/module/components/ChannelList/ChannelList.js +0 -2
  395. package/lib/module/components/ChannelList/ChannelList.js.map +1 -1
  396. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js +1 -1
  397. package/lib/module/components/ChannelList/ChannelListFooterLoadingIndicator.js.map +1 -1
  398. package/lib/module/components/ChannelList/Skeleton.js +7 -3
  399. package/lib/module/components/ChannelList/Skeleton.js.map +1 -1
  400. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js +8 -18
  401. package/lib/module/components/ChannelList/hooks/listeners/useNewMessageNotification.js.map +1 -1
  402. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +85 -46
  403. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  404. package/lib/module/components/Chat/Chat.js +31 -16
  405. package/lib/module/components/Chat/Chat.js.map +1 -1
  406. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +312 -173
  407. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  408. package/lib/module/components/Chat/hooks/useAppSettings.js +31 -18
  409. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
  410. package/lib/module/components/Chat/hooks/useCreateChatContext.js +0 -2
  411. package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
  412. package/lib/module/components/Chat/hooks/useIsOnline.js +16 -13
  413. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  414. package/lib/module/components/ImageGallery/ImageGallery.js +57 -96
  415. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  416. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +14 -35
  417. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  418. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +17 -35
  419. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  420. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +72 -64
  421. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  422. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +38 -39
  423. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  424. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  425. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js +54 -0
  426. package/lib/module/components/ImageGallery/hooks/useAnimatedGalleryStyle.js.map +1 -0
  427. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js +230 -225
  428. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -1
  429. package/lib/module/components/Indicators/LoadingIndicator.js +1 -1
  430. package/lib/module/components/Indicators/LoadingIndicator.js.map +1 -1
  431. package/lib/module/components/Message/Message.js +136 -192
  432. package/lib/module/components/Message/Message.js.map +1 -1
  433. package/lib/module/components/Message/MessageSimple/MessageAvatar.js.map +1 -1
  434. package/lib/module/components/Message/MessageSimple/MessageBounce.js +23 -6
  435. package/lib/module/components/Message/MessageSimple/MessageBounce.js.map +1 -1
  436. package/lib/module/components/Message/MessageSimple/MessageContent.js +40 -145
  437. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  438. package/lib/module/components/Message/MessageSimple/MessageDeleted.js +1 -1
  439. package/lib/module/components/Message/MessageSimple/MessageDeleted.js.map +1 -1
  440. package/lib/module/components/Message/MessageSimple/MessageFooter.js +0 -1
  441. package/lib/module/components/Message/MessageSimple/MessageFooter.js.map +1 -1
  442. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js +20 -34
  443. package/lib/module/components/Message/MessageSimple/MessagePinnedHeader.js.map +1 -1
  444. package/lib/module/components/Message/MessageSimple/MessageSimple.js +182 -44
  445. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  446. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +1 -1
  447. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  448. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListBottom.js +234 -0
  449. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListBottom.js.map +1 -0
  450. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListTop.js +195 -0
  451. package/lib/module/components/Message/MessageSimple/ReactionList/ReactionListTop.js.map +1 -0
  452. package/lib/module/components/Message/hooks/useCreateMessageContext.js +4 -16
  453. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  454. package/lib/module/components/Message/hooks/useMessageActions.js +36 -72
  455. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  456. package/lib/module/components/Message/hooks/useMessageData.js +38 -0
  457. package/lib/module/components/Message/hooks/useMessageData.js.map +1 -0
  458. package/lib/module/components/Message/hooks/useProcessReactions.js +3 -3
  459. package/lib/module/components/Message/hooks/useProcessReactions.js.map +1 -1
  460. package/lib/module/components/Message/utils/messageActions.js +4 -6
  461. package/lib/module/components/Message/utils/messageActions.js.map +1 -1
  462. package/lib/module/components/MessageInput/FileUploadPreview.js +1 -1
  463. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  464. package/lib/module/components/MessageInput/MessageInput.js +1 -2
  465. package/lib/module/components/MessageInput/MessageInput.js.map +1 -1
  466. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js +1 -0
  467. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingButton.js.map +1 -1
  468. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js +1 -2
  469. package/lib/module/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.js.map +1 -1
  470. package/lib/module/components/MessageInput/components/NativeAttachmentPicker.js +8 -5
  471. package/lib/module/components/MessageInput/components/NativeAttachmentPicker.js.map +1 -1
  472. package/lib/module/components/MessageInput/hooks/useAudioController.js +46 -64
  473. package/lib/module/components/MessageInput/hooks/useAudioController.js.map +1 -1
  474. package/lib/module/components/MessageList/MessageList.js +67 -60
  475. package/lib/module/components/MessageList/MessageList.js.map +1 -1
  476. package/lib/module/components/MessageList/ScrollToBottomButton.js +1 -1
  477. package/lib/module/components/MessageList/ScrollToBottomButton.js.map +1 -1
  478. package/lib/module/components/MessageList/hooks/useMessageList.js.map +1 -1
  479. package/lib/module/components/MessageList/utils/getReadStates.js.map +1 -1
  480. package/lib/module/components/MessageMenu/MessageActionList.js +35 -0
  481. package/lib/module/components/MessageMenu/MessageActionList.js.map +1 -0
  482. package/lib/module/components/MessageMenu/MessageActionListItem.js +60 -0
  483. package/lib/module/components/MessageMenu/MessageActionListItem.js.map +1 -0
  484. package/lib/module/components/MessageMenu/MessageMenu.js +70 -0
  485. package/lib/module/components/MessageMenu/MessageMenu.js.map +1 -0
  486. package/lib/module/components/MessageMenu/MessageReactionPicker.js +81 -0
  487. package/lib/module/components/MessageMenu/MessageReactionPicker.js.map +1 -0
  488. package/lib/module/components/MessageMenu/MessageUserReactions.js +169 -0
  489. package/lib/module/components/MessageMenu/MessageUserReactions.js.map +1 -0
  490. package/lib/module/components/{MessageOverlay/OverlayReactionsAvatar.js → MessageMenu/MessageUserReactionsAvatar.js} +5 -6
  491. package/lib/module/components/MessageMenu/MessageUserReactionsAvatar.js.map +1 -0
  492. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js +112 -0
  493. package/lib/module/components/MessageMenu/MessageUserReactionsItem.js.map +1 -0
  494. package/lib/module/components/MessageMenu/ReactionButton.js +59 -0
  495. package/lib/module/components/MessageMenu/ReactionButton.js.map +1 -0
  496. package/lib/module/components/{MessageOverlay → MessageMenu}/hooks/useFetchReactions.js +65 -41
  497. package/lib/module/components/MessageMenu/hooks/useFetchReactions.js.map +1 -0
  498. package/lib/module/components/Poll/CreatePollContent.js +14 -9
  499. package/lib/module/components/Poll/CreatePollContent.js.map +1 -1
  500. package/lib/module/components/Poll/Poll.js +2 -8
  501. package/lib/module/components/Poll/Poll.js.map +1 -1
  502. package/lib/module/components/Poll/components/Button.js +9 -474
  503. package/lib/module/components/Poll/components/Button.js.map +1 -1
  504. package/lib/module/components/Poll/components/CreatePollIcon.js +2 -2
  505. package/lib/module/components/Poll/components/CreatePollIcon.js.map +1 -1
  506. package/lib/module/components/Poll/components/CreatePollOptions.js +9 -4
  507. package/lib/module/components/Poll/components/CreatePollOptions.js.map +1 -1
  508. package/lib/module/components/Poll/components/PollAnswersList.js +99 -26
  509. package/lib/module/components/Poll/components/PollAnswersList.js.map +1 -1
  510. package/lib/module/components/Poll/components/PollButtons.js +291 -0
  511. package/lib/module/components/Poll/components/PollButtons.js.map +1 -0
  512. package/lib/module/components/Poll/components/PollInputDialog.js +14 -4
  513. package/lib/module/components/Poll/components/PollInputDialog.js.map +1 -1
  514. package/lib/module/components/Poll/components/PollModalHeader.js +7 -1
  515. package/lib/module/components/Poll/components/PollModalHeader.js.map +1 -1
  516. package/lib/module/components/Poll/components/PollOption.js +88 -6
  517. package/lib/module/components/Poll/components/PollOption.js.map +1 -1
  518. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js +2 -2
  519. package/lib/module/components/Poll/components/PollResults/PollOptionFullResults.js.map +1 -1
  520. package/lib/module/components/Poll/components/PollResults/PollResultItem.js +62 -67
  521. package/lib/module/components/Poll/components/PollResults/PollResultItem.js.map +1 -1
  522. package/lib/module/components/Poll/components/PollResults/PollVote.js +89 -0
  523. package/lib/module/components/Poll/components/PollResults/PollVote.js.map +1 -0
  524. package/lib/module/components/Poll/components/index.js +11 -0
  525. package/lib/module/components/Poll/components/index.js.map +1 -1
  526. package/lib/module/components/ProgressControl/ProgressControl.js +21 -28
  527. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -1
  528. package/lib/module/components/ProgressControl/WaveProgressBar.js +22 -27
  529. package/lib/module/components/ProgressControl/WaveProgressBar.js.map +1 -1
  530. package/lib/module/components/Reply/Reply.js +6 -2
  531. package/lib/module/components/Reply/Reply.js.map +1 -1
  532. package/lib/module/components/UIComponents/BottomSheetModal.js +158 -0
  533. package/lib/module/components/UIComponents/BottomSheetModal.js.map +1 -0
  534. package/lib/module/components/{ImageBackground.js → UIComponents/ImageBackground.js} +1 -1
  535. package/lib/module/components/UIComponents/ImageBackground.js.map +1 -0
  536. package/lib/{commonjs/components/Spinner → module/components/UIComponents}/Spinner.js +1 -1
  537. package/lib/module/components/UIComponents/Spinner.js.map +1 -0
  538. package/lib/module/components/UIComponents/index.js +37 -0
  539. package/lib/module/components/UIComponents/index.js.map +1 -0
  540. package/lib/module/components/docs/data.js.map +1 -1
  541. package/lib/module/components/index.js +56 -45
  542. package/lib/module/components/index.js.map +1 -1
  543. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js +1 -13
  544. package/lib/module/contexts/activeChannelsRefContext/ActiveChannelsRefContext.js.map +1 -1
  545. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js +1 -11
  546. package/lib/module/contexts/attachmentPickerContext/AttachmentPickerContext.js.map +1 -1
  547. package/lib/module/contexts/channelContext/ChannelContext.js +1 -11
  548. package/lib/module/contexts/channelContext/ChannelContext.js.map +1 -1
  549. package/lib/module/contexts/channelsContext/ChannelsContext.js +1 -11
  550. package/lib/module/contexts/channelsContext/ChannelsContext.js.map +1 -1
  551. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js +1 -46
  552. package/lib/module/contexts/channelsStateContext/ChannelsStateContext.js.map +1 -1
  553. package/lib/module/contexts/channelsStateContext/useChannelState.js +7 -84
  554. package/lib/module/contexts/channelsStateContext/useChannelState.js.map +1 -1
  555. package/lib/module/contexts/chatConfigContext/ChatConfigContext.js +33 -0
  556. package/lib/module/contexts/chatConfigContext/ChatConfigContext.js.map +1 -0
  557. package/lib/module/contexts/chatContext/ChatContext.js +1 -11
  558. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  559. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js +1 -11
  560. package/lib/module/contexts/imageGalleryContext/ImageGalleryContext.js.map +1 -1
  561. package/lib/module/contexts/index.js +11 -11
  562. package/lib/module/contexts/index.js.map +1 -1
  563. package/lib/module/contexts/keyboardContext/KeyboardContext.js +1 -11
  564. package/lib/module/contexts/keyboardContext/KeyboardContext.js.map +1 -1
  565. package/lib/module/contexts/messageContext/MessageContext.js +1 -11
  566. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  567. package/lib/module/contexts/messageInputContext/MessageInputContext.js +52 -51
  568. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  569. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +1 -1
  570. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  571. package/lib/module/contexts/messagesContext/MessagesContext.js +1 -11
  572. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  573. package/lib/module/contexts/overlayContext/OverlayContext.js +1 -14
  574. package/lib/module/contexts/overlayContext/OverlayContext.js.map +1 -1
  575. package/lib/module/contexts/overlayContext/OverlayProvider.js +18 -54
  576. package/lib/module/contexts/overlayContext/OverlayProvider.js.map +1 -1
  577. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js +1 -11
  578. package/lib/module/contexts/paginatedMessageListContext/PaginatedMessageListContext.js.map +1 -1
  579. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js +1 -11
  580. package/lib/module/contexts/suggestionsContext/SuggestionsContext.js.map +1 -1
  581. package/lib/module/contexts/themeContext/utils/theme.js +75 -49
  582. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  583. package/lib/module/contexts/threadContext/ThreadContext.js +1 -11
  584. package/lib/module/contexts/threadContext/ThreadContext.js.map +1 -1
  585. package/lib/module/contexts/translationContext/TranslationContext.js +1 -11
  586. package/lib/module/contexts/translationContext/TranslationContext.js.map +1 -1
  587. package/lib/module/contexts/typingContext/TypingContext.js +1 -11
  588. package/lib/module/contexts/typingContext/TypingContext.js.map +1 -1
  589. package/lib/module/hooks/useTranslatedMessage.js +1 -4
  590. package/lib/module/hooks/useTranslatedMessage.js.map +1 -1
  591. package/lib/module/icons/PinHeader.js +17 -6
  592. package/lib/module/icons/PinHeader.js.map +1 -1
  593. package/lib/module/index.js +4 -23
  594. package/lib/module/index.js.map +1 -1
  595. package/lib/module/mock-builders/DB/mock.js +159 -88
  596. package/lib/module/mock-builders/DB/mock.js.map +1 -1
  597. package/lib/module/native.js +38 -26
  598. package/lib/module/native.js.map +1 -1
  599. package/lib/module/store/SqliteClient.js +330 -0
  600. package/lib/module/store/SqliteClient.js.map +1 -0
  601. package/lib/module/store/apis/addPendingTask.js +56 -30
  602. package/lib/module/store/apis/addPendingTask.js.map +1 -1
  603. package/lib/module/store/apis/deleteChannel.js +36 -17
  604. package/lib/module/store/apis/deleteChannel.js.map +1 -1
  605. package/lib/module/store/apis/deleteMember.js +38 -20
  606. package/lib/module/store/apis/deleteMember.js.map +1 -1
  607. package/lib/module/store/apis/deleteMessage.js +36 -17
  608. package/lib/module/store/apis/deleteMessage.js.map +1 -1
  609. package/lib/module/store/apis/deleteMessagesForChannel.js +36 -17
  610. package/lib/module/store/apis/deleteMessagesForChannel.js.map +1 -1
  611. package/lib/module/store/apis/deletePendingTask.js +31 -12
  612. package/lib/module/store/apis/deletePendingTask.js.map +1 -1
  613. package/lib/module/store/apis/deleteReaction.js +39 -22
  614. package/lib/module/store/apis/deleteReaction.js.map +1 -1
  615. package/lib/module/store/apis/deleteReactions.js +36 -17
  616. package/lib/module/store/apis/deleteReactions.js.map +1 -1
  617. package/lib/module/store/apis/getAllChannelIds.js +28 -8
  618. package/lib/module/store/apis/getAllChannelIds.js.map +1 -1
  619. package/lib/module/store/apis/getAppSettings.js +31 -11
  620. package/lib/module/store/apis/getAppSettings.js.map +1 -1
  621. package/lib/module/store/apis/getChannelMessages.js +77 -52
  622. package/lib/module/store/apis/getChannelMessages.js.map +1 -1
  623. package/lib/module/store/apis/getChannels.js +58 -30
  624. package/lib/module/store/apis/getChannels.js.map +1 -1
  625. package/lib/module/store/apis/getChannelsForFilterSort.js +58 -26
  626. package/lib/module/store/apis/getChannelsForFilterSort.js.map +1 -1
  627. package/lib/module/store/apis/getLastSyncedAt.js +31 -11
  628. package/lib/module/store/apis/getLastSyncedAt.js.map +1 -1
  629. package/lib/module/store/apis/getMembers.js +36 -16
  630. package/lib/module/store/apis/getMembers.js.map +1 -1
  631. package/lib/module/store/apis/getPendingTasks.js +37 -14
  632. package/lib/module/store/apis/getPendingTasks.js.map +1 -1
  633. package/lib/module/store/apis/getReactions.js +2 -2
  634. package/lib/module/store/apis/getReactions.js.map +1 -1
  635. package/lib/module/store/apis/getReactionsforFilterSort.js +54 -22
  636. package/lib/module/store/apis/getReactionsforFilterSort.js.map +1 -1
  637. package/lib/module/store/apis/getReads.js +36 -16
  638. package/lib/module/store/apis/getReads.js.map +1 -1
  639. package/lib/module/store/apis/insertReaction.js +41 -23
  640. package/lib/module/store/apis/insertReaction.js.map +1 -1
  641. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js +36 -17
  642. package/lib/module/store/apis/queries/selectChannelIdsForFilterSort.js.map +1 -1
  643. package/lib/module/store/apis/queries/selectChannels.js +44 -19
  644. package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
  645. package/lib/module/store/apis/queries/selectMembersForChannels.js +37 -17
  646. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
  647. package/lib/module/store/apis/queries/selectMessagesForChannels.js +37 -17
  648. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  649. package/lib/module/store/apis/queries/selectReactionsForMessages.js +37 -17
  650. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  651. package/lib/module/store/apis/queries/selectReadsForChannels.js +37 -17
  652. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
  653. package/lib/module/store/apis/updateMessage.js +71 -47
  654. package/lib/module/store/apis/updateMessage.js.map +1 -1
  655. package/lib/module/store/apis/updatePollMessage.js +68 -59
  656. package/lib/module/store/apis/updatePollMessage.js.map +1 -1
  657. package/lib/module/store/apis/updateReaction.js +53 -38
  658. package/lib/module/store/apis/updateReaction.js.map +1 -1
  659. package/lib/module/store/apis/upsertAppSettings.js +37 -20
  660. package/lib/module/store/apis/upsertAppSettings.js.map +1 -1
  661. package/lib/module/store/apis/upsertChannelData.js +35 -16
  662. package/lib/module/store/apis/upsertChannelData.js.map +1 -1
  663. package/lib/module/store/apis/upsertChannelDataFromChannel.js +37 -13
  664. package/lib/module/store/apis/upsertChannelDataFromChannel.js.map +1 -1
  665. package/lib/module/store/apis/upsertChannels.js +115 -60
  666. package/lib/module/store/apis/upsertChannels.js.map +1 -1
  667. package/lib/module/store/apis/upsertCidsForQuery.js +43 -26
  668. package/lib/module/store/apis/upsertCidsForQuery.js.map +1 -1
  669. package/lib/module/store/apis/upsertMembers.js +51 -33
  670. package/lib/module/store/apis/upsertMembers.js.map +1 -1
  671. package/lib/module/store/apis/upsertMessages.js +62 -44
  672. package/lib/module/store/apis/upsertMessages.js.map +1 -1
  673. package/lib/module/store/apis/upsertReads.js +51 -34
  674. package/lib/module/store/apis/upsertReads.js.map +1 -1
  675. package/lib/module/store/apis/upsertUserSyncStatus.js +31 -14
  676. package/lib/module/store/apis/upsertUserSyncStatus.js.map +1 -1
  677. package/lib/module/test-utils/BetterSqlite.js +40 -15
  678. package/lib/module/test-utils/BetterSqlite.js.map +1 -1
  679. package/lib/module/utils/DBSyncManager.js +238 -152
  680. package/lib/module/utils/DBSyncManager.js.map +1 -1
  681. package/lib/module/utils/getResizedImageUrl.js +5 -3
  682. package/lib/module/utils/getResizedImageUrl.js.map +1 -1
  683. package/lib/module/utils/utils.js +1 -1
  684. package/lib/module/utils/utils.js.map +1 -1
  685. package/lib/module/version.json +1 -1
  686. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  687. package/lib/typescript/components/Attachment/Card.d.ts.map +1 -1
  688. package/lib/typescript/components/Attachment/FileAttachment.d.ts +1 -1
  689. package/lib/typescript/components/Attachment/FileAttachment.d.ts.map +1 -1
  690. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  691. package/lib/typescript/components/Attachment/Gallery.d.ts.map +1 -1
  692. package/lib/typescript/components/Attachment/Giphy.d.ts +1 -1
  693. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts +2 -1
  694. package/lib/typescript/components/Attachment/utils/buildGallery/buildGallery.d.ts.map +1 -1
  695. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts +2 -1
  696. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.d.ts.map +1 -1
  697. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts +2 -1
  698. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.d.ts.map +1 -1
  699. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts +2 -1
  700. package/lib/typescript/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.d.ts.map +1 -1
  701. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts +4 -2
  702. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnail.d.ts.map +1 -1
  703. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts +2 -1
  704. package/lib/typescript/components/Attachment/utils/buildGallery/buildThumbnailGrid.d.ts.map +1 -1
  705. package/lib/typescript/components/AttachmentPicker/AttachmentPicker.d.ts.map +1 -1
  706. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.d.ts +2 -2
  707. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.d.ts.map +1 -1
  708. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerItem.d.ts.map +1 -1
  709. package/lib/typescript/components/AttachmentPicker/components/AttachmentPickerSelectionBar.d.ts.map +1 -1
  710. package/lib/typescript/components/AutoCompleteInput/AutoCompleteSuggestionList.d.ts.map +1 -1
  711. package/lib/typescript/components/Avatar/Avatar.d.ts.map +1 -1
  712. package/lib/typescript/components/Avatar/GroupAvatar.d.ts.map +1 -1
  713. package/lib/typescript/components/Channel/Channel.d.ts +5 -5
  714. package/lib/typescript/components/Channel/Channel.d.ts.map +1 -1
  715. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts +75 -0
  716. package/lib/typescript/components/Channel/hooks/useChannelDataState.d.ts.map +1 -0
  717. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts +1 -1
  718. package/lib/typescript/components/Channel/hooks/useCreateChannelContext.d.ts.map +1 -1
  719. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts.map +1 -1
  720. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +22 -14
  721. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts.map +1 -1
  722. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts +1 -1
  723. package/lib/typescript/components/Channel/hooks/useCreatePaginatedMessageListContext.d.ts.map +1 -1
  724. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts +28 -0
  725. package/lib/typescript/components/Channel/hooks/useMessageListPagination.d.ts.map +1 -0
  726. package/lib/typescript/components/ChannelList/ChannelList.d.ts +0 -12
  727. package/lib/typescript/components/ChannelList/ChannelList.d.ts.map +1 -1
  728. package/lib/typescript/components/ChannelList/Skeleton.d.ts.map +1 -1
  729. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts +1 -2
  730. package/lib/typescript/components/ChannelList/hooks/listeners/useNewMessageNotification.d.ts.map +1 -1
  731. package/lib/typescript/components/ChannelList/hooks/usePaginatedChannels.d.ts.map +1 -1
  732. package/lib/typescript/components/Chat/Chat.d.ts +1 -1
  733. package/lib/typescript/components/Chat/Chat.d.ts.map +1 -1
  734. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts +1 -1
  735. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts.map +1 -1
  736. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts.map +1 -1
  737. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
  738. package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts.map +1 -1
  739. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts.map +1 -1
  740. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +2 -2
  741. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts.map +1 -1
  742. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +5 -5
  743. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts.map +1 -1
  744. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +5 -5
  745. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts.map +1 -1
  746. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +3 -3
  747. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts.map +1 -1
  748. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts +3 -3
  749. package/lib/typescript/components/ImageGallery/components/ImageGalleryHeader.d.ts.map +1 -1
  750. package/lib/typescript/components/ImageGallery/components/ImageGalleryOverlay.d.ts +2 -2
  751. package/lib/typescript/components/ImageGallery/components/ImageGalleryOverlay.d.ts.map +1 -1
  752. package/lib/typescript/components/ImageGallery/hooks/useAnimatedGalleryStyle.d.ts +37 -0
  753. package/lib/typescript/components/ImageGallery/hooks/useAnimatedGalleryStyle.d.ts.map +1 -0
  754. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts +4 -5
  755. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts.map +1 -1
  756. package/lib/typescript/components/Message/Message.d.ts +4 -40
  757. package/lib/typescript/components/Message/Message.d.ts.map +1 -1
  758. package/lib/typescript/components/Message/MessageSimple/MessageAvatar.d.ts.map +1 -1
  759. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +11 -5
  760. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts.map +1 -1
  761. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts +2 -6
  762. package/lib/typescript/components/Message/MessageSimple/MessagePinnedHeader.d.ts.map +1 -1
  763. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  764. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts.map +1 -1
  765. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -2
  766. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts.map +1 -1
  767. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListBottom.d.ts +12 -0
  768. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListBottom.d.ts.map +1 -0
  769. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListTop.d.ts +20 -0
  770. package/lib/typescript/components/Message/MessageSimple/ReactionList/ReactionListTop.d.ts.map +1 -0
  771. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  772. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts.map +1 -1
  773. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +5 -6
  774. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts.map +1 -1
  775. package/lib/typescript/components/Message/hooks/useMessageData.d.ts +12 -0
  776. package/lib/typescript/components/Message/hooks/useMessageData.d.ts.map +1 -0
  777. package/lib/typescript/components/Message/hooks/useProcessReactions.d.ts +11 -3
  778. package/lib/typescript/components/Message/hooks/useProcessReactions.d.ts.map +1 -1
  779. package/lib/typescript/components/Message/utils/messageActions.d.ts +6 -14
  780. package/lib/typescript/components/Message/utils/messageActions.d.ts.map +1 -1
  781. package/lib/typescript/components/MessageInput/MessageInput.d.ts.map +1 -1
  782. package/lib/typescript/components/MessageInput/components/AudioRecorder/AudioRecordingButton.d.ts.map +1 -1
  783. package/lib/typescript/components/MessageInput/components/NativeAttachmentPicker.d.ts.map +1 -1
  784. package/lib/typescript/components/MessageInput/hooks/useAudioController.d.ts.map +1 -1
  785. package/lib/typescript/components/MessageList/MessageList.d.ts +1 -1
  786. package/lib/typescript/components/MessageList/MessageList.d.ts.map +1 -1
  787. package/lib/typescript/components/MessageList/hooks/useMessageList.d.ts.map +1 -1
  788. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts +1 -1
  789. package/lib/typescript/components/MessageList/utils/getReadStates.d.ts.map +1 -1
  790. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts +16 -0
  791. package/lib/typescript/components/MessageMenu/MessageActionList.d.ts.map +1 -0
  792. package/lib/typescript/components/{MessageOverlay → MessageMenu}/MessageActionListItem.d.ts +2 -8
  793. package/lib/typescript/components/MessageMenu/MessageActionListItem.d.ts.map +1 -0
  794. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts +32 -0
  795. package/lib/typescript/components/MessageMenu/MessageMenu.d.ts.map +1 -0
  796. package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts +30 -0
  797. package/lib/typescript/components/MessageMenu/MessageReactionPicker.d.ts.map +1 -0
  798. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts +21 -0
  799. package/lib/typescript/components/MessageMenu/MessageUserReactions.d.ts.map +1 -0
  800. package/lib/typescript/components/MessageMenu/MessageUserReactionsAvatar.d.ts +11 -0
  801. package/lib/typescript/components/MessageMenu/MessageUserReactionsAvatar.d.ts.map +1 -0
  802. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts +16 -0
  803. package/lib/typescript/components/MessageMenu/MessageUserReactionsItem.d.ts.map +1 -0
  804. package/lib/typescript/components/MessageMenu/ReactionButton.d.ts +25 -0
  805. package/lib/typescript/components/MessageMenu/ReactionButton.d.ts.map +1 -0
  806. package/lib/typescript/components/MessageMenu/hooks/useFetchReactions.d.ts.map +1 -0
  807. package/lib/typescript/components/Poll/Poll.d.ts +0 -1
  808. package/lib/typescript/components/Poll/Poll.d.ts.map +1 -1
  809. package/lib/typescript/components/Poll/components/Button.d.ts +0 -17
  810. package/lib/typescript/components/Poll/components/Button.d.ts.map +1 -1
  811. package/lib/typescript/components/Poll/components/CreatePollOptions.d.ts.map +1 -1
  812. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts +2 -0
  813. package/lib/typescript/components/Poll/components/PollAnswersList.d.ts.map +1 -1
  814. package/lib/typescript/components/Poll/components/PollButtons.d.ts +10 -0
  815. package/lib/typescript/components/Poll/components/PollButtons.d.ts.map +1 -0
  816. package/lib/typescript/components/Poll/components/PollInputDialog.d.ts.map +1 -1
  817. package/lib/typescript/components/Poll/components/PollOption.d.ts +2 -0
  818. package/lib/typescript/components/Poll/components/PollOption.d.ts.map +1 -1
  819. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts +11 -4
  820. package/lib/typescript/components/Poll/components/PollResults/PollResultItem.d.ts.map +1 -1
  821. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts +6 -0
  822. package/lib/typescript/components/Poll/components/PollResults/PollVote.d.ts.map +1 -0
  823. package/lib/typescript/components/Poll/components/index.d.ts +1 -0
  824. package/lib/typescript/components/Poll/components/index.d.ts.map +1 -1
  825. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts.map +1 -1
  826. package/lib/typescript/components/ProgressControl/WaveProgressBar.d.ts.map +1 -1
  827. package/lib/typescript/components/Reply/Reply.d.ts.map +1 -1
  828. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts +21 -0
  829. package/lib/typescript/components/UIComponents/BottomSheetModal.d.ts.map +1 -0
  830. package/lib/typescript/components/UIComponents/ImageBackground.d.ts.map +1 -0
  831. package/lib/typescript/components/UIComponents/Spinner.d.ts.map +1 -0
  832. package/lib/typescript/components/UIComponents/index.d.ts +4 -0
  833. package/lib/typescript/components/UIComponents/index.d.ts.map +1 -0
  834. package/lib/typescript/components/index.d.ts +11 -10
  835. package/lib/typescript/components/index.d.ts.map +1 -1
  836. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts +0 -11
  837. package/lib/typescript/contexts/activeChannelsRefContext/ActiveChannelsRefContext.d.ts.map +1 -1
  838. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts +1 -11
  839. package/lib/typescript/contexts/attachmentPickerContext/AttachmentPickerContext.d.ts.map +1 -1
  840. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts +28 -62
  841. package/lib/typescript/contexts/channelContext/ChannelContext.d.ts.map +1 -1
  842. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts +1 -11
  843. package/lib/typescript/contexts/channelsContext/ChannelsContext.d.ts.map +1 -1
  844. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts +1 -27
  845. package/lib/typescript/contexts/channelsStateContext/ChannelsStateContext.d.ts.map +1 -1
  846. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts +7 -13
  847. package/lib/typescript/contexts/channelsStateContext/useChannelState.d.ts.map +1 -1
  848. package/lib/typescript/contexts/chatConfigContext/ChatConfigContext.d.ts +16 -0
  849. package/lib/typescript/contexts/chatConfigContext/ChatConfigContext.d.ts.map +1 -0
  850. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -15
  851. package/lib/typescript/contexts/chatContext/ChatContext.d.ts.map +1 -1
  852. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts +0 -10
  853. package/lib/typescript/contexts/imageGalleryContext/ImageGalleryContext.d.ts.map +1 -1
  854. package/lib/typescript/contexts/index.d.ts +1 -1
  855. package/lib/typescript/contexts/index.d.ts.map +1 -1
  856. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts +0 -11
  857. package/lib/typescript/contexts/keyboardContext/KeyboardContext.d.ts.map +1 -1
  858. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +21 -56
  859. package/lib/typescript/contexts/messageContext/MessageContext.d.ts.map +1 -1
  860. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +2 -12
  861. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts.map +1 -1
  862. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  863. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +78 -38
  864. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts.map +1 -1
  865. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts +2 -27
  866. package/lib/typescript/contexts/overlayContext/OverlayContext.d.ts.map +1 -1
  867. package/lib/typescript/contexts/overlayContext/OverlayProvider.d.ts.map +1 -1
  868. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts +18 -27
  869. package/lib/typescript/contexts/paginatedMessageListContext/PaginatedMessageListContext.d.ts.map +1 -1
  870. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts +1 -11
  871. package/lib/typescript/contexts/suggestionsContext/SuggestionsContext.d.ts.map +1 -1
  872. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +69 -44
  873. package/lib/typescript/contexts/themeContext/utils/theme.d.ts.map +1 -1
  874. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts +1 -11
  875. package/lib/typescript/contexts/threadContext/ThreadContext.d.ts.map +1 -1
  876. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts +0 -11
  877. package/lib/typescript/contexts/translationContext/TranslationContext.d.ts.map +1 -1
  878. package/lib/typescript/contexts/typingContext/TypingContext.d.ts +1 -11
  879. package/lib/typescript/contexts/typingContext/TypingContext.d.ts.map +1 -1
  880. package/lib/typescript/hooks/useTranslatedMessage.d.ts.map +1 -1
  881. package/lib/typescript/icons/PinHeader.d.ts +5 -1
  882. package/lib/typescript/icons/PinHeader.d.ts.map +1 -1
  883. package/lib/typescript/index.d.ts +2 -3
  884. package/lib/typescript/index.d.ts.map +1 -1
  885. package/lib/typescript/native.d.ts +11 -13
  886. package/lib/typescript/native.d.ts.map +1 -1
  887. package/lib/typescript/store/SqliteClient.d.ts +27 -0
  888. package/lib/typescript/store/SqliteClient.d.ts.map +1 -0
  889. package/lib/typescript/store/apis/addPendingTask.d.ts +1 -1
  890. package/lib/typescript/store/apis/addPendingTask.d.ts.map +1 -1
  891. package/lib/typescript/store/apis/deleteChannel.d.ts +1 -1
  892. package/lib/typescript/store/apis/deleteChannel.d.ts.map +1 -1
  893. package/lib/typescript/store/apis/deleteMember.d.ts +1 -1
  894. package/lib/typescript/store/apis/deleteMember.d.ts.map +1 -1
  895. package/lib/typescript/store/apis/deleteMessage.d.ts +1 -1
  896. package/lib/typescript/store/apis/deleteMessage.d.ts.map +1 -1
  897. package/lib/typescript/store/apis/deleteMessagesForChannel.d.ts +1 -1
  898. package/lib/typescript/store/apis/deleteMessagesForChannel.d.ts.map +1 -1
  899. package/lib/typescript/store/apis/deletePendingTask.d.ts +1 -1
  900. package/lib/typescript/store/apis/deletePendingTask.d.ts.map +1 -1
  901. package/lib/typescript/store/apis/deleteReaction.d.ts +1 -1
  902. package/lib/typescript/store/apis/deleteReaction.d.ts.map +1 -1
  903. package/lib/typescript/store/apis/deleteReactions.d.ts +1 -1
  904. package/lib/typescript/store/apis/deleteReactions.d.ts.map +1 -1
  905. package/lib/typescript/store/apis/getAllChannelIds.d.ts +1 -1
  906. package/lib/typescript/store/apis/getAllChannelIds.d.ts.map +1 -1
  907. package/lib/typescript/store/apis/getAppSettings.d.ts +1 -1
  908. package/lib/typescript/store/apis/getAppSettings.d.ts.map +1 -1
  909. package/lib/typescript/store/apis/getChannelMessages.d.ts +1 -1
  910. package/lib/typescript/store/apis/getChannelMessages.d.ts.map +1 -1
  911. package/lib/typescript/store/apis/getChannels.d.ts +1 -1
  912. package/lib/typescript/store/apis/getChannels.d.ts.map +1 -1
  913. package/lib/typescript/store/apis/getChannelsForFilterSort.d.ts +1 -1
  914. package/lib/typescript/store/apis/getChannelsForFilterSort.d.ts.map +1 -1
  915. package/lib/typescript/store/apis/getLastSyncedAt.d.ts +1 -1
  916. package/lib/typescript/store/apis/getLastSyncedAt.d.ts.map +1 -1
  917. package/lib/typescript/store/apis/getMembers.d.ts +1 -1
  918. package/lib/typescript/store/apis/getMembers.d.ts.map +1 -1
  919. package/lib/typescript/store/apis/getPendingTasks.d.ts +1 -1
  920. package/lib/typescript/store/apis/getPendingTasks.d.ts.map +1 -1
  921. package/lib/typescript/store/apis/getReactionsforFilterSort.d.ts +1 -1
  922. package/lib/typescript/store/apis/getReactionsforFilterSort.d.ts.map +1 -1
  923. package/lib/typescript/store/apis/getReads.d.ts +1 -1
  924. package/lib/typescript/store/apis/getReads.d.ts.map +1 -1
  925. package/lib/typescript/store/apis/insertReaction.d.ts +1 -1
  926. package/lib/typescript/store/apis/insertReaction.d.ts.map +1 -1
  927. package/lib/typescript/store/apis/queries/selectChannelIdsForFilterSort.d.ts +1 -1
  928. package/lib/typescript/store/apis/queries/selectChannelIdsForFilterSort.d.ts.map +1 -1
  929. package/lib/typescript/store/apis/queries/selectChannels.d.ts +2 -2
  930. package/lib/typescript/store/apis/queries/selectChannels.d.ts.map +1 -1
  931. package/lib/typescript/store/apis/queries/selectMembersForChannels.d.ts +1 -1
  932. package/lib/typescript/store/apis/queries/selectMembersForChannels.d.ts.map +1 -1
  933. package/lib/typescript/store/apis/queries/selectMessagesForChannels.d.ts +1 -1
  934. package/lib/typescript/store/apis/queries/selectMessagesForChannels.d.ts.map +1 -1
  935. package/lib/typescript/store/apis/queries/selectReactionsForMessages.d.ts +1 -1
  936. package/lib/typescript/store/apis/queries/selectReactionsForMessages.d.ts.map +1 -1
  937. package/lib/typescript/store/apis/queries/selectReadsForChannels.d.ts +1 -1
  938. package/lib/typescript/store/apis/queries/selectReadsForChannels.d.ts.map +1 -1
  939. package/lib/typescript/store/apis/updateMessage.d.ts +1 -1
  940. package/lib/typescript/store/apis/updateMessage.d.ts.map +1 -1
  941. package/lib/typescript/store/apis/updatePollMessage.d.ts +1 -1
  942. package/lib/typescript/store/apis/updatePollMessage.d.ts.map +1 -1
  943. package/lib/typescript/store/apis/updateReaction.d.ts +1 -1
  944. package/lib/typescript/store/apis/updateReaction.d.ts.map +1 -1
  945. package/lib/typescript/store/apis/upsertAppSettings.d.ts +1 -1
  946. package/lib/typescript/store/apis/upsertAppSettings.d.ts.map +1 -1
  947. package/lib/typescript/store/apis/upsertChannelData.d.ts +1 -1
  948. package/lib/typescript/store/apis/upsertChannelData.d.ts.map +1 -1
  949. package/lib/typescript/store/apis/upsertChannelDataFromChannel.d.ts +1 -1
  950. package/lib/typescript/store/apis/upsertChannelDataFromChannel.d.ts.map +1 -1
  951. package/lib/typescript/store/apis/upsertChannels.d.ts +1 -1
  952. package/lib/typescript/store/apis/upsertChannels.d.ts.map +1 -1
  953. package/lib/typescript/store/apis/upsertCidsForQuery.d.ts +1 -1
  954. package/lib/typescript/store/apis/upsertCidsForQuery.d.ts.map +1 -1
  955. package/lib/typescript/store/apis/upsertMembers.d.ts +1 -1
  956. package/lib/typescript/store/apis/upsertMembers.d.ts.map +1 -1
  957. package/lib/typescript/store/apis/upsertMessages.d.ts +1 -1
  958. package/lib/typescript/store/apis/upsertMessages.d.ts.map +1 -1
  959. package/lib/typescript/store/apis/upsertReads.d.ts +1 -1
  960. package/lib/typescript/store/apis/upsertReads.d.ts.map +1 -1
  961. package/lib/typescript/store/apis/upsertUserSyncStatus.d.ts +1 -1
  962. package/lib/typescript/store/apis/upsertUserSyncStatus.d.ts.map +1 -1
  963. package/lib/typescript/test-utils/BetterSqlite.d.ts +2 -2
  964. package/lib/typescript/test-utils/BetterSqlite.d.ts.map +1 -1
  965. package/lib/typescript/types/types.d.ts +8 -0
  966. package/lib/typescript/types/types.d.ts.map +1 -1
  967. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  968. package/lib/typescript/utils/DBSyncManager.d.ts.map +1 -1
  969. package/lib/typescript/utils/getResizedImageUrl.d.ts +3 -2
  970. package/lib/typescript/utils/getResizedImageUrl.d.ts.map +1 -1
  971. package/lib/typescript/utils/utils.d.ts.map +1 -1
  972. package/package.json +14 -14
  973. package/src/__tests__/offline-support/offline-feature.js +220 -176
  974. package/src/__tests__/offline-support/optimistic-update.js +27 -23
  975. package/src/components/Attachment/Attachment.tsx +2 -2
  976. package/src/components/Attachment/Card.tsx +10 -10
  977. package/src/components/Attachment/FileAttachment.tsx +8 -16
  978. package/src/components/Attachment/FileAttachmentGroup.tsx +2 -2
  979. package/src/components/Attachment/Gallery.tsx +21 -18
  980. package/src/components/Attachment/Giphy.tsx +14 -14
  981. package/src/components/Attachment/__tests__/Attachment.test.js +4 -2
  982. package/src/components/Attachment/__tests__/Gallery.test.js +0 -2
  983. package/src/components/Attachment/utils/buildGallery/buildGallery.ts +10 -1
  984. package/src/components/Attachment/utils/buildGallery/buildGalleryOfSingleImage.ts +4 -1
  985. package/src/components/Attachment/utils/buildGallery/buildGalleryOfThreeImages.ts +5 -1
  986. package/src/components/Attachment/utils/buildGallery/buildGalleryOfTwoImages.ts +6 -1
  987. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +13 -6
  988. package/src/components/Attachment/utils/buildGallery/buildThumbnailGrid.ts +5 -1
  989. package/src/components/AttachmentPicker/AttachmentPicker.tsx +7 -2
  990. package/src/components/AttachmentPicker/components/AttachmentPickerBottomSheetHandle.tsx +2 -2
  991. package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +17 -33
  992. package/src/components/AttachmentPicker/components/AttachmentPickerSelectionBar.tsx +18 -17
  993. package/src/components/AutoCompleteInput/AutoCompleteSuggestionList.tsx +1 -1
  994. package/src/components/Avatar/Avatar.tsx +3 -0
  995. package/src/components/Avatar/GroupAvatar.tsx +4 -0
  996. package/src/components/Channel/Channel.tsx +299 -982
  997. package/src/components/Channel/__tests__/Channel.test.js +244 -13
  998. package/src/components/Channel/__tests__/ownCapabilities.test.js +57 -57
  999. package/src/components/Channel/__tests__/useMessageListPagination.test.js +419 -0
  1000. package/src/components/Channel/hooks/useChannelDataState.ts +235 -0
  1001. package/src/components/Channel/hooks/useCreateChannelContext.ts +0 -8
  1002. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -6
  1003. package/src/components/Channel/hooks/useCreateMessagesContext.ts +26 -10
  1004. package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +3 -10
  1005. package/src/components/Channel/hooks/useMessageListPagination.tsx +246 -0
  1006. package/src/components/ChannelList/ChannelList.tsx +0 -17
  1007. package/src/components/ChannelList/ChannelListFooterLoadingIndicator.tsx +1 -1
  1008. package/src/components/ChannelList/Skeleton.tsx +9 -1
  1009. package/src/components/ChannelList/__tests__/ChannelList.test.js +5 -5
  1010. package/src/components/ChannelList/hooks/listeners/useNewMessageNotification.ts +2 -11
  1011. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +20 -13
  1012. package/src/components/Chat/Chat.tsx +23 -18
  1013. package/src/components/Chat/__tests__/Chat.test.js +199 -178
  1014. package/src/components/Chat/hooks/handleEventToSyncDB.ts +18 -16
  1015. package/src/components/Chat/hooks/useAppSettings.ts +3 -2
  1016. package/src/components/Chat/hooks/useCreateChatContext.ts +0 -2
  1017. package/src/components/Chat/hooks/useIsOnline.ts +13 -10
  1018. package/src/components/ImageGallery/ImageGallery.tsx +71 -121
  1019. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +0 -11
  1020. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +3 -4
  1021. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +3 -5
  1022. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +1 -1
  1023. package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +1 -1
  1024. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +3 -5
  1025. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +0 -3
  1026. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +17 -56
  1027. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +21 -56
  1028. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +73 -59
  1029. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +46 -45
  1030. package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +2 -1
  1031. package/src/components/ImageGallery/components/__tests__/ImageGalleryHeader.test.tsx +3 -4
  1032. package/src/components/ImageGallery/hooks/useAnimatedGalleryStyle.tsx +83 -0
  1033. package/src/components/ImageGallery/hooks/useImageGalleryGestures.tsx +495 -470
  1034. package/src/components/Indicators/LoadingIndicator.tsx +1 -1
  1035. package/src/components/Message/Message.tsx +113 -215
  1036. package/src/components/Message/MessageSimple/MessageAvatar.tsx +1 -0
  1037. package/src/components/Message/MessageSimple/MessageBounce.tsx +2 -2
  1038. package/src/components/Message/MessageSimple/MessageContent.tsx +28 -155
  1039. package/src/components/Message/MessageSimple/MessageDeleted.tsx +1 -1
  1040. package/src/components/Message/MessageSimple/MessageFooter.tsx +1 -1
  1041. package/src/components/Message/MessageSimple/MessagePinnedHeader.tsx +21 -66
  1042. package/src/components/Message/MessageSimple/MessageSimple.tsx +245 -54
  1043. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +3 -4
  1044. package/src/components/Message/MessageSimple/ReactionList/ReactionListBottom.tsx +295 -0
  1045. package/src/components/Message/MessageSimple/ReactionList/ReactionListTop.tsx +271 -0
  1046. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +1 -2
  1047. package/src/components/Message/MessageSimple/__tests__/MessageSimple.test.js +208 -0
  1048. package/src/components/Message/MessageSimple/__tests__/MessageTextContainer.test.tsx +3 -3
  1049. package/src/components/Message/MessageSimple/__tests__/ReactionListBottom.test.js +166 -0
  1050. package/src/components/Message/MessageSimple/__tests__/ReactionListTop.test.js +92 -0
  1051. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessagePinnedHeader.test.js.snap +23 -19
  1052. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -16
  1053. package/src/components/Message/hooks/useMessageActions.tsx +48 -68
  1054. package/src/components/Message/hooks/useMessageData.ts +59 -0
  1055. package/src/components/Message/hooks/useProcessReactions.ts +17 -10
  1056. package/src/components/Message/utils/messageActions.ts +10 -20
  1057. package/src/components/MessageInput/FileUploadPreview.tsx +2 -2
  1058. package/src/components/MessageInput/MessageInput.tsx +0 -1
  1059. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +1 -4
  1060. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +1 -4
  1061. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +3 -5
  1062. package/src/components/MessageInput/__tests__/MessageInput.test.js +116 -2
  1063. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingButton.tsx +7 -1
  1064. package/src/components/MessageInput/components/AudioRecorder/AudioRecordingLockIndicator.tsx +0 -1
  1065. package/src/components/MessageInput/components/NativeAttachmentPicker.tsx +8 -1
  1066. package/src/components/MessageInput/hooks/useAudioController.tsx +4 -7
  1067. package/src/components/MessageList/MessageList.tsx +53 -83
  1068. package/src/components/MessageList/ScrollToBottomButton.tsx +1 -1
  1069. package/src/components/MessageList/__tests__/MessageList.test.js +174 -23
  1070. package/src/components/MessageList/__tests__/ScrollToBottomButton.test.js +3 -3
  1071. package/src/components/MessageList/__tests__/__snapshots__/ScrollToBottomButton.test.js.snap +1 -1
  1072. package/src/components/MessageList/hooks/useMessageList.ts +2 -5
  1073. package/src/components/MessageList/utils/getReadStates.ts +3 -2
  1074. package/src/components/MessageMenu/MessageActionList.tsx +49 -0
  1075. package/src/components/MessageMenu/MessageActionListItem.tsx +86 -0
  1076. package/src/components/MessageMenu/MessageMenu.tsx +123 -0
  1077. package/src/components/MessageMenu/MessageReactionPicker.tsx +122 -0
  1078. package/src/components/MessageMenu/MessageUserReactions.tsx +207 -0
  1079. package/src/components/{MessageOverlay/OverlayReactionsAvatar.tsx → MessageMenu/MessageUserReactionsAvatar.tsx} +6 -6
  1080. package/src/components/MessageMenu/MessageUserReactionsItem.tsx +132 -0
  1081. package/src/components/MessageMenu/ReactionButton.tsx +72 -0
  1082. package/src/components/MessageMenu/__tests__/MessageActionList.test.tsx +48 -0
  1083. package/src/components/MessageMenu/__tests__/MessageActionListItem.test.tsx +48 -0
  1084. package/src/components/MessageMenu/__tests__/MessageReactionPicker.test.tsx +101 -0
  1085. package/src/components/MessageMenu/__tests__/MessageUserReactions.test.tsx +186 -0
  1086. package/src/components/MessageMenu/__tests__/MessageUserReactionsAvatar.test.tsx +35 -0
  1087. package/src/components/MessageMenu/__tests__/MessageUserReactionsItem.test.tsx +81 -0
  1088. package/src/components/MessageMenu/__tests__/ReactionButton.test.tsx +77 -0
  1089. package/src/components/{MessageOverlay → MessageMenu}/hooks/useFetchReactions.ts +4 -2
  1090. package/src/components/Poll/CreatePollContent.tsx +4 -4
  1091. package/src/components/Poll/Poll.tsx +1 -20
  1092. package/src/components/Poll/components/Button.tsx +8 -420
  1093. package/src/components/Poll/components/CreatePollIcon.tsx +1 -1
  1094. package/src/components/Poll/components/CreatePollOptions.tsx +9 -4
  1095. package/src/components/Poll/components/PollAnswersList.tsx +66 -3
  1096. package/src/components/Poll/components/PollButtons.tsx +241 -0
  1097. package/src/components/Poll/components/PollInputDialog.tsx +9 -6
  1098. package/src/components/Poll/components/PollModalHeader.tsx +3 -3
  1099. package/src/components/Poll/components/PollOption.tsx +74 -4
  1100. package/src/components/Poll/components/PollResults/PollOptionFullResults.tsx +1 -1
  1101. package/src/components/Poll/components/PollResults/PollResultItem.tsx +68 -52
  1102. package/src/components/Poll/components/PollResults/PollVote.tsx +68 -0
  1103. package/src/components/Poll/components/index.ts +1 -0
  1104. package/src/components/ProgressControl/ProgressControl.tsx +28 -38
  1105. package/src/components/ProgressControl/WaveProgressBar.tsx +29 -37
  1106. package/src/components/Reply/Reply.tsx +5 -2
  1107. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +936 -796
  1108. package/src/components/UIComponents/BottomSheetModal.tsx +174 -0
  1109. package/src/components/UIComponents/index.ts +3 -0
  1110. package/src/components/docs/data.js +13 -27
  1111. package/src/components/index.ts +11 -10
  1112. package/src/contexts/__tests__/index.test.tsx +0 -5
  1113. package/src/contexts/activeChannelsRefContext/ActiveChannelsRefContext.tsx +0 -27
  1114. package/src/contexts/attachmentPickerContext/AttachmentPickerContext.tsx +1 -29
  1115. package/src/contexts/channelContext/ChannelContext.tsx +33 -79
  1116. package/src/contexts/channelsContext/ChannelsContext.tsx +1 -28
  1117. package/src/contexts/channelsStateContext/ChannelsStateContext.tsx +2 -97
  1118. package/src/contexts/channelsStateContext/useChannelState.ts +6 -108
  1119. package/src/contexts/chatConfigContext/ChatConfigContext.tsx +33 -0
  1120. package/src/contexts/chatContext/ChatContext.tsx +1 -30
  1121. package/src/contexts/imageGalleryContext/ImageGalleryContext.tsx +0 -29
  1122. package/src/contexts/index.ts +1 -1
  1123. package/src/contexts/keyboardContext/KeyboardContext.tsx +0 -30
  1124. package/src/contexts/messageContext/MessageContext.tsx +22 -75
  1125. package/src/contexts/messageInputContext/MessageInputContext.tsx +12 -39
  1126. package/src/contexts/messageInputContext/__tests__/isValidMessage.test.tsx +2 -3
  1127. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +1 -2
  1128. package/src/contexts/messageInputContext/__tests__/uploadImage.test.tsx +1 -2
  1129. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +1 -5
  1130. package/src/contexts/messagesContext/MessagesContext.tsx +84 -57
  1131. package/src/contexts/overlayContext/OverlayContext.tsx +2 -55
  1132. package/src/contexts/overlayContext/OverlayProvider.tsx +23 -64
  1133. package/src/contexts/paginatedMessageListContext/PaginatedMessageListContext.tsx +18 -46
  1134. package/src/contexts/suggestionsContext/SuggestionsContext.tsx +1 -30
  1135. package/src/contexts/themeContext/utils/theme.ts +141 -92
  1136. package/src/contexts/threadContext/ThreadContext.tsx +1 -28
  1137. package/src/contexts/translationContext/TranslationContext.tsx +0 -29
  1138. package/src/contexts/typingContext/TypingContext.tsx +1 -28
  1139. package/src/hooks/__tests__/useTranslatedMessage.test.tsx +3 -9
  1140. package/src/hooks/useTranslatedMessage.ts +1 -4
  1141. package/src/icons/PinHeader.tsx +13 -7
  1142. package/src/index.ts +2 -3
  1143. package/src/mock-builders/DB/mock.ts +70 -87
  1144. package/src/native.ts +18 -29
  1145. package/src/store/SqliteClient.ts +210 -0
  1146. package/src/store/apis/addPendingTask.ts +7 -7
  1147. package/src/store/apis/deleteChannel.ts +4 -4
  1148. package/src/store/apis/deleteMember.ts +4 -4
  1149. package/src/store/apis/deleteMessage.ts +4 -4
  1150. package/src/store/apis/deleteMessagesForChannel.ts +4 -4
  1151. package/src/store/apis/deletePendingTask.ts +4 -4
  1152. package/src/store/apis/deleteReaction.ts +4 -4
  1153. package/src/store/apis/deleteReactions.ts +3 -3
  1154. package/src/store/apis/getAllChannelIds.ts +4 -4
  1155. package/src/store/apis/getAppSettings.ts +5 -5
  1156. package/src/store/apis/getChannelMessages.ts +6 -6
  1157. package/src/store/apis/getChannels.ts +8 -8
  1158. package/src/store/apis/getChannelsForFilterSort.ts +6 -6
  1159. package/src/store/apis/getLastSyncedAt.ts +5 -5
  1160. package/src/store/apis/getMembers.ts +4 -4
  1161. package/src/store/apis/getPendingTasks.ts +4 -4
  1162. package/src/store/apis/getReactions.ts +2 -2
  1163. package/src/store/apis/getReactionsforFilterSort.ts +8 -6
  1164. package/src/store/apis/getReads.ts +4 -4
  1165. package/src/store/apis/insertReaction.ts +4 -4
  1166. package/src/store/apis/queries/selectChannelIdsForFilterSort.ts +5 -5
  1167. package/src/store/apis/queries/selectChannels.ts +6 -6
  1168. package/src/store/apis/queries/selectMembersForChannels.ts +6 -4
  1169. package/src/store/apis/queries/selectMessagesForChannels.ts +7 -5
  1170. package/src/store/apis/queries/selectReactionsForMessages.ts +5 -5
  1171. package/src/store/apis/queries/selectReadsForChannels.ts +7 -5
  1172. package/src/store/apis/updateMessage.ts +5 -5
  1173. package/src/store/apis/updatePollMessage.ts +5 -5
  1174. package/src/store/apis/updateReaction.ts +4 -4
  1175. package/src/store/apis/upsertAppSettings.ts +4 -4
  1176. package/src/store/apis/upsertChannelData.ts +5 -4
  1177. package/src/store/apis/upsertChannelDataFromChannel.ts +3 -3
  1178. package/src/store/apis/upsertChannels.ts +8 -8
  1179. package/src/store/apis/upsertCidsForQuery.ts +4 -4
  1180. package/src/store/apis/upsertMembers.ts +4 -4
  1181. package/src/store/apis/upsertMessages.ts +4 -4
  1182. package/src/store/apis/upsertReads.ts +4 -4
  1183. package/src/store/apis/upsertUserSyncStatus.ts +4 -4
  1184. package/src/test-utils/BetterSqlite.js +4 -12
  1185. package/src/types/types.ts +9 -0
  1186. package/src/utils/DBSyncManager.ts +49 -44
  1187. package/src/utils/__tests__/getResizedImageUrl.test.ts +1 -2
  1188. package/src/utils/getResizedImageUrl.ts +7 -5
  1189. package/src/utils/utils.ts +1 -1
  1190. package/src/version.json +1 -1
  1191. package/lib/commonjs/components/ImageBackground.js.map +0 -1
  1192. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js +0 -305
  1193. package/lib/commonjs/components/Message/MessageSimple/ReactionList.js.map +0 -1
  1194. package/lib/commonjs/components/MessageOverlay/MessageActionList.js +0 -112
  1195. package/lib/commonjs/components/MessageOverlay/MessageActionList.js.map +0 -1
  1196. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js +0 -87
  1197. package/lib/commonjs/components/MessageOverlay/MessageActionListItem.js.map +0 -1
  1198. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +0 -461
  1199. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +0 -1
  1200. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js +0 -24
  1201. package/lib/commonjs/components/MessageOverlay/OverlayBackdrop.js.map +0 -1
  1202. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js +0 -305
  1203. package/lib/commonjs/components/MessageOverlay/OverlayReactionList.js.map +0 -1
  1204. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js +0 -188
  1205. package/lib/commonjs/components/MessageOverlay/OverlayReactions.js.map +0 -1
  1206. package/lib/commonjs/components/MessageOverlay/OverlayReactionsAvatar.js.map +0 -1
  1207. package/lib/commonjs/components/MessageOverlay/OverlayReactionsItem.js +0 -166
  1208. package/lib/commonjs/components/MessageOverlay/OverlayReactionsItem.js.map +0 -1
  1209. package/lib/commonjs/components/MessageOverlay/hooks/useFetchReactions.js.map +0 -1
  1210. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js +0 -34
  1211. package/lib/commonjs/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +0 -1
  1212. package/lib/commonjs/components/Spinner/Spinner.js.map +0 -1
  1213. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +0 -45
  1214. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +0 -1
  1215. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js +0 -27
  1216. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.js.map +0 -1
  1217. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js +0 -67
  1218. package/lib/commonjs/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +0 -1
  1219. package/lib/commonjs/store/QuickSqliteClient.js +0 -158
  1220. package/lib/commonjs/store/QuickSqliteClient.js.map +0 -1
  1221. package/lib/commonjs/utils/StreamChatRN.js +0 -25
  1222. package/lib/commonjs/utils/StreamChatRN.js.map +0 -1
  1223. package/lib/module/components/ImageBackground.js.map +0 -1
  1224. package/lib/module/components/Message/MessageSimple/ReactionList.js +0 -305
  1225. package/lib/module/components/Message/MessageSimple/ReactionList.js.map +0 -1
  1226. package/lib/module/components/MessageOverlay/MessageActionList.js +0 -112
  1227. package/lib/module/components/MessageOverlay/MessageActionList.js.map +0 -1
  1228. package/lib/module/components/MessageOverlay/MessageActionListItem.js +0 -87
  1229. package/lib/module/components/MessageOverlay/MessageActionListItem.js.map +0 -1
  1230. package/lib/module/components/MessageOverlay/MessageOverlay.js +0 -461
  1231. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +0 -1
  1232. package/lib/module/components/MessageOverlay/OverlayBackdrop.js +0 -24
  1233. package/lib/module/components/MessageOverlay/OverlayBackdrop.js.map +0 -1
  1234. package/lib/module/components/MessageOverlay/OverlayReactionList.js +0 -305
  1235. package/lib/module/components/MessageOverlay/OverlayReactionList.js.map +0 -1
  1236. package/lib/module/components/MessageOverlay/OverlayReactions.js +0 -188
  1237. package/lib/module/components/MessageOverlay/OverlayReactions.js.map +0 -1
  1238. package/lib/module/components/MessageOverlay/OverlayReactionsAvatar.js.map +0 -1
  1239. package/lib/module/components/MessageOverlay/OverlayReactionsItem.js +0 -166
  1240. package/lib/module/components/MessageOverlay/OverlayReactionsItem.js.map +0 -1
  1241. package/lib/module/components/MessageOverlay/hooks/useFetchReactions.js.map +0 -1
  1242. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js +0 -34
  1243. package/lib/module/components/MessageOverlay/hooks/useMessageActionAnimation.js.map +0 -1
  1244. package/lib/module/components/Spinner/Spinner.js.map +0 -1
  1245. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +0 -45
  1246. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +0 -1
  1247. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js +0 -27
  1248. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.js.map +0 -1
  1249. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js +0 -67
  1250. package/lib/module/contexts/messageOverlayContext/hooks/useResettableState.test.js.map +0 -1
  1251. package/lib/module/store/QuickSqliteClient.js +0 -158
  1252. package/lib/module/store/QuickSqliteClient.js.map +0 -1
  1253. package/lib/module/utils/StreamChatRN.js +0 -25
  1254. package/lib/module/utils/StreamChatRN.js.map +0 -1
  1255. package/lib/typescript/components/ImageBackground.d.ts.map +0 -1
  1256. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts +0 -32
  1257. package/lib/typescript/components/Message/MessageSimple/ReactionList.d.ts.map +0 -1
  1258. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts +0 -14
  1259. package/lib/typescript/components/MessageOverlay/MessageActionList.d.ts.map +0 -1
  1260. package/lib/typescript/components/MessageOverlay/MessageActionListItem.d.ts.map +0 -1
  1261. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts +0 -15
  1262. package/lib/typescript/components/MessageOverlay/MessageOverlay.d.ts.map +0 -1
  1263. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts +0 -8
  1264. package/lib/typescript/components/MessageOverlay/OverlayBackdrop.d.ts.map +0 -1
  1265. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts +0 -36
  1266. package/lib/typescript/components/MessageOverlay/OverlayReactionList.d.ts.map +0 -1
  1267. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts +0 -31
  1268. package/lib/typescript/components/MessageOverlay/OverlayReactions.d.ts.map +0 -1
  1269. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts +0 -11
  1270. package/lib/typescript/components/MessageOverlay/OverlayReactionsAvatar.d.ts.map +0 -1
  1271. package/lib/typescript/components/MessageOverlay/OverlayReactionsItem.d.ts +0 -11
  1272. package/lib/typescript/components/MessageOverlay/OverlayReactionsItem.d.ts.map +0 -1
  1273. package/lib/typescript/components/MessageOverlay/hooks/useFetchReactions.d.ts.map +0 -1
  1274. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts +0 -11
  1275. package/lib/typescript/components/MessageOverlay/hooks/useMessageActionAnimation.d.ts.map +0 -1
  1276. package/lib/typescript/components/Spinner/Spinner.d.ts.map +0 -1
  1277. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +0 -80
  1278. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts.map +0 -1
  1279. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts +0 -13
  1280. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.d.ts.map +0 -1
  1281. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts +0 -2
  1282. package/lib/typescript/contexts/messageOverlayContext/hooks/useResettableState.test.d.ts.map +0 -1
  1283. package/lib/typescript/store/QuickSqliteClient.d.ts +0 -26
  1284. package/lib/typescript/store/QuickSqliteClient.d.ts.map +0 -1
  1285. package/lib/typescript/utils/StreamChatRN.d.ts +0 -23
  1286. package/lib/typescript/utils/StreamChatRN.d.ts.map +0 -1
  1287. package/src/components/Message/MessageSimple/ReactionList.tsx +0 -398
  1288. package/src/components/MessageOverlay/MessageActionList.tsx +0 -171
  1289. package/src/components/MessageOverlay/MessageActionListItem.tsx +0 -144
  1290. package/src/components/MessageOverlay/MessageOverlay.tsx +0 -648
  1291. package/src/components/MessageOverlay/OverlayBackdrop.tsx +0 -18
  1292. package/src/components/MessageOverlay/OverlayReactionList.tsx +0 -447
  1293. package/src/components/MessageOverlay/OverlayReactions.tsx +0 -252
  1294. package/src/components/MessageOverlay/OverlayReactionsItem.tsx +0 -188
  1295. package/src/components/MessageOverlay/hooks/useMessageActionAnimation.tsx +0 -44
  1296. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +0 -148
  1297. package/src/contexts/messageOverlayContext/hooks/useResettableState.test.tsx +0 -48
  1298. package/src/contexts/messageOverlayContext/hooks/useResettableState.ts +0 -22
  1299. package/src/store/QuickSqliteClient.ts +0 -187
  1300. package/src/utils/StreamChatRN.ts +0 -27
  1301. /package/lib/typescript/components/{MessageOverlay → MessageMenu}/hooks/useFetchReactions.d.ts +0 -0
  1302. /package/lib/typescript/components/{ImageBackground.d.ts → UIComponents/ImageBackground.d.ts} +0 -0
  1303. /package/lib/typescript/components/{Spinner → UIComponents}/Spinner.d.ts +0 -0
  1304. /package/src/components/{ImageBackground.tsx → UIComponents/ImageBackground.tsx} +0 -0
  1305. /package/src/components/{Spinner → UIComponents}/Spinner.tsx +0 -0
@@ -1,20 +1,17 @@
1
+ import { useEffect, useRef, useState } from 'react';
1
2
  import { Platform } from 'react-native';
2
- import type {
3
- PanGestureHandlerGestureEvent,
4
- PinchGestureHandlerGestureEvent,
5
- TapGestureHandlerGestureEvent,
6
- } from 'react-native-gesture-handler';
3
+ import { Gesture, GestureType } from 'react-native-gesture-handler';
7
4
  import {
8
5
  cancelAnimation,
9
6
  Easing,
10
7
  runOnJS,
11
8
  SharedValue,
12
- useAnimatedGestureHandler,
13
9
  useSharedValue,
14
10
  withDecay,
15
11
  withTiming,
16
12
  } from 'react-native-reanimated';
17
13
 
14
+ import { useImageGalleryContext } from '../../../contexts/imageGalleryContext/ImageGalleryContext';
18
15
  import { useOverlayContext } from '../../../contexts/overlayContext/OverlayContext';
19
16
  import { triggerHaptic } from '../../../native';
20
17
 
@@ -64,7 +61,26 @@ export const useImageGalleryGestures = ({
64
61
  translateY: SharedValue<number>;
65
62
  translationX: SharedValue<number>;
66
63
  }) => {
67
- const { setOverlay } = useOverlayContext();
64
+ /**
65
+ * if a specific image index > 0 has been passed in
66
+ * while creating the hook, set the value of the index
67
+ * reference to its value.
68
+ *
69
+ * This makes it possible to seelct an image in the list,
70
+ * and scroll/pan as normal. Prior to this,
71
+ * it was always assumed that one started at index 0 in the
72
+ * gallery.
73
+ * */
74
+ const [index, setIndex] = useState(selectedIndex);
75
+ const { setMessages, setSelectedMessage } = useImageGalleryContext();
76
+ /**
77
+ * Gesture handler refs
78
+ */
79
+ const doubleTapRef = useRef<GestureType | undefined>(undefined);
80
+ const panRef = useRef<GestureType | undefined>(undefined);
81
+ const pinchRef = useRef<GestureType | undefined>(undefined);
82
+ const singleTapRef = useRef<GestureType | undefined>(undefined);
83
+ const { overlay, setOverlay } = useOverlayContext();
68
84
  const isAndroid = Platform.OS === 'android';
69
85
 
70
86
  /**
@@ -82,7 +98,6 @@ export const useImageGalleryGestures = ({
82
98
  const oldFocalY = useSharedValue(0);
83
99
  const focalX = useSharedValue(0);
84
100
  const focalY = useSharedValue(0);
85
- const index = useSharedValue(0);
86
101
 
87
102
  /**
88
103
  * if a specific image index > 0 has been passed in
@@ -94,9 +109,9 @@ export const useImageGalleryGestures = ({
94
109
  * it was always assumed that one started at index 0 in the
95
110
  * gallery.
96
111
  * */
97
- if (index.value !== selectedIndex) {
98
- index.value = selectedIndex;
99
- }
112
+ useEffect(() => {
113
+ setIndex(selectedIndex);
114
+ }, [selectedIndex]);
100
115
 
101
116
  /**
102
117
  * Shared values for movement
@@ -157,534 +172,548 @@ export const useImageGalleryGestures = ({
157
172
  * gesture handler once it has began so all interactions by the pan
158
173
  * handler are blocked if isPinch.value is true
159
174
  */
160
- const onPan = useAnimatedGestureHandler<PanGestureHandlerGestureEvent>(
161
- {
162
- onActive: (evt) => {
163
- if (evt.numberOfPointers === 1 && !isPinch.value) {
164
- /**
165
- * If Android where a second finger cannot be added back and
166
- * removing one finger returns to Pan Handler then adjust origin
167
- * on finger remove and set swiping false
168
- */
169
- if (isAndroid && hasPinched.value === HasPinched.TRUE) {
170
- hasPinched.value = HasPinched.FALSE;
171
- isSwiping.value = IsSwiping.FALSE;
172
- offsetX.value = translateX.value + evt.translationX;
173
- offsetY.value = translateY.value - evt.translationY;
174
- }
175
-
176
- /**
177
- * isSwiping is used to prevent Y movement if a clear swipe to next
178
- * or previous is begun when at the edge of a photo. The value is
179
- * either 0, 1, or 2, via the IsSwiping enum designating undetermined,
180
- * true, or false and is reset on releasing the touch
181
- */
182
- if (isSwiping.value === IsSwiping.UNDETERMINED) {
183
- const maxXYRatio = isAndroid ? 1 : 0.25;
184
- if (
185
- Math.abs(evt.translationX / evt.translationY) > maxXYRatio &&
186
- (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||
187
- Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)
188
- ) {
189
- isSwiping.value = IsSwiping.TRUE;
190
- }
191
- if (Math.abs(evt.translationY) > 25) {
192
- isSwiping.value = IsSwiping.FALSE;
193
- }
194
- }
195
-
196
- /**
197
- * localEvtScale is used for swipe away
198
- */
199
- const localEvtScale = scale.value / offsetScale.value;
200
-
201
- /**
202
- * If not swiping translate the image in X and Y to the event
203
- * translation plus offset. If swiping only translate X, if
204
- * swiping down when at top of screen or centered balance scale
205
- * using offset to a degree (this needs improvement the calculation
206
- * is incorrect but likely needs origin use to be 100%)
207
- */
208
- translateX.value =
209
- scale.value !== offsetScale.value
210
- ? offsetX.value * localEvtScale - evt.translationX
211
- : offsetX.value - evt.translationX;
212
- translateY.value =
213
- isSwiping.value !== IsSwiping.TRUE
214
- ? scale.value !== offsetScale.value
215
- ? offsetY.value * localEvtScale + evt.translationY
216
- : offsetY.value + evt.translationY
217
- : translateY.value;
175
+ const pan = Gesture.Pan()
176
+ .enabled(overlay === 'gallery')
177
+ .maxPointers(isAndroid ? 0 : 1)
178
+ .minDistance(10)
179
+ .onStart(() => {
180
+ if (!isPinch.value) {
181
+ /**
182
+ * Cancel any previous motion animation on translations when a touch
183
+ * begins to interrupt the animation and take over the position handling
184
+ */
185
+ cancelAnimation(translateX);
186
+ cancelAnimation(translateY);
187
+ cancelAnimation(scale);
188
+ offsetX.value = translateX.value;
189
+ offsetY.value = translateY.value;
190
+ }
218
191
 
219
- /**
220
- * If swiping down start scaling down the image for swipe
221
- * away effect
222
- */
223
- scale.value =
224
- currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0
225
- ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))
226
- : currentImageHeight * offsetScale.value > screenHeight &&
227
- translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight
228
- ? offsetScale.value *
229
- (1 -
230
- (1 / 3) *
231
- ((translateY.value -
232
- ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /
233
- screenHeight))
234
- : scale.value;
235
-
236
- overlayOpacity.value = localEvtScale;
192
+ /**
193
+ * Reset hasPinched for Android single finger offset
194
+ */
195
+ hasPinched.value = HasPinched.FALSE;
196
+ })
197
+ .onChange((event) => {
198
+ if (event.numberOfPointers === 1 && !isPinch.value) {
199
+ /**
200
+ * If Android where a second finger cannot be added back and
201
+ * removing one finger returns to Pan Handler then adjust origin
202
+ * on finger remove and set swiping false
203
+ */
204
+ if (isAndroid && hasPinched.value === HasPinched.TRUE) {
205
+ hasPinched.value = HasPinched.FALSE;
206
+ isSwiping.value = IsSwiping.FALSE;
207
+ offsetX.value = translateX.value + event.translationX;
208
+ offsetY.value = translateY.value - event.translationY;
237
209
  }
238
- },
239
- onFinish: (evt) => {
240
- if (!isPinch.value && evt.numberOfPointers < 2) {
241
- /**
242
- * To determine if the fling should page to the next image we
243
- * calculate a final position based on the current position and
244
- * event velocity
245
- */
246
- const finalXPosition = evt.translationX - evt.velocityX * 0.3;
247
- const finalYPosition = evt.translationY + evt.velocityY * 0.1;
248
210
 
249
- /**
250
- * If there is a next photo, the image is lined up to the right
251
- * edge, the swipe is to the left, and the final position is more
252
- * than half the screen width, move to the next image
253
- */
211
+ /**
212
+ * isSwiping is used to prevent Y movement if a clear swipe to next
213
+ * or previous is begun when at the edge of a photo. The value is
214
+ * either 0, 1, or 2, via the IsSwiping enum designating undetermined,
215
+ * true, or false and is reset on releasing the touch
216
+ */
217
+ if (isSwiping.value === IsSwiping.UNDETERMINED) {
218
+ const maxXYRatio = isAndroid ? 1 : 0.25;
254
219
  if (
255
- index.value < photoLength - 1 &&
256
- Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
257
- translateX.value < 0 &&
258
- finalXPosition < -halfScreenWidth &&
259
- isSwiping.value === IsSwiping.TRUE
260
- ) {
261
- cancelAnimation(translationX);
262
- translationX.value = withTiming(
263
- -(screenWidth + MARGIN) * (index.value + 1),
264
- {
265
- duration: 200,
266
- easing: Easing.out(Easing.ease),
267
- },
268
- () => {
269
- resetMovementValues();
270
- index.value = index.value + 1;
271
- runOnJS(setSelectedIndex)(index.value);
272
- },
273
- );
274
-
275
- /**
276
- * If there is a previous photo, the image is lined up to the left
277
- * edge, the swipe is to the right, and the final position is more
278
- * than half the screen width, move to the previous image
279
- */
280
- } else if (
281
- index.value > 0 &&
282
- Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
283
- translateX.value > 0 &&
284
- finalXPosition > halfScreenWidth &&
285
- isSwiping.value === IsSwiping.TRUE
220
+ Math.abs(event.translationX / event.translationY) > maxXYRatio &&
221
+ (Math.abs(-halfScreenWidth * (scale.value - 1) - offsetX.value) < 3 ||
222
+ Math.abs(halfScreenWidth * (scale.value - 1) - offsetX.value) < 3)
286
223
  ) {
287
- cancelAnimation(translationX);
288
- translationX.value = withTiming(
289
- -(screenWidth + MARGIN) * (index.value - 1),
290
- {
291
- duration: 200,
292
- easing: Easing.out(Easing.ease),
293
- },
294
- () => {
295
- resetMovementValues();
296
- index.value = index.value - 1;
297
- runOnJS(setSelectedIndex)(index.value);
298
- },
299
- );
224
+ isSwiping.value = IsSwiping.TRUE;
300
225
  }
226
+ if (Math.abs(event.translationY) > 25) {
227
+ isSwiping.value = IsSwiping.FALSE;
228
+ }
229
+ }
301
230
 
302
- /**
303
- * When the pan is finished if the scale is less than 1 return the
304
- * photo to center, if the photo is inside the edges of the screen
305
- * return the photo to line up with the edges, otherwise use decay
306
- * with a clamping at the edges to give the effect the image is
307
- * sliding along using velocity and friction
308
- */
309
- translateX.value =
310
- scale.value < 1
311
- ? withTiming(0)
312
- : translateX.value > halfScreenWidth * (scale.value - 1)
313
- ? withTiming(halfScreenWidth * (scale.value - 1), {
314
- duration: 200,
315
- })
316
- : translateX.value < -halfScreenWidth * (scale.value - 1)
317
- ? withTiming(-halfScreenWidth * (scale.value - 1), {
318
- duration: 200,
319
- })
320
- : withDecay({
321
- clamp: [
322
- -halfScreenWidth * (scale.value - 1),
323
- halfScreenWidth * (scale.value - 1),
324
- ],
325
- deceleration: 0.99,
326
- velocity: -evt.velocityX,
327
- });
231
+ /**
232
+ * localEvtScale is used for swipe away
233
+ */
234
+ const localEvtScale = scale.value / offsetScale.value;
328
235
 
329
- /**
330
- * When the pan is finished if the height is less than the screen
331
- * height return the photo to center, if the photo is inside the
332
- * edges of the screen return the photo to line up with the edges,
333
- * otherwise use decay with a clamping at the edges to give the effect
334
- * the image is sliding along using velocity and friction
335
- */
336
- translateY.value =
337
- currentImageHeight * scale.value < screenHeight
338
- ? withTiming(0)
339
- : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight
340
- ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)
341
- : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight
342
- ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)
343
- : withDecay({
344
- clamp: [
345
- (-currentImageHeight / 2) * scale.value + halfScreenHeight,
346
- (currentImageHeight / 2) * scale.value - halfScreenHeight,
347
- ],
348
- deceleration: 0.99,
349
- velocity: evt.velocityY,
350
- });
236
+ /**
237
+ * If not swiping translate the image in X and Y to the event
238
+ * translation plus offset. If swiping only translate X, if
239
+ * swiping down when at top of screen or centered balance scale
240
+ * using offset to a degree (this needs improvement the calculation
241
+ * is incorrect but likely needs origin use to be 100%)
242
+ */
243
+ translateX.value =
244
+ scale.value !== offsetScale.value
245
+ ? offsetX.value * localEvtScale - event.translationX
246
+ : offsetX.value - event.translationX;
247
+ translateY.value =
248
+ isSwiping.value !== IsSwiping.TRUE
249
+ ? scale.value !== offsetScale.value
250
+ ? offsetY.value * localEvtScale + event.translationY
251
+ : offsetY.value + event.translationY
252
+ : translateY.value;
351
253
 
352
- resetTouchValues();
254
+ /**
255
+ * If swiping down start scaling down the image for swipe
256
+ * away effect
257
+ */
258
+ scale.value =
259
+ currentImageHeight * offsetScale.value < screenHeight && translateY.value > 0
260
+ ? offsetScale.value * (1 - (1 / 3) * (translateY.value / screenHeight))
261
+ : currentImageHeight * offsetScale.value > screenHeight &&
262
+ translateY.value > (currentImageHeight / 2) * offsetScale.value - halfScreenHeight
263
+ ? offsetScale.value *
264
+ (1 -
265
+ (1 / 3) *
266
+ ((translateY.value -
267
+ ((currentImageHeight / 2) * offsetScale.value - halfScreenHeight)) /
268
+ screenHeight))
269
+ : scale.value;
270
+
271
+ overlayOpacity.value = localEvtScale;
272
+ }
273
+ })
274
+ .onEnd((event) => {
275
+ if (!isPinch.value && event.numberOfPointers < 2) {
276
+ /**
277
+ * To determine if the fling should page to the next image we
278
+ * calculate a final position based on the current position and
279
+ * event velocity
280
+ */
281
+ const finalXPosition = event.translationX - event.velocityX * 0.3;
282
+ const finalYPosition = event.translationY + event.velocityY * 0.1;
353
283
 
354
- /**
355
- * If the scale has been reduced below one, i.e. zoomed out, translate
356
- * the zoom back to one
357
- */
358
- scale.value =
359
- scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;
284
+ /**
285
+ * If there is a next photo, the image is lined up to the right
286
+ * edge, the swipe is to the left, and the final position is more
287
+ * than half the screen width, move to the next image
288
+ */
289
+ if (
290
+ index < photoLength - 1 &&
291
+ Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
292
+ translateX.value < 0 &&
293
+ finalXPosition < -halfScreenWidth &&
294
+ isSwiping.value === IsSwiping.TRUE
295
+ ) {
296
+ cancelAnimation(translationX);
297
+ translationX.value = withTiming(
298
+ -(screenWidth + MARGIN) * (index + 1),
299
+ {
300
+ duration: 200,
301
+ easing: Easing.out(Easing.ease),
302
+ },
303
+ () => {
304
+ resetMovementValues();
305
+ runOnJS(setIndex)(index + 1);
306
+ runOnJS(setSelectedIndex)(index + 1);
307
+ },
308
+ );
360
309
 
361
310
  /**
362
- * If the photo is centered or at the top of the screen if scaled larger
363
- * than the screen, and not paging left or right, and the final Y position
364
- * is greater than half the screen using swipe velocity and position, close
365
- * the overlay
311
+ * If there is a previous photo, the image is lined up to the left
312
+ * edge, the swipe is to the right, and the final position is more
313
+ * than half the screen width, move to the previous image
366
314
  */
367
- if (
368
- finalYPosition > halfScreenHeight &&
369
- offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&
370
- isSwiping.value !== IsSwiping.TRUE &&
371
- translateY.value !== 0 &&
372
- !(
373
- Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
374
- translateX.value < 0 &&
375
- finalXPosition < -halfScreenWidth
376
- ) &&
377
- !(
378
- Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
379
- translateX.value > 0 &&
380
- finalXPosition > halfScreenWidth
381
- )
382
- ) {
383
- cancelAnimation(translateX);
384
- cancelAnimation(translateY);
385
- cancelAnimation(scale);
386
- overlayOpacity.value = withTiming(
387
- 0,
388
- {
389
- duration: 200,
390
- easing: Easing.out(Easing.ease),
391
- },
392
- () => {
393
- runOnJS(setOverlay)('none');
394
- },
395
- );
396
- scale.value = withTiming(0.6, {
315
+ } else if (
316
+ index > 0 &&
317
+ Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
318
+ translateX.value > 0 &&
319
+ finalXPosition > halfScreenWidth &&
320
+ isSwiping.value === IsSwiping.TRUE
321
+ ) {
322
+ cancelAnimation(translationX);
323
+ translationX.value = withTiming(
324
+ -(screenWidth + MARGIN) * (index - 1),
325
+ {
397
326
  duration: 200,
398
327
  easing: Easing.out(Easing.ease),
399
- });
400
- translateY.value =
401
- evt.velocityY > 1000
402
- ? withDecay({
403
- velocity: evt.velocityY,
404
- })
405
- : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {
406
- duration: 200,
407
- easing: Easing.out(Easing.ease),
408
- });
409
- translateX.value = withDecay({
410
- velocity: -evt.velocityX,
411
- });
412
- }
413
- }
414
- },
415
- onStart: () => {
416
- if (!isPinch.value) {
417
- /**
418
- * Cancel any previous motion animation on translations when a touch
419
- * begins to interrupt the animation and take over the position handling
420
- */
421
- cancelAnimation(translateX);
422
- cancelAnimation(translateY);
423
- cancelAnimation(scale);
424
- offsetX.value = translateX.value;
425
- offsetY.value = translateY.value;
328
+ },
329
+ () => {
330
+ resetMovementValues();
331
+ runOnJS(setIndex)(index - 1);
332
+ runOnJS(setSelectedIndex)(index - 1);
333
+ },
334
+ );
426
335
  }
427
336
 
428
337
  /**
429
- * Reset hasPinched for Android single finger offset
338
+ * When the pan is finished if the scale is less than 1 return the
339
+ * photo to center, if the photo is inside the edges of the screen
340
+ * return the photo to line up with the edges, otherwise use decay
341
+ * with a clamping at the edges to give the effect the image is
342
+ * sliding along using velocity and friction
430
343
  */
431
- hasPinched.value = HasPinched.FALSE;
432
- },
433
- },
434
- [currentImageHeight, photoLength],
435
- );
344
+ translateX.value =
345
+ scale.value < 1
346
+ ? withTiming(0)
347
+ : translateX.value > halfScreenWidth * (scale.value - 1)
348
+ ? withTiming(halfScreenWidth * (scale.value - 1), {
349
+ duration: 200,
350
+ })
351
+ : translateX.value < -halfScreenWidth * (scale.value - 1)
352
+ ? withTiming(-halfScreenWidth * (scale.value - 1), {
353
+ duration: 200,
354
+ })
355
+ : withDecay({
356
+ clamp: [-halfScreenWidth * (scale.value - 1), halfScreenWidth * (scale.value - 1)],
357
+ deceleration: 0.99,
358
+ velocity: -event.velocityX,
359
+ });
436
360
 
437
- /**
438
- * On pinch is run when two or more fingers touch the screen, it then takes over
439
- * all touch handling even if the number of fingers is reduced to one until the
440
- * touch is complete
441
- */
442
- const onPinch = useAnimatedGestureHandler<PinchGestureHandlerGestureEvent>(
443
- {
444
- onActive: (evt) => {
445
361
  /**
446
- * Android starts with a zero event with 1 touch instead of two
447
- * we therefore must wait to capture starting info until the double
448
- * touch begins
362
+ * When the pan is finished if the height is less than the screen
363
+ * height return the photo to center, if the photo is inside the
364
+ * edges of the screen return the photo to line up with the edges,
365
+ * otherwise use decay with a clamping at the edges to give the effect
366
+ * the image is sliding along using velocity and friction
449
367
  */
450
- if (!isPinch.value && isAndroid) {
451
- /**
452
- * Set hasPinched to true so when removing one finger the pan active
453
- * state adjusts the offset
454
- */
455
- hasPinched.value = HasPinched.TRUE;
368
+ translateY.value =
369
+ currentImageHeight * scale.value < screenHeight
370
+ ? withTiming(0)
371
+ : translateY.value > (currentImageHeight / 2) * scale.value - halfScreenHeight
372
+ ? withTiming((currentImageHeight / 2) * scale.value - halfScreenHeight)
373
+ : translateY.value < (-currentImageHeight / 2) * scale.value + halfScreenHeight
374
+ ? withTiming((-currentImageHeight / 2) * scale.value + halfScreenHeight)
375
+ : withDecay({
376
+ clamp: [
377
+ (-currentImageHeight / 2) * scale.value + halfScreenHeight,
378
+ (currentImageHeight / 2) * scale.value - halfScreenHeight,
379
+ ],
380
+ deceleration: 0.99,
381
+ velocity: event.velocityY,
382
+ });
383
+
384
+ resetTouchValues();
456
385
 
457
- /**
458
- * Cancel any previous motion animation on translations when a touch
459
- * begins to interrupt the animation and take over the position handling
460
- */
386
+ /**
387
+ * If the scale has been reduced below one, i.e. zoomed out, translate
388
+ * the zoom back to one
389
+ */
390
+ scale.value =
391
+ scale.value !== offsetScale.value ? withTiming(offsetScale.value) : offsetScale.value;
392
+
393
+ /**
394
+ * If the photo is centered or at the top of the screen if scaled larger
395
+ * than the screen, and not paging left or right, and the final Y position
396
+ * is greater than half the screen using swipe velocity and position, close
397
+ * the overlay
398
+ */
399
+ if (
400
+ finalYPosition > halfScreenHeight &&
401
+ offsetY.value + 8 >= (currentImageHeight / 2) * scale.value - halfScreenHeight &&
402
+ isSwiping.value !== IsSwiping.TRUE &&
403
+ translateY.value !== 0 &&
404
+ !(
405
+ Math.abs(halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
406
+ translateX.value < 0 &&
407
+ finalXPosition < -halfScreenWidth
408
+ ) &&
409
+ !(
410
+ Math.abs(-halfScreenWidth * (scale.value - 1) + offsetX.value) < 3 &&
411
+ translateX.value > 0 &&
412
+ finalXPosition > halfScreenWidth
413
+ )
414
+ ) {
461
415
  cancelAnimation(translateX);
462
416
  cancelAnimation(translateY);
463
417
  cancelAnimation(scale);
464
418
 
465
- /**
466
- * Reset isSwiping as now the pan gesture handler is no longer running
467
- */
468
- isSwiping.value = IsSwiping.UNDETERMINED;
469
-
470
- /**
471
- * Set initial values for pinch gesture interaction handler
472
- */
473
- numberOfPinchFingers.value = evt.numberOfPointers;
474
- offsetX.value = translateX.value;
475
- offsetY.value = translateY.value;
476
- adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
477
- adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
478
- originX.value = adjustedFocalX.value;
479
- originY.value = adjustedFocalY.value;
480
- offsetScale.value = scale.value;
419
+ overlayOpacity.value = withTiming(
420
+ 0,
421
+ {
422
+ duration: 200,
423
+ easing: Easing.out(Easing.ease),
424
+ },
425
+ () => {
426
+ runOnJS(setSelectedMessage)(undefined);
427
+ runOnJS(setMessages)([]);
428
+ runOnJS(setOverlay)('none');
429
+ },
430
+ );
431
+ scale.value = withTiming(0.6, {
432
+ duration: 200,
433
+ easing: Easing.out(Easing.ease),
434
+ });
435
+ translateY.value =
436
+ event.velocityY > 1000
437
+ ? withDecay({
438
+ velocity: event.velocityY,
439
+ })
440
+ : withTiming(halfScreenHeight + (currentImageHeight / 2) * scale.value, {
441
+ duration: 200,
442
+ easing: Easing.out(Easing.ease),
443
+ });
444
+ translateX.value = withDecay({
445
+ velocity: -event.velocityX,
446
+ });
481
447
  }
448
+ }
449
+ })
450
+ .simultaneousWithExternalGesture(pinchRef)
451
+ .withRef(panRef);
482
452
 
453
+ /**
454
+ * On pinch is run when two or more fingers touch the screen, it then takes over
455
+ * all touch handling even if the number of fingers is reduced to one until the
456
+ * touch is complete
457
+ */
458
+ const pinch = Gesture.Pinch()
459
+ .onStart((event) => {
460
+ /**
461
+ * Android starts with a zero event with 1 touch instead of two
462
+ * we therefore must wait to capture starting info until the double
463
+ * touch begins
464
+ */
465
+ if (!isAndroid) {
483
466
  /**
484
- * Set pinch to true to stop all pan gesture interactions, we do this
485
- * again here for Android outside the check that creates type
467
+ * Cancel any previous motion animation on translations when a touch
468
+ * begins to interrupt the animation and take over the position handling
469
+ */
470
+ cancelAnimation(translateX);
471
+ cancelAnimation(translateY);
472
+ cancelAnimation(scale);
473
+
474
+ /**
475
+ * Set pinch to true to stop all pan gesture interactions
486
476
  */
487
477
  isPinch.value = true;
488
478
 
489
479
  /**
490
- * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.
491
- * We use the clamped value to determine a local event scale so the focal
492
- * point does not become out of sync with the actual photo scaling, e.g.
493
- * evt.scale is 20 but scale is 8, using evt.scale for offset will put the
494
- * photo and calculations out of sync
480
+ * Reset isSwiping as now the pan gesture handler is no longer running
495
481
  */
496
- scale.value = clamp(offsetScale.value * evt.scale, 1, 8);
497
- const localEvtScale = scale.value / offsetScale.value;
482
+ isSwiping.value = IsSwiping.UNDETERMINED;
498
483
 
499
484
  /**
500
- * When we hit the top or bottom of the scale clamping we run a haptic
501
- * trigger, we track if it has been run to not spam the trigger
485
+ * Set initial values for pinch gesture interaction handler
502
486
  */
503
- if (scale.value !== 8 && scale.value !== 1) {
504
- hasHitTopScale.value = 0;
505
- hasHitBottomScale.value = 0;
506
- } else if (scale.value === 8 && hasHitTopScale.value === 0) {
507
- hasHitTopScale.value = 1;
508
- runOnJS(triggerHaptic)('impactLight');
509
- } else if (scale.value === 1 && hasHitBottomScale.value === 0) {
510
- hasHitBottomScale.value = 1;
511
- runOnJS(triggerHaptic)('impactLight');
512
- }
487
+ numberOfPinchFingers.value = event.numberOfPointers;
488
+ offsetX.value = translateX.value;
489
+ offsetY.value = translateY.value;
490
+ adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
491
+ adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
492
+ originX.value = adjustedFocalX.value;
493
+ originY.value = adjustedFocalY.value;
494
+ offsetScale.value = scale.value;
495
+ }
513
496
 
497
+ /**
498
+ * Reset hasPinched for Android single finger offset
499
+ */
500
+ hasPinched.value = HasPinched.FALSE;
501
+ })
502
+ .onChange((event) => {
503
+ /**
504
+ * Android starts with a zero event with 1 touch instead of two
505
+ * we therefore must wait to capture starting info until the double
506
+ * touch begins
507
+ */
508
+ if (!isPinch.value && isAndroid) {
514
509
  /**
515
- * We calculate the adjusted focal point on the photo using the events
516
- * focal position on the screen, screen size, and current photo offset
510
+ * Set hasPinched to true so when removing one finger the pan active
511
+ * state adjusts the offset
517
512
  */
518
- adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
519
- adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
513
+ hasPinched.value = HasPinched.TRUE;
520
514
 
521
515
  /**
522
- * If the number of fingers on the screen changes, the position of the
523
- * focal point will change and this needs to be accounted for, e.g. if
524
- * two fingers are on the screen the focal is between them, but if one is
525
- * then removed the focal is now at the remaining fingers touch position.
526
- * If this happens without accounting for the change the image will jump
527
- * around, we keep track of the previous two finger focal to adjust for this
528
- * change in a reduction from two fingers to one, then if another finger
529
- * is added again we adjust the origin to account for the difference between
530
- * the original two finger touch and the new two finger touch position.
516
+ * Cancel any previous motion animation on translations when a touch
517
+ * begins to interrupt the animation and take over the position handling
531
518
  */
532
- if (numberOfPinchFingers.value !== evt.numberOfPointers) {
533
- numberOfPinchFingers.value = evt.numberOfPointers;
534
- if (evt.numberOfPointers === 1) {
535
- focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;
536
- focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;
537
- } else if (numberOfPinchFingers.value > 1) {
538
- originX.value =
539
- originX.value -
540
- (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);
541
- originY.value =
542
- originY.value -
543
- (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);
544
- }
545
- }
519
+ cancelAnimation(translateX);
520
+ cancelAnimation(translateY);
521
+ cancelAnimation(scale);
546
522
 
547
523
  /**
548
- * If pinch handler has been activated via two fingers then the fingers
549
- * reduced to one we keep track of the old focal using the focal offset
550
- * from when the number of fingers was two. We then translate the photo
551
- * taking into account the offset, focal, focal offset, origin, and scale.
524
+ * Reset isSwiping as now the pan gesture handler is no longer running
552
525
  */
553
- if (numberOfPinchFingers.value === 1) {
554
- oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;
555
- oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;
556
- translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;
557
- translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;
526
+ isSwiping.value = IsSwiping.UNDETERMINED;
558
527
 
559
- /**
560
- * If the number of fingers in the gesture is greater than one the
561
- * adjusted focal point is saved as the old focal and the photo is
562
- * translated taking into account the offset, focal, origin, and scale.
563
- */
528
+ /**
529
+ * Set initial values for pinch gesture interaction handler
530
+ */
531
+ numberOfPinchFingers.value = event.numberOfPointers;
532
+ offsetX.value = translateX.value;
533
+ offsetY.value = translateY.value;
534
+ adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
535
+ adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
536
+ originX.value = adjustedFocalX.value;
537
+ originY.value = adjustedFocalY.value;
538
+ offsetScale.value = scale.value;
539
+ }
540
+
541
+ /**
542
+ * Set pinch to true to stop all pan gesture interactions, we do this
543
+ * again here for Android outside the check that creates type
544
+ */
545
+ isPinch.value = true;
546
+
547
+ /**
548
+ * The scale is clamped to a minimum of 1 and maximum of 8 for aesthetics.
549
+ * We use the clamped value to determine a local event scale so the focal
550
+ * point does not become out of sync with the actual photo scaling, e.g.
551
+ * evt.scale is 20 but scale is 8, using evt.scale for offset will put the
552
+ * photo and calculations out of sync
553
+ */
554
+ scale.value = clamp(offsetScale.value * event.scale, 1, 8);
555
+ const localEvtScale = scale.value / offsetScale.value;
556
+
557
+ /**
558
+ * When we hit the top or bottom of the scale clamping we run a haptic
559
+ * trigger, we track if it has been run to not spam the trigger
560
+ */
561
+ if (scale.value !== 8 && scale.value !== 1) {
562
+ hasHitTopScale.value = 0;
563
+ hasHitBottomScale.value = 0;
564
+ } else if (scale.value === 8 && hasHitTopScale.value === 0) {
565
+ hasHitTopScale.value = 1;
566
+ runOnJS(triggerHaptic)('impactLight');
567
+ } else if (scale.value === 1 && hasHitBottomScale.value === 0) {
568
+ hasHitBottomScale.value = 1;
569
+ runOnJS(triggerHaptic)('impactLight');
570
+ }
571
+
572
+ /**
573
+ * We calculate the adjusted focal point on the photo using the events
574
+ * focal position on the screen, screen size, and current photo offset
575
+ */
576
+ adjustedFocalX.value = event.focalX - (halfScreenWidth - offsetX.value);
577
+ adjustedFocalY.value = event.focalY - (halfScreenHeight + offsetY.value);
578
+
579
+ /**
580
+ * If the number of fingers on the screen changes, the position of the
581
+ * focal point will change and this needs to be accounted for, e.g. if
582
+ * two fingers are on the screen the focal is between them, but if one is
583
+ * then removed the focal is now at the remaining fingers touch position.
584
+ * If this happens without accounting for the change the image will jump
585
+ * around, we keep track of the previous two finger focal to adjust for this
586
+ * change in a reduction from two fingers to one, then if another finger
587
+ * is added again we adjust the origin to account for the difference between
588
+ * the original two finger touch and the new two finger touch position.
589
+ */
590
+ if (numberOfPinchFingers.value !== event.numberOfPointers) {
591
+ numberOfPinchFingers.value = event.numberOfPointers;
592
+ if (event.numberOfPointers === 1) {
593
+ focalOffsetX.value = oldFocalX.value - adjustedFocalX.value;
594
+ focalOffsetY.value = oldFocalY.value - adjustedFocalY.value;
564
595
  } else if (numberOfPinchFingers.value > 1) {
565
- oldFocalX.value = adjustedFocalX.value;
566
- oldFocalY.value = adjustedFocalY.value;
567
- translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;
568
- translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;
596
+ originX.value =
597
+ originX.value -
598
+ (oldFocalX.value / localEvtScale - adjustedFocalX.value / localEvtScale);
599
+ originY.value =
600
+ originY.value -
601
+ (oldFocalY.value / localEvtScale - adjustedFocalY.value / localEvtScale);
569
602
  }
570
- },
571
- onFinish: () => {
572
- if (isPinch.value) {
573
- /**
574
- * When the pinch is finished if the scale is less than 1 return the
575
- * photo to center, if the photo is inside the edges of the screen
576
- * return the photo to line up with the edges, otherwise leave the
577
- * photo in its current position
578
- */
579
- translateX.value =
580
- scale.value < 1
581
- ? withTiming(0)
582
- : translateX.value > halfScreenWidth * (scale.value - 1)
583
- ? withTiming(halfScreenWidth * (scale.value - 1))
584
- : translateX.value < -halfScreenWidth * (scale.value - 1)
585
- ? withTiming(-halfScreenWidth * (scale.value - 1))
586
- : translateX.value;
603
+ }
587
604
 
588
- /**
589
- * When the pinch is finished if the height is less than the screen
590
- * height return the photo to center, if the photo is inside the
591
- * edges of the screen return the photo to line up with the edges,
592
- * otherwise leave the photo in its current position
593
- */
594
- translateY.value =
595
- currentImageHeight * scale.value < screenHeight
596
- ? withTiming(0)
597
- : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2
598
- ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)
599
- : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2
600
- ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)
601
- : translateY.value;
605
+ /**
606
+ * If pinch handler has been activated via two fingers then the fingers
607
+ * reduced to one we keep track of the old focal using the focal offset
608
+ * from when the number of fingers was two. We then translate the photo
609
+ * taking into account the offset, focal, focal offset, origin, and scale.
610
+ */
611
+ if (numberOfPinchFingers.value === 1) {
612
+ oldFocalX.value = adjustedFocalX.value + focalOffsetX.value;
613
+ oldFocalY.value = adjustedFocalY.value + focalOffsetY.value;
614
+ translateX.value = offsetX.value - oldFocalX.value + localEvtScale * originX.value;
615
+ translateY.value = offsetY.value + oldFocalY.value - localEvtScale * originY.value;
602
616
 
603
- /**
604
- * If the scale has been reduced below one, i.e. zoomed out, translate
605
- * the zoom back to one
606
- */
607
- offsetScale.value = scale.value < 1 ? 1 : scale.value;
608
- scale.value = scale.value < 1 ? withTiming(1) : scale.value;
609
- resetTouchValues();
610
- }
611
- },
612
- onStart: (evt) => {
613
617
  /**
614
- * Android starts with a zero event with 1 touch instead of two
615
- * we therefore must wait to capture starting info until the double
616
- * touch begins
618
+ * If the number of fingers in the gesture is greater than one the
619
+ * adjusted focal point is saved as the old focal and the photo is
620
+ * translated taking into account the offset, focal, origin, and scale.
617
621
  */
618
- if (!isAndroid) {
619
- /**
620
- * Cancel any previous motion animation on translations when a touch
621
- * begins to interrupt the animation and take over the position handling
622
- */
623
- cancelAnimation(translateX);
624
- cancelAnimation(translateY);
625
- cancelAnimation(scale);
626
-
627
- /**
628
- * Set pinch to true to stop all pan gesture interactions
629
- */
630
- isPinch.value = true;
631
-
632
- /**
633
- * Reset isSwiping as now the pan gesture handler is no longer running
634
- */
635
- isSwiping.value = IsSwiping.UNDETERMINED;
622
+ } else if (numberOfPinchFingers.value > 1) {
623
+ oldFocalX.value = adjustedFocalX.value;
624
+ oldFocalY.value = adjustedFocalY.value;
625
+ translateX.value = offsetX.value - adjustedFocalX.value + localEvtScale * originX.value;
626
+ translateY.value = offsetY.value + adjustedFocalY.value - localEvtScale * originY.value;
627
+ }
628
+ })
629
+ .onEnd(() => {
630
+ if (isPinch.value) {
631
+ /**
632
+ * When the pinch is finished if the scale is less than 1 return the
633
+ * photo to center, if the photo is inside the edges of the screen
634
+ * return the photo to line up with the edges, otherwise leave the
635
+ * photo in its current position
636
+ */
637
+ translateX.value =
638
+ scale.value < 1
639
+ ? withTiming(0)
640
+ : translateX.value > halfScreenWidth * (scale.value - 1)
641
+ ? withTiming(halfScreenWidth * (scale.value - 1))
642
+ : translateX.value < -halfScreenWidth * (scale.value - 1)
643
+ ? withTiming(-halfScreenWidth * (scale.value - 1))
644
+ : translateX.value;
636
645
 
637
- /**
638
- * Set initial values for pinch gesture interaction handler
639
- */
640
- numberOfPinchFingers.value = evt.numberOfPointers;
641
- offsetX.value = translateX.value;
642
- offsetY.value = translateY.value;
643
- adjustedFocalX.value = evt.focalX - (halfScreenWidth - offsetX.value);
644
- adjustedFocalY.value = evt.focalY - (halfScreenHeight + offsetY.value);
645
- originX.value = adjustedFocalX.value;
646
- originY.value = adjustedFocalY.value;
647
- offsetScale.value = scale.value;
648
- }
646
+ /**
647
+ * When the pinch is finished if the height is less than the screen
648
+ * height return the photo to center, if the photo is inside the
649
+ * edges of the screen return the photo to line up with the edges,
650
+ * otherwise leave the photo in its current position
651
+ */
652
+ translateY.value =
653
+ currentImageHeight * scale.value < screenHeight
654
+ ? withTiming(0)
655
+ : translateY.value > (currentImageHeight / 2) * scale.value - screenHeight / 2
656
+ ? withTiming((currentImageHeight / 2) * scale.value - screenHeight / 2)
657
+ : translateY.value < (-currentImageHeight / 2) * scale.value + screenHeight / 2
658
+ ? withTiming((-currentImageHeight / 2) * scale.value + screenHeight / 2)
659
+ : translateY.value;
649
660
 
650
661
  /**
651
- * Reset hasPinched for Android single finger offset
662
+ * If the scale has been reduced below one, i.e. zoomed out, translate
663
+ * the zoom back to one
652
664
  */
653
- hasPinched.value = HasPinched.FALSE;
654
- },
655
- },
656
- [currentImageHeight],
657
- );
665
+ offsetScale.value = scale.value < 1 ? 1 : scale.value;
666
+ scale.value = scale.value < 1 ? withTiming(1) : scale.value;
667
+ resetTouchValues();
668
+ }
669
+ })
670
+ .withRef(pinchRef)
671
+ .simultaneousWithExternalGesture(panRef);
658
672
 
659
673
  /**
660
674
  * Single tap handler for header hiding and showing
661
675
  */
662
- const onSingleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({
663
- onActive: () => {
676
+ const singleTap = Gesture.Tap()
677
+ .minPointers(1)
678
+ .numberOfTaps(1)
679
+ .onEnd(() => {
664
680
  cancelAnimation(headerFooterVisible);
665
681
  headerFooterVisible.value = headerFooterVisible.value > 0 ? withTiming(0) : withTiming(1);
666
- },
667
- });
682
+ })
683
+ .requireExternalGestureToFail(panRef, pinchRef, doubleTapRef)
684
+ .withRef(singleTapRef);
668
685
 
669
686
  /**
670
687
  * Double tap handler to zoom back out and hide header and footer
671
688
  */
672
- const onDoubleTap = useAnimatedGestureHandler<TapGestureHandlerGestureEvent>({
673
- onActive: (evt) => {
674
- if (Math.abs(tapX.value - evt.absoluteX) < 64 && Math.abs(tapY.value - evt.absoluteY) < 64) {
689
+ const doubleTap = Gesture.Tap()
690
+ .maxDeltaX(8)
691
+ .maxDeltaY(8)
692
+ .maxDistance(8)
693
+ .minPointers(1)
694
+ .numberOfTaps(2)
695
+ .onStart((event) => {
696
+ tapX.value = event.absoluteX;
697
+ tapY.value = event.absoluteY;
698
+ })
699
+ .onEnd((event) => {
700
+ if (
701
+ Math.abs(tapX.value - event.absoluteX) < 64 &&
702
+ Math.abs(tapY.value - event.absoluteY) < 64
703
+ ) {
675
704
  if (offsetScale.value === 1 && offsetX.value === 0 && offsetY.value === 0) {
676
705
  offsetScale.value = 2;
677
706
  scale.value = withTiming(2, {
678
707
  duration: 200,
679
708
  easing: Easing.out(Easing.ease),
680
709
  });
681
- translateX.value = withTiming(evt.absoluteX - halfScreenWidth, {
710
+ translateX.value = withTiming(event.absoluteX - halfScreenWidth, {
682
711
  duration: 200,
683
712
  easing: Easing.out(Easing.ease),
684
713
  });
685
714
  if (currentImageHeight * 2 > screenHeight) {
686
715
  const translateYTopBottom =
687
- evt.absoluteY > halfScreenHeight
716
+ event.absoluteY > halfScreenHeight
688
717
  ? -(currentImageHeight * 2 - screenHeight) / 2
689
718
  : (currentImageHeight * 2 - screenHeight) / 2;
690
719
  translateY.value = withTiming(translateYTopBottom, {
@@ -714,18 +743,14 @@ export const useImageGalleryGestures = ({
714
743
  }
715
744
  }
716
745
  }
717
- },
718
- onStart: (evt) => {
719
- tapX.value = evt.absoluteX;
720
- tapY.value = evt.absoluteY;
721
- },
722
- });
746
+ })
747
+ .withRef(doubleTapRef);
723
748
 
724
749
  return {
725
- onDoubleTap,
726
- onPan,
727
- onPinch,
728
- onSingleTap,
750
+ doubleTap,
751
+ pan,
752
+ pinch,
753
+ singleTap,
729
754
  };
730
755
  };
731
756