@ethora/chat-component-rn 26.7.10 → 26.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/CHANGELOG.md +0 -96
  2. package/README.md +10 -43
  3. package/lib/commonjs/assets/icons.js +2 -7
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/AuthForms/Login.js +4 -4
  6. package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
  7. package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
  8. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
  10. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/ChatRoom.js +14 -150
  12. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
  14. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  15. package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
  16. package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
  17. package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
  18. package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
  19. package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
  20. package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
  21. package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
  22. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  23. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  24. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  25. package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
  26. package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
  27. package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
  28. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  29. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
  30. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  31. package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
  32. package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
  33. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
  34. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  35. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
  36. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  37. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
  38. package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  39. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
  40. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  41. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
  42. package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  43. package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
  44. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  45. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
  46. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  47. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
  48. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  49. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  50. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  51. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  52. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  53. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
  54. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  55. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
  56. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  57. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
  58. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  59. package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
  60. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  61. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
  62. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  63. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
  64. package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  65. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
  66. package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  67. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
  68. package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  69. package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
  70. package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
  71. package/lib/commonjs/components/styled/AudioMessage.js +1 -2
  72. package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
  73. package/lib/commonjs/components/styled/DateLabel.js +10 -3
  74. package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
  75. package/lib/commonjs/components/styled/MessageImage.js +9 -37
  76. package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
  77. package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
  78. package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
  79. package/lib/commonjs/components/styled/SendInput.js +17 -86
  80. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  81. package/lib/commonjs/components/styled/StyledComponents.js +3 -9
  82. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  83. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  84. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  85. package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
  86. package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
  87. package/lib/commonjs/components/styled/VideoMessage.js +61 -119
  88. package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
  89. package/lib/commonjs/context/xmppProvider.js +59 -177
  90. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  91. package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
  92. package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
  93. package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
  94. package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
  95. package/lib/commonjs/helpers/getDataFromXml.js +24 -1
  96. package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
  97. package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
  98. package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
  99. package/lib/commonjs/helpers/initXmppRooms.js +8 -14
  100. package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
  101. package/lib/commonjs/helpers/insertMessageWithDelimiter.js +22 -51
  102. package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
  103. package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
  104. package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
  105. package/lib/commonjs/helpers/keyboardLayout.js +2 -12
  106. package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
  107. package/lib/commonjs/helpers/mimeToExtension.js +14 -6
  108. package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
  109. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
  110. package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  111. package/lib/commonjs/helpers/resolveLangSource.js +38 -0
  112. package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
  113. package/lib/commonjs/helpers/xmppUsername.js +39 -0
  114. package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
  115. package/lib/commonjs/hooks/useChatRoomFocus.js +12 -45
  116. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  117. package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
  118. package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
  119. package/lib/commonjs/hooks/useComposing.js +0 -27
  120. package/lib/commonjs/hooks/useComposing.js.map +1 -1
  121. package/lib/commonjs/hooks/useLogout.js +7 -23
  122. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  123. package/lib/commonjs/hooks/usePendingNotification.js +11 -8
  124. package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
  125. package/lib/commonjs/hooks/useSendMessage.js +14 -50
  126. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  127. package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
  128. package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
  129. package/lib/commonjs/i18n/strings.js +133 -121
  130. package/lib/commonjs/i18n/strings.js.map +1 -1
  131. package/lib/commonjs/i18n/useT.js +1 -1
  132. package/lib/commonjs/main.js +0 -44
  133. package/lib/commonjs/main.js.map +1 -1
  134. package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
  135. package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
  136. package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
  137. package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
  138. package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
  139. package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
  140. package/lib/commonjs/networking/api-requests/user.api.js +9 -68
  141. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  142. package/lib/commonjs/networking/apiClient.js +112 -62
  143. package/lib/commonjs/networking/apiClient.js.map +1 -1
  144. package/lib/commonjs/networking/stanzaHandlers.js +51 -93
  145. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  146. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  147. package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  148. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  149. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  150. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  151. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  152. package/lib/commonjs/networking/xmppClient.js +8 -124
  153. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  154. package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
  155. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  156. package/lib/commonjs/roomStore/index.js +2 -35
  157. package/lib/commonjs/roomStore/index.js.map +1 -1
  158. package/lib/commonjs/roomStore/persistence.js +39 -226
  159. package/lib/commonjs/roomStore/persistence.js.map +1 -1
  160. package/lib/commonjs/roomStore/roomsSlice.js +38 -151
  161. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  162. package/lib/commonjs/services/pushSubscriptionService.js +13 -15
  163. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  164. package/lib/commonjs/version.js +3 -1
  165. package/lib/commonjs/version.js.map +1 -1
  166. package/lib/module/assets/icons.js +1 -6
  167. package/lib/module/assets/icons.js.map +1 -1
  168. package/lib/module/components/AuthForms/Login.js +4 -4
  169. package/lib/module/components/AuthForms/Login.js.map +1 -1
  170. package/lib/module/components/Header/HeaderRoomList.js +7 -26
  171. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  172. package/lib/module/components/MainComponents/ChatHeader.js +3 -9
  173. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  174. package/lib/module/components/MainComponents/ChatRoom.js +16 -152
  175. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  176. package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
  177. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  178. package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
  179. package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
  180. package/lib/module/components/MainComponents/MediaMessage.js +10 -30
  181. package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
  182. package/lib/module/components/MainComponents/MessageContainer.js +1 -5
  183. package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
  184. package/lib/module/components/MainComponents/MessageList.js +5 -13
  185. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  186. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
  187. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  188. package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
  189. package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
  190. package/lib/module/components/MainComponents/RoomList.js +35 -207
  191. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  192. package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
  193. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  194. package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
  195. package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
  196. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
  197. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  198. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
  199. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  200. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
  201. package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
  202. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
  203. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  204. package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
  205. package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
  206. package/lib/module/components/Modals/Modal/Modal.js +1 -9
  207. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  208. package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
  209. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  210. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
  211. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  212. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
  213. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  214. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
  215. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  216. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
  217. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  218. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
  219. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  220. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
  221. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  222. package/lib/module/components/Modals/styledModalComponents.js +2 -9
  223. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  224. package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
  225. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  226. package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
  227. package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
  228. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
  229. package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
  230. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
  231. package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
  232. package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
  233. package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
  234. package/lib/module/components/styled/AudioMessage.js +1 -2
  235. package/lib/module/components/styled/AudioMessage.js.map +1 -1
  236. package/lib/module/components/styled/DateLabel.js +10 -3
  237. package/lib/module/components/styled/DateLabel.js.map +1 -1
  238. package/lib/module/components/styled/MessageImage.js +9 -37
  239. package/lib/module/components/styled/MessageImage.js.map +1 -1
  240. package/lib/module/components/styled/NewMessageLabel.js +3 -1
  241. package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
  242. package/lib/module/components/styled/SendInput.js +18 -87
  243. package/lib/module/components/styled/SendInput.js.map +1 -1
  244. package/lib/module/components/styled/StyledComponents.js +3 -9
  245. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  246. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
  247. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  248. package/lib/module/components/styled/UnsupportedType.js +4 -14
  249. package/lib/module/components/styled/UnsupportedType.js.map +1 -1
  250. package/lib/module/components/styled/VideoMessage.js +62 -120
  251. package/lib/module/components/styled/VideoMessage.js.map +1 -1
  252. package/lib/module/context/xmppProvider.js +60 -177
  253. package/lib/module/context/xmppProvider.js.map +1 -1
  254. package/lib/module/helpers/createMessageFromXml.js +1 -19
  255. package/lib/module/helpers/createMessageFromXml.js.map +1 -1
  256. package/lib/module/helpers/ensureScopedChatCache.js +2 -2
  257. package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
  258. package/lib/module/helpers/getDataFromXml.js +23 -1
  259. package/lib/module/helpers/getDataFromXml.js.map +1 -1
  260. package/lib/module/helpers/historyPreloadScheduler.js +3 -66
  261. package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
  262. package/lib/module/helpers/initXmppRooms.js +8 -14
  263. package/lib/module/helpers/initXmppRooms.js.map +1 -1
  264. package/lib/module/helpers/insertMessageWithDelimiter.js +22 -52
  265. package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
  266. package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
  267. package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
  268. package/lib/module/helpers/keyboardLayout.js +2 -12
  269. package/lib/module/helpers/keyboardLayout.js.map +1 -1
  270. package/lib/module/helpers/mimeToExtension.js +13 -6
  271. package/lib/module/helpers/mimeToExtension.js.map +1 -1
  272. package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
  273. package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
  274. package/lib/module/helpers/resolveLangSource.js +32 -0
  275. package/lib/module/helpers/resolveLangSource.js.map +1 -0
  276. package/lib/module/helpers/xmppUsername.js +35 -0
  277. package/lib/module/helpers/xmppUsername.js.map +1 -0
  278. package/lib/module/hooks/useChatRoomFocus.js +13 -46
  279. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  280. package/lib/module/hooks/useChatWrapperInit.js +14 -32
  281. package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
  282. package/lib/module/hooks/useComposing.js +1 -28
  283. package/lib/module/hooks/useComposing.js.map +1 -1
  284. package/lib/module/hooks/useLogout.js +7 -23
  285. package/lib/module/hooks/useLogout.js.map +1 -1
  286. package/lib/module/hooks/usePendingNotification.js +11 -8
  287. package/lib/module/hooks/usePendingNotification.js.map +1 -1
  288. package/lib/module/hooks/useSendMessage.js +16 -52
  289. package/lib/module/hooks/useSendMessage.js.map +1 -1
  290. package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
  291. package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
  292. package/lib/module/i18n/strings.js +133 -121
  293. package/lib/module/i18n/strings.js.map +1 -1
  294. package/lib/module/i18n/useT.js +1 -1
  295. package/lib/module/main.js +2 -14
  296. package/lib/module/main.js.map +1 -1
  297. package/lib/module/networking/api-requests/auth.api.js +59 -131
  298. package/lib/module/networking/api-requests/auth.api.js.map +1 -1
  299. package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
  300. package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
  301. package/lib/module/networking/api-requests/rooms.api.js +9 -9
  302. package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
  303. package/lib/module/networking/api-requests/user.api.js +7 -64
  304. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  305. package/lib/module/networking/apiClient.js +113 -61
  306. package/lib/module/networking/apiClient.js.map +1 -1
  307. package/lib/module/networking/stanzaHandlers.js +52 -94
  308. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  309. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
  310. package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
  311. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
  312. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  313. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
  314. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  315. package/lib/module/networking/xmppClient.js +8 -124
  316. package/lib/module/networking/xmppClient.js.map +1 -1
  317. package/lib/module/roomStore/chatSettingsSlice.js +7 -26
  318. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  319. package/lib/module/roomStore/index.js +4 -37
  320. package/lib/module/roomStore/index.js.map +1 -1
  321. package/lib/module/roomStore/persistence.js +38 -223
  322. package/lib/module/roomStore/persistence.js.map +1 -1
  323. package/lib/module/roomStore/roomsSlice.js +34 -139
  324. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  325. package/lib/module/services/pushSubscriptionService.js +13 -15
  326. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  327. package/lib/module/version.js +3 -1
  328. package/lib/module/version.js.map +1 -1
  329. package/lib/typescript/assets/icons.d.ts +0 -16
  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/Header/HeaderRoomList.d.ts.map +1 -1
  333. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  334. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  335. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  336. package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
  337. package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
  338. package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
  339. package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
  340. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  341. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.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 +0 -7
  344. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  345. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
  346. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  347. package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
  348. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
  349. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  350. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
  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/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  354. package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
  355. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  356. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
  357. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  358. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  359. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  360. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  361. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
  362. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  363. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  364. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
  365. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  366. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
  367. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  368. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  369. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  370. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
  371. package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
  372. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
  373. package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
  374. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
  375. package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
  376. package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
  377. package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
  378. package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
  379. package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
  380. package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
  381. package/lib/typescript/components/styled/NewMessageLabel.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/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  385. package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
  386. package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
  387. package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
  388. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  389. package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
  390. package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
  391. package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
  392. package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
  393. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts +1 -1
  394. package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
  395. package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
  396. package/lib/typescript/helpers/keyboardLayout.d.ts +1 -5
  397. package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
  398. package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
  399. package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
  400. package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
  401. package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
  402. package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
  403. package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
  404. package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
  405. package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
  406. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  407. package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
  408. package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
  409. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  410. package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
  411. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  412. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
  413. package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
  414. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  415. package/lib/typescript/i18n/useT.d.ts +1 -1
  416. package/lib/typescript/main.d.ts +2 -9
  417. package/lib/typescript/main.d.ts.map +1 -1
  418. package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
  419. package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
  420. package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
  421. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  422. package/lib/typescript/networking/apiClient.d.ts +6 -12
  423. package/lib/typescript/networking/apiClient.d.ts.map +1 -1
  424. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  425. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
  426. package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
  427. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  428. package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
  429. package/lib/typescript/networking/xmppClient.d.ts +0 -14
  430. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  431. package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
  432. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  433. package/lib/typescript/roomStore/index.d.ts.map +1 -1
  434. package/lib/typescript/roomStore/persistence.d.ts +1 -18
  435. package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
  436. package/lib/typescript/roomStore/roomsSlice.d.ts +3 -43
  437. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  438. package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
  439. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  440. package/lib/typescript/types/types.d.ts +5 -50
  441. package/lib/typescript/types/types.d.ts.map +1 -1
  442. package/lib/typescript/version.d.ts +1 -1
  443. package/lib/typescript/version.d.ts.map +1 -1
  444. package/package.json +29 -41
  445. package/src/assets/icons.tsx +9 -48
  446. package/src/components/AuthForms/Login.tsx +3 -3
  447. package/src/components/Header/HeaderRoomList.tsx +6 -24
  448. package/src/components/MainComponents/ChatHeader.tsx +3 -9
  449. package/src/components/MainComponents/ChatRoom.tsx +15 -161
  450. package/src/components/MainComponents/ChatWrapper.tsx +53 -36
  451. package/src/components/MainComponents/LoginWrapper.tsx +0 -1
  452. package/src/components/MainComponents/MediaMessage.tsx +8 -26
  453. package/src/components/MainComponents/MessageContainer.tsx +1 -5
  454. package/src/components/MainComponents/MessageList.tsx +4 -23
  455. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
  456. package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
  457. package/src/components/MainComponents/RoomList.tsx +39 -236
  458. package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
  459. package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
  460. package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
  461. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
  462. package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
  463. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
  464. package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
  465. package/src/components/Modals/Modal/Modal.tsx +0 -7
  466. package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
  467. package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
  468. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
  469. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
  470. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
  471. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
  472. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
  473. package/src/components/Modals/styledModalComponents.tsx +2 -9
  474. package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
  475. package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
  476. package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
  477. package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
  478. package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
  479. package/src/components/styled/AudioMessage.tsx +1 -2
  480. package/src/components/styled/DateLabel.tsx +10 -3
  481. package/src/components/styled/MessageImage.tsx +7 -53
  482. package/src/components/styled/NewMessageLabel.tsx +3 -1
  483. package/src/components/styled/SendInput.tsx +18 -91
  484. package/src/components/styled/StyledComponents.ts +3 -9
  485. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
  486. package/src/components/styled/UnsupportedType.tsx +4 -14
  487. package/src/components/styled/VideoMessage.tsx +54 -131
  488. package/src/context/xmppProvider.tsx +57 -209
  489. package/src/helpers/createMessageFromXml.ts +1 -20
  490. package/src/helpers/ensureScopedChatCache.ts +2 -2
  491. package/src/helpers/getDataFromXml.ts +25 -1
  492. package/src/helpers/historyPreloadScheduler.ts +3 -80
  493. package/src/helpers/initXmppRooms.tsx +10 -14
  494. package/src/helpers/insertMessageWithDelimiter.ts +32 -55
  495. package/src/helpers/isUnresolvedSenderId.ts +9 -1
  496. package/src/helpers/keyboardLayout.ts +2 -23
  497. package/src/helpers/mimeToExtension.ts +22 -6
  498. package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
  499. package/src/helpers/resolveLangSource.ts +40 -0
  500. package/src/helpers/xmppUsername.ts +38 -0
  501. package/src/hooks/useChatRoomFocus.ts +9 -49
  502. package/src/hooks/useChatWrapperInit.ts +16 -32
  503. package/src/hooks/useComposing.tsx +1 -37
  504. package/src/hooks/useLogout.tsx +9 -29
  505. package/src/hooks/usePendingNotification.ts +11 -5
  506. package/src/hooks/useSendMessage.tsx +15 -60
  507. package/src/hooks/useUnreadMessagesCounter.ts +0 -11
  508. package/src/i18n/strings.ts +133 -121
  509. package/src/i18n/useT.ts +1 -1
  510. package/src/main.ts +2 -26
  511. package/src/networking/api-requests/auth.api.ts +48 -156
  512. package/src/networking/api-requests/roomMembers.api.ts +1 -1
  513. package/src/networking/api-requests/rooms.api.ts +9 -9
  514. package/src/networking/api-requests/user.api.ts +7 -79
  515. package/src/networking/apiClient.ts +123 -68
  516. package/src/networking/stanzaHandlers.ts +51 -92
  517. package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
  518. package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
  519. package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
  520. package/src/networking/xmppClient.ts +9 -141
  521. package/src/roomStore/chatSettingsSlice.ts +10 -34
  522. package/src/roomStore/index.ts +4 -40
  523. package/src/roomStore/persistence.ts +40 -234
  524. package/src/roomStore/roomsSlice.ts +29 -161
  525. package/src/services/pushSubscriptionService.ts +13 -18
  526. package/src/types/types.ts +5 -72
  527. package/src/version.ts +3 -1
  528. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
  529. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  530. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
  531. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  532. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
  533. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  534. package/lib/commonjs/helpers/getChatBackground.js +0 -23
  535. package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
  536. package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
  537. package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
  538. package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -188
  539. package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
  540. package/lib/commonjs/helpers/isOwnMessage.js +0 -75
  541. package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
  542. package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
  543. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
  544. package/lib/commonjs/helpers/msgSortableMs.js +0 -37
  545. package/lib/commonjs/helpers/msgSortableMs.js.map +0 -1
  546. package/lib/commonjs/helpers/persistCrypto.js +0 -122
  547. package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
  548. package/lib/commonjs/helpers/pickImageAsset.js +0 -68
  549. package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
  550. package/lib/commonjs/helpers/pushPayload.js +0 -71
  551. package/lib/commonjs/helpers/pushPayload.js.map +0 -1
  552. package/lib/commonjs/helpers/secureFileUrl.js +0 -101
  553. package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
  554. package/lib/commonjs/helpers/secureKeyValue.js +0 -83
  555. package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
  556. package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
  557. package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
  558. package/lib/commonjs/helpers/secureUserStorage.js +0 -75
  559. package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
  560. package/lib/commonjs/helpers/shallowEqual.js +0 -36
  561. package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
  562. package/lib/commonjs/helpers/sheetGestures.js +0 -32
  563. package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
  564. package/lib/commonjs/hooks/useFileToken.js +0 -10
  565. package/lib/commonjs/hooks/useFileToken.js.map +0 -1
  566. package/lib/commonjs/networking/authRefresh.js +0 -332
  567. package/lib/commonjs/networking/authRefresh.js.map +0 -1
  568. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
  569. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
  570. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
  571. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
  572. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
  573. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
  574. package/lib/module/helpers/getChatBackground.js +0 -18
  575. package/lib/module/helpers/getChatBackground.js.map +0 -1
  576. package/lib/module/helpers/getDisplayFileName.js +0 -73
  577. package/lib/module/helpers/getDisplayFileName.js.map +0 -1
  578. package/lib/module/helpers/getServerReadTimestamp.js +0 -181
  579. package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
  580. package/lib/module/helpers/isOwnMessage.js +0 -70
  581. package/lib/module/helpers/isOwnMessage.js.map +0 -1
  582. package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
  583. package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
  584. package/lib/module/helpers/msgSortableMs.js +0 -32
  585. package/lib/module/helpers/msgSortableMs.js.map +0 -1
  586. package/lib/module/helpers/persistCrypto.js +0 -115
  587. package/lib/module/helpers/persistCrypto.js.map +0 -1
  588. package/lib/module/helpers/pickImageAsset.js +0 -63
  589. package/lib/module/helpers/pickImageAsset.js.map +0 -1
  590. package/lib/module/helpers/pushPayload.js +0 -63
  591. package/lib/module/helpers/pushPayload.js.map +0 -1
  592. package/lib/module/helpers/secureFileUrl.js +0 -91
  593. package/lib/module/helpers/secureFileUrl.js.map +0 -1
  594. package/lib/module/helpers/secureKeyValue.js +0 -75
  595. package/lib/module/helpers/secureKeyValue.js.map +0 -1
  596. package/lib/module/helpers/secureStoreRuntime.js +0 -52
  597. package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
  598. package/lib/module/helpers/secureUserStorage.js +0 -72
  599. package/lib/module/helpers/secureUserStorage.js.map +0 -1
  600. package/lib/module/helpers/shallowEqual.js +0 -31
  601. package/lib/module/helpers/shallowEqual.js.map +0 -1
  602. package/lib/module/helpers/sheetGestures.js +0 -26
  603. package/lib/module/helpers/sheetGestures.js.map +0 -1
  604. package/lib/module/hooks/useFileToken.js +0 -5
  605. package/lib/module/hooks/useFileToken.js.map +0 -1
  606. package/lib/module/networking/authRefresh.js +0 -321
  607. package/lib/module/networking/authRefresh.js.map +0 -1
  608. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
  609. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
  610. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
  611. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
  612. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
  613. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
  614. package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
  615. package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
  616. package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
  617. package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
  618. package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -108
  619. package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
  620. package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
  621. package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
  622. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
  623. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
  624. package/lib/typescript/helpers/msgSortableMs.d.ts +0 -2
  625. package/lib/typescript/helpers/msgSortableMs.d.ts.map +0 -1
  626. package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
  627. package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
  628. package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
  629. package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
  630. package/lib/typescript/helpers/pushPayload.d.ts +0 -7
  631. package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
  632. package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
  633. package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
  634. package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
  635. package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
  636. package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
  637. package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
  638. package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
  639. package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
  640. package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
  641. package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
  642. package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
  643. package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
  644. package/lib/typescript/hooks/useFileToken.d.ts +0 -2
  645. package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
  646. package/lib/typescript/networking/authRefresh.d.ts +0 -95
  647. package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
  648. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
  649. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
  650. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
  651. package/src/helpers/getChatBackground.ts +0 -18
  652. package/src/helpers/getDisplayFileName.ts +0 -87
  653. package/src/helpers/getServerReadTimestamp.ts +0 -197
  654. package/src/helpers/isOwnMessage.ts +0 -90
  655. package/src/helpers/mediaLibraryRuntime.ts +0 -25
  656. package/src/helpers/msgSortableMs.ts +0 -25
  657. package/src/helpers/persistCrypto.ts +0 -127
  658. package/src/helpers/pickImageAsset.ts +0 -68
  659. package/src/helpers/pushPayload.ts +0 -62
  660. package/src/helpers/secureFileUrl.ts +0 -103
  661. package/src/helpers/secureKeyValue.ts +0 -80
  662. package/src/helpers/secureStoreRuntime.ts +0 -62
  663. package/src/helpers/secureUserStorage.ts +0 -80
  664. package/src/helpers/shallowEqual.ts +0 -33
  665. package/src/helpers/sheetGestures.ts +0 -25
  666. package/src/hooks/useFileToken.ts +0 -7
  667. package/src/networking/authRefresh.ts +0 -451
@@ -1,75 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.secureUserStorage = secureUserStorage;
7
- var _useLocalStorage = require("../hooks/useLocalStorage");
8
- var _LOCAL_STORAGE = require("./constants/LOCAL_STORAGE");
9
- var _secureKeyValue = require("./secureKeyValue");
10
- // Keychain (iOS) / Keystore-backed EncryptedSharedPreferences (Android)
11
- // keys for the four live bearer credentials on `User`. Deliberately one
12
- // key per field rather than one JSON blob: expo-secure-store historically
13
- // caps a single value's size on Android, and four short JWTs each stay
14
- // comfortably under that ceiling where one combined blob might not.
15
- const SECRET_KEYS = {
16
- token: 'ethora_auth_token',
17
- refreshToken: 'ethora_auth_refresh_token',
18
- xmppPassword: 'ethora_auth_xmpp_password',
19
- fileToken: 'ethora_auth_file_token'
20
- };
21
- const SECRET_FIELDS = Object.keys(SECRET_KEYS);
22
-
23
- /**
24
- * Persisted-user storage, split across two backends behind the exact
25
- * same `{ get, set, remove }` shape `asyncLocalStorage<User>(...)`
26
- * already exposed — every existing call site swaps in by changing only
27
- * the constructor call, `get()`/`set()`/`remove()` keep returning/taking
28
- * a complete `User`.
29
- *
30
- * The four live credentials (REST access + refresh token, XMPP
31
- * password, secure-media fileToken) never touch plain AsyncStorage:
32
- * they go through `secureGet`/`secureSet`/`secureRemove` (platform
33
- * Keychain/Keystore, falling back to namespaced AsyncStorage only when
34
- * the host hasn't installed the optional `expo-secure-store` peer dep).
35
- * Everything else on `User` — name, avatar, ids, xmppUsername, wallet
36
- * address, none of it a bearer credential — keeps living under the
37
- * existing `ETHORA_USER` AsyncStorage key, unchanged.
38
- */
39
- function secureUserStorage() {
40
- const get = async () => {
41
- const profile = await (0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).get();
42
- if (!profile) {
43
- return null;
44
- }
45
- const secretValues = await Promise.all(SECRET_FIELDS.map(field => (0, _secureKeyValue.secureGet)(SECRET_KEYS[field])));
46
- const merged = {
47
- ...profile
48
- };
49
- SECRET_FIELDS.forEach((field, i) => {
50
- merged[field] = secretValues[i] || '';
51
- });
52
- return merged;
53
- };
54
- const set = async user => {
55
- const profile = {
56
- ...user
57
- };
58
- for (const field of SECRET_FIELDS) {
59
- profile[field] = '';
60
- }
61
- await Promise.all([(0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).set(profile), ...SECRET_FIELDS.map(field => {
62
- const value = user?.[field];
63
- return value ? (0, _secureKeyValue.secureSet)(SECRET_KEYS[field], value) : (0, _secureKeyValue.secureRemove)(SECRET_KEYS[field]);
64
- })]);
65
- };
66
- const remove = async () => {
67
- await Promise.all([(0, _useLocalStorage.asyncLocalStorage)(_LOCAL_STORAGE.localStorageConstants.ETHORA_USER).remove(), ...SECRET_FIELDS.map(field => (0, _secureKeyValue.secureRemove)(SECRET_KEYS[field]))]);
68
- };
69
- return {
70
- get,
71
- set,
72
- remove
73
- };
74
- }
75
- //# sourceMappingURL=secureUserStorage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_useLocalStorage","require","_LOCAL_STORAGE","_secureKeyValue","SECRET_KEYS","token","refreshToken","xmppPassword","fileToken","SECRET_FIELDS","Object","keys","secureUserStorage","get","profile","asyncLocalStorage","localStorageConstants","ETHORA_USER","secretValues","Promise","all","map","field","secureGet","merged","forEach","i","set","user","value","secureSet","secureRemove","remove"],"sourceRoot":"../../../src","sources":["helpers/secureUserStorage.ts"],"mappings":";;;;;;AACA,IAAAA,gBAAA,GAAAC,OAAA;AACA,IAAAC,cAAA,GAAAD,OAAA;AACA,IAAAE,eAAA,GAAAF,OAAA;AAEA;AACA;AACA;AACA;AACA;AACA,MAAMG,WAAW,GAAG;EAClBC,KAAK,EAAE,mBAAmB;EAC1BC,YAAY,EAAE,2BAA2B;EACzCC,YAAY,EAAE,2BAA2B;EACzCC,SAAS,EAAE;AACb,CAAU;AAGV,MAAMC,aAAa,GAAGC,MAAM,CAACC,IAAI,CAACP,WAAW,CAAkB;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASQ,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,GAAG,GAAG,MAAAA,CAAA,KAAkC;IAC5C,MAAMC,OAAO,GAAG,MAAM,IAAAC,kCAAiB,EACrCC,oCAAqB,CAACC,WACxB,CAAC,CAACJ,GAAG,CAAC,CAAC;IACP,IAAI,CAACC,OAAO,EAAE;MAAC,OAAO,IAAI;IAAC;IAE3B,MAAMI,YAAY,GAAG,MAAMC,OAAO,CAACC,GAAG,CACpCX,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK,IAAAC,yBAAS,EAACnB,WAAW,CAACkB,KAAK,CAAC,CAAC,CAC5D,CAAC;IAED,MAAME,MAAY,GAAG;MAAE,GAAGV;IAAQ,CAAC;IACnCL,aAAa,CAACgB,OAAO,CAAC,CAACH,KAAK,EAAEI,CAAC,KAAK;MACjCF,MAAM,CAASF,KAAK,CAAC,GAAGJ,YAAY,CAACQ,CAAC,CAAC,IAAI,EAAE;IAChD,CAAC,CAAC;IACF,OAAOF,MAAM;EACf,CAAC;EAED,MAAMG,GAAG,GAAG,MAAOC,IAAU,IAAoB;IAC/C,MAAMd,OAAY,GAAG;MAAE,GAAGc;IAAK,CAAC;IAChC,KAAK,MAAMN,KAAK,IAAIb,aAAa,EAAE;MACjCK,OAAO,CAACQ,KAAK,CAAC,GAAG,EAAE;IACrB;IAEA,MAAMH,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAL,kCAAiB,EAAOC,oCAAqB,CAACC,WAAW,CAAC,CAACU,GAAG,CAACb,OAAO,CAAC,EACvE,GAAGL,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK;MAC9B,MAAMO,KAAK,GAAGD,IAAI,GAAGN,KAAK,CAAuB;MACjD,OAAOO,KAAK,GACR,IAAAC,yBAAS,EAAC1B,WAAW,CAACkB,KAAK,CAAC,EAAEO,KAAK,CAAC,GACpC,IAAAE,4BAAY,EAAC3B,WAAW,CAACkB,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC,CACH,CAAC;EACJ,CAAC;EAED,MAAMU,MAAM,GAAG,MAAAA,CAAA,KAA2B;IACxC,MAAMb,OAAO,CAACC,GAAG,CAAC,CAChB,IAAAL,kCAAiB,EAACC,oCAAqB,CAACC,WAAW,CAAC,CAACe,MAAM,CAAC,CAAC,EAC7D,GAAGvB,aAAa,CAACY,GAAG,CAAEC,KAAK,IAAK,IAAAS,4BAAY,EAAC3B,WAAW,CAACkB,KAAK,CAAC,CAAC,CAAC,CAClE,CAAC;EACJ,CAAC;EAED,OAAO;IAAET,GAAG;IAAEc,GAAG;IAAEK;EAAO,CAAC;AAC7B","ignoreList":[]}
@@ -1,36 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- exports.shallowEqual = shallowEqual;
8
- /**
9
- * One-level shallow equality for plain objects. Used to avoid re-dispatching
10
- * config into redux on every render just because the host passed a fresh
11
- * object literal with the same values (e.g. `<Chat config={{...}} />`
12
- * re-created inline) — reference equality alone would fire far too often,
13
- * and a deep/JSON comparison risks throwing on non-serializable fields
14
- * (functions, React elements) that configs legitimately carry.
15
- */
16
- function shallowEqual(a, b) {
17
- if (a === b) {
18
- return true;
19
- }
20
- if (typeof a !== 'object' || typeof b !== 'object' || a === null || b === null) {
21
- return false;
22
- }
23
- const aKeys = Object.keys(a);
24
- const bKeys = Object.keys(b);
25
- if (aKeys.length !== bKeys.length) {
26
- return false;
27
- }
28
- for (const key of aKeys) {
29
- if (a[key] !== b[key]) {
30
- return false;
31
- }
32
- }
33
- return true;
34
- }
35
- var _default = exports.default = shallowEqual;
36
- //# sourceMappingURL=shallowEqual.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["shallowEqual","a","b","aKeys","Object","keys","bKeys","length","key","_default","exports","default"],"sourceRoot":"../../../src","sources":["helpers/shallowEqual.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,YAAYA,CAACC,CAAU,EAAEC,CAAU,EAAW;EAC5D,IAAID,CAAC,KAAKC,CAAC,EAAE;IAAC,OAAO,IAAI;EAAC;EAC1B,IACE,OAAOD,CAAC,KAAK,QAAQ,IACrB,OAAOC,CAAC,KAAK,QAAQ,IACrBD,CAAC,KAAK,IAAI,IACVC,CAAC,KAAK,IAAI,EACV;IACA,OAAO,KAAK;EACd;EACA,MAAMC,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACJ,CAA4B,CAAC;EACvD,MAAMK,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACH,CAA4B,CAAC;EACvD,IAAIC,KAAK,CAACI,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE;IAAC,OAAO,KAAK;EAAC;EACjD,KAAK,MAAMC,GAAG,IAAIL,KAAK,EAAE;IACvB,IACGF,CAAC,CAA6BO,GAAG,CAAC,KAClCN,CAAC,CAA6BM,GAAG,CAAC,EACnC;MACA,OAAO,KAAK;IACd;EACF;EACA,OAAO,IAAI;AACb;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEcX,YAAY","ignoreList":[]}
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.shouldDismissOnDrag = exports.shouldClaimVerticalDrag = exports.DISMISS_VELOCITY = exports.DISMISS_DISTANCE = void 0;
7
- /** @format */
8
-
9
- /**
10
- * Shared thresholds for the drag-to-dismiss gesture on bottom sheets (the
11
- * attach sheet, the profile headers, the room-list menu). Kept in one
12
- * place so a pull feels identical wherever the user does it — and so the
13
- * numbers are unit-testable without a touch event.
14
- */
15
-
16
- /** Drag past this many points and letting go dismisses the sheet. */
17
- const DISMISS_DISTANCE = exports.DISMISS_DISTANCE = 90;
18
- /** …or flick faster than this, however short the drag. */
19
- const DISMISS_VELOCITY = exports.DISMISS_VELOCITY = 0.8;
20
-
21
- /**
22
- * Claim a drag only once it is clearly a downward pull, so a tap on a row
23
- * still registers and a horizontal swipe stays with whatever scrolls
24
- * sideways inside the sheet.
25
- */
26
- const shouldClaimVerticalDrag = (dy, dx) => dy > 6 && Math.abs(dy) > Math.abs(dx) * 1.5;
27
-
28
- /** Far enough / fast enough to let go of the sheet. */
29
- exports.shouldClaimVerticalDrag = shouldClaimVerticalDrag;
30
- const shouldDismissOnDrag = (dy, vy) => dy > DISMISS_DISTANCE || vy > DISMISS_VELOCITY;
31
- exports.shouldDismissOnDrag = shouldDismissOnDrag;
32
- //# sourceMappingURL=sheetGestures.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DISMISS_DISTANCE","exports","DISMISS_VELOCITY","shouldClaimVerticalDrag","dy","dx","Math","abs","shouldDismissOnDrag","vy"],"sourceRoot":"../../../src","sources":["helpers/sheetGestures.ts"],"mappings":";;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACO,MAAMA,gBAAgB,GAAAC,OAAA,CAAAD,gBAAA,GAAG,EAAE;AAClC;AACO,MAAME,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,GAAG,GAAG;;AAEnC;AACA;AACA;AACA;AACA;AACO,MAAMC,uBAAuB,GAAGA,CAACC,EAAU,EAAEC,EAAU,KAC5DD,EAAE,GAAG,CAAC,IAAIE,IAAI,CAACC,GAAG,CAACH,EAAE,CAAC,GAAGE,IAAI,CAACC,GAAG,CAACF,EAAE,CAAC,GAAG,GAAG;;AAE7C;AAAAJ,OAAA,CAAAE,uBAAA,GAAAA,uBAAA;AACO,MAAMK,mBAAmB,GAAGA,CAACJ,EAAU,EAAEK,EAAU,KACxDL,EAAE,GAAGJ,gBAAgB,IAAIS,EAAE,GAAGP,gBAAgB;AAACD,OAAA,CAAAO,mBAAA,GAAAA,mBAAA","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useFileToken = void 0;
7
- var _reactRedux = require("react-redux");
8
- const useFileToken = () => (0, _reactRedux.useSelector)(state => state.chatSettingStore.user?.fileToken || '');
9
- exports.useFileToken = useFileToken;
10
- //# sourceMappingURL=useFileToken.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactRedux","require","useFileToken","useSelector","state","chatSettingStore","user","fileToken","exports"],"sourceRoot":"../../../src","sources":["hooks/useFileToken.ts"],"mappings":";;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAGO,MAAMC,YAAY,GAAGA,CAAA,KAC1B,IAAAC,uBAAW,EACRC,KAAgB,IAAKA,KAAK,CAACC,gBAAgB,CAACC,IAAI,EAAEC,SAAS,IAAI,EAClE,CAAC;AAACC,OAAA,CAAAN,YAAA,GAAAA,YAAA","ignoreList":[]}
@@ -1,332 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.RefreshFatalError = void 0;
7
- exports.__resetAuthRefreshStateForTests = __resetAuthRefreshStateForTests;
8
- exports.parseRefreshErrorCode = exports.isRefreshFatalError = void 0;
9
- exports.refreshAuthTokens = refreshAuthTokens;
10
- exports.refreshAuthTokensQuietly = refreshAuthTokensQuietly;
11
- var _apiClient = _interopRequireDefault(require("./apiClient"));
12
- var _roomStore = require("../roomStore");
13
- var _chatSettingsSlice = require("../roomStore/chatSettingsSlice");
14
- var _secureUserStorage = require("../helpers/secureUserStorage");
15
- var _devLogger = require("../utils/devLogger");
16
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
17
- /**
18
- * THE single refresh-token rotation point for the SDK.
19
- *
20
- * The backend now runs refresh-token ROTATION with REUSE DETECTION:
21
- * every successful `/users/login/refresh` burns the presented refresh
22
- * token and issues a new one. Presenting an already-rotated token is
23
- * indistinguishable, server-side, from a stolen token — so it is
24
- * treated as theft and (once the backend leaves monitor mode and
25
- * enables enforcing mode) kills the whole token family.
26
- *
27
- * That puts three hard obligations on the client:
28
- *
29
- * 1. Persist the NEW refreshToken from every response, immediately,
30
- * before any other logic can throw and drop it on the floor.
31
- * 2. Never rotate concurrently. Two parallel refreshes both start
32
- * from the same token; the loser presents a burned one and looks
33
- * like an attacker. React Native is single-process, so a shared
34
- * in-flight promise is the whole lock — no Web Locks needed (the
35
- * web build of this component does need them, see its own
36
- * `authRefresh.ts`).
37
- * 3. Route EVERY refresh path through here. One "side" refresh
38
- * elsewhere in the codebase breaks the scheme for everyone.
39
- *
40
- * Callers must also stop treating 401 as "log out". Two of the four
41
- * refresh error codes are race signals, not auth failures — see
42
- * `RefreshErrorCode` below and `RefreshFatalError`.
43
- */
44
-
45
- /**
46
- * Thrown when the session is genuinely dead and the caller must do a
47
- * hard logout (clear storage, drop XMPP, send the user to login).
48
- *
49
- * Anything else this module rejects with — network errors, 5xx, an
50
- * unrecognised 401 — is NOT fatal and must NOT trigger a logout.
51
- */
52
- class RefreshFatalError extends Error {
53
- constructor(code, message) {
54
- super(message || `Refresh failed: ${code}`);
55
- this.name = 'RefreshFatalError';
56
- this.code = code;
57
- // Required for `instanceof` to survive TS's ES5 class-extends-builtin
58
- // downlevelling, which RN's babel preset still applies.
59
- Object.setPrototypeOf(this, RefreshFatalError.prototype);
60
- }
61
- }
62
- exports.RefreshFatalError = RefreshFatalError;
63
- const isRefreshFatalError = error => error instanceof RefreshFatalError || error?.name === 'RefreshFatalError';
64
- exports.isRefreshFatalError = isRefreshFatalError;
65
- const REFRESH_ENDPOINT = '/v1/users/login/refresh';
66
-
67
- /** `REFRESH_IN_PROGRESS` retry budget, per backend guidance (~300ms x 2-3). */
68
- const IN_PROGRESS_MAX_ATTEMPTS = 3;
69
- const IN_PROGRESS_BASE_DELAY_MS = 300;
70
- /**
71
- * Jitter matters: after a network blip every client in the app retries
72
- * on the same schedule and would hammer the rotation mutex in lockstep.
73
- */
74
- const IN_PROGRESS_JITTER_MS = 150;
75
- const KNOWN_CODES = ['REFRESH_IN_PROGRESS', 'REFRESH_TOKEN_ALREADY_ROTATED', 'REFRESH_TOKEN_REUSE_DETECTED', 'REFRESH_TOKEN_NOT_FOUND'];
76
- const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
77
- const inProgressDelay = attempt => IN_PROGRESS_BASE_DELAY_MS * attempt + Math.floor(Math.random() * IN_PROGRESS_JITTER_MS);
78
-
79
- /**
80
- * All four codes come back as HTTP 401, so the status alone tells us
81
- * nothing — the code in the body is the only signal.
82
- *
83
- * TODO(backend-confirm): the exact location of `code` in the payload is
84
- * not documented yet. Until it is, probe every shape the API uses
85
- * elsewhere and take the first hit. Once confirmed, collapse this to
86
- * the single real path.
87
- */
88
- const parseRefreshErrorCode = error => {
89
- const response = error?.response;
90
- if (!response) {
91
- return null;
92
- }
93
- const data = response.data;
94
- const candidates = [data?.code, data?.error?.code, data?.errors?.[0]?.code, data?.error, data?.message, response.headers?.['x-error-code']];
95
- for (const candidate of candidates) {
96
- if (typeof candidate !== 'string') {
97
- continue;
98
- }
99
- const match = KNOWN_CODES.find(code => candidate.includes(code));
100
- if (match) {
101
- return match;
102
- }
103
- }
104
- return null;
105
- };
106
- exports.parseRefreshErrorCode = parseRefreshErrorCode;
107
- const getStoreUser = () => _roomStore.store.getState().chatSettingStore?.user || {};
108
-
109
- /**
110
- * The refresh token as of RIGHT NOW. Read at the moment of use, never
111
- * captured ahead of time — that is the single-process equivalent of the
112
- * web build's "re-read inside the lock".
113
- *
114
- * Redux is the source of truth in RN (one process, one store);
115
- * AsyncStorage is only consulted as a cold-start fallback, before
116
- * `resolveInitBeforeLoadUser` has hydrated the store.
117
- */
118
- const readCurrentRefreshToken = async () => {
119
- const fromStore = getStoreUser().refreshToken;
120
- if (fromStore) {
121
- return fromStore;
122
- }
123
- const stored = await (0, _secureUserStorage.secureUserStorage)().get();
124
- return stored?.refreshToken || '';
125
- };
126
-
127
- /**
128
- * Persist BEFORE resolving. The dispatch updates redux (and, until
129
- * phase 6 lands, fires its own best-effort AsyncStorage write); the
130
- * awaited write below is the one that actually guarantees the rotated
131
- * token survives the app being killed a moment later. Losing it means
132
- * the next launch presents a burned token — i.e. looks like theft.
133
- */
134
- const persistTokens = async result => {
135
- _roomStore.store.dispatch((0, _chatSettingsSlice.refreshTokens)({
136
- token: result.token,
137
- refreshToken: result.refreshToken,
138
- xmppPassword: result.xmppPassword,
139
- fileToken: result.fileToken
140
- }));
141
- try {
142
- // Write the post-dispatch snapshot rather than a read-modify-write
143
- // merge, so this can't race the reducer's own write back to a
144
- // stale copy of the surrounding user fields.
145
- await (0, _secureUserStorage.secureUserStorage)().set(_roomStore.store.getState().chatSettingStore.user);
146
- } catch (error) {
147
- (0, _devLogger.pushLog)('warn', 'authRefresh: failed to persist rotated tokens', error);
148
- }
149
- };
150
-
151
- /**
152
- * A rotation that happened somewhere we didn't drive — currently only
153
- * reachable via the ALREADY_ROTATED recovery path, kept separate so the
154
- * web build and this one stay structurally identical.
155
- */
156
- const adoptStoredTokens = async () => {
157
- const stored = await (0, _secureUserStorage.secureUserStorage)().get();
158
- if (!stored?.refreshToken || !stored?.token) {
159
- return null;
160
- }
161
- const user = getStoreUser();
162
- if (user.refreshToken !== stored.refreshToken) {
163
- _roomStore.store.dispatch((0, _chatSettingsSlice.refreshTokens)({
164
- token: stored.token,
165
- refreshToken: stored.refreshToken
166
- }));
167
- }
168
- return {
169
- token: stored.token,
170
- refreshToken: stored.refreshToken,
171
- xmppPassword: stored.xmppPassword,
172
- fileToken: stored.fileToken
173
- };
174
- };
175
-
176
- /** Host-supplied rotation, mirrors `IConfig['refreshTokens']['refreshFunction']`. */
177
-
178
- const runConsumerRefresh = async refreshFunction => {
179
- const refreshed = await refreshFunction();
180
- if (!refreshed?.accessToken) {
181
- throw new Error('Custom refresh function did not return an access token');
182
- }
183
- if (!refreshed.refreshToken) {
184
- // Not fatal — some hosts still run non-rotating backends — but on a
185
- // rotating one this silently keeps a burned token around, which is
186
- // exactly the failure the new scheme punishes.
187
- (0, _devLogger.pushLog)('warn', 'authRefresh: custom refreshFunction returned no refreshToken; ' + 'keeping the existing one. On a rotating backend this will be ' + 'seen as token reuse.');
188
- }
189
- const result = {
190
- token: refreshed.accessToken,
191
- refreshToken: refreshed.refreshToken || (await readCurrentRefreshToken()) || '',
192
- xmppPassword: refreshed.xmppPassword,
193
- fileToken: refreshed.fileToken
194
- };
195
- await persistTokens(result);
196
- return result;
197
- };
198
- const requestRotation = async refreshToken => {
199
- const response = await _apiClient.default.post(REFRESH_ENDPOINT, {}, {
200
- headers: {
201
- Authorization: refreshToken
202
- }
203
- });
204
- const result = {
205
- token: response?.data?.token || '',
206
- refreshToken: response?.data?.refreshToken || '',
207
- wsToken: response?.data?.wsToken,
208
- xmppPassword: response?.data?.xmppPassword,
209
- fileToken: response?.data?.fileToken
210
- };
211
- if (!result.token || !result.refreshToken) {
212
- throw new Error('Refresh response did not contain both tokens');
213
- }
214
-
215
- // Persist first, resolve second. Every early return between here and
216
- // the caller is a chance to lose the rotation.
217
- await persistTokens(result);
218
- return result;
219
- };
220
- const performRefresh = async overrideToken => {
221
- const consumerRefresh = _roomStore.store.getState().chatSettingStore?.config?.refreshTokens?.refreshFunction;
222
- if (consumerRefresh) {
223
- // A configured host function wins unconditionally — including over
224
- // an explicit bootstrap token. Hosts that embed this SDK often own
225
- // the Ethora refresh token themselves (their own storage, their own
226
- // rotation) and only hand us a copy; rotating it here would burn
227
- // THEIR token behind their back and leave them holding a dead one.
228
- //
229
- // It still has to be serialised — it hits the same backend mutex —
230
- // hence running it inside the shared in-flight promise.
231
- return runConsumerRefresh(consumerRefresh);
232
- }
233
- for (let attempt = 1; attempt <= IN_PROGRESS_MAX_ATTEMPTS; attempt++) {
234
- const refreshToken = overrideToken || (await readCurrentRefreshToken());
235
- if (!refreshToken) {
236
- // Deliberately NOT fatal: a missing token mid-bootstrap must not
237
- // nuke a session that is still being hydrated.
238
- throw new Error('Refresh token is missing');
239
- }
240
- try {
241
- return await requestRotation(refreshToken);
242
- } catch (error) {
243
- const code = parseRefreshErrorCode(error);
244
- if (code === 'REFRESH_IN_PROGRESS') {
245
- if (attempt < IN_PROGRESS_MAX_ATTEMPTS) {
246
- await sleep(inProgressDelay(attempt));
247
- continue;
248
- }
249
- // Budget spent. Whoever holds the mutex has very likely
250
- // finished and written a newer token — take it if so. Skipped
251
- // for an explicit token: it may belong to a different session
252
- // than whatever is currently in storage.
253
- const adopted = overrideToken ? null : await adoptStoredTokens();
254
- if (adopted && adopted.refreshToken !== refreshToken) {
255
- return adopted;
256
- }
257
- throw error;
258
- }
259
- if (code === 'REFRESH_TOKEN_ALREADY_ROTATED') {
260
- // Our copy is stale. If something already wrote a newer token,
261
- // this is a benign race — use it. Otherwise the session really
262
- // is unrecoverable.
263
- const adopted = overrideToken ? null : await adoptStoredTokens();
264
- if (adopted && adopted.refreshToken !== refreshToken) {
265
- return adopted;
266
- }
267
- throw new RefreshFatalError(code);
268
- }
269
- if (code === 'REFRESH_TOKEN_REUSE_DETECTED' || code === 'REFRESH_TOKEN_NOT_FOUND') {
270
- throw new RefreshFatalError(code);
271
- }
272
-
273
- // Network error, 5xx, plain 401 without a code — pass through
274
- // untouched. The caller must not log out on these.
275
- throw error;
276
- }
277
- }
278
-
279
- // Unreachable: the loop either returns or throws.
280
- throw new Error('Refresh attempts exhausted');
281
- };
282
- let inflight = null;
283
- let lastRotationAt = 0;
284
- const QUIET_ROTATION_MIN_INTERVAL_MS = 5 * 60 * 1000;
285
-
286
- /**
287
- * Rotate the tokens. Concurrent callers share ONE request — this is the
288
- * lock the new backend scheme requires.
289
- *
290
- * Rejects with `RefreshFatalError` when the session is dead (caller
291
- * should hard-logout) and with a plain error otherwise (caller should
292
- * surface the failure and leave the session alone).
293
- */
294
- function refreshAuthTokens(options) {
295
- if (inflight) {
296
- // Whatever that rotation produces is at least as fresh as anything
297
- // this caller could have asked for.
298
- return inflight;
299
- }
300
- inflight = performRefresh(options?.refreshToken).then(result => {
301
- lastRotationAt = Date.now();
302
- return result;
303
- }).finally(() => {
304
- inflight = null;
305
- });
306
- return inflight;
307
- }
308
-
309
- /**
310
- * Fire-and-forget variant for call sites that only want "make sure the
311
- * tokens are fresh" and have no meaningful error handling — chat
312
- * bootstrap, XMPP reconnect. Never rejects.
313
- */
314
-
315
- async function refreshAuthTokensQuietly(options) {
316
- if (!options?.force && Date.now() - lastRotationAt < QUIET_ROTATION_MIN_INTERVAL_MS) {
317
- return null;
318
- }
319
- try {
320
- return await refreshAuthTokens();
321
- } catch (error) {
322
- (0, _devLogger.pushLog)(isRefreshFatalError(error) ? 'error' : 'warn', 'authRefresh: background refresh failed', error);
323
- return null;
324
- }
325
- }
326
-
327
- /** Test seam — drops any shared in-flight promise between cases. */
328
- function __resetAuthRefreshStateForTests() {
329
- inflight = null;
330
- lastRotationAt = 0;
331
- }
332
- //# sourceMappingURL=authRefresh.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_apiClient","_interopRequireDefault","require","_roomStore","_chatSettingsSlice","_secureUserStorage","_devLogger","e","__esModule","default","RefreshFatalError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","exports","isRefreshFatalError","error","REFRESH_ENDPOINT","IN_PROGRESS_MAX_ATTEMPTS","IN_PROGRESS_BASE_DELAY_MS","IN_PROGRESS_JITTER_MS","KNOWN_CODES","sleep","ms","Promise","resolve","setTimeout","inProgressDelay","attempt","Math","floor","random","parseRefreshErrorCode","response","data","candidates","errors","headers","candidate","match","find","includes","getStoreUser","store","getState","chatSettingStore","user","readCurrentRefreshToken","fromStore","refreshToken","stored","secureUserStorage","get","persistTokens","result","dispatch","refreshTokens","token","xmppPassword","fileToken","set","pushLog","adoptStoredTokens","runConsumerRefresh","refreshFunction","refreshed","accessToken","requestRotation","http","post","Authorization","wsToken","performRefresh","overrideToken","consumerRefresh","config","adopted","inflight","lastRotationAt","QUIET_ROTATION_MIN_INTERVAL_MS","refreshAuthTokens","options","then","Date","now","finally","refreshAuthTokensQuietly","force","__resetAuthRefreshStateForTests"],"sourceRoot":"../../../src","sources":["networking/authRefresh.ts"],"mappings":"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","ignoreList":[]}