@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
@@ -2,14 +2,9 @@
2
2
 
3
3
  import styled from 'styled-components/native';
4
4
 
5
- // Theme variables for reuse
6
- const colors = {
7
- primary: '#141414',
8
- secondary: '#f5f7f9',
9
- border: '#ccc',
10
- white: '#fff',
11
- black: '#000',
12
- };
5
+ // Colours come from the ThemeProvider mounted in ReduxWrapper
6
+ // (`({ theme }) => theme.x`); the light palette holds the values that
7
+ // used to be hard-coded here.
13
8
 
14
9
  export const InputContainer = styled.View<{ isText?: boolean }>`
15
10
  flex-direction: column;
@@ -58,12 +53,12 @@ export const MessageInput = styled.TextInput<{
58
53
  padding: 8px 14px;
59
54
  border-radius: 20px;
60
55
  border-width: 1px;
61
- border-color: ${(props) =>
62
- props.isFocused ? props.color || '#0052CD' : 'transparent'};
63
- color: #141414;
56
+ border-color: ${({ isFocused, color, theme }) =>
57
+ isFocused ? color || theme.primary : 'transparent'};
58
+ color: ${({ theme }) => theme.text};
64
59
  font-size: ${({ fontSize }) => fontSize ?? 16}px;
65
60
  ${({ fontWeight }) => (fontWeight ? `font-weight: ${fontWeight};` : '')}
66
- background-color: #f5f7f9;
61
+ background-color: ${({ theme }) => theme.surfaceSecondary};
67
62
  flex: 1;
68
63
  /* No explicit line-height: on iOS a line-height larger than the
69
64
  font's natural metrics drops the glyph to the bottom of the line
@@ -85,13 +80,13 @@ export const Timer = styled.Text`
85
80
  export const TimerText = styled.Text`
86
81
  font-size: 18px;
87
82
  font-weight: bold;
88
- color: ${colors.black};
83
+ color: ${({ theme }) => theme.text};
89
84
  `;
90
85
 
91
86
  export const WaveformContainer = styled.View`
92
87
  width: 100%;
93
88
  height: 40px;
94
- background-color: #f1f1f1;
89
+ background-color: ${({ theme }) => theme.surfaceSecondary};
95
90
  `;
96
91
 
97
92
  export const RecordContainer = styled.View`
@@ -114,9 +109,9 @@ export const FilePreview = styled.View`
114
109
  width: 100px;
115
110
  height: 100px;
116
111
  border-width: 1px;
117
- border-color: ${colors.border};
112
+ border-color: ${({ theme }) => theme.border};
118
113
  border-radius: 8px;
119
- background-color: #f9f9f9;
114
+ background-color: ${({ theme }) => theme.surfaceSecondary};
120
115
  overflow: hidden;
121
116
  `;
122
117
 
@@ -132,15 +127,16 @@ export const VideoPreview = styled.View`
132
127
 
133
128
  export const StyledInput = styled.TextInput`
134
129
  padding: 16px 12px;
135
- background-color: ${colors.secondary};
130
+ background-color: ${({ theme }) => theme.surfaceSecondary};
131
+ color: ${({ theme }) => theme.text};
136
132
  font-size: 16px;
137
133
  border-radius: 16px;
138
134
  `;
139
135
 
140
136
  export const TextareaInput = styled.TextInput`
141
137
  padding: 16px 12px;
142
- background-color: ${colors.secondary};
138
+ background-color: ${({ theme }) => theme.surfaceSecondary};
143
139
  font-size: 16px;
144
- color: ${colors.black};
140
+ color: ${({ theme }) => theme.text};
145
141
  border-radius: 16px;
146
142
  `;
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import styled from 'styled-components/native';
3
+ import { useTheme } from '../../hooks/useTheme';
3
4
  import { Line } from './StyledComponents';
4
5
 
