@ethora/chat-component-rn 26.8.2 → 26.8.4

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 (547) hide show
  1. package/CHANGELOG.md +18 -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 +61 -7
  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 +145 -9
  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/helpers/preferencesStorage.js +44 -0
  142. package/lib/commonjs/helpers/preferencesStorage.js.map +1 -0
  143. package/lib/commonjs/hooks/useCustomTypingIndicator.js +7 -3
  144. package/lib/commonjs/hooks/useCustomTypingIndicator.js.map +1 -1
  145. package/lib/commonjs/hooks/useLogout.js +10 -3
  146. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  147. package/lib/commonjs/hooks/useTheme.js +35 -0
  148. package/lib/commonjs/hooks/useTheme.js.map +1 -0
  149. package/lib/commonjs/i18n/strings.js +60 -0
  150. package/lib/commonjs/i18n/strings.js.map +1 -1
  151. package/lib/commonjs/main.js +88 -0
  152. package/lib/commonjs/main.js.map +1 -1
  153. package/lib/commonjs/networking/api-requests/push.api.js +130 -45
  154. package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
  155. package/lib/commonjs/networking/api-requests/rooms.api.js +13 -0
  156. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  157. package/lib/commonjs/roomStore/chatSettingsSlice.js +17 -4
  158. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  159. package/lib/commonjs/services/pushRegistration.js +261 -0
  160. package/lib/commonjs/services/pushRegistration.js.map +1 -0
  161. package/lib/commonjs/services/pushSubscriptionService.js +0 -24
  162. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  163. package/lib/commonjs/theme/index.js +38 -0
  164. package/lib/commonjs/theme/index.js.map +1 -0
  165. package/lib/commonjs/theme/styled.d.js +4 -0
  166. package/lib/commonjs/theme/styled.d.js.map +1 -0
  167. package/lib/commonjs/theme/theme.js +161 -0
  168. package/lib/commonjs/theme/theme.js.map +1 -0
  169. package/lib/commonjs/version.js +1 -1
  170. package/lib/module/assets/EmptyChatIllustration.js +7 -6
  171. package/lib/module/assets/EmptyChatIllustration.js.map +1 -1
  172. package/lib/module/assets/icons.js +1 -1
  173. package/lib/module/assets/icons.js.map +1 -1
  174. package/lib/module/components/AuthForms/Login.js +23 -8
  175. package/lib/module/components/AuthForms/Login.js.map +1 -1
  176. package/lib/module/components/ContextMenu/ContextMenuComponents.js +12 -4
  177. package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
  178. package/lib/module/components/DropdownMenu/DropdownMenu.js +16 -9
  179. package/lib/module/components/DropdownMenu/DropdownMenu.js.map +1 -1
  180. package/lib/module/components/ExampleComponents/CustomMessage.js +25 -7
  181. package/lib/module/components/ExampleComponents/CustomMessage.js.map +1 -1
  182. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
  183. package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
  184. package/lib/module/components/Header/HeaderRoomList.js +9 -6
  185. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  186. package/lib/module/components/InputComponents/Search.js +13 -4
  187. package/lib/module/components/InputComponents/Search.js.map +1 -1
  188. package/lib/module/components/MainComponents/ChatHeader.js +9 -3
  189. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  190. package/lib/module/components/MainComponents/ChatRoom.js +6 -3
  191. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  192. package/lib/module/components/MainComponents/ChatWrapper.js +8 -6
  193. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  194. package/lib/module/components/MainComponents/LanguageSelectorModal.js +37 -10
  195. package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
  196. package/lib/module/components/MainComponents/MediaMessage.js +42 -19
  197. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  198. package/lib/module/components/MainComponents/MessageList.js +9 -3
  199. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  200. package/lib/module/components/MainComponents/RNStyled.js +12 -4
  201. package/lib/module/components/MainComponents/RNStyled.js.map +1 -1
  202. package/lib/module/components/MainComponents/ReduxWrapper.js +64 -10
  203. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  204. package/lib/module/components/MainComponents/RoomList.js +12 -9
  205. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  206. package/lib/module/components/MainComponents/Select.js +29 -8
  207. package/lib/module/components/MainComponents/Select.js.map +1 -1
  208. package/lib/module/components/Menu/HeaderRoomListMenu.js +24 -13
  209. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  210. package/lib/module/components/MessageBubble/BottomReplyContainer.js +24 -8
  211. package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
  212. package/lib/module/components/MessageBubble/Message.js +47 -25
  213. package/lib/module/components/MessageBubble/Message.js.map +1 -1
  214. package/lib/module/components/MessageBubble/MessageInteractions.js +15 -4
  215. package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
  216. package/lib/module/components/MessageBubble/MessageReaction.js +10 -5
  217. package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
  218. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js +2 -6
  219. package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
  220. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +42 -27
  221. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  222. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +79 -26
  223. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  224. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +6 -8
  225. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  226. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +18 -16
  227. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
  228. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +20 -9
  229. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  230. package/lib/module/components/Modals/ModalHeaderComponent.js +8 -2
  231. package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
  232. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +10 -10
  233. package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
  234. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -6
  235. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  236. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +18 -15
  237. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  238. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +14 -9
  239. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -1
  240. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -8
  241. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  242. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
  243. package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
  244. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
  245. package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
  246. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
  247. package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
  248. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
  249. package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
  250. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
  251. package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
  252. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +3 -2
  253. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  254. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +18 -15
  255. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  256. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +148 -12
  257. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  258. package/lib/module/components/Modals/styledModalComponents.js +59 -15
  259. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  260. package/lib/module/components/RoomComponents/ChatRoomItem.js +16 -10
  261. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  262. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +6 -2
  263. package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
  264. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
  265. package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
  266. package/lib/module/components/Thread/ThreadWrapper.js +9 -2
  267. package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
  268. package/lib/module/components/Toast/Toast.js +3 -1
  269. package/lib/module/components/Toast/Toast.js.map +1 -1
  270. package/lib/module/components/styled/AudioMessage.js +16 -11
  271. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  272. package/lib/module/components/styled/Button.js +17 -9
  273. package/lib/module/components/styled/Button.js.map +1 -1
  274. package/lib/module/components/styled/DateLabel.js +8 -5
  275. package/lib/module/components/styled/DateLabel.js.map +1 -1
  276. package/lib/module/components/styled/MediaModal.js +29 -23
  277. package/lib/module/components/styled/MediaModal.js.map +1 -1
  278. package/lib/module/components/styled/RoomListComponents/index.js +62 -39
  279. package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
  280. package/lib/module/components/styled/SendInput.js +13 -8
  281. package/lib/module/components/styled/SendInput.js.map +1 -1
  282. package/lib/module/components/styled/StyledComponents.js +67 -23
  283. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  284. package/lib/module/components/styled/StyledInput.js +32 -18
  285. package/lib/module/components/styled/StyledInput.js.map +1 -1
  286. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
  287. package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
  288. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +20 -9
  289. package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
  290. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +39 -18
  291. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  292. package/lib/module/components/styled/TreadLabel.js +6 -3
  293. package/lib/module/components/styled/TreadLabel.js.map +1 -1
  294. package/lib/module/context/MessageNotificationContext.js +14 -3
  295. package/lib/module/context/MessageNotificationContext.js.map +1 -1
  296. package/lib/module/helpers/getChatBackground.js +5 -1
  297. package/lib/module/helpers/getChatBackground.js.map +1 -1
  298. package/lib/module/helpers/getDateLabelColor.js +4 -1
  299. package/lib/module/helpers/getDateLabelColor.js.map +1 -1
  300. package/lib/module/helpers/getIconColor.js +5 -1
  301. package/lib/module/helpers/getIconColor.js.map +1 -1
  302. package/lib/module/helpers/getSenderNameColor.js +4 -1
  303. package/lib/module/helpers/getSenderNameColor.js.map +1 -1
  304. package/lib/module/helpers/markdownParser.js +27 -5
  305. package/lib/module/helpers/markdownParser.js.map +1 -1
  306. package/lib/module/helpers/parseMessageBody.js +82 -24
  307. package/lib/module/helpers/parseMessageBody.js.map +1 -1
  308. package/lib/module/helpers/preferencesStorage.js +36 -0
  309. package/lib/module/helpers/preferencesStorage.js.map +1 -0
  310. package/lib/module/hooks/useCustomTypingIndicator.js +8 -3
  311. package/lib/module/hooks/useCustomTypingIndicator.js.map +1 -1
  312. package/lib/module/hooks/useLogout.js +10 -3
  313. package/lib/module/hooks/useLogout.js.map +1 -1
  314. package/lib/module/hooks/useTheme.js +30 -0
  315. package/lib/module/hooks/useTheme.js.map +1 -0
  316. package/lib/module/i18n/strings.js +60 -0
  317. package/lib/module/i18n/strings.js.map +1 -1
  318. package/lib/module/main.js +4 -0
  319. package/lib/module/main.js.map +1 -1
  320. package/lib/module/networking/api-requests/push.api.js +119 -45
  321. package/lib/module/networking/api-requests/push.api.js.map +1 -1
  322. package/lib/module/networking/api-requests/rooms.api.js +12 -0
  323. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  324. package/lib/module/roomStore/chatSettingsSlice.js +14 -3
  325. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  326. package/lib/module/services/pushRegistration.js +250 -0
  327. package/lib/module/services/pushRegistration.js.map +1 -0
  328. package/lib/module/services/pushSubscriptionService.js +0 -24
  329. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  330. package/lib/module/theme/index.js +7 -0
  331. package/lib/module/theme/index.js.map +1 -0
  332. package/lib/module/theme/styled.d.js +6 -0
  333. package/lib/module/theme/styled.d.js.map +1 -0
  334. package/lib/module/theme/theme.js +156 -0
  335. package/lib/module/theme/theme.js.map +1 -0
  336. package/lib/module/version.js +1 -1
  337. package/lib/typescript/assets/EmptyChatIllustration.d.ts +1 -0
  338. package/lib/typescript/assets/EmptyChatIllustration.d.ts.map +1 -1
  339. package/lib/typescript/assets/icons.d.ts +8 -0
  340. package/lib/typescript/assets/icons.d.ts.map +1 -1
  341. package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
  342. package/lib/typescript/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  343. package/lib/typescript/components/ExampleComponents/CustomMessage.d.ts.map +1 -1
  344. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  345. package/lib/typescript/components/InputComponents/Search.d.ts.map +1 -1
  346. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  347. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  348. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  349. package/lib/typescript/components/MainComponents/LanguageSelectorModal.d.ts.map +1 -1
  350. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  351. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  352. package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
  353. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  354. package/lib/typescript/components/MainComponents/Select.d.ts.map +1 -1
  355. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  356. package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
  357. package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
  358. package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
  359. package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
  360. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  361. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  362. package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
  363. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -1
  364. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  365. package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
  366. package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
  367. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  368. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  369. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -1
  370. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  371. package/lib/typescript/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.d.ts.map +1 -1
  372. package/lib/typescript/components/Modals/SettingsModals/Referrals/Referrals.d.ts.map +1 -1
  373. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts +2 -2
  374. package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts.map +1 -1
  375. package/lib/typescript/components/Modals/SettingsModals/Visibility/RadioInput.d.ts.map +1 -1
  376. package/lib/typescript/components/Modals/SettingsModals/Visibility/VisibilityModal.d.ts.map +1 -1
  377. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  378. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  379. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  380. package/lib/typescript/components/Modals/styledModalComponents.d.ts +2 -0
  381. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  382. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  383. package/lib/typescript/components/RoomComponents/styled/LastAudioMessage.d.ts.map +1 -1
  384. package/lib/typescript/components/RoomComponents/styled/StyledRoomComponents.d.ts.map +1 -1
  385. package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
  386. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  387. package/lib/typescript/components/styled/Button.d.ts.map +1 -1
  388. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  389. package/lib/typescript/components/styled/MediaModal.d.ts +2 -2
  390. package/lib/typescript/components/styled/MediaModal.d.ts.map +1 -1
  391. package/lib/typescript/components/styled/RoomListComponents/index.d.ts.map +1 -1
  392. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  393. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  394. package/lib/typescript/components/styled/StyledInput.d.ts.map +1 -1
  395. package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
  396. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  397. package/lib/typescript/components/styled/TreadLabel.d.ts.map +1 -1
  398. package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
  399. package/lib/typescript/helpers/getAvatarColor.d.ts +1 -1
  400. package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -1
  401. package/lib/typescript/helpers/getDateLabelColor.d.ts +3 -7
  402. package/lib/typescript/helpers/getDateLabelColor.d.ts.map +1 -1
  403. package/lib/typescript/helpers/getIconColor.d.ts +4 -7
  404. package/lib/typescript/helpers/getIconColor.d.ts.map +1 -1
  405. package/lib/typescript/helpers/getSenderNameColor.d.ts +3 -7
  406. package/lib/typescript/helpers/getSenderNameColor.d.ts.map +1 -1
  407. package/lib/typescript/helpers/markdownParser.d.ts +8 -1
  408. package/lib/typescript/helpers/markdownParser.d.ts.map +1 -1
  409. package/lib/typescript/helpers/parseMessageBody.d.ts +8 -1
  410. package/lib/typescript/helpers/parseMessageBody.d.ts.map +1 -1
  411. package/lib/typescript/helpers/preferencesStorage.d.ts +11 -0
  412. package/lib/typescript/helpers/preferencesStorage.d.ts.map +1 -0
  413. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts +2 -0
  414. package/lib/typescript/hooks/useCustomTypingIndicator.d.ts.map +1 -1
  415. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  416. package/lib/typescript/hooks/useTheme.d.ts +16 -0
  417. package/lib/typescript/hooks/useTheme.d.ts.map +1 -0
  418. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  419. package/lib/typescript/main.d.ts +9 -0
  420. package/lib/typescript/main.d.ts.map +1 -1
  421. package/lib/typescript/networking/api-requests/push.api.d.ts +46 -3
  422. package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
  423. package/lib/typescript/networking/api-requests/rooms.api.d.ts +1 -0
  424. package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
  425. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +12 -1
  426. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  427. package/lib/typescript/services/pushRegistration.d.ts +21 -0
  428. package/lib/typescript/services/pushRegistration.d.ts.map +1 -0
  429. package/lib/typescript/services/pushSubscriptionService.d.ts +0 -4
  430. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  431. package/lib/typescript/theme/index.d.ts +5 -0
  432. package/lib/typescript/theme/index.d.ts.map +1 -0
  433. package/lib/typescript/theme/theme.d.ts +127 -0
  434. package/lib/typescript/theme/theme.d.ts.map +1 -0
  435. package/lib/typescript/types/models/room.model.d.ts +1 -0
  436. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  437. package/lib/typescript/types/types.d.ts +42 -0
  438. package/lib/typescript/types/types.d.ts.map +1 -1
  439. package/lib/typescript/version.d.ts +1 -1
  440. package/package.json +2 -2
  441. package/src/assets/EmptyChatIllustration.tsx +7 -5
  442. package/src/assets/icons.tsx +24 -0
  443. package/src/components/AuthForms/Login.tsx +11 -9
  444. package/src/components/ContextMenu/ContextMenuComponents.tsx +4 -4
  445. package/src/components/DropdownMenu/DropdownMenu.tsx +14 -6
  446. package/src/components/ExampleComponents/CustomMessage.tsx +9 -8
  447. package/src/components/ExampleComponents/CustomTypingIndicatorExamples.tsx +6 -6
  448. package/src/components/Header/HeaderRoomList.tsx +11 -6
  449. package/src/components/InputComponents/Search.tsx +7 -4
  450. package/src/components/MainComponents/ChatHeader.tsx +9 -3
  451. package/src/components/MainComponents/ChatRoom.tsx +5 -2
  452. package/src/components/MainComponents/ChatWrapper.tsx +8 -6
  453. package/src/components/MainComponents/LanguageSelectorModal.tsx +33 -7
  454. package/src/components/MainComponents/MediaMessage.tsx +37 -18
  455. package/src/components/MainComponents/MessageList.tsx +13 -3
  456. package/src/components/MainComponents/RNStyled.tsx +4 -4
  457. package/src/components/MainComponents/ReduxWrapper.tsx +67 -10
  458. package/src/components/MainComponents/RoomList.tsx +13 -7
  459. package/src/components/MainComponents/Select.tsx +13 -8
  460. package/src/components/Menu/HeaderRoomListMenu.tsx +30 -13
  461. package/src/components/MessageBubble/BottomReplyContainer.tsx +16 -11
  462. package/src/components/MessageBubble/Message.tsx +48 -25
  463. package/src/components/MessageBubble/MessageInteractions.tsx +17 -4
  464. package/src/components/MessageBubble/MessageReaction.tsx +9 -4
  465. package/src/components/Modals/AddMembersModal/AddMembersModal.tsx +2 -2
  466. package/src/components/Modals/AttachSheet/AttachSheet.tsx +57 -23
  467. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +63 -25
  468. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +6 -4
  469. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +18 -14
  470. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +14 -9
  471. package/src/components/Modals/ModalHeaderComponent.tsx +9 -2
  472. package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +14 -6
  473. package/src/components/Modals/NewChatModal/ModalContent.tsx +2 -2
  474. package/src/components/Modals/NewChatModal/NewChatModal.tsx +19 -15
  475. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +15 -8
  476. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +2 -3
  477. package/src/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.tsx +8 -6
  478. package/src/components/Modals/SettingsModals/Referrals/Referrals.tsx +5 -3
  479. package/src/components/Modals/SettingsModals/SharedStyledComponents.ts +4 -4
  480. package/src/components/Modals/SettingsModals/Visibility/RadioInput.tsx +9 -5
  481. package/src/components/Modals/SettingsModals/Visibility/VisibilityModal.tsx +7 -7
  482. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +3 -1
  483. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
  484. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +171 -9
  485. package/src/components/Modals/styledModalComponents.tsx +23 -15
  486. package/src/components/RoomComponents/ChatRoomItem.tsx +19 -10
  487. package/src/components/RoomComponents/styled/LastAudioMessage.tsx +4 -2
  488. package/src/components/RoomComponents/styled/StyledRoomComponents.ts +2 -0
  489. package/src/components/Thread/ThreadWrapper.tsx +6 -5
  490. package/src/components/Toast/Toast.tsx +1 -1
  491. package/src/components/styled/AudioMessage.tsx +12 -9
  492. package/src/components/styled/Button.tsx +15 -8
  493. package/src/components/styled/DateLabel.tsx +7 -3
  494. package/src/components/styled/MediaModal.tsx +30 -25
  495. package/src/components/styled/RoomListComponents/index.tsx +60 -35
  496. package/src/components/styled/SendInput.tsx +23 -8
  497. package/src/components/styled/StyledComponents.ts +30 -23
  498. package/src/components/styled/StyledInput.tsx +35 -21
  499. package/src/components/styled/StyledInputComponents/CustomTypingIndicator.tsx +8 -8
  500. package/src/components/styled/StyledInputComponents/MediaComponents.tsx +20 -7
  501. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +15 -19
  502. package/src/components/styled/TreadLabel.tsx +9 -3
  503. package/src/context/MessageNotificationContext.tsx +18 -4
  504. package/src/helpers/getChatBackground.ts +3 -1
  505. package/src/helpers/getDateLabelColor.ts +5 -3
  506. package/src/helpers/getIconColor.ts +6 -3
  507. package/src/helpers/getSenderNameColor.ts +5 -3
  508. package/src/helpers/markdownParser.tsx +29 -5
  509. package/src/helpers/parseMessageBody.tsx +79 -26
  510. package/src/helpers/preferencesStorage.ts +40 -0
  511. package/src/hooks/useCustomTypingIndicator.tsx +7 -3
  512. package/src/hooks/useLogout.tsx +10 -3
  513. package/src/hooks/useTheme.ts +41 -0
  514. package/src/i18n/strings.ts +60 -0
  515. package/src/main.ts +33 -0
  516. package/src/networking/api-requests/push.api.ts +185 -62
  517. package/src/networking/api-requests/rooms.api.ts +9 -0
  518. package/src/roomStore/chatSettingsSlice.ts +24 -2
  519. package/src/services/pushRegistration.ts +369 -0
  520. package/src/services/pushSubscriptionService.ts +0 -34
  521. package/src/theme/index.ts +10 -0
  522. package/src/theme/styled.d.ts +9 -0
  523. package/src/theme/theme.ts +277 -0
  524. package/src/types/models/room.model.ts +1 -0
  525. package/src/types/types.ts +47 -0
  526. package/src/version.ts +1 -1
  527. package/lib/commonjs/context/PushNotificationProvider.js +0 -79
  528. package/lib/commonjs/context/PushNotificationProvider.js.map +0 -1
  529. package/lib/commonjs/hooks/usePushNotifications.js +0 -110
  530. package/lib/commonjs/hooks/usePushNotifications.js.map +0 -1
  531. package/lib/commonjs/services/pushNotifications.js +0 -143
  532. package/lib/commonjs/services/pushNotifications.js.map +0 -1
  533. package/lib/module/context/PushNotificationProvider.js +0 -79
  534. package/lib/module/context/PushNotificationProvider.js.map +0 -1
  535. package/lib/module/hooks/usePushNotifications.js +0 -106
  536. package/lib/module/hooks/usePushNotifications.js.map +0 -1
  537. package/lib/module/services/pushNotifications.js +0 -130
  538. package/lib/module/services/pushNotifications.js.map +0 -1
  539. package/lib/typescript/context/PushNotificationProvider.d.ts +0 -2
  540. package/lib/typescript/context/PushNotificationProvider.d.ts.map +0 -1
  541. package/lib/typescript/hooks/usePushNotifications.d.ts +0 -5
  542. package/lib/typescript/hooks/usePushNotifications.d.ts.map +0 -1
  543. package/lib/typescript/services/pushNotifications.d.ts +0 -10
  544. package/lib/typescript/services/pushNotifications.d.ts.map +0 -1
  545. package/src/context/PushNotificationProvider.tsx +0 -78
  546. package/src/hooks/usePushNotifications.ts +0 -131
  547. package/src/services/pushNotifications.ts +0 -170
