@ethora/chat-component-rn 26.7.5 → 26.7.7

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 (340) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +31 -8
  3. package/lib/commonjs/assets/icons.js +7 -2
  4. package/lib/commonjs/assets/icons.js.map +1 -1
  5. package/lib/commonjs/components/Header/HeaderRoomList.js +26 -7
  6. package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
  7. package/lib/commonjs/components/MainComponents/ChatHeader.js +5 -2
  8. package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
  9. package/lib/commonjs/components/MainComponents/ChatRoom.js +36 -14
  10. package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
  11. package/lib/commonjs/components/MainComponents/ChatWrapper.js +2 -0
  12. package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
  13. package/lib/commonjs/components/MainComponents/MessageList.js +7 -23
  14. package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
  15. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +14 -13
  16. package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  17. package/lib/commonjs/components/MainComponents/RoomList.js +208 -35
  18. package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
  19. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +317 -98
  20. package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
  21. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +320 -110
  22. package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  23. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +552 -213
  24. package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  25. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +226 -0
  26. package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
  27. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +6 -2
  28. package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  29. package/lib/commonjs/components/Modals/Modal/Modal.js +8 -0
  30. package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
  31. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
  32. package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  33. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +202 -104
  34. package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  35. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  36. package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  37. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +556 -0
  38. package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
  39. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +210 -0
  40. package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
  41. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
  42. package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  43. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
  44. package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  45. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +507 -244
  46. package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  47. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +74 -46
  48. package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  49. package/lib/commonjs/components/Modals/styledModalComponents.js +9 -2
  50. package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
  51. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +17 -7
  52. package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
  53. package/lib/commonjs/components/styled/SendInput.js +80 -11
  54. package/lib/commonjs/components/styled/SendInput.js.map +1 -1
  55. package/lib/commonjs/components/styled/StyledComponents.js +9 -3
  56. package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
  57. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
  58. package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  59. package/lib/commonjs/context/xmppProvider.js +32 -39
  60. package/lib/commonjs/context/xmppProvider.js.map +1 -1
  61. package/lib/commonjs/helpers/getChatBackground.js +23 -0
  62. package/lib/commonjs/helpers/getChatBackground.js.map +1 -0
  63. package/lib/commonjs/helpers/mediaLibraryRuntime.js +31 -0
  64. package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +1 -0
  65. package/lib/commonjs/helpers/pickImageAsset.js +68 -0
  66. package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
  67. package/lib/commonjs/helpers/pushPayload.js +71 -0
  68. package/lib/commonjs/helpers/pushPayload.js.map +1 -0
  69. package/lib/commonjs/helpers/sheetGestures.js +32 -0
  70. package/lib/commonjs/helpers/sheetGestures.js.map +1 -0
  71. package/lib/commonjs/helpers/updateMessagesTillLast.js +12 -40
  72. package/lib/commonjs/helpers/updateMessagesTillLast.js.map +1 -1
  73. package/lib/commonjs/hooks/useChatRoomFocus.js +3 -9
  74. package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
  75. package/lib/commonjs/hooks/useLogout.js +0 -5
  76. package/lib/commonjs/hooks/useLogout.js.map +1 -1
  77. package/lib/commonjs/hooks/usePendingNotification.js +8 -11
  78. package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
  79. package/lib/commonjs/hooks/useSendMessage.js +23 -50
  80. package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
  81. package/lib/commonjs/i18n/strings.js +121 -1
  82. package/lib/commonjs/i18n/strings.js.map +1 -1
  83. package/lib/commonjs/main.js +19 -0
  84. package/lib/commonjs/main.js.map +1 -1
  85. package/lib/commonjs/networking/api-requests/user.api.js +59 -0
  86. package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
  87. package/lib/commonjs/networking/authRefresh.js +12 -2
  88. package/lib/commonjs/networking/authRefresh.js.map +1 -1
  89. package/lib/commonjs/networking/outboundQueue.js +0 -18
  90. package/lib/commonjs/networking/outboundQueue.js.map +1 -1
  91. package/lib/commonjs/networking/stanzaHandlers.js +1 -10
  92. package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
  93. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +8 -1
  94. package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  95. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
  96. package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  97. package/lib/commonjs/networking/xmppClient.js +62 -108
  98. package/lib/commonjs/networking/xmppClient.js.map +1 -1
  99. package/lib/commonjs/roomStore/chatSettingsSlice.js +3 -1
  100. package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
  101. package/lib/commonjs/roomStore/roomsSlice.js +3 -22
  102. package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
  103. package/lib/commonjs/services/pushSubscriptionService.js +15 -13
  104. package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
  105. package/lib/module/assets/icons.js +6 -1
  106. package/lib/module/assets/icons.js.map +1 -1
  107. package/lib/module/components/Header/HeaderRoomList.js +26 -7
  108. package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
  109. package/lib/module/components/MainComponents/ChatHeader.js +5 -2
  110. package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
  111. package/lib/module/components/MainComponents/ChatRoom.js +36 -14
  112. package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
  113. package/lib/module/components/MainComponents/ChatWrapper.js +2 -0
  114. package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
  115. package/lib/module/components/MainComponents/MessageList.js +8 -24
  116. package/lib/module/components/MainComponents/MessageList.js.map +1 -1
  117. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +14 -13
  118. package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
  119. package/lib/module/components/MainComponents/RoomList.js +207 -35
  120. package/lib/module/components/MainComponents/RoomList.js.map +1 -1
  121. package/lib/module/components/Menu/HeaderRoomListMenu.js +319 -101
  122. package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
  123. package/lib/module/components/Modals/AttachSheet/AttachSheet.js +311 -113
  124. package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
  125. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +555 -217
  126. package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
  127. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +223 -0
  128. package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
  129. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +6 -2
  130. package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
  131. package/lib/module/components/Modals/Modal/Modal.js +9 -1
  132. package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
  133. package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
  134. package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
  135. package/lib/module/components/Modals/NewChatModal/NewChatModal.js +205 -106
  136. package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
  137. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
  138. package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
  139. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +548 -0
  140. package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
  141. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +205 -0
  142. package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
  143. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
  144. package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
  145. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
  146. package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
  147. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +509 -248
  148. package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
  149. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +76 -48
  150. package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
  151. package/lib/module/components/Modals/styledModalComponents.js +9 -2
  152. package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
  153. package/lib/module/components/RoomComponents/ChatRoomItem.js +17 -7
  154. package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
  155. package/lib/module/components/styled/SendInput.js +81 -12
  156. package/lib/module/components/styled/SendInput.js.map +1 -1
  157. package/lib/module/components/styled/StyledComponents.js +9 -3
  158. package/lib/module/components/styled/StyledComponents.js.map +1 -1
  159. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
  160. package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
  161. package/lib/module/context/xmppProvider.js +32 -39
  162. package/lib/module/context/xmppProvider.js.map +1 -1
  163. package/lib/module/helpers/getChatBackground.js +18 -0
  164. package/lib/module/helpers/getChatBackground.js.map +1 -0
  165. package/lib/module/helpers/mediaLibraryRuntime.js +25 -0
  166. package/lib/module/helpers/mediaLibraryRuntime.js.map +1 -0
  167. package/lib/module/helpers/pickImageAsset.js +63 -0
  168. package/lib/module/helpers/pickImageAsset.js.map +1 -0
  169. package/lib/module/helpers/pushPayload.js +63 -0
  170. package/lib/module/helpers/pushPayload.js.map +1 -0
  171. package/lib/module/helpers/sheetGestures.js +26 -0
  172. package/lib/module/helpers/sheetGestures.js.map +1 -0
  173. package/lib/module/helpers/updateMessagesTillLast.js +13 -41
  174. package/lib/module/helpers/updateMessagesTillLast.js.map +1 -1
  175. package/lib/module/hooks/useChatRoomFocus.js +3 -9
  176. package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
  177. package/lib/module/hooks/useLogout.js +0 -5
  178. package/lib/module/hooks/useLogout.js.map +1 -1
  179. package/lib/module/hooks/usePendingNotification.js +8 -11
  180. package/lib/module/hooks/usePendingNotification.js.map +1 -1
  181. package/lib/module/hooks/useSendMessage.js +24 -51
  182. package/lib/module/hooks/useSendMessage.js.map +1 -1
  183. package/lib/module/i18n/strings.js +121 -1
  184. package/lib/module/i18n/strings.js.map +1 -1
  185. package/lib/module/main.js +2 -1
  186. package/lib/module/main.js.map +1 -1
  187. package/lib/module/networking/api-requests/user.api.js +56 -0
  188. package/lib/module/networking/api-requests/user.api.js.map +1 -1
  189. package/lib/module/networking/authRefresh.js +12 -2
  190. package/lib/module/networking/authRefresh.js.map +1 -1
  191. package/lib/module/networking/outboundQueue.js +0 -17
  192. package/lib/module/networking/outboundQueue.js.map +1 -1
  193. package/lib/module/networking/stanzaHandlers.js +1 -10
  194. package/lib/module/networking/stanzaHandlers.js.map +1 -1
  195. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +8 -1
  196. package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
  197. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
  198. package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
  199. package/lib/module/networking/xmppClient.js +62 -108
  200. package/lib/module/networking/xmppClient.js.map +1 -1
  201. package/lib/module/roomStore/chatSettingsSlice.js +3 -1
  202. package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
  203. package/lib/module/roomStore/roomsSlice.js +2 -20
  204. package/lib/module/roomStore/roomsSlice.js.map +1 -1
  205. package/lib/module/services/pushSubscriptionService.js +15 -13
  206. package/lib/module/services/pushSubscriptionService.js.map +1 -1
  207. package/lib/typescript/assets/icons.d.ts +16 -0
  208. package/lib/typescript/assets/icons.d.ts.map +1 -1
  209. package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
  210. package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
  211. package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
  212. package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
  213. package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
  214. package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
  215. package/lib/typescript/components/MainComponents/RoomList.d.ts +7 -0
  216. package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
  217. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
  218. package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
  219. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +9 -0
  220. package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
  221. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +10 -0
  222. package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
  223. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +9 -0
  224. package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -0
  225. package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
  226. package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
  227. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +4 -2
  228. package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
  229. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
  230. package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
  231. package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
  232. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +75 -0
  233. package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -0
  234. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +25 -0
  235. package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -0
  236. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +6 -1
  237. package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
  238. package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
  239. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +16 -0
  240. package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
  241. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +1 -0
  242. package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
  243. package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
  244. package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
  245. package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
  246. package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
  247. package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
  248. package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
  249. package/lib/typescript/helpers/getChatBackground.d.ts +15 -0
  250. package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -0
  251. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +3 -0
  252. package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +1 -0
  253. package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
  254. package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
  255. package/lib/typescript/helpers/pushPayload.d.ts +7 -0
  256. package/lib/typescript/helpers/pushPayload.d.ts.map +1 -0
  257. package/lib/typescript/helpers/sheetGestures.d.ts +20 -0
  258. package/lib/typescript/helpers/sheetGestures.d.ts.map +1 -0
  259. package/lib/typescript/helpers/updateMessagesTillLast.d.ts.map +1 -1
  260. package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
  261. package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
  262. package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
  263. package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
  264. package/lib/typescript/i18n/strings.d.ts.map +1 -1
  265. package/lib/typescript/main.d.ts +3 -1
  266. package/lib/typescript/main.d.ts.map +1 -1
  267. package/lib/typescript/networking/api-requests/user.api.d.ts +27 -0
  268. package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
  269. package/lib/typescript/networking/authRefresh.d.ts +4 -1
  270. package/lib/typescript/networking/authRefresh.d.ts.map +1 -1
  271. package/lib/typescript/networking/outboundQueue.d.ts +0 -16
  272. package/lib/typescript/networking/outboundQueue.d.ts.map +1 -1
  273. package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
  274. package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
  275. package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
  276. package/lib/typescript/networking/xmppClient.d.ts +8 -33
  277. package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
  278. package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
  279. package/lib/typescript/roomStore/roomsSlice.d.ts +1 -18
  280. package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
  281. package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
  282. package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
  283. package/lib/typescript/types/models/room.model.d.ts +0 -15
  284. package/lib/typescript/types/models/room.model.d.ts.map +1 -1
  285. package/lib/typescript/types/types.d.ts +31 -20
  286. package/lib/typescript/types/types.d.ts.map +1 -1
  287. package/package.json +6 -1
  288. package/src/assets/icons.tsx +48 -9
  289. package/src/components/Header/HeaderRoomList.tsx +24 -6
  290. package/src/components/MainComponents/ChatHeader.tsx +5 -2
  291. package/src/components/MainComponents/ChatRoom.tsx +38 -20
  292. package/src/components/MainComponents/ChatWrapper.tsx +3 -0
  293. package/src/components/MainComponents/MessageList.tsx +8 -24
  294. package/src/components/MainComponents/ProfileImagePlaceholder.tsx +21 -14
  295. package/src/components/MainComponents/RoomList.tsx +236 -39
  296. package/src/components/Menu/HeaderRoomListMenu.tsx +328 -75
  297. package/src/components/Modals/AttachSheet/AttachSheet.tsx +331 -97
  298. package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +598 -279
  299. package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +244 -0
  300. package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +4 -2
  301. package/src/components/Modals/Modal/Modal.tsx +7 -0
  302. package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
  303. package/src/components/Modals/NewChatModal/NewChatModal.tsx +219 -117
  304. package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
  305. package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +615 -0
  306. package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +217 -0
  307. package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +14 -4
  308. package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
  309. package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +617 -307
  310. package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +75 -58
  311. package/src/components/Modals/styledModalComponents.tsx +9 -2
  312. package/src/components/RoomComponents/ChatRoomItem.tsx +14 -7
  313. package/src/components/styled/SendInput.tsx +83 -12
  314. package/src/components/styled/StyledComponents.ts +9 -3
  315. package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +11 -4
  316. package/src/context/xmppProvider.tsx +36 -47
  317. package/src/helpers/getChatBackground.ts +18 -0
  318. package/src/helpers/mediaLibraryRuntime.ts +25 -0
  319. package/src/helpers/pickImageAsset.ts +68 -0
  320. package/src/helpers/pushPayload.ts +62 -0
  321. package/src/helpers/sheetGestures.ts +25 -0
  322. package/src/helpers/updateMessagesTillLast.tsx +17 -42
  323. package/src/hooks/useChatRoomFocus.ts +3 -11
  324. package/src/hooks/useLogout.tsx +0 -7
  325. package/src/hooks/usePendingNotification.ts +5 -11
  326. package/src/hooks/useSendMessage.tsx +24 -60
  327. package/src/i18n/strings.ts +121 -1
  328. package/src/main.ts +4 -1
  329. package/src/networking/api-requests/user.api.ts +71 -0
  330. package/src/networking/authRefresh.ts +25 -4
  331. package/src/networking/outboundQueue.ts +0 -29
  332. package/src/networking/stanzaHandlers.ts +1 -9
  333. package/src/networking/xmpp/presenceInRoom.xmpp.ts +6 -1
  334. package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +12 -1
  335. package/src/networking/xmppClient.ts +65 -119
  336. package/src/roomStore/chatSettingsSlice.ts +3 -1
  337. package/src/roomStore/roomsSlice.ts +2 -20
  338. package/src/services/pushSubscriptionService.ts +18 -13
  339. package/src/types/models/room.model.ts +0 -15
  340. package/src/types/types.ts +33 -20