5
6
  interface DateLabelProps {
@@ -21,7 +22,7 @@ export const StyledDateLabel = styled.Text<{
21
22
  secondary?: string;
22
23
  }>`
23
24
  margin: 0;
24
- color: ${(props) => props.primary || '#0052cd'};
25
+ color: ${(props) => props.primary || props.theme.dateLabel};
25
26
  border-radius: 118px;
26
27
  padding: 5px 8px;
27
28
  display: flex;
@@ -30,16 +31,21 @@ export const StyledDateLabel = styled.Text<{
30
31
  font-size: 12px;
31
32
  line-height: 14px;
32
33
  font-weight: 600;
33
- background-color: ${(props) => props.secondary || '#e7edf9'};
34
+ background-color: ${(props) =>
35
+ props.theme.dark ? props.theme.surfaceSecondary : props.secondary || '#e7edf9'};
34
36
  height: 24px;
35
37
  white-space: nowrap;
36
38
  `;
37
39
 
38
40
  const TreadLabel: React.FC<DateLabelProps> = ({ reply, colors }) => {
41
+ const theme = useTheme();
39
42
  return (
40
43
  <Container>
41
44
  <Line />
42
- <StyledDateLabel {...colors}>
45
+ <StyledDateLabel
46
+ primary={theme.dark ? undefined : colors?.primary}
47
+ secondary={colors?.secondary}
48
+ >
43
49
  {reply} {reply > 1 ? 'replies' : 'reply'}
44
50
  </StyledDateLabel>
45
51
  <Line />
@@ -25,6 +25,7 @@ import { messageNotificationManager } from '../utils/messageNotificationManager'
25
25
  import { setCurrentRoom } from '../roomStore/roomsSlice';
26
26
  import { IConfig, IMessage } from '../types/types';
27
27
  import { RootState } from '../roomStore';
28
+ import { useTheme } from '../hooks/useTheme';
28
29
 
29
30
  interface ToastItem {
30
31
  id: string;
@@ -228,6 +229,7 @@ const ToastRow: React.FC<{
228
229
  onPress: () => void;
229
230
  onDismiss: () => void;
230
231
  }> = ({ item, onPress, onDismiss }) => {
232
+ const theme = useTheme();
231
233
  const fade = useRef(new Animated.Value(0)).current;
232
234
  useEffect(() => {
233
235
  Animated.timing(fade, {
@@ -238,17 +240,29 @@ const ToastRow: React.FC<{
238
240
  }, [fade]);
239
241
 
240
242
  return (
241
- <Animated.View style={[styles.toast, { opacity: fade }]}>
243
+ <Animated.View
244
+ style={[
245
+ styles.toast,
246
+ { backgroundColor: theme.surface, shadowColor: theme.shadow },
247
+ { opacity: fade },
248
+ ]}
249
+ >
242
250
  <Pressable style={styles.toastBody} onPress={onPress}>
243
- <Text style={styles.toastTitle} numberOfLines={1}>
251
+ <Text
252
+ style={[styles.toastTitle, { color: theme.text }]}
253
+ numberOfLines={1}
254
+ >
244
255
  {item.roomName}
245
256
  </Text>
246
- <Text style={styles.toastSubtitle} numberOfLines={2}>
257
+ <Text
258
+ style={[styles.toastSubtitle, { color: theme.textSecondary }]}
259
+ numberOfLines={2}
260
+ >
247
261
  {item.senderName}: {item.message?.body || ''}
248
262
  </Text>
249
263
  </Pressable>
250
264
  <Pressable onPress={onDismiss} style={styles.dismiss}>
251
- <Text style={styles.dismissText}>×</Text>
265
+ <Text style={[styles.dismissText, { color: theme.textMuted }]}>×</Text>
252
266
  </Pressable>
253
267
  </Animated.View>
254
268
  );
@@ -1,6 +1,7 @@
1
1
  /** @format */
2
2
 
3
3
  import type { IConfig } from '../types/types';
4
+ import { resolveTheme } from '../theme/theme';
4
5
 
5
6
  /** Ground behind the conversation, and behind the rounded corners of the
6
7
  * header and the composer that sit over it. */
@@ -15,4 +16,5 @@ export const DEFAULT_CHAT_BACKGROUND = '#F3F6FC';
15
16
  * white parent, not the conversation.
16
17
  */
17
18
  export const getChatBackgroundColor = (config?: IConfig): string =>
18
- config?.backgroundChat?.color || DEFAULT_CHAT_BACKGROUND;
19
+ // Theme-aware: dark mode ignores `backgroundChat.color` (see theme.ts).
20
+ resolveTheme(config).chatBackground;
@@ -1,3 +1,5 @@
1
- export const getDateLabelColor = (config?: {
2
- colors?: { primary?: string; secondary?: string; dateLabel?: string };
3
- }) => config?.colors?.dateLabel || config?.colors?.primary || '#0052CD';
1
+ import { resolveTheme, type ThemeConfigInput } from '../theme/theme';
2
+
3
+ /** Day-separator pill colour; theme-aware (see getIconColor). */
4
+ export const getDateLabelColor = (config?: ThemeConfigInput | null) =>
5
+ resolveTheme(config).dateLabel;
@@ -1,3 +1,6 @@
1
- export const getIconColor = (config?: {
2
- colors?: { primary?: string; secondary?: string; icon?: string };
3
- }) => config?.colors?.icon || config?.colors?.primary || '#0052CD';
1
+ import { resolveTheme, type ThemeConfigInput } from '../theme/theme';
2
+
3
+ /** Chrome icon tint (attach, mic/send, burger, back). Theme-aware: in dark
4
+ * mode it comes from `darkColors.icon` → `darkColors.primary` → default. */
5
+ export const getIconColor = (config?: ThemeConfigInput | null) =>
6
+ resolveTheme(config).icon;
@@ -1,3 +1,5 @@
1
- export const getSenderNameColor = (config?: {
2
- colors?: { primary?: string; secondary?: string; senderName?: string };
3
- }) => config?.colors?.senderName || config?.colors?.primary || '#0052CD';
1
+ import { resolveTheme, type ThemeConfigInput } from '../theme/theme';
2
+
3
+ /** Sender name colour above incoming bubbles; theme-aware (see getIconColor). */
4
+ export const getSenderNameColor = (config?: ThemeConfigInput | null) =>
5
+ resolveTheme(config).senderName;
@@ -1,9 +1,33 @@
1
1
  import React from 'react';
2
2
  import { Text, View, Linking, StyleSheet, TouchableOpacity } from 'react-native';
3
+ import type { ChatThemeColors } from '../theme/theme';
3
4
 
4
- export const MarkDown = (text: string): (string | JSX.Element)[] => {
5
+ /**
6
+ * Optional palette for the colour-bearing nodes (links, code grounds, quote
7
+ * rule). Helpers can't use hooks; callers pass the resolved theme. Omitted →
8
+ * the historical hard-coded colours, so existing output is unchanged.
9
+ */
10
+ export type MarkDownTheme = Pick<
11
+ ChatThemeColors,
12
+ 'primary' | 'surfaceSecondary' | 'border'
13
+ >;
14
+
15
+ export const MarkDown = (
16
+ text: string,
17
+ theme?: MarkDownTheme
18
+ ): (string | JSX.Element)[] => {
5
19
  if (typeof text !== 'string') {return [text];}
6
20
 
21
+ // Colour overrides layered over the static StyleSheet below.
22
+ const themed = theme
23
+ ? {
24
+ link: { color: theme.primary },
25
+ codeInline: { backgroundColor: theme.surfaceSecondary },
26
+ codeBlock: { backgroundColor: theme.surfaceSecondary },
27
+ quote: { borderLeftColor: theme.border },
28
+ }
29
+ : undefined;
30
+
7
31
  let key = 0;
8
32
  const elements: (string | JSX.Element)[] = [];
9
33
  const lines = text.split('\n');
@@ -43,7 +67,7 @@ export const MarkDown = (text: string): (string | JSX.Element)[] => {
43
67
  output.push(
44
68
  <Text
45
69
  key={`code-${key++}`}
46
- style={styles.codeInline}
70
+ style={[styles.codeInline, themed?.codeInline]}
47
71
  >
48
72
  {token.slice(1, -1).trim()}
49
73
  </Text>
@@ -53,7 +77,7 @@ export const MarkDown = (text: string): (string | JSX.Element)[] => {
53
77
  <Text key={`link-${key++}`}>
54
78
  <Text
55
79
  onPress={() => Linking.openURL(token)}
56
- style={styles.link}
80
+ style={[styles.link, themed?.link]}
57
81
  >
58
82
  {token}
59
83
  </Text>
@@ -129,7 +153,7 @@ export const MarkDown = (text: string): (string | JSX.Element)[] => {
129
153
  elements.push(
130
154
  <View
131
155
  key={`pre-${key++}`}
132
- style={styles.codeBlock}
156
+ style={[styles.codeBlock, themed?.codeBlock]}
133
157
  >
134
158
  <Text style={styles.codeBlockText}>
135
159
  {codeBuffer.join('\n')}
@@ -164,7 +188,7 @@ export const MarkDown = (text: string): (string | JSX.Element)[] => {
164
188
  elements.push(
165
189
  <View
166
190
  key={`quote-${key++}`}
167
- style={styles.quote}
191
+ style={[styles.quote, themed?.quote]}
168
192
  >
169
193
  {parseInline(line.replace(/^>\s*/, '')).map((el, idx) => (
170
194
  <React.Fragment key={idx}>{el}</React.Fragment>
@@ -10,9 +10,29 @@ import {
10
10
  ViewStyle,
11
11
  TextStyle,
12
12
  } from 'react-native';
13
+ import type { ChatThemeColors } from '../theme/theme';
13
14
 
14
15
  let elementKeyCounter = 0;
15
16
 
17
+ /**
18
+ * Colours the parser needs. Helpers can't call hooks, so the caller passes
19
+ * the resolved theme (Message.tsx does); with nothing passed the historical
20
+ * hard-coded values apply, so the output is unchanged for other callers.
21
+ */
22
+ export type MessageBodyTheme = Pick<
23
+ ChatThemeColors,
24
+ 'primary' | 'text' | 'surface' | 'surfaceSecondary' | 'surfaceHighlight' | 'border'
25
+ >;
26
+
27
+ const DEFAULT_BODY_COLORS: MessageBodyTheme = {
28
+ primary: '#0a66c2',
29
+ text: '#24292f',
30
+ surface: '#fff',
31
+ surfaceSecondary: '#f6f8fa',
32
+ surfaceHighlight: '#e8f3ff',
33
+ border: '#e1e4e8',
34
+ };
35
+
16
36
  export const decodeHTMLEntities = (text: string) => {
17
37
  const entities: Record<string, string> = {
18
38
  '&amp;': '&',
@@ -29,14 +49,19 @@ export const decodeHTMLEntities = (text: string) => {
29
49
  return text.replace(/&[a-zA-Z0-9#]+;/g, (m) => entities[m] || m);
30
50
  };
31
51
 
32
- const styles = {
52
+ // Only the colour-bearing entries read from `c`; the rest is static layout.
53
+ // Historical light values that were slightly off-token (#f1f3f4 inline code
54
+ // ground, #333 inline code ink, #d0d7de / #e7e9ec / #eef0f2 table hairlines)
55
+ // are kept when no theme is passed and collapse onto the theme tokens
56
+ // otherwise.
57
+ const buildStyles = (c: MessageBodyTheme, themed: boolean) => ({
33
58
  bold: { fontWeight: 'bold' as const },
34
59
  italic: { fontStyle: 'italic' as const },
35
60
  strike: { textDecorationLine: 'line-through' as const },
36
- link: { color: '#0a66c2', textDecorationLine: 'underline' as const },
61
+ link: { color: c.primary, textDecorationLine: 'underline' as const },
37
62
 
38
63
  codeInlineBox: {
39
- backgroundColor: '#f1f3f4',
64
+ backgroundColor: themed ? c.surfaceSecondary : '#f1f3f4',
40
65
  borderRadius: 3,
41
66
  paddingVertical: 1,
42
67
  paddingHorizontal: 4,
@@ -44,43 +69,43 @@ const styles = {
44
69
  codeInlineText: {
45
70
  fontFamily: Platform.select({ ios: 'Menlo', android: 'monospace' }),
46
71
  fontSize: 13,
47
- color: '#333',
72
+ color: themed ? c.text : '#333',
48
73
  },
49
74
 
50
75
  codeBlock: {
51
- backgroundColor: '#f6f8fa',
76
+ backgroundColor: c.surfaceSecondary,
52
77
  padding: 12,
53
78
  borderRadius: 6,
54
79
  borderWidth: 1,
55
- borderColor: '#e1e4e8',
80
+ borderColor: c.border,
56
81
  marginVertical: 8,
57
82
  } as const,
58
83
  codeBlockText: {
59
84
  fontFamily: Platform.select({ ios: 'Menlo', android: 'monospace' }),
60
85
  fontSize: 14,
61
- color: '#24292f',
86
+ color: c.text,
62
87
  lineHeight: 20,
63
88
  },
64
89
 
65
90
  h: [
66
- { fontWeight: 'bold' as const, fontSize: 32, marginTop: 24, marginBottom: 16 },
67
- { fontWeight: 'bold' as const, fontSize: 24, marginTop: 20, marginBottom: 14 },
68
- { fontWeight: 'bold' as const, fontSize: 20, marginTop: 16, marginBottom: 12 },
69
- { fontWeight: 'bold' as const, fontSize: 18, marginTop: 14, marginBottom: 10 },
70
- { fontWeight: 'bold' as const, fontSize: 16, marginTop: 12, marginBottom: 8 },
91
+ { ...(themed ? { color: c.text } : null), fontWeight: 'bold' as const, fontSize: 32, marginTop: 24, marginBottom: 16 },
92
+ { ...(themed ? { color: c.text } : null), fontWeight: 'bold' as const, fontSize: 24, marginTop: 20, marginBottom: 14 },
93
+ { ...(themed ? { color: c.text } : null), fontWeight: 'bold' as const, fontSize: 20, marginTop: 16, marginBottom: 12 },
94
+ { ...(themed ? { color: c.text } : null), fontWeight: 'bold' as const, fontSize: 18, marginTop: 14, marginBottom: 10 },
95
+ { ...(themed ? { color: c.text } : null), fontWeight: 'bold' as const, fontSize: 16, marginTop: 12, marginBottom: 8 },
71
96
  { fontWeight: 'bold' as const, fontSize: 14, marginTop: 12, marginBottom: 8 },
72
97
  ],
73
98
 
74
99
  quote: {
75
100
  borderLeftWidth: 3,
76
- borderLeftColor: '#ccc',
101
+ borderLeftColor: themed ? c.border : '#ccc',
77
102
  paddingLeft: 10,
78
103
  marginVertical: 4,
79
104
  },
80
105
 
81
106
  paragraph: { marginVertical: 6 },
82
107
 
83
- hr: { height: 1, backgroundColor: '#e1e4e8', marginVertical: 20 },
108
+ hr: { height: 1, backgroundColor: c.border, marginVertical: 20 },
84
109
 
85
110
  listItemRow: { flexDirection: 'row' as const, alignItems: 'flex-start' as const },
86
111
  listMarker: { minWidth: 22, paddingTop: 2 },
@@ -93,41 +118,67 @@ const styles = {
93
118
  marginTop: 2,
94
119
  borderRadius: 3,
95
120
  borderWidth: 1,
96
- borderColor: '#bbb',
97
- backgroundColor: '#fff',
121
+ borderColor: themed ? c.border : '#bbb',
122
+ backgroundColor: c.surface,
98
123
  alignItems: 'center' as const,
99
124
  justifyContent: 'center' as const,
100
125
  },
101
- checkboxTick: { fontSize: 12, color: '#0a66c2' },
126
+ checkboxBoxChecked: {
127
+ backgroundColor: c.surfaceHighlight,
128
+ borderColor: c.primary,
129
+ },
130
+ checkboxTick: { fontSize: 12, color: c.primary },
102
131
 
103
132
  tableContainer: { marginVertical: 12 } as StyleProp<ViewStyle>,
104
133
  tableInner: {
105
134
  borderWidth: 1,
106
- borderColor: '#d0d7de',
135
+ borderColor: themed ? c.border : '#d0d7de',
107
136
  borderRadius: 6,
108
137
  overflow: 'hidden' as const,
109
- backgroundColor: '#fff',
138
+ backgroundColor: c.surface,
110
139
  },
111
140
  tableRow: { flexDirection: 'row' as const },
112
141
  th: {
113
142
  flex: 1,
114
143
  paddingVertical: 10,
115
144
  paddingHorizontal: 12,
116
- backgroundColor: '#f6f8fa',
145
+ backgroundColor: c.surfaceSecondary,
117
146
  borderRightWidth: 1,
118
- borderRightColor: '#d0d7de',
147
+ borderRightColor: themed ? c.border : '#d0d7de',
119
148
  },
120
149
  td: {
121
150
  flex: 1,
122
151
  paddingVertical: 10,
123
152
  paddingHorizontal: 12,
124
153
  borderTopWidth: 1,
125
- borderTopColor: '#e7e9ec',
154
+ borderTopColor: themed ? c.border : '#e7e9ec',
126
155
  borderRightWidth: 1,
127
- borderRightColor: '#eef0f2',
156
+ borderRightColor: themed ? c.border : '#eef0f2',
128
157
  },
129
158
  lastCell: { borderRightWidth: 0 },
130
- cellText: { color: '#24292f', fontSize: 14, lineHeight: 20 } as const,
159
+ cellText: { color: c.text, fontSize: 14, lineHeight: 20 } as const,
160
+ });
161
+
162
+ const DEFAULT_STYLES = buildStyles(DEFAULT_BODY_COLORS, false);
163
+
164
+ // Module-level like `elementKeyCounter`: parseMessageBody is synchronous,
165
+ // so setting this at entry is safe, and it keeps the render helpers below
166
+ // signature-free. The theme object from useTheme is memoized, so the
167
+ // one-entry cache means styles are rebuilt only when the palette changes,
168
+ // not per message.
169
+ let styles = DEFAULT_STYLES;
170
+ let cachedTheme: MessageBodyTheme | undefined;
171
+ let cachedStyles = DEFAULT_STYLES;
172
+
173
+ const resolveStyles = (theme?: MessageBodyTheme) => {
174
+ if (!theme) {
175
+ return DEFAULT_STYLES;
176
+ }
177
+ if (theme !== cachedTheme) {
178
+ cachedTheme = theme;
179
+ cachedStyles = buildStyles(theme, true);
180
+ }
181
+ return cachedStyles;
131
182
  };
132
183
 
133
184
  const renderTextWithLinks = (text: string) => {
@@ -300,7 +351,8 @@ const renderMarkdownTableRN = (
300
351
  // on the leaf <Text>s here rather than on the bubble wrapper.
301
352
  export const parseMessageBody = (
302
353
  text: string,
303
- baseStyle?: TextStyle
354
+ baseStyle?: TextStyle,
355
+ theme?: MessageBodyTheme
304
356
  ): JSX.Element => {
305
357
  if (typeof text !== 'string') {
306
358
  return <View />;
@@ -309,6 +361,7 @@ export const parseMessageBody = (
309
361
  const lines = text.split('\n');
310
362
  const elements: JSX.Element[] = [];
311
363
  elementKeyCounter = 0;
364
+ styles = resolveStyles(theme);
312
365
 
313
366
  let listBuffer: Array<{
314
367
  type: 'ul' | 'checkbox';
@@ -345,7 +398,7 @@ export const parseMessageBody = (
345
398
  if (item.type === 'checkbox') {
346
399
  contentEl = (
347
400
  <View key={`checkbox-${elementKeyCounter++}`} style={styles.checkboxRow}>
348
- <View style={[styles.checkboxBox, item.checked && { backgroundColor: '#e8f3ff', borderColor: '#0a66c2' }]}>
401
+ <View style={[styles.checkboxBox, item.checked && styles.checkboxBoxChecked]}>
349
402
  {item.checked ? <Text style={styles.checkboxTick}>✓</Text> : null}
350
403
  </View>
351
404
  <Text style={[{ flex: 1 }, baseStyle]}>{parseInline(item.content)}</Text>
@@ -6,6 +6,7 @@ import {
6
6
  generateProcessingText,
7
7
  } from '../components/styled/StyledInputComponents/CustomTypingIndicator';
8
8
  import { RootState } from '../roomStore';
9
+ import { useTheme } from './useTheme';
9
10
 
10
11
  /**
11
12
  * Hook for managing custom typing indicator functionality
@@ -13,6 +14,7 @@ import { RootState } from '../roomStore';
13
14
  */
14
15
  export const useCustomTypingIndicator = (roomJID: string) => {
15
16
  const { config } = useChatSettingState();
17
+ const theme = useTheme();
16
18
  const { rooms } = useSelector((state: RootState) => ({
17
19
  rooms: state.rooms.rooms,
18
20
  }));
@@ -68,7 +70,8 @@ export const useCustomTypingIndicator = (roomJID: string) => {
68
70
  top: '8px',
69
71
  left: '16px',
70
72
  right: '16px',
71
- background: 'rgba(255, 255, 255, 0.95)',
73
+ background: theme.surface,
74
+ color: theme.text,
72
75
  padding: '8px 12px',
73
76
  borderRadius: '8px',
74
77
  boxShadow: '0 2px 8px rgba(0, 0, 0, 0.1)',
@@ -93,7 +96,8 @@ export const useCustomTypingIndicator = (roomJID: string) => {
93
96
  position: 'fixed',
94
97
  bottom: '80px',
95
98
  right: '20px',
96
- background: 'rgba(255, 255, 255, 0.95)',
99
+ background: theme.surface,
100
+ color: theme.text,
97
101
  padding: '12px 16px',
98
102
  borderRadius: '20px',
99
103
  boxShadow: '0 4px 16px rgba(0, 0, 0, 0.15)',
@@ -108,7 +112,7 @@ export const useCustomTypingIndicator = (roomJID: string) => {
108
112
  };
109
113
  }
110
114
  },
111
- [typingConfig?.styles]
115
+ [typingConfig?.styles, theme]
112
116
  );
113
117
 
114
118
  return {
@@ -7,6 +7,7 @@ import { setLogoutState } from '../roomStore/roomsSlice';
7
7
  import { useCallback } from 'react';
8
8
  import { clearHeap } from '../roomStore/roomHeapSlice';
9
9
  import { pushSubscriptionService } from '../services/pushSubscriptionService';
10
+ import { releasePushRegistration } from '../services/pushRegistration';
10
11
  import { clearRoomsRestCache } from '../networking/api-requests/rooms.api';
11
12
  import { clearPersistedState } from '../roomStore/persistence';
12
13
  import { secureUserStorage } from '../helpers/secureUserStorage';
@@ -93,9 +94,15 @@ const logoutService = {
93
94
  /* non-fatal */
94
95
  }
95
96
 
96
- // 2. Push: clear locally-subscribed-rooms cache. Doesn't talk to the
97
- // server — that's the host app's responsibility (it owns the FCM/
98
- // APNs token lifecycle).
97
+ // 2. Push. Release the device-token registration on the backend
98
+ // while the access token is still valid (the token itself is kept
99
+ // so the next login re-registers it), then clear the local MucSub
100
+ // room cache.
101
+ try {
102
+ await releasePushRegistration();
103
+ } catch (e) {
104
+ console.warn('logoutService: push release failed', e);
105
+ }
99
106
  try {
100
107
  await pushSubscriptionService.reset();
101
108
  } catch (e) {
@@ -0,0 +1,41 @@
1
+ /** @format */
2
+
3
+ import { useContext, useMemo, useSyncExternalStore } from 'react';
4
+ import { ReactReduxContext } from 'react-redux';
5
+ import { ThemeContext } from 'styled-components/native';
6
+ import type { RootState } from '../roomStore';
7
+ import { resolveTheme, type ChatTheme } from '../theme/theme';
8
+
9
+ const noSubscribe = () => () => {};
10
+
11
+ /**
12
+ * Effective palette for the current config (light or dark).
13
+ *
14
+ * Source order:
15
+ * 1. the styled-components ThemeProvider mounted by ReduxWrapper (same
16
+ * object every styled template sees);
17
+ * 2. otherwise `config` from the redux store, when a Provider is present
18
+ * (components rendered under a bare <Provider> in tests / hosts);
19
+ * 3. otherwise the light defaults.
20
+ * Never throws outside a provider, so leaf components stay renderable in
21
+ * isolation.
22
+ */
23
+ export const useTheme = (): ChatTheme => {
24
+ const styledTheme = useContext(ThemeContext) as ChatTheme | undefined;
25
+ const reduxCtx = useContext(ReactReduxContext);
26
+ const store = reduxCtx?.store;
27
+
28
+ const config = useSyncExternalStore(
29
+ store ? store.subscribe : noSubscribe,
30
+ () =>
31
+ store
32
+ ? (store.getState() as RootState).chatSettingStore.config
33
+ : undefined,
34
+ () => undefined
35
+ );
36
+
37
+ return useMemo(
38
+ () => (styledTheme && 'statusBarStyle' in styledTheme ? styledTheme : resolveTheme(config)),
39
+ [styledTheme, config]
40
+ );
41
+ };