@@ -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>
@@ -0,0 +1,40 @@
1
+ /** @format */
2
+
3
+ import AsyncStorage from '@react-native-async-storage/async-storage';
4
+ import type { ThemePreference } from '../theme/theme';
5
+
6
+ const KEY = '@ethora/preferences';
7
+
8
+ /** Small, unencrypted, per-device user preferences set from Settings. */
9
+ export interface StoredPreferences {
10
+ theme?: ThemePreference;
11
+ pushEnabled?: boolean;
12
+ }
13
+
14
+ export const loadPreferences = async (): Promise<StoredPreferences> => {
15
+ try {
16
+ const raw = await AsyncStorage.getItem(KEY);
17
+ return raw ? (JSON.parse(raw) as StoredPreferences) : {};
18
+ } catch {
19
+ return {};
20
+ }
21
+ };
22
+
23
+ export const savePreferences = async (
24
+ patch: StoredPreferences
25
+ ): Promise<void> => {
26
+ try {
27
+ const current = await loadPreferences();
28
+ await AsyncStorage.setItem(KEY, JSON.stringify({ ...current, ...patch }));
29
+ } catch (error) {
30
+ console.warn('[preferences] save failed', error);
31
+ }
32
+ };
33
+
34
+ export const clearPreferences = async (): Promise<void> => {
35
+ try {
36
+ await AsyncStorage.removeItem(KEY);
37
+ } catch {
38
+ /* ignore */
39
+ }
40
+ };
@@ -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
+ };
@@ -84,6 +84,9 @@ const en: UiStringTable = {
84
84
  'action.save': 'Save',
85
85
  'action.delete': 'Delete',
86
86
  'action.leave': 'Leave',
87
+ 'action.muted': 'Muted',
88
+ 'action.unmuted': 'Unmuted',
89
+ 'toast.muteFailed': 'Could not update notifications for this chat',
87
90
  'action.create': 'Create',
88
91
  'action.submit': 'Submit',
89
92
  'action.translate': 'Translate',
@@ -236,6 +239,13 @@ const en: UiStringTable = {
236
239
  'settings.blockedUsers.label': 'Blocked Users',
237
240
  'settings.blockedUsers.description': 'Users you have blocked cannot send you messages or see when you are online.',
238
241
  'settings.blockedUsers.emptyState': "You haven't blocked anyone yet.",
242
+ 'settings.appearance.title': 'Appearance',
243
+ 'settings.appearance.light': 'Light',
244
+ 'settings.appearance.dark': 'Dark',
245
+ 'settings.appearance.system': 'System',
246
+ 'settings.notifications.title': 'Notifications',
247
+ 'settings.notifications.push': 'Push notifications',
248
+ 'settings.notifications.pushHint': 'New messages and calls wake this device even when the app is closed.',
239
249
  'settings.visibility.title': 'Visibility',
240
250
  'settings.visibility.profileLabel': 'Profile Visibility',
241
251
  'settings.visibility.open': 'Open (default)',
@@ -332,6 +342,9 @@ const fr: UiStringTable = {
332
342
  'action.save': 'Enregistrer',
333
343
  'action.delete': 'Supprimer',
334
344
  'action.leave': 'Quitter',
345
+ 'action.muted': 'En sourdine',
346
+ 'action.unmuted': 'Activé',
347
+ 'toast.muteFailed': 'Impossible de modifier les notifications de ce chat',
335
348
  'action.create': 'Créer',
336
349
  'action.submit': 'Soumettre',
337
350
  'action.translate': 'Traduire',
@@ -484,6 +497,13 @@ const fr: UiStringTable = {
484
497
  'settings.blockedUsers.label': 'Utilisateurs bloqués',
485
498
  'settings.blockedUsers.description': "Les utilisateurs que vous avez bloqués ne peuvent pas vous envoyer de messages ni voir quand vous êtes en ligne.",
486
499
  'settings.blockedUsers.emptyState': "Vous n'avez encore bloqué personne.",
500
+ 'settings.appearance.title': 'Apparence',
501
+ 'settings.appearance.light': 'Clair',
502
+ 'settings.appearance.dark': 'Sombre',
503
+ 'settings.appearance.system': 'Système',
504
+ 'settings.notifications.title': 'Notifications',
505
+ 'settings.notifications.push': 'Notifications push',
506
+ 'settings.notifications.pushHint': 'Les nouveaux messages et appels réveillent cet appareil même quand l\'application est fermée.',
487
507
  'settings.visibility.title': 'Visibilité',
488
508
  'settings.visibility.profileLabel': 'Visibilité du profil',
489
509
  'settings.visibility.open': 'Ouvert (par défaut)',
@@ -580,6 +600,9 @@ const es: UiStringTable = {
580
600
  'action.save': 'Guardar',
581
601
  'action.delete': 'Eliminar',
582
602
  'action.leave': 'Salir',
603
+ 'action.muted': 'Silenciado',
604
+ 'action.unmuted': 'Activado',
605
+ 'toast.muteFailed': 'No se pudieron cambiar las notificaciones de este chat',
583
606
  'action.create': 'Crear',
584
607
  'action.submit': 'Enviar',
585
608
  'action.translate': 'Traducir',
@@ -732,6 +755,13 @@ const es: UiStringTable = {
732
755
  'settings.blockedUsers.label': 'Usuarios bloqueados',
733
756
  'settings.blockedUsers.description': 'Los usuarios que hayas bloqueado no podrán enviarte mensajes ni ver cuándo estás en línea.',
734
757
  'settings.blockedUsers.emptyState': 'Todavía no has bloqueado a nadie.',
758
+ 'settings.appearance.title': 'Apariencia',
759
+ 'settings.appearance.light': 'Claro',
760
+ 'settings.appearance.dark': 'Oscuro',
761
+ 'settings.appearance.system': 'Sistema',
762
+ 'settings.notifications.title': 'Notificaciones',
763
+ 'settings.notifications.push': 'Notificaciones push',
764
+ 'settings.notifications.pushHint': 'Los mensajes y llamadas nuevos despiertan este dispositivo incluso con la aplicación cerrada.',
735
765
  'settings.visibility.title': 'Visibilidad',
736
766
  'settings.visibility.profileLabel': 'Visibilidad del perfil',
737
767
  'settings.visibility.open': 'Abierto (predeterminado)',
@@ -828,6 +858,9 @@ const pt: UiStringTable = {
828
858
  'action.save': 'Guardar',
829
859
  'action.delete': 'Eliminar',
830
860
  'action.leave': 'Sair',
861
+ 'action.muted': 'Muted',
862
+ 'action.unmuted': 'Unmuted',
863
+ 'toast.muteFailed': 'Could not update notifications for this chat',
831
864
  'action.create': 'Criar',
832
865
  'action.submit': 'Enviar',
833
866
  'action.translate': 'Traduzir',
@@ -980,6 +1013,13 @@ const pt: UiStringTable = {
980
1013
  'settings.blockedUsers.label': 'Utilizadores bloqueados',
981
1014
  'settings.blockedUsers.description': 'Os utilizadores que bloqueou não lhe podem enviar mensagens nem ver quando está online.',
982
1015
  'settings.blockedUsers.emptyState': 'Ainda não bloqueou ninguém.',
1016
+ 'settings.appearance.title': 'Aparência',
1017
+ 'settings.appearance.light': 'Claro',
1018
+ 'settings.appearance.dark': 'Escuro',
1019
+ 'settings.appearance.system': 'Sistema',
1020
+ 'settings.notifications.title': 'Notificações',
1021
+ 'settings.notifications.push': 'Notificações push',
1022
+ 'settings.notifications.pushHint': 'Novas mensagens e chamadas acordam este dispositivo mesmo com o aplicativo fechado.',
983
1023
  'settings.visibility.title': 'Visibilidade',
984
1024
  'settings.visibility.profileLabel': 'Visibilidade do perfil',
985
1025
  'settings.visibility.open': 'Aberto (predefinição)',
@@ -1076,6 +1116,9 @@ const ht: UiStringTable = {
1076
1116
  'action.save': 'Anrejistre',
1077
1117
  'action.delete': 'Efase',
1078
1118
  'action.leave': 'Kite',
1119
+ 'action.muted': 'Muted',
1120
+ 'action.unmuted': 'Unmuted',
1121
+ 'toast.muteFailed': 'Could not update notifications for this chat',
1079
1122
  'action.create': 'Kreye',
1080
1123
  'action.submit': 'Soumèt',
1081
1124
  'action.translate': 'Tradui',
@@ -1228,6 +1271,13 @@ const ht: UiStringTable = {
1228
1271
  'settings.blockedUsers.label': 'Itilizatè bloke',
1229
1272
  'settings.blockedUsers.description': 'Itilizatè ou bloke yo pa ka voye mesaj ba ou ni wè lè ou an liy.',
1230
1273
  'settings.blockedUsers.emptyState': 'Ou poko bloke pèsonn.',
1274
+ 'settings.appearance.title': 'Aparans',
1275
+ 'settings.appearance.light': 'Klè',
1276
+ 'settings.appearance.dark': 'Fonse',
1277
+ 'settings.appearance.system': 'Sistèm',
1278
+ 'settings.notifications.title': 'Notifikasyon',
1279
+ 'settings.notifications.push': 'Notifikasyon push',
1280
+ 'settings.notifications.pushHint': 'Nouvo mesaj ak apèl reveye aparèy sa a menm lè aplikasyon an fèmen.',
1231
1281
  'settings.visibility.title': 'Vizibilite',
1232
1282
  'settings.visibility.profileLabel': 'Vizibilite pwofil la',
1233
1283
  'settings.visibility.open': 'Louvri (default)',
@@ -1324,6 +1374,9 @@ const zh: UiStringTable = {
1324
1374
  'action.save': '保存',
1325
1375
  'action.delete': '删除',
1326
1376
  'action.leave': '退出',
1377
+ 'action.muted': 'Muted',
1378
+ 'action.unmuted': 'Unmuted',
1379
+ 'toast.muteFailed': 'Could not update notifications for this chat',
1327
1380
  'action.create': '创建',
1328
1381
  'action.submit': '提交',
1329
1382
  'action.translate': '翻译',
@@ -1476,6 +1529,13 @@ const zh: UiStringTable = {
1476
1529
  'settings.blockedUsers.label': '已屏蔽用户',
1477
1530
  'settings.blockedUsers.description': '被您屏蔽的用户无法向您发送消息,也无法看到您何时在线。',
1478
1531
  'settings.blockedUsers.emptyState': '您还没有屏蔽任何人。',
1532
+ 'settings.appearance.title': '外观',
1533
+ 'settings.appearance.light': '浅色',
1534
+ 'settings.appearance.dark': '深色',
1535
+ 'settings.appearance.system': '跟随系统',
1536
+ 'settings.notifications.title': '通知',
1537
+ 'settings.notifications.push': '推送通知',
1538
+ 'settings.notifications.pushHint': '即使应用已关闭,新消息和来电也会唤醒此设备。',
1479
1539
  'settings.visibility.title': '可见性',
1480
1540
  'settings.visibility.profileLabel': '资料可见性',
1481
1541
  'settings.visibility.open': '公开(默认)',
package/src/main.ts CHANGED
@@ -34,6 +34,28 @@ export { useUnread } from './hooks/useUnreadMessagesCounter';
34
34
 
35
35
  export { handlePushPayload, openRoomFromPush } from './helpers/pushPayload';
36
36
  export type { PushPayloadOutcome } from './helpers/pushPayload';
37
+ export {
38
+ registerPushToken,
39
+ unregisterPushToken,
40
+ getRegisteredPushToken,
41
+ getRegisteredPushTokens,
42
+ } from './services/pushRegistration';
43
+ export type {
44
+ RegisterPushTokenOptions,
45
+ RegisterPushTokenOutcome,
46
+ UnregisterPushTokenOutcome,
47
+ RegisteredPushToken,
48
+ } from './services/pushRegistration';
49
+ export {
50
+ detectPushTokenType,
51
+ PushRegistrationError,
52
+ isPushRegistrationError,
53
+ } from './networking/api-requests/push.api';
54
+ export type {
55
+ PushDeviceType,
56
+ PushSubscriptionPayload,
57
+ } from './networking/api-requests/push.api';
58
+ export type { PushTokenType, PushTokenRegistration } from './types/types';
37
59
  export { useChatRoomFocus } from './hooks/useChatRoomFocus';
38
60
  export { logoutService, useLogout } from './hooks/useLogout';
39
61
  export { useQRCodeChat, handleQRChatId } from './hooks/useQRCodeChatHandler';
@@ -90,3 +112,14 @@ export type {
90
112
  RefreshResult,
91
113
  RefreshOptions,
92
114
  } from './networking/authRefresh';
115
+
116
+ export {
117
+ LIGHT_THEME,
118
+ DARK_THEME,
119
+ resolveTheme,
120
+ isDarkTheme,
121
+ useTheme,
122
+ } from './theme';
123
+ export type { ChatTheme, ChatThemeColors, ChatThemeOverrides } from './theme';
124
+ export type { ThemePreference } from './theme/theme';
125
+ export { setThemePreference, setPushEnabled } from './roomStore/chatSettingsSlice';