@ethora/chat-component-rn 26.8.2 → 26.8.3

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 (529) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +27 -1
  3. package/lib/commonjs/assets/EmptyChatIllustration.js +7 -6
  4. package/lib/commonjs/assets/EmptyChatIllustration.js.map +1 -1
  5. package/lib/commonjs/assets/icons.js +2 -2
  6. package/lib/commonjs/assets/icons.js.map +1 -1
  7. package/lib/commonjs/components/AuthForms/Login.js +23 -8
  8. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  9. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +12 -4
  10. package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  11. package/lib/commonjs/components/DropdownMenu/DropdownMenu.js +16 -9
  12. package/lib/commonjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  13. package/lib/commonjs/components/ExampleComponents/CustomMessage.js +25 -7
  14. package/lib/commonjs/components/ExampleComponents/CustomMessage.js.map +1 -1
  15. package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
  16. package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
  17. package/lib/commonjs/components/Header/HeaderRoomList.js +9 -6
  18. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  19. package/lib/commonjs/components/InputComponents/Search.js +13 -4
  20. package/lib/commonjs/components/InputComponents/Search.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/ChatHeader.js +9 -3
  22. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  23. package/lib/commonjs/components/MainComponents/ChatRoom.js +6 -3
  24. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/ChatWrapper.js +8 -6
  26. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  27. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +37 -10
  28. package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  29. package/lib/commonjs/components/MainComponents/MediaMessage.js +43 -19
  30. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  31. package/lib/commonjs/components/MainComponents/MessageList.js +9 -3
  32. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  33. package/lib/commonjs/components/MainComponents/RNStyled.js +12 -4
  34. package/lib/commonjs/components/MainComponents/RNStyled.js.map +1 -1
  35. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +25 -8
  36. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  37. package/lib/commonjs/components/MainComponents/RoomList.js +12 -9
  38. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  39. package/lib/commonjs/components/MainComponents/Select.js +29 -8
  40. package/lib/commonjs/components/MainComponents/Select.js.map +1 -1
  41. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +24 -13
  42. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  43. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +24 -8
  44. package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  45. package/lib/commonjs/components/MessageBubble/Message.js +46 -24
  46. package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
  47. package/lib/commonjs/components/MessageBubble/MessageInteractions.js +15 -4
  48. package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
  49. package/lib/commonjs/components/MessageBubble/MessageReaction.js +10 -5
  50. package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
  51. package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js +1 -5
  52. package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
  53. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +42 -27
  54. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  55. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +77 -24
  56. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  57. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +5 -7
  58. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  59. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +18 -14
  60. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
  61. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +20 -9
  62. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  63. package/lib/commonjs/components/Modals/ModalHeaderComponent.js +8 -2
  64. package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
  65. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +8 -8
  66. package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  67. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -5
  68. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  69. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +18 -15
  70. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  71. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +14 -9
  72. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -1
  73. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +3 -7
  74. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  75. package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
  76. package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
  77. package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
  78. package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
  79. package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
  80. package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
  81. package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
  82. package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
  83. package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
  84. package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
  85. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +3 -1
  86. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  87. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +18 -15
  88. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  89. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +9 -6
  90. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  91. package/lib/commonjs/components/Modals/styledModalComponents.js +60 -16
  92. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  93. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +16 -10
  94. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  95. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +6 -2
  96. package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  97. package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
  98. package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
  99. package/lib/commonjs/components/Thread/ThreadWrapper.js +9 -2
  100. package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
  101. package/lib/commonjs/components/Toast/Toast.js +3 -1
  102. package/lib/commonjs/components/Toast/Toast.js.map +1 -1
  103. package/lib/commonjs/components/styled/AudioMessage.js +16 -11
  104. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  105. package/lib/commonjs/components/styled/Button.js +18 -9
  106. package/lib/commonjs/components/styled/Button.js.map +1 -1
  107. package/lib/commonjs/components/styled/DateLabel.js +8 -5
  108. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  109. package/lib/commonjs/components/styled/MediaModal.js +27 -21
  110. package/lib/commonjs/components/styled/MediaModal.js.map +1 -1
  111. package/lib/commonjs/components/styled/RoomListComponents/index.js +60 -38
  112. package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
  113. package/lib/commonjs/components/styled/SendInput.js +13 -8
  114. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  115. package/lib/commonjs/components/styled/StyledComponents.js +67 -23
  116. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  117. package/lib/commonjs/components/styled/StyledInput.js +32 -18
  118. package/lib/commonjs/components/styled/StyledInput.js.map +1 -1
  119. package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
  120. package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
  121. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +20 -9
  122. package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  123. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +39 -18
  124. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  125. package/lib/commonjs/components/styled/TreadLabel.js +6 -3
  126. package/lib/commonjs/components/styled/TreadLabel.js.map +1 -1
  127. package/lib/commonjs/context/MessageNotificationContext.js +14 -3
  128. package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
  129. package/lib/commonjs/helpers/getChatBackground.js +4 -1
  130. package/lib/commonjs/helpers/getChatBackground.js.map +1 -1
  131. package/lib/commonjs/helpers/getDateLabelColor.js +3 -1
  132. package/lib/commonjs/helpers/getDateLabelColor.js.map +1 -1
  133. package/lib/commonjs/helpers/getIconColor.js +4 -1
  134. package/lib/commonjs/helpers/getIconColor.js.map +1 -1
  135. package/lib/commonjs/helpers/getSenderNameColor.js +3 -1
  136. package/lib/commonjs/helpers/getSenderNameColor.js.map +1 -1
  137. package/lib/commonjs/helpers/markdownParser.js +27 -5
  138. package/lib/commonjs/helpers/markdownParser.js.map +1 -1
  139. package/lib/commonjs/helpers/parseMessageBody.js +82 -24
  140. package/lib/commonjs/helpers/parseMessageBody.js.map +1 -1
  141. package/lib/commonjs/hooks/useCustomTypingIndicator.js +7 -3
  142. package/lib/commonjs/hooks/useCustomTypingIndicator.js.map +1 -1
  143. package/lib/commonjs/hooks/useLogout.js +10 -3
  144. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  145. package/lib/commonjs/hooks/useTheme.js +35 -0
  146. package/lib/commonjs/hooks/useTheme.js.map +1 -0
  147. package/lib/commonjs/i18n/strings.js +18 -0
  148. package/lib/commonjs/i18n/strings.js.map +1 -1
  149. package/lib/commonjs/main.js +75 -0
  150. package/lib/commonjs/main.js.map +1 -1
  151. package/lib/commonjs/networking/api-requests/push.api.js +130 -45
  152. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  153. package/lib/commonjs/networking/api-requests/rooms.api.js +13 -0
  154. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  155. package/lib/commonjs/services/pushRegistration.js +250 -0
  156. package/lib/commonjs/services/pushRegistration.js.map +1 -0
  157. package/lib/commonjs/services/pushSubscriptionService.js +0 -24
  158. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  159. package/lib/commonjs/theme/index.js +38 -0
  160. package/lib/commonjs/theme/index.js.map +1 -0
  161. package/lib/commonjs/theme/styled.d.js +4 -0
  162. package/lib/commonjs/theme/styled.d.js.map +1 -0
  163. package/lib/commonjs/theme/theme.js +137 -0
  164. package/lib/commonjs/theme/theme.js.map +1 -0
  165. package/lib/module/assets/EmptyChatIllustration.js +7 -6
  166. package/lib/module/assets/EmptyChatIllustration.js.map +1 -1
  167. package/lib/module/assets/icons.js +1 -1
  168. package/lib/module/assets/icons.js.map +1 -1
  169. package/lib/module/components/AuthForms/Login.js +23 -8
  170. package/lib/module/components/AuthForms/Login.js.map +1 -1
  171. package/lib/module/components/ContextMenu/ContextMenuComponents.js +12 -4
  172. package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  173. package/lib/module/components/DropdownMenu/DropdownMenu.js +16 -9
  174. package/lib/module/components/DropdownMenu/DropdownMenu.js.map +1 -1
  175. package/lib/module/components/ExampleComponents/CustomMessage.js +25 -7
  176. package/lib/module/components/ExampleComponents/CustomMessage.js.map +1 -1
  177. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
  178. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
  179. package/lib/module/components/Header/HeaderRoomList.js +9 -6
  180. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  181. package/lib/module/components/InputComponents/Search.js +13 -4
  182. package/lib/module/components/InputComponents/Search.js.map +1 -1
  183. package/lib/module/components/MainComponents/ChatHeader.js +9 -3
  184. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  185. package/lib/module/components/MainComponents/ChatRoom.js +6 -3
  186. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  187. package/lib/module/components/MainComponents/ChatWrapper.js +8 -6
  188. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  189. package/lib/module/components/MainComponents/LanguageSelectorModal.js +37 -10
  190. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  191. package/lib/module/components/MainComponents/MediaMessage.js +42 -19
  192. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  193. package/lib/module/components/MainComponents/MessageList.js +9 -3
  194. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  195. package/lib/module/components/MainComponents/RNStyled.js +12 -4
  196. package/lib/module/components/MainComponents/RNStyled.js.map +1 -1
  197. package/lib/module/components/MainComponents/ReduxWrapper.js +25 -8
  198. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  199. package/lib/module/components/MainComponents/RoomList.js +12 -9
  200. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  201. package/lib/module/components/MainComponents/Select.js +29 -8
  202. package/lib/module/components/MainComponents/Select.js.map +1 -1
  203. package/lib/module/components/Menu/HeaderRoomListMenu.js +24 -13
  204. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  205. package/lib/module/components/MessageBubble/BottomReplyContainer.js +24 -8
  206. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  207. package/lib/module/components/MessageBubble/Message.js +47 -25
  208. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  209. package/lib/module/components/MessageBubble/MessageInteractions.js +15 -4
  210. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  211. package/lib/module/components/MessageBubble/MessageReaction.js +10 -5
  212. package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
  213. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js +2 -6
  214. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
  215. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +42 -27
  216. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  217. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +79 -26
  218. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  219. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +6 -8
  220. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  221. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +18 -16
  222. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
  223. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +20 -9
  224. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  225. package/lib/module/components/Modals/ModalHeaderComponent.js +8 -2
  226. package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
  227. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +10 -10
  228. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  229. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -6
  230. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  231. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +18 -15
  232. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  233. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +14 -9
  234. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -1
  235. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -8
  236. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  237. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
  238. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
  239. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
  240. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
  241. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
  242. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
  243. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
  244. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
  245. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
  246. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
  247. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +3 -2
  248. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  249. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +18 -15
  250. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  251. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +9 -6
  252. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  253. package/lib/module/components/Modals/styledModalComponents.js +59 -15
  254. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  255. package/lib/module/components/RoomComponents/ChatRoomItem.js +16 -10
  256. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  257. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +6 -2
  258. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  259. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
  260. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
  261. package/lib/module/components/Thread/ThreadWrapper.js +9 -2
  262. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  263. package/lib/module/components/Toast/Toast.js +3 -1
  264. package/lib/module/components/Toast/Toast.js.map +1 -1
  265. package/lib/module/components/styled/AudioMessage.js +16 -11
  266. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  267. package/lib/module/components/styled/Button.js +17 -9
  268. package/lib/module/components/styled/Button.js.map +1 -1
  269. package/lib/module/components/styled/DateLabel.js +8 -5
  270. package/lib/module/components/styled/DateLabel.js.map +1 -1
  271. package/lib/module/components/styled/MediaModal.js +29 -23
  272. package/lib/module/components/styled/MediaModal.js.map +1 -1
  273. package/lib/module/components/styled/RoomListComponents/index.js +62 -39
  274. package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
  275. package/lib/module/components/styled/SendInput.js +13 -8
  276. package/lib/module/components/styled/SendInput.js.map +1 -1
  277. package/lib/module/components/styled/StyledComponents.js +67 -23
  278. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  279. package/lib/module/components/styled/StyledInput.js +32 -18
  280. package/lib/module/components/styled/StyledInput.js.map +1 -1
  281. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
  282. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
  283. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +20 -9
  284. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  285. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +39 -18
  286. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  287. package/lib/module/components/styled/TreadLabel.js +6 -3
  288. package/lib/module/components/styled/TreadLabel.js.map +1 -1
  289. package/lib/module/context/MessageNotificationContext.js +14 -3
  290. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  291. package/lib/module/helpers/getChatBackground.js +5 -1
  292. package/lib/module/helpers/getChatBackground.js.map +1 -1
  293. package/lib/module/helpers/getDateLabelColor.js +4 -1
  294. package/lib/module/helpers/getDateLabelColor.js.map +1 -1
  295. package/lib/module/helpers/getIconColor.js +5 -1
  296. package/lib/module/helpers/getIconColor.js.map +1 -1
  297. package/lib/module/helpers/getSenderNameColor.js +4 -1
  298. package/lib/module/helpers/getSenderNameColor.js.map +1 -1
  299. package/lib/module/helpers/markdownParser.js +27 -5
  300. package/lib/module/helpers/markdownParser.js.map +1 -1
  301. package/lib/module/helpers/parseMessageBody.js +82 -24
  302. package/lib/module/helpers/parseMessageBody.js.map +1 -1
  303. package/lib/module/hooks/useCustomTypingIndicator.js +8 -3
  304. package/lib/module/hooks/useCustomTypingIndicator.js.map +1 -1
  305. package/lib/module/hooks/useLogout.js +10 -3
  306. package/lib/module/hooks/useLogout.js.map +1 -1
  307. package/lib/module/hooks/useTheme.js +30 -0
  308. package/lib/module/hooks/useTheme.js.map +1 -0
  309. package/lib/module/i18n/strings.js +18 -0
  310. package/lib/module/i18n/strings.js.map +1 -1
  311. package/lib/module/main.js +3 -0
  312. package/lib/module/main.js.map +1 -1
  313. package/lib/module/networking/api-requests/push.api.js +119 -45
  314. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  315. package/lib/module/networking/api-requests/rooms.api.js +12 -0
  316. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  317. package/lib/module/services/pushRegistration.js +239 -0
  318. package/lib/module/services/pushRegistration.js.map +1 -0
  319. package/lib/module/services/pushSubscriptionService.js +0 -24
  320. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  321. package/lib/module/theme/index.js +7 -0
  322. package/lib/module/theme/index.js.map +1 -0
  323. package/lib/module/theme/styled.d.js +6 -0
  324. package/lib/module/theme/styled.d.js.map +1 -0
  325. package/lib/module/theme/theme.js +131 -0
  326. package/lib/module/theme/theme.js.map +1 -0
  327. package/lib/typescript/assets/EmptyChatIllustration.d.ts +1 -0
  328. package/lib/typescript/assets/EmptyChatIllustration.d.ts.map +1 -1
  329. package/lib/typescript/assets/icons.d.ts +8 -0
  330. package/lib/typescript/assets/icons.d.ts.map +1 -1
  331. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  332. package/lib/typescript/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  333. package/lib/typescript/components/ExampleComponents/CustomMessage.d.ts.map +1 -1
  334. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  335. package/lib/typescript/components/InputComponents/Search.d.ts.map +1 -1
  336. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  337. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  338. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  339. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -1
  340. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  341. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  342. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  343. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  344. package/lib/typescript/components/MainComponents/Select.d.ts.map +1 -1
  345. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  346. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  347. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  348. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  349. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
  350. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  351. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  352. package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
  353. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -1
  354. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  355. package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
  356. package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
  357. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  358. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  359. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -1
  360. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  361. package/lib/typescript/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.d.ts.map +1 -1
  362. package/lib/typescript/components/Modals/SettingsModals/Referrals/Referrals.d.ts.map +1 -1
  363. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts +2 -2
  364. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts.map +1 -1
  365. package/lib/typescript/components/Modals/SettingsModals/Visibility/RadioInput.d.ts.map +1 -1
  366. package/lib/typescript/components/Modals/SettingsModals/Visibility/VisibilityModal.d.ts.map +1 -1
  367. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  368. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  369. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  370. package/lib/typescript/components/Modals/styledModalComponents.d.ts +2 -0
  371. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  372. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  373. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  374. package/lib/typescript/components/RoomComponents/styled/StyledRoomComponents.d.ts.map +1 -1
  375. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  376. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  377. package/lib/typescript/components/styled/Button.d.ts.map +1 -1
  378. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  379. package/lib/typescript/components/styled/MediaModal.d.ts +2 -2
  380. package/lib/typescript/components/styled/MediaModal.d.ts.map +1 -1
  381. package/lib/typescript/components/styled/RoomListComponents/index.d.ts.map +1 -1
  382. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  383. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  384. package/lib/typescript/components/styled/StyledInput.d.ts.map +1 -1
  385. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
  386. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  387. package/lib/typescript/components/styled/TreadLabel.d.ts.map +1 -1
  388. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  389. package/lib/typescript/helpers/getAvatarColor.d.ts +1 -1
  390. package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -1
  391. package/lib/typescript/helpers/getDateLabelColor.d.ts +3 -7
  392. package/lib/typescript/helpers/getDateLabelColor.d.ts.map +1 -1
  393. package/lib/typescript/helpers/getIconColor.d.ts +4 -7
  394. package/lib/typescript/helpers/getIconColor.d.ts.map +1 -1
  395. package/lib/typescript/helpers/getSenderNameColor.d.ts +3 -7
  396. package/lib/typescript/helpers/getSenderNameColor.d.ts.map +1 -1
  397. package/lib/typescript/helpers/markdownParser.d.ts +8 -1
  398. package/lib/typescript/helpers/markdownParser.d.ts.map +1 -1
  399. package/lib/typescript/helpers/parseMessageBody.d.ts +8 -1
  400. package/lib/typescript/helpers/parseMessageBody.d.ts.map +1 -1
  401. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts +2 -0
  402. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts.map +1 -1
  403. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  404. package/lib/typescript/hooks/useTheme.d.ts +16 -0
  405. package/lib/typescript/hooks/useTheme.d.ts.map +1 -0
  406. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  407. package/lib/typescript/main.d.ts +7 -0
  408. package/lib/typescript/main.d.ts.map +1 -1
  409. package/lib/typescript/networking/api-requests/push.api.d.ts +46 -3
  410. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  411. package/lib/typescript/networking/api-requests/rooms.api.d.ts +1 -0
  412. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  413. package/lib/typescript/services/pushRegistration.d.ts +21 -0
  414. package/lib/typescript/services/pushRegistration.d.ts.map +1 -0
  415. package/lib/typescript/services/pushSubscriptionService.d.ts +0 -4
  416. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  417. package/lib/typescript/theme/index.d.ts +5 -0
  418. package/lib/typescript/theme/index.d.ts.map +1 -0
  419. package/lib/typescript/theme/theme.d.ts +113 -0
  420. package/lib/typescript/theme/theme.d.ts.map +1 -0
  421. package/lib/typescript/types/models/room.model.d.ts +1 -0
  422. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  423. package/lib/typescript/types/types.d.ts +20 -0
  424. package/lib/typescript/types/types.d.ts.map +1 -1
  425. package/package.json +1 -1
  426. package/src/assets/EmptyChatIllustration.tsx +7 -5
  427. package/src/assets/icons.tsx +24 -0
  428. package/src/components/AuthForms/Login.tsx +11 -9
  429. package/src/components/ContextMenu/ContextMenuComponents.tsx +4 -4
  430. package/src/components/DropdownMenu/DropdownMenu.tsx +14 -6
  431. package/src/components/ExampleComponents/CustomMessage.tsx +9 -8
  432. package/src/components/ExampleComponents/CustomTypingIndicatorExamples.tsx +6 -6
  433. package/src/components/Header/HeaderRoomList.tsx +11 -6
  434. package/src/components/InputComponents/Search.tsx +7 -4
  435. package/src/components/MainComponents/ChatHeader.tsx +9 -3
  436. package/src/components/MainComponents/ChatRoom.tsx +5 -2
  437. package/src/components/MainComponents/ChatWrapper.tsx +8 -6
  438. package/src/components/MainComponents/LanguageSelectorModal.tsx +33 -7
  439. package/src/components/MainComponents/MediaMessage.tsx +37 -18
  440. package/src/components/MainComponents/MessageList.tsx +13 -3
  441. package/src/components/MainComponents/RNStyled.tsx +4 -4
  442. package/src/components/MainComponents/ReduxWrapper.tsx +23 -7
  443. package/src/components/MainComponents/RoomList.tsx +13 -7
  444. package/src/components/MainComponents/Select.tsx +13 -8
  445. package/src/components/Menu/HeaderRoomListMenu.tsx +30 -13
  446. package/src/components/MessageBubble/BottomReplyContainer.tsx +16 -11
  447. package/src/components/MessageBubble/Message.tsx +48 -25
  448. package/src/components/MessageBubble/MessageInteractions.tsx +17 -4
  449. package/src/components/MessageBubble/MessageReaction.tsx +9 -4
  450. package/src/components/Modals/AddMembersModal/AddMembersModal.tsx +2 -2
  451. package/src/components/Modals/AttachSheet/AttachSheet.tsx +57 -23
  452. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +63 -25
  453. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +6 -4
  454. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +18 -14
  455. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +14 -9
  456. package/src/components/Modals/ModalHeaderComponent.tsx +9 -2
  457. package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +14 -6
  458. package/src/components/Modals/NewChatModal/ModalContent.tsx +2 -2
  459. package/src/components/Modals/NewChatModal/NewChatModal.tsx +19 -15
  460. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +15 -8
  461. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +2 -3
  462. package/src/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.tsx +8 -6
  463. package/src/components/Modals/SettingsModals/Referrals/Referrals.tsx +5 -3
  464. package/src/components/Modals/SettingsModals/SharedStyledComponents.ts +4 -4
  465. package/src/components/Modals/SettingsModals/Visibility/RadioInput.tsx +9 -5
  466. package/src/components/Modals/SettingsModals/Visibility/VisibilityModal.tsx +7 -7
  467. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +3 -1
  468. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
  469. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +15 -6
  470. package/src/components/Modals/styledModalComponents.tsx +23 -15
  471. package/src/components/RoomComponents/ChatRoomItem.tsx +19 -10
  472. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +4 -2
  473. package/src/components/RoomComponents/styled/StyledRoomComponents.ts +2 -0
  474. package/src/components/Thread/ThreadWrapper.tsx +6 -5
  475. package/src/components/Toast/Toast.tsx +1 -1
  476. package/src/components/styled/AudioMessage.tsx +12 -9
  477. package/src/components/styled/Button.tsx +15 -8
  478. package/src/components/styled/DateLabel.tsx +7 -3
  479. package/src/components/styled/MediaModal.tsx +30 -25
  480. package/src/components/styled/RoomListComponents/index.tsx +60 -35
  481. package/src/components/styled/SendInput.tsx +23 -8
  482. package/src/components/styled/StyledComponents.ts +30 -23
  483. package/src/components/styled/StyledInput.tsx +35 -21
  484. package/src/components/styled/StyledInputComponents/CustomTypingIndicator.tsx +8 -8
  485. package/src/components/styled/StyledInputComponents/MediaComponents.tsx +20 -7
  486. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +15 -19
  487. package/src/components/styled/TreadLabel.tsx +9 -3
  488. package/src/context/MessageNotificationContext.tsx +18 -4
  489. package/src/helpers/getChatBackground.ts +3 -1
  490. package/src/helpers/getDateLabelColor.ts +5 -3
  491. package/src/helpers/getIconColor.ts +6 -3
  492. package/src/helpers/getSenderNameColor.ts +5 -3
  493. package/src/helpers/markdownParser.tsx +29 -5
  494. package/src/helpers/parseMessageBody.tsx +79 -26
  495. package/src/hooks/useCustomTypingIndicator.tsx +7 -3
  496. package/src/hooks/useLogout.tsx +10 -3
  497. package/src/hooks/useTheme.ts +41 -0
  498. package/src/i18n/strings.ts +18 -0
  499. package/src/main.ts +31 -0
  500. package/src/networking/api-requests/push.api.ts +185 -62
  501. package/src/networking/api-requests/rooms.api.ts +9 -0
  502. package/src/services/pushRegistration.ts +356 -0
  503. package/src/services/pushSubscriptionService.ts +0 -34
  504. package/src/theme/index.ts +10 -0
  505. package/src/theme/styled.d.ts +9 -0
  506. package/src/theme/theme.ts +243 -0
  507. package/src/types/models/room.model.ts +1 -0
  508. package/src/types/types.ts +24 -0
  509. package/lib/commonjs/context/PushNotificationProvider.js +0 -79
  510. package/lib/commonjs/context/PushNotificationProvider.js.map +0 -1
  511. package/lib/commonjs/hooks/usePushNotifications.js +0 -110
  512. package/lib/commonjs/hooks/usePushNotifications.js.map +0 -1
  513. package/lib/commonjs/services/pushNotifications.js +0 -143
  514. package/lib/commonjs/services/pushNotifications.js.map +0 -1
  515. package/lib/module/context/PushNotificationProvider.js +0 -79
  516. package/lib/module/context/PushNotificationProvider.js.map +0 -1
  517. package/lib/module/hooks/usePushNotifications.js +0 -106
  518. package/lib/module/hooks/usePushNotifications.js.map +0 -1
  519. package/lib/module/services/pushNotifications.js +0 -130
  520. package/lib/module/services/pushNotifications.js.map +0 -1
  521. package/lib/typescript/context/PushNotificationProvider.d.ts +0 -2
  522. package/lib/typescript/context/PushNotificationProvider.d.ts.map +0 -1
  523. package/lib/typescript/hooks/usePushNotifications.d.ts +0 -5
  524. package/lib/typescript/hooks/usePushNotifications.d.ts.map +0 -1
  525. package/lib/typescript/services/pushNotifications.d.ts +0 -10
  526. package/lib/typescript/services/pushNotifications.d.ts.map +0 -1
  527. package/src/context/PushNotificationProvider.tsx +0 -78
  528. package/src/hooks/usePushNotifications.ts +0 -131
  529. package/src/services/pushNotifications.ts +0 -170