@@ -211,13 +211,6 @@ export class XmppClient {
211
211
  this.devServer = xmppSettings?.devServer;
212
212
  }
213
213
  this.disableLastRead = this.xmppSettings?.disableLastRead === true;
214
- // `xmppPingOnSendEnabled` was declared in the public settings type but
215
- // never read. It now controls the SEND-path liveness probe only; the
216
- // periodic watchdog and the NetInfo check always run, so turning this
217
- // off cannot leave a zombie socket undetected — it only removes the
218
- // extra probe a send would otherwise trigger. Defaults to on
219
- // (previous behaviour), just throttled and confirmation-gated now.
220
- this.pingOnSendEnabled = this.xmppSettings?.xmppPingOnSendEnabled !== false;
221
214
 
222
215
  const qos = this.xmppSettings?.historyQoS;
223
216
  if (qos) {
@@ -349,6 +342,7 @@ export class XmppClient {
349
342
  }
350
343
 
351
344
  initializeClient() {
345
+ this.clientAlreadyStopped = false;
352
346
  try {
353
347
  const devServer = this.devServer || DEFAULT_DEV_SERVER;
354
348
  const url = `wss://${devServer}/ws`;
@@ -501,10 +495,6 @@ export class XmppClient {
501
495
  this.status = 'online';
502
496
  this.presencesReady = true;
503
497
  this.reconnectAttempts = 0;
504
- // Fresh stream: forget any probe failures from the dead one, and
505
- // don't let the throttle suppress the first probe on it.
506
- this.failedProbeStreak = 0;
507
- this.lastStreamProbeAt = 0;
508
498
  try {
509
499
  devPushLog(
510
500
  'xmpp',
@@ -666,54 +656,8 @@ export class XmppClient {
666
656
  }
667
657
 
668
658
  private streamAliveProbe: Promise<boolean> | null = null;
669
- /** Wall-clock of the last probe, for throttling. */
670
- private lastStreamProbeAt = 0;
671
- /** Consecutive failed probes; a reconnect needs confirmation, not one miss. */
672
- private failedProbeStreak = 0;
673
-
674
- // --- liveness-probe tuning -------------------------------------------
675
- // The probe exists to catch a ZOMBIE socket: the WebSocket still reads
676
- // `online` but nothing traverses it (iOS suspending a backgrounded
677
- // socket, the JS debugger pausing the runtime). Without it the client
678
- // sits "online" forever and every send silently vanishes.
679
- //
680
- // The original settings were far too trigger-happy: a 4s budget for a
681
- // ping round-trip, fired after EVERY send, with a single timeout
682
- // immediately calling `forceReconnect()` — a full teardown, rebuild,
683
- // MUC re-join and private-store refetch. On a slow or congested mobile
684
- // link a perfectly healthy but quiet stream would miss that 4s window
685
- // and get torn down mid-conversation, repeatedly. (That reconnect is
686
- // also what used to replay the outbound queue and duplicate a message
687
- // that had already been delivered — customer-reported #31.)
688
- //
689
- // Tuned to: a realistic timeout, a throttle so bursts of sends can't
690
- // each start a probe, and a required second failure before we tear a
691
- // connection down. Zombie sockets fail every probe, so they are still
692
- // caught — just after confirmation rather than on one unlucky RTT.
693
- /** Per-probe budget. 4s was under a slow-network ping RTT. */
694
- private streamProbeTimeoutMs = 10_000;
695
- /** Minimum gap between probes, so a burst of sends probes at most once. */
696
- private minStreamProbeIntervalMs = 15_000;
697
- /** Delay before the confirmation probe that a teardown requires. */
698
- private streamProbeConfirmDelayMs = 2_000;
699
- /** Failures needed before `forceReconnect()`. */
700
- private streamProbeFailuresForReconnect = 2;
701
- /** Host opt-out for the send-path probe (`xmppPingOnSendEnabled`). */
702
- private pingOnSendEnabled = true;
703
659
 
704
- /**
705
- * Send-path liveness check. Throttled and skippable by config — unlike
706
- * the watchdog, this fires from user activity and must not turn a chatty
707
- * room into a probe storm.
708
- */
709
- ensureStreamAliveAfterSend(): void {
710
- if (!this.pingOnSendEnabled) {return;}
711
- this.ensureStreamAlive({ reason: 'send' }).catch(() => {});
712
- }
713
-
714
- verifyStreamAlive(
715
- timeoutMs: number = this.streamProbeTimeoutMs
716
- ): Promise<boolean> {
660
+ verifyStreamAlive(timeoutMs: number = 4000): Promise<boolean> {
717
661
  if (this.status !== 'online' || !this.client) {
718
662
  return Promise.resolve(false);
719
663
  }
@@ -745,70 +689,16 @@ export class XmppClient {
745
689
  return this.streamAliveProbe;
746
690
  }
747
691
 
748
- /**
749
- * Check that the stream is really carrying traffic, and tear it down only
750
- * if that is confirmed false.
751
- *
752
- * `force` skips the throttle — used by the periodic watchdog and the
753
- * NetInfo "we're reachable again" signal, which are already rare and
754
- * genuinely want to know right now. Send-path callers leave it off so a
755
- * burst of messages triggers at most one probe.
756
- */
757
- async ensureStreamAlive(opts?: {
758
- force?: boolean;
759
- reason?: string;
760
- }): Promise<void> {
692
+ async ensureStreamAlive(timeoutMs: number = 4000): Promise<void> {
761
693
  if (this.suppressReconnect || this.status !== 'online') {return;}
762
-
763
- const now = Date.now();
764
- if (
765
- !opts?.force &&
766
- now - this.lastStreamProbeAt < this.minStreamProbeIntervalMs
767
- ) {
768
- // Probed recently — a healthy answer is still fresh, and a dead
769
- // socket will be caught by the next watchdog tick anyway.
770
- return;
771
- }
772
- this.lastStreamProbeAt = now;
773
-
774
- const alive = await this.verifyStreamAlive();
775
-
776
- // Re-check state: a reconnect may have started while we waited.
777
- if (this.status !== 'online' || this.suppressReconnect) {return;}
778
-
779
- if (alive) {
780
- this.failedProbeStreak = 0;
781
- return;
782
- }
783
-
784
- this.failedProbeStreak += 1;
785
- if (this.failedProbeStreak < this.streamProbeFailuresForReconnect) {
786
- // One missed probe is not proof of a dead socket — a congested link
787
- // or a busy server can blow the budget on a stream that is fine.
788
- // Confirm with a second probe shortly, instead of tearing down a
789
- // working connection on a single unlucky round trip.
694
+ const alive = await this.verifyStreamAlive(timeoutMs);
695
+ // Re-check state: a reconnect may have started meanwhile.
696
+ if (!alive && this.status === 'online' && !this.suppressReconnect) {
790
697
  try {
791
- devPushLog(
792
- 'xmpp',
793
- `stream probe missed (${this.failedProbeStreak}/${this.streamProbeFailuresForReconnect}) — confirming before reconnect`
794
- );
698
+ devPushLog('xmpp', 'stream is zombie (ping unanswered) → forceReconnect');
795
699
  } catch {}
796
- setTimeout(() => {
797
- this.ensureStreamAlive({ force: true, reason: 'probe-confirm' }).catch(
798
- () => {}
799
- );
800
- }, this.streamProbeConfirmDelayMs);
801
- return;
700
+ this.forceReconnect();
802
701
  }
803
-
804
- this.failedProbeStreak = 0;
805
- try {
806
- devPushLog(
807
- 'xmpp',
808
- 'stream is zombie (probe unanswered twice) → forceReconnect'
809
- );
810
- } catch {}
811
- this.forceReconnect();
812
702
  }
813
703
 
814
704
  async reconnect() {
@@ -863,7 +753,10 @@ export class XmppClient {
863
753
  // `this.client` still points at the old client — i.e. before
864
754
  // initializeClient() reassigns it.
865
755
  const old = this.client;
866
- if (old) {
756
+ if (old && this.clientAlreadyStopped) {
757
+ this.detachEventListeners();
758
+ this.clientAlreadyStopped = false;
759
+ } else if (old) {
867
760
  this.detachEventListeners();
868
761
  // NEVER await a bare stop(): on a half-dead socket (the exact case
869
762
  // we're reconnecting for) @xmpp/client's stop() can hang forever
@@ -878,6 +771,9 @@ export class XmppClient {
878
771
  await withTimeout(old.stop(), STOP_TIMEOUT_MS);
879
772
  }
880
773
  this.initializeClient();
774
+ if (this.suspendedForBackground) {
775
+ await this.stopClientQuietly();
776
+ }
881
777
  } finally {
882
778
  this.reconnecting = false;
883
779
  }
@@ -915,6 +811,56 @@ export class XmppClient {
915
811
  return this.credentialsRefreshInFlight;
916
812
  }
917
813
 
814
+ private suspendedForBackground = false;
815
+ private clientAlreadyStopped = false;
816
+
817
+ private async stopClientQuietly(): Promise<void> {
818
+ const c: any = this.client;
819
+ if (c) {
820
+ const sock = c.socket;
821
+ if (sock && typeof sock.end === 'function') {
822
+ try {
823
+ sock.end();
824
+ } catch {}
825
+ try {
826
+ if (c.status !== 'offline') c._status?.('offline');
827
+ } catch {}
828
+ } else {
829
+ await withTimeout(
830
+ Promise.resolve(c.stop()).catch(() => undefined),
831
+ STOP_TIMEOUT_MS
832
+ );
833
+ }
834
+ this.clientAlreadyStopped = true;
835
+ }
836
+ this.status = 'offline';
837
+ this.presencesReady = false;
838
+ }
839
+
840
+ async suspend(): Promise<void> {
841
+ if (this.suspendedForBackground) {return;}
842
+ this.suspendedForBackground = true;
843
+ this.suppressReconnect = true;
844
+ if (this.reconnectTimer) {
845
+ clearTimeout(this.reconnectTimer);
846
+ this.reconnectTimer = null;
847
+ }
848
+ await this.stopClientQuietly();
849
+ console.log('XMPP suspended (background).');
850
+ }
851
+
852
+ /** Back in the foreground: allow reconnects again and reconnect at once. */
853
+ resume(): void {
854
+ if (!this.suspendedForBackground) {return;}
855
+ this.suspendedForBackground = false;
856
+ this.suppressReconnect = false;
857
+ this.forceReconnect();
858
+ }
859
+
860
+ get isSuspended(): boolean {
861
+ return this.suspendedForBackground;
862
+ }
863
+
918
864
  async disconnect(options?: { suppressReconnect?: boolean }): Promise<void> {
919
865
  if (options?.suppressReconnect) {this.suppressReconnect = true;}
920
866
  return this.close();
@@ -33,7 +33,9 @@ export interface ChatState {
33
33
 
34
34
  export const unpackAndTransform = (input?: User): User => {
35
35
  return {
36
- description: '',
36
+ // Was hardcoded to '' — every setUser dropped the user's own bio, so
37
+ // the profile's About section could never show one.
38
+ description: input?.description || '',
37
39
  token: input?.token || '',
38
40
  profileImage: input?.profileImage || '',
39
41
  _id: input?._id || '',
@@ -317,6 +317,8 @@ const reducers = {
317
317
  : [];
318
318
  state.rooms[roomData.jid] = {
319
319
  ...roomData,
320
+ icon: roomData.icon !== undefined ? roomData.icon : existing?.icon,
321
+ roomBg: roomData.roomBg !== undefined ? roomData.roomBg : existing?.roomBg,
320
322
  messages:
321
323
  existingMessages.length > 0 ? existingMessages : incomingMessages,
322
324
  lastViewedTimestamp: lastViewed,
@@ -543,25 +545,6 @@ const reducers = {
543
545
  ) => {
544
546
  state.isUnreadSyncing = action.payload;
545
547
  },
546
- /**
547
- * Records how far the user has actually read in a room: the timestamp
548
- * of the newest message they had reached when they scrolled away from
549
- * the bottom, or `null` while they are at the bottom.
550
- *
551
- * Written only by MessageList as the user scrolls. Deliberately does
552
- * NOT touch `unreadMessages` or `lastViewedTimestamp` — it only tells
553
- * the various "mark this room read" paths what value to stamp instead
554
- * of `Date.now()`. Customer-reported #33.
555
- */
556
- setReadBoundary: (
557
- state: WritableDraft<RoomMessagesState>,
558
- action: PayloadAction<{ chatJID: string; boundaryTs: number | null }>
559
- ) => {
560
- const { chatJID, boundaryTs } = action.payload;
561
- if (state.rooms[chatJID]) {
562
- state.rooms[chatJID].readBoundaryTs = boundaryTs;
563
- }
564
- },
565
548
  setLastViewedTimestamp: (
566
549
  state: WritableDraft<RoomMessagesState>,
567
550
  action: PayloadAction<{ chatJID: string; timestamp: number }>
@@ -918,7 +901,6 @@ export const {
918
901
  setIsLoading,
919
902
  setUnreadSyncing,
920
903
  setLastViewedTimestamp,
921
- setReadBoundary,
922
904
  applyPrivateStoreMarkers,
923
905
  setRoomNoMessages,
924
906
  setCurrentRoom,
@@ -81,7 +81,9 @@ export class PushSubscriptionService {
81
81
  this.subscribedRooms.add(roomJID);
82
82
  await this.saveSubscribedRoomsToStorage();
83
83
  }
84
- console.log('Successfully Subscribed to room', roomJID);
84
+ if (!result) {
85
+ console.warn('[PushService] MucSub subscribe refused for', roomJID);
86
+ }
85
87
  return result;
86
88
  } catch (error) {
87
89
  console.error(`[PushService] Failed to subscribe to room ${roomJID}:`, error);
@@ -92,30 +94,33 @@ export class PushSubscriptionService {
92
94
  async subscribeToRooms(
93
95
  client: Client,
94
96
  roomJIDs: string[],
95
- userNick?: string
97
+ userNick?: string,
98
+ concurrency = 8
96
99
  ): Promise<void> {
97
100
  let successful = 0;
98
101
  let failed = 0;
99
102
 
100
- console.log('test roomJIDs', roomJIDs);
103
+ await this.loadSubscribedRoomsFromStorage();
104
+ const pending = roomJIDs.filter((jid) => !this.subscribedRooms.has(jid));
105
+ if (!pending.length) {
106
+ return;
107
+ }
101
108
 
102
- for (const roomJID of roomJIDs) {
103
- try {
104
- const result = await this.subscribeToRoom(client, roomJID, userNick);
105
- console.log('test roomJID-1', result);
106
- if (result) {
109
+ for (let i = 0; i < pending.length; i += concurrency) {
110
+ const batch = pending.slice(i, i + concurrency);
111
+ const results = await Promise.allSettled(
112
+ batch.map((roomJID) => this.subscribeToRoom(client, roomJID, userNick))
113
+ );
114
+ for (const r of results) {
115
+ if (r.status === 'fulfilled' && r.value) {
107
116
  successful++;
108
117
  } else {
109
118
  failed++;
110
119
  }
111
- await new Promise(resolve => setTimeout(resolve, 100));
112
- } catch (error) {
113
- failed++;
114
- console.error(`Failed to subscribe to room ${roomJID}:`, error);
115
120
  }
116
121
  }
117
122
 
118
- console.log(`Subscribed to ${successful} rooms, ${failed} failed`);
123
+ console.log(`[PushService] MucSub: ${successful} rooms subscribed, ${failed} failed`);
119
124
  }
120
125
 
121
126
  async reset(): Promise<void> {
@@ -50,21 +50,6 @@ export interface IRoom {
50
50
  composingList?: string[];
51
51
  lastViewedTimestamp?: number;
52
52
  unreadMessages?: number;
53
- /**
54
- * Timestamp of the newest message the user had actually reached when
55
- * they scrolled away from the bottom of this room, or null/undefined
56
- * while they are at the bottom (everything on screen is read).
57
- *
58
- * Lives in the store rather than in ChatRoom's local state because
59
- * several code paths outside the component mark a room read — the
60
- * AppState background handler, the `isVisible` consumer signal, the
61
- * visible-room auto-advance, `useChatRoomFocus` — and all of them must
62
- * stamp what the user actually saw instead of `Date.now()`. Stamping
63
- * "now" while they are scrolled up silently destroys unread messages,
64
- * and because those paths also flush to the server-side private store
65
- * the loss survives an app restart. Customer-reported #33.
66
- */
67
- readBoundaryTs?: number | null;
68
53
  noMessages?: boolean;
69
54
  role?: string;
70
55
 
@@ -33,21 +33,6 @@ export interface IRoom {
33
33
  composingList?: string[];
34
34
  lastViewedTimestamp?: number;
35
35
  unreadMessages?: number;
36
- /**
37
- * Timestamp of the newest message the user had actually reached when
38
- * they scrolled away from the bottom of this room; null/undefined while
39
- * they are at the bottom (everything on screen is read).
40
- *
41
- * Written only by MessageList as the user scrolls. Every path that marks
42
- * a room read must prefer this over `Date.now()` — the AppState
43
- * background handler, the `isVisible` consumer signal, the visible-room
44
- * auto-advance, `useChatRoomFocus` and logout all flush to the
45
- * server-side private store, so stamping "now" while the user is
46
- * scrolled up destroys unread messages permanently (survives an app
47
- * restart, because the bad marker comes back from the server).
48
- * Customer-reported #33.
49
- */
50
- readBoundaryTs?: number | null;
51
36
  noMessages?: boolean;
52
37
  role?: string;
53
38
  createdAt?: string | number | Date;
@@ -166,6 +151,7 @@ export interface xmppSettingsInterface {
166
151
  disableLastRead?: boolean;
167
152
  xmppPingOnSendEnabled?: boolean;
168
153
  historyQoS?: HistoryQoSConfig;
154
+ keepAliveInBackground?: boolean;
169
155
  }
170
156
 
171
157
  export interface InAppNotificationConfig {
@@ -325,13 +311,16 @@ export interface TypographyConfig {
325
311
  };
326
312
  /** Attach (photo/document picker) bottom sheet. */
327
313
  attachSheet?: {
328
- /** "Attach" header label. Default 13 / "600". */
314
+ /** "Photos & Videos" section header. Default 17 / "700". */
329
315
  title?: ChatTextStyle;
330
- /** Row labels (Camera / Gallery / Document). Default 16 / "500". */
316
+ /** "View Library" link next to the section header. Default 15 / "500". */
317
+ viewLibrary?: ChatTextStyle;
318
+ /** Row labels ("Upload a File"). Default 16 / "500". */
331
319
  rowLabel?: ChatTextStyle;
332
- /** Grey hint under each row. Default 12. */
320
+ /** @deprecated Rows no longer render a hint line. */
333
321
  rowHint?: ChatTextStyle;
334
- /** Cancel button. Default 16 / "600". */
322
+ /** @deprecated The sheet has no Cancel button — it closes by tapping
323
+ * the backdrop, dragging it down, or the hardware back gesture. */
335
324
  cancelButton?: ChatTextStyle;
336
325
  };
337
326
 
@@ -409,6 +398,16 @@ export interface IConfig {
409
398
  * value takes effect.
410
399
  */
411
400
  height?: number;
401
+ /**
402
+ * Extend the header cards (room list + chat) under the status bar:
403
+ * each pads its top by the safe-area inset and paints it white, so
404
+ * the card and the status-bar band are one surface. Use this instead
405
+ * of wrapping `<Chat>` in a top-edge SafeAreaView: a host-side white
406
+ * band above the card shows a hairline seam where the card's
407
+ * shadow/elevation starts. Off by default (hosts that already pad the
408
+ * top keep their layout).
409
+ */
410
+ safeAreaTop?: boolean;
412
411
  };
413
412
  disableHeader?: boolean;
414
413
  disableMedia?: boolean;
@@ -437,7 +436,7 @@ export interface IConfig {
437
436
  hideMemberSendMessageAction?: boolean; // hides only "Message"
438
437
  hideMemberCopyIdAction?: boolean; // hides only "Copy User Id"
439
438
  chatHeaderAdditional?: { enabled: boolean; element: any };
440
- headerMenu?: () => void;
439
+ headerMenu?: (() => void) | boolean;
441
440
  headerChatMenu?: () => void;
442
441
  chatHeaderSettings?: {
443
442
  hide?: boolean;
@@ -469,6 +468,20 @@ export interface IConfig {
469
468
  loginFunction: () => Promise<User | null>;
470
469
  };
471
470
  defaultLogin?: boolean;
471
+ logout?: {
472
+ enabled: boolean;
473
+ label?: string;
474
+ confirm?:
475
+ | boolean
476
+ | {
477
+ title?: string;
478
+ message?: string;
479
+ confirmText?: string;
480
+ cancelText?: string;
481
+ };
482
+ onBeforeLogout?: () => Promise<boolean | void> | boolean | void;
483
+ onAfterLogout?: () => Promise<void> | void;
484
+ };
472
485
  refreshTokens?: {
473
486
  enabled: boolean;
474
487
  /**