@@ -29,6 +29,7 @@ import { ArowDownIcon } from '../../assets/icons';
29
29
  import CustomTypingIndicator from '../styled/StyledInputComponents/CustomTypingIndicator';
30
30
  import { getIconColor } from '../../helpers/getIconColor';
31
31
  import { getChatBackgroundColor } from '../../helpers/getChatBackground';
32
+ import { useTheme } from '../../hooks/useTheme';
32
33
  import { isOwnMessage } from '../../helpers/isOwnMessage';
33
34
 
34
35
  interface MessageListProps<TMessage extends IMessage> {
@@ -81,6 +82,7 @@ const MessageList = <TMessage extends IMessage>({
81
82
  }: MessageListProps<TMessage>) => {
82
83
  const { composing, messages, composingList } = useRoomState(roomJID)
83
84
  .room! as IRoom;
85
+ const theme = useTheme();
84
86
  const [isUserAtBottom, setIsUserAtBottom] = useState(true);
85
87
  const [showNewMessageIndicator, setShowNewMessageIndicator] = useState(false);
86
88
  const [isLoadingMore, setIsLoadingMore] = useState(false);
@@ -473,16 +475,24 @@ const MessageList = <TMessage extends IMessage>({
473
475
  <TouchableOpacity
474
476
  style={[
475
477
  styles.newMessageIndicator,
476
- { backgroundColor: getIconColor(config) },
478
+ {
479
+ backgroundColor: getIconColor(config),
480
+ shadowColor: theme.shadow,
481
+ },
477
482
  ]}
478
483
  onPress={handleNewMessageIndicatorPress}
479
484
  >
480
485
  {/* White chevron on the saturated FAB. The icon's default
481
486
  color is white, which was invisible against the previous
482
487
  light `secondary` background — hence "no icon". */}
483
- <ArowDownIcon color="#FFFFFF" width={22} height={22} />
488
+ <ArowDownIcon color={theme.textOnPrimary} width={22} height={22} />
484
489
  {unreadWhileScrolledUp > 0 && (
485
- <View style={styles.newMessageBadge}>
490
+ <View
491
+ style={[
492
+ styles.newMessageBadge,
493
+ { backgroundColor: theme.danger, borderColor: theme.surface },
494
+ ]}
495
+ >
486
496
  <Text style={styles.newMessageBadgeText}>
487
497
  {unreadWhileScrolledUp > 99 ? '99+' : unreadWhileScrolledUp}
488
498
  </Text>
@@ -12,23 +12,23 @@ export const Container = styled.View`
12
12
 
13
13
  export const Message = styled.Text`
14
14
  font-size: 16px;
15
- color: #333;
15
+ color: ${({theme}) => theme.text};
16
16
  `;
17
17
 
18
18
  export const OrDelimiter = styled.Text`
19
19
  font-size: 14px;
20
- color: #666;
20
+ color: ${({theme}) => theme.textSecondary};
21
21
  `;
22
22
 
23
23
  export const CustomButton = styled.TouchableOpacity`
24
24
  width: 100%;
25
- background-color: #007bff;
25
+ background-color: ${({theme}) => theme.primary};
26
26
  padding: 10px;
27
27
  border-radius: 4px;
28
28
  align-items: center;
29
29
  `;
30
30
 
31
31
  export const ButtonText = styled.Text`
32
- color: #fff;
32
+ color: ${({theme}) => theme.textOnPrimary};
33
33
  font-size: 16px;
34
34
  `;
@@ -2,6 +2,8 @@ import React, {useMemo} from 'react';
2
2
  import {Provider, useDispatch} from 'react-redux';
3
3
  import {KeyboardProvider} from 'react-native-keyboard-controller';
4
4
  import {SafeAreaProvider} from 'react-native-safe-area-context';
5
+ import {ThemeProvider} from 'styled-components/native';
6
+ import {resolveTheme} from '../../theme/theme';
5
7
  import {store} from '../../roomStore';
6
8
  import {setConfig} from '../../roomStore/chatSettingsSlice';
7
9
  import {ConfigUser, IConfig, MessageProps} from '../../types/types';
@@ -12,12 +14,19 @@ import LoginWrapper from './LoginWrapper';
12
14
  import '../../helpers/storeConsole';
13
15
  import {installPromiseRejectionTracker} from '../../utils/installPromiseRejectionTracker';
14
16
  import {useChatFonts} from '../../hooks/useChatFonts';
17
+ import {installPushTokenHook} from '../../services/pushRegistration';
15
18
 
16
19
  // Mount-time, dev-only — wire a global unhandled-promise-rejection
17
20
  // tracker so any future leak surfaces with a real stack trace in Metro
18
21
  // logs (bug #4 follow-up). No-op in production.
19
22
  installPromiseRejectionTracker();
20
23
 
24
+ // Arms the push-token watcher once for the package: it runs
25
+ // `config.pushNotifications.getPushTokens` for every login and flushes
26
+ // tokens handed over through `registerPushToken` before sign-in. Cheap
27
+ // (one store subscription), no-op for hosts that never use push.
28
+ installPushTokenHook();
29
+
21
30
  interface ChatWrapperProps {
22
31
  token?: string;
23
32
  roomJID?: string;
@@ -61,14 +70,21 @@ export const ReduxWrapper: React.FC<ChatWrapperProps> = React.memo(
61
70
  // KeyboardAvoidingView under the same flag).
62
71
  const ownKeyboardHandling = !memoizedConfig?.disableKeyboardAvoidingView;
63
72
 
73
+ // Light/dark palette (config.dark + config.darkColors). Styled
74
+ // components read it via `({ theme }) => theme.surface`; plain RN
75
+ // styles via the `useTheme()` hook.
76
+ const theme = useMemo(() => resolveTheme(memoizedConfig), [memoizedConfig]);
77
+
64
78
  const tree = (
65
- <XmppProvider config={memoizedConfig} isVisible={props.isVisible}>
66
- <ToastProvider>
67
- <MessageNotificationProvider config={memoizedConfig}>
68
- <LoginWrapper config={memoizedConfig} {...props} />
69
- </MessageNotificationProvider>
70
- </ToastProvider>
71
- </XmppProvider>
79
+ <ThemeProvider theme={theme}>
80
+ <XmppProvider config={memoizedConfig} isVisible={props.isVisible}>
81
+ <ToastProvider>
82
+ <MessageNotificationProvider config={memoizedConfig}>
83
+ <LoginWrapper config={memoizedConfig} {...props} />
84
+ </MessageNotificationProvider>
85
+ </ToastProvider>
86
+ </XmppProvider>
87
+ </ThemeProvider>
72
88
  );
73
89
 
74
90
  return (
@@ -26,6 +26,7 @@ import { HeaderRoomList } from '../Header/HeaderRoomList';
26
26
  import { HeaderRoomListMenu } from '../Menu/HeaderRoomListMenu';
27
27
  import { getIconColor } from '../../helpers/getIconColor';
28
28
  import { useT } from '../../i18n/useT';
29
+ import { useTheme } from '../../hooks/useTheme';
29
30
 
30
31
  const LONG_PRESS_THRESHOLD = 200;
31
32
 
@@ -35,9 +36,8 @@ interface RoomListProps {
35
36
  onRoomClick?: (chat: IRoom) => void;
36
37
  }
37
38
 
38
- /** Page ground behind the room list, the search field and the header's
39
- * rounded bottom corners. */
40
- const LIST_BACKGROUND = '#E8EDF2';
39
+ // The page ground behind the room list, the search field and the header's
40
+ // rounded bottom corners is `theme.listBackground` (applied inline below).
41
41
 
42
42
  /** A release that leaves the search strip in between is settled by
43
43
  * scrolling to whichever end is nearer; this delay lets the platform tell
@@ -78,6 +78,7 @@ const RoomList: React.FC<RoomListProps> = ({
78
78
  }) => {
79
79
  const { config } = useChatSettingState();
80
80
  const t = useT();
81
+ const theme = useTheme();
81
82
 
82
83
  const [open, setOpen] = useState(false);
83
84
  const [searchTerm, setSearchTerm] = useState('');
@@ -358,7 +359,11 @@ const RoomList: React.FC<RoomListProps> = ({
358
359
  )}
359
360
  <View
360
361
  ref={containerRef}
361
- style={[styles.container, config?.roomListStyles]}
362
+ style={[
363
+ styles.container,
364
+ { backgroundColor: theme.listBackground },
365
+ config?.roomListStyles,
366
+ ]}
362
367
  >
363
368
  {(open || !burgerMenu) && (
364
369
  <>
@@ -401,7 +406,10 @@ const RoomList: React.FC<RoomListProps> = ({
401
406
  <ChatRoomItem chat={item} config={config} />
402
407
  </Pressable>
403
408
  )}
404
- style={styles.chatList}
409
+ style={[
410
+ styles.chatList,
411
+ { backgroundColor: theme.listBackground },
412
+ ]}
405
413
  />
406
414
  </View>
407
415
 
@@ -429,7 +437,6 @@ const styles = StyleSheet.create({
429
437
  width: '100%',
430
438
  height: '100%',
431
439
  flex: 1,
432
- backgroundColor: LIST_BACKGROUND,
433
440
  },
434
441
  scrollContainer: {
435
442
  flexGrow: 1,
@@ -460,7 +467,6 @@ const styles = StyleSheet.create({
460
467
  chatList: {
461
468
  flex: 1,
462
469
  paddingHorizontal: 16,
463
- backgroundColor: LIST_BACKGROUND,
464
470
  },
465
471
  });
466
472
 
@@ -8,6 +8,7 @@ import {
8
8
  Keyboard,
9
9
  } from 'react-native';
10
10
  import { Iso639_1Codes } from '../../types/types';
11
+ import { useTheme } from '../../hooks/useTheme';
11
12
 
12
13
  const SelectWrapper = styled.View`
13
14
  position: relative;
@@ -18,20 +19,21 @@ const SelectBox = styled.TouchableOpacity<{
18
19
  isOpen: boolean;
19
20
  borderColor?: string;
20
21
  }>`
21
- border: ${({ borderColor }) =>
22
- borderColor ? `1px solid ${borderColor}` : '1px solid #ccc'};
22
+ border: ${({ borderColor, theme }) =>
23
+ `1px solid ${borderColor || theme.border}`};
23
24
  padding: 10px;
24
25
  flex-direction: row;
25
26
  justify-content: space-between;
26
27
  align-items: center;
27
- background-color: #fff;
28
+ background-color: ${({ theme }) => theme.surface};
28
29
  border-radius: 5px;
29
30
  box-shadow: ${({ isOpen }) =>
30
31
  isOpen ? '0px 4px 8px rgba(0, 0, 0, 0.1)' : 'none'};
31
32
  `;
32
33
 
34
+ // Light keeps its original #aaa; dark uses the palette's muted text.
33
35
  const Placeholder = styled.Text`
34
- color: #aaa;
36
+ color: ${({ theme }) => (theme.dark ? theme.textMuted : '#aaa')};
35
37
  `;
36
38
 
37
39
  const Icon = styled(Animated.Text)`
@@ -43,9 +45,9 @@ const Dropdown = styled.View`
43
45
  top: 100%;
44
46
  left: 0;
45
47
  right: 0;
46
- background-color: #fff;
48
+ background-color: ${({ theme }) => theme.surface};
47
49
  max-height: 200px;
48
- border: 1px solid #ccc;
50
+ border: 1px solid ${({ theme }) => theme.border};
49
51
  border-radius: 5px;
50
52
  z-index: 100;
51
53
  `;
@@ -54,7 +56,8 @@ const SearchBox = styled.TextInput`
54
56
  width: 100%;
55
57
  padding: 10px;
56
58
  border-bottom-width: 1px;
57
- border-color: #ccc;
59
+ border-color: ${({ theme }) => theme.border};
60
+ color: ${({ theme }) => theme.text};
58
61
  box-sizing: border-box;
59
62
  `;
60
63
 
@@ -63,7 +66,7 @@ const DropdownItem = styled.TouchableOpacity`
63
66
  `;
64
67
 
65
68
  const DropdownItemText = styled.Text`
66
- color: #000;
69
+ color: ${({ theme }) => theme.text};
67
70
  `;
68
71
 
69
72
  interface SelectProps {
@@ -81,6 +84,7 @@ const Select: React.FC<SelectProps> = ({
81
84
  accentColor,
82
85
  selectedValue = null,
83
86
  }) => {
87
+ const theme = useTheme();
84
88
  const [isOpen, setIsOpen] = useState(false);
85
89
  const [selected, setSelected] = useState<{ name: string; id: string } | null>(
86
90
  selectedValue
@@ -139,6 +143,7 @@ const Select: React.FC<SelectProps> = ({
139
143
  <Dropdown>
140
144
  <SearchBox
141
145
  placeholder="Search..."
146
+ placeholderTextColor={theme.textMuted}
142
147
  value={searchTerm}
143
148
  onChangeText={setSearchTerm}
144
149
  />
@@ -24,6 +24,7 @@ import { setActiveModal } from '../../roomStore/chatSettingsSlice';
24
24
  import { MODAL_TYPES } from '../../helpers/constants/MODAL_TYPES';
25
25
  import { useChatSettingState } from '../../hooks/useChatSettingState';
26
26
  import { useLogout } from '../../hooks/useLogout';
27
+ import { useTheme } from '../../hooks/useTheme';
27
28
  import {
28
29
  shouldClaimVerticalDrag,
29
30
  shouldDismissOnDrag,
@@ -112,7 +113,10 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
112
113
  const { config } = useChatSettingState();
113
114
  const performLogout = useLogout();
114
115
  const logoutConfig = config?.logout?.enabled ? config.logout : undefined;
115
- const primaryColor = config?.colors?.primary ?? '#0052CD';
116
+ const theme = useTheme();
117
+ const primaryColor = theme.primary;
118
+ const iconColor = theme.icon;
119
+ const labelColor = theme.text;
116
120
 
117
121
  const insets = useSafeAreaInsets();
118
122
  // Measured, so the sheet is exactly as tall as its rows and starts
@@ -243,22 +247,22 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
243
247
  }[] = [
244
248
  {
245
249
  label: 'New Chat',
246
- icon: <AddNewIcon color={primaryColor} />,
250
+ icon: <AddNewIcon color={iconColor} />,
247
251
  onClick: () => {
248
252
  dispatch(setActiveModal(MODAL_TYPES.NEW_CHAT));
249
253
  },
250
- styles: { color: '#141414' },
254
+ styles: { color: labelColor },
251
255
  },
252
256
  {
253
257
  label: 'Profile',
254
- icon: <ProfileIcon color={primaryColor} />,
258
+ icon: <ProfileIcon color={iconColor} />,
255
259
  onClick: () => {
256
260
  dispatch(setActiveModal(MODAL_TYPES.PROFILE));
257
261
  },
258
262
  },
259
263
  {
260
264
  label: 'Settings',
261
- icon: <SettingIcon color={primaryColor} />,
265
+ icon: <SettingIcon color={iconColor} />,
262
266
  onClick: () => {
263
267
  dispatch(setActiveModal(MODAL_TYPES.SETTINGS));
264
268
  },
@@ -267,7 +271,7 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
267
271
  if (logoutConfig) {
268
272
  options.push({
269
273
  label: logoutConfig.label ?? DEFAULT_LOGOUT_LABEL,
270
- icon: <LogoutIcon color={primaryColor} />,
274
+ icon: <LogoutIcon color={iconColor} />,
271
275
  styles: { color: primaryColor },
272
276
  onClick: () => {
273
277
  runLogoutFlow(logoutConfig, performLogout).catch(() => {});
@@ -275,7 +279,7 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
275
279
  });
276
280
  }
277
281
  return options;
278
- }, [dispatch, logoutConfig, performLogout, primaryColor]);
282
+ }, [dispatch, logoutConfig, performLogout, primaryColor, iconColor, labelColor]);
279
283
 
280
284
  return (
281
285
  // Presented through a real <Modal>: as an in-tree overlay the sheet was
@@ -308,6 +312,8 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
308
312
  style={[
309
313
  styles.sheet,
310
314
  {
315
+ backgroundColor: theme.surface,
316
+ shadowColor: theme.shadow,
311
317
  paddingBottom: insets.bottom + 20,
312
318
  // Two entries rather than Animated.add: the parent's value is
313
319
  // driven natively, and stacking the transforms keeps each node
@@ -324,7 +330,12 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
324
330
  style={styles.grabArea}
325
331
  {...handlePan.panHandlers}
326
332
  >
327
- <View style={styles.grabber} />
333
+ <View
334
+ style={[
335
+ styles.grabber,
336
+ theme.dark ? { backgroundColor: theme.textMuted } : null,
337
+ ]}
338
+ />
328
339
  </View>
329
340
  <View style={styles.card}>
330
341
  {menuOptions.map((option, index) => (
@@ -336,12 +347,19 @@ export const HeaderRoomListMenu: FC<HeaderRoomListMenuProps> = ({
336
347
  onPress={() => handleOptionPress(option.onClick)}
337
348
  >
338
349
  <View style={styles.iconSlot}>{option.icon}</View>
339
- <Text style={[styles.label, option?.styles]}>
350
+ <Text
351
+ style={[styles.label, { color: theme.text }, option?.styles]}
352
+ >
340
353
  {option.label}
341
354
  </Text>
342
355
  </TouchableOpacity>
343
356
  {index < menuOptions.length - 1 && (
344
- <View style={styles.divider} />
357
+ <View
358
+ style={[
359
+ styles.divider,
360
+ theme.dark ? { backgroundColor: theme.divider } : null,
361
+ ]}
362
+ />
345
363
  )}
346
364
  </View>
347
365
  ))}
@@ -369,12 +387,12 @@ const styles = StyleSheet.create({
369
387
  label: {
370
388
  fontSize: 16,
371
389
  fontWeight: '500',
372
- color: '#141414',
373
390
  marginLeft: 12,
374
391
  },
375
392
  divider: {
376
393
  height: StyleSheet.hairlineWidth,
377
394
  marginLeft: 54,
395
+ // Light hairline; swapped for theme.divider in dark mode.
378
396
  backgroundColor: '#E4E4E9',
379
397
  },
380
398
  sheet: {
@@ -385,9 +403,7 @@ const styles = StyleSheet.create({
385
403
  right: 3,
386
404
  bottom: 3,
387
405
  paddingTop: 8,
388
- backgroundColor: '#FFFFFF',
389
406
  borderRadius: 20,
390
- shadowColor: '#000',
391
407
  shadowOpacity: 0.12,
392
408
  shadowOffset: { width: 0, height: -3 },
393
409
  shadowRadius: 12,
@@ -403,6 +419,7 @@ const styles = StyleSheet.create({
403
419
  width: 40,
404
420
  height: 4,
405
421
  borderRadius: 2,
422
+ // Light pill; swapped for theme.textMuted in dark mode.
406
423
  backgroundColor: '#C9CBD1',
407
424
  },
408
425
  card: {
@@ -3,6 +3,7 @@ import { IReply, IUser } from '../../types/types';
3
3
  import { Avatar } from './Avatar';
4
4
  import { styled } from 'styled-components/native';
5
5
  import { Platform, Text, View } from 'react-native';
6
+ import { useTheme } from '../../hooks/useTheme';
6
7
 
7
8
  interface BottomReplyContainerProps {
8
9
  isUser: boolean;
@@ -11,7 +12,7 @@ interface BottomReplyContainerProps {
11
12
  }
12
13
 
13
14
  const ReplyContainer = styled.TouchableOpacity<{ isUser: boolean }>`
14
- background-color: #ffffff;
15
+ background-color: ${({ theme }) => theme.surface};
15
16
  left: ${(props) => (!props.isUser ? '10px' : 'auto')};
16
17
  right: ${(props) => (props.isUser ? '10px' : 'auto')};
17
18
  padding: 4px 8px 4px 16px;
@@ -21,17 +22,20 @@ const ReplyContainer = styled.TouchableOpacity<{ isUser: boolean }>`
21
22
  gap: 6px;
22
23
  margin: 8px 8px 0;
23
24
 
24
- ${Platform.select({
25
- ios: `
26
- shadow-color: rgba(185, 198, 199, 1);
25
+ ${({ theme }) =>
26
+ Platform.select({
27
+ // The light shadow is a soft bluish-grey tuned for a white card; on
28
+ // the dark palette that would read as a glow, so use the theme shadow.
29
+ ios: `
30
+ shadow-color: ${theme.dark ? theme.shadow : 'rgba(185, 198, 199, 1)'};
27
31
  shadow-offset: 0px 0px;
28
32
  shadow-opacity: 1;
29
33
  shadow-radius: 8px;
30
34
  `,
31
- android: `
35
+ android: `
32
36
  elevation: 8;
33
37
  `,
34
- })}
38
+ })}
35
39
  `;
36
40
 
37
41
  const AvatarCircle = styled.View`
@@ -46,20 +50,20 @@ const CircleCurrent = styled.View`
46
50
  display: flex;
47
51
  justify-content: center;
48
52
  align-items: center;
49
- border: 1px solid #f0f0f0;
53
+ border: 1px solid ${({ theme }) => theme.border};
50
54
  border-radius: 50%;
51
- background-color: #ffffff;
55
+ background-color: ${({ theme }) => theme.surface};
52
56
  `;
53
57
 
54
58
  const CircleCurrentText = styled.Text`
55
- color: #8c8c8c;
59
+ color: ${({ theme }) => theme.textSecondary};
56
60
  font-size: 10px;
57
61
  font-weight: 100;
58
62
  `;
59
63
 
60
64
  const CounterRepliesText = styled.Text`
61
65
  font-size: 12px;
62
- color: #0052cd;
66
+ color: ${({ theme }) => theme.primary};
63
67
  font-weight: 600;
64
68
  overflow: hidden;
65
69
  text-overflow: ellipsis;
@@ -70,6 +74,7 @@ export const BottomReplyContainer: FC<BottomReplyContainerProps> = ({
70
74
  reply,
71
75
  onClick,
72
76
  }) => {
77
+ const theme = useTheme();
73
78
  const uniqueUsers: IUser[] = useMemo(() => {
74
79
  return Object.values(
75
80
  reply.reduce<Record<string, IUser>>((acc, item) => {
@@ -94,7 +99,7 @@ export const BottomReplyContainer: FC<BottomReplyContainerProps> = ({
94
99
  height: '100%',
95
100
  width: '100%',
96
101
  borderWidth: 1,
97
- borderColor: '#F0F0F0',
102
+ borderColor: theme.border,
98
103
  borderStyle: 'solid',
99
104
  fontSize: 10,
100
105
  }}