@ethora/chat-component-rn 26.7.9 → 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.
- package/CHANGELOG.md +0 -93
- package/README.md +10 -33
- package/lib/commonjs/assets/icons.js +2 -7
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +4 -4
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +7 -26
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +3 -9
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +13 -101
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +38 -34
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +9 -29
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +1 -5
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +5 -13
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +24 -3
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +35 -208
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +98 -317
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/commonjs/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +112 -320
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +215 -556
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +27 -69
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +0 -8
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +109 -205
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +21 -7
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +244 -507
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +46 -74
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +2 -9
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +39 -23
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +1 -2
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +10 -3
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +9 -37
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js +3 -1
- package/lib/commonjs/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +17 -86
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +3 -9
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +4 -14
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +61 -119
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +54 -128
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +1 -19
- package/lib/commonjs/helpers/createMessageFromXml.js.map +1 -1
- package/lib/commonjs/helpers/ensureScopedChatCache.js +2 -2
- package/lib/commonjs/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/commonjs/helpers/getDataFromXml.js +24 -1
- package/lib/commonjs/helpers/getDataFromXml.js.map +1 -1
- package/lib/commonjs/helpers/historyPreloadScheduler.js +2 -65
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +8 -14
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/commonjs/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/commonjs/helpers/mimeToExtension.js +14 -6
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +17 -130
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/resolveLangSource.js +38 -0
- package/lib/commonjs/helpers/resolveLangSource.js.map +1 -0
- package/lib/commonjs/helpers/xmppUsername.js +39 -0
- package/lib/commonjs/helpers/xmppUsername.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +8 -17
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +14 -32
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +0 -27
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +7 -15
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +11 -8
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +14 -50
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +133 -121
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/i18n/useT.js +1 -1
- package/lib/commonjs/main.js +0 -44
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +60 -134
- package/lib/commonjs/networking/api-requests/auth.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/commonjs/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +9 -9
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/user.api.js +9 -68
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +112 -62
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/stanzaHandlers.js +51 -93
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +8 -124
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +7 -26
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +2 -35
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +39 -226
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +8 -87
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +13 -15
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +3 -1
- package/lib/commonjs/version.js.map +1 -1
- package/lib/module/assets/icons.js +1 -6
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +4 -4
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +7 -26
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +3 -9
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +14 -102
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +40 -36
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +1 -2
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +10 -30
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +1 -5
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +5 -13
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +13 -14
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +26 -5
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +35 -207
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +101 -319
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageTranslate.js +16 -7
- package/lib/module/components/MessageBubble/MessageTranslate.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +115 -311
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +219 -559
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +9 -7
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +28 -70
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +1 -2
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +1 -9
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +1 -2
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +111 -208
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +0 -8
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +2 -4
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +23 -9
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +248 -509
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +48 -76
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +2 -9
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +40 -24
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +3 -22
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +3 -17
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +3 -6
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +1 -2
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +10 -3
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +9 -37
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/NewMessageLabel.js +3 -1
- package/lib/module/components/styled/NewMessageLabel.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +18 -87
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +3 -9
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +4 -11
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +4 -14
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +62 -120
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +55 -128
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +1 -19
- package/lib/module/helpers/createMessageFromXml.js.map +1 -1
- package/lib/module/helpers/ensureScopedChatCache.js +2 -2
- package/lib/module/helpers/ensureScopedChatCache.js.map +1 -1
- package/lib/module/helpers/getDataFromXml.js +23 -1
- package/lib/module/helpers/getDataFromXml.js.map +1 -1
- package/lib/module/helpers/historyPreloadScheduler.js +3 -66
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +8 -14
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +13 -0
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isUnresolvedSenderId.js +6 -1
- package/lib/module/helpers/isUnresolvedSenderId.js.map +1 -1
- package/lib/module/helpers/mimeToExtension.js +13 -6
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +16 -130
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/resolveLangSource.js +32 -0
- package/lib/module/helpers/resolveLangSource.js.map +1 -0
- package/lib/module/helpers/xmppUsername.js +35 -0
- package/lib/module/helpers/xmppUsername.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +8 -17
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +14 -32
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +1 -28
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useLogout.js +7 -15
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +11 -8
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +16 -52
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +1 -6
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +133 -121
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/i18n/useT.js +1 -1
- package/lib/module/main.js +2 -14
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +59 -131
- package/lib/module/networking/api-requests/auth.api.js.map +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js +1 -1
- package/lib/module/networking/api-requests/roomMembers.api.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +9 -9
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/networking/api-requests/user.api.js +7 -64
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +113 -61
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/stanzaHandlers.js +52 -94
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +8 -46
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +1 -8
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +1 -5
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +8 -124
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +7 -26
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +4 -37
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +38 -223
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +7 -86
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +13 -15
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +3 -1
- package/lib/module/version.js.map +1 -1
- package/lib/typescript/assets/icons.d.ts +0 -16
- package/lib/typescript/assets/icons.d.ts.map +1 -1
- package/lib/typescript/components/AuthForms/Login.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatHeader.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatRoom.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ChatWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/LoginWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageContainer.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts +1 -10
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ProfileImagePlaceholder.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts +0 -7
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +0 -3
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageTranslate.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +0 -9
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +0 -10
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/DeleteChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/PdfView.d.ts.map +1 -1
- package/lib/typescript/components/Modals/Modal/Modal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts +2 -4
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/UpdNewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +1 -6
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/EditUserModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts +0 -16
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +0 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/ChatRoomItem.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageFile.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessagePhoto.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts +1 -1
- package/lib/typescript/components/RoomComponents/styled/LastMessageVideo.d.ts.map +1 -1
- package/lib/typescript/components/VideoCalls/VideoCallSession.d.ts.map +1 -1
- package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MessageImage.d.ts +0 -14
- package/lib/typescript/components/styled/MessageImage.d.ts.map +1 -1
- package/lib/typescript/components/styled/NewMessageLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/SendInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/UnsupportedType.d.ts.map +1 -1
- package/lib/typescript/components/styled/VideoMessage.d.ts +0 -8
- package/lib/typescript/components/styled/VideoMessage.d.ts.map +1 -1
- package/lib/typescript/context/xmppProvider.d.ts.map +1 -1
- package/lib/typescript/helpers/createMessageFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/getDataFromXml.d.ts.map +1 -1
- package/lib/typescript/helpers/historyPreloadScheduler.d.ts.map +1 -1
- package/lib/typescript/helpers/initXmppRooms.d.ts.map +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isUnresolvedSenderId.d.ts.map +1 -1
- package/lib/typescript/helpers/mimeToExtension.d.ts +15 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/resolveLangSource.d.ts +30 -0
- package/lib/typescript/helpers/resolveLangSource.d.ts.map +1 -0
- package/lib/typescript/helpers/xmppUsername.d.ts +13 -0
- package/lib/typescript/helpers/xmppUsername.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +1 -4
- package/lib/typescript/hooks/useChatRoomFocus.d.ts.map +1 -1
- package/lib/typescript/hooks/useChatWrapperInit.d.ts.map +1 -1
- package/lib/typescript/hooks/useComposing.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/usePendingNotification.d.ts.map +1 -1
- package/lib/typescript/hooks/useSendMessage.d.ts.map +1 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts +0 -1
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/i18n/useT.d.ts +1 -1
- package/lib/typescript/main.d.ts +2 -9
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +1 -3
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +0 -27
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +6 -12
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +2 -10
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/presenceInRoom.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/subscribeToRoomMessages.xmpp.d.ts.map +1 -1
- package/lib/typescript/networking/xmppClient.d.ts +0 -14
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +0 -16
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts.map +1 -1
- package/lib/typescript/roomStore/index.d.ts.map +1 -1
- package/lib/typescript/roomStore/persistence.d.ts +1 -18
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +1 -14
- package/lib/typescript/roomStore/roomsSlice.d.ts.map +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts +1 -1
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +5 -49
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/lib/typescript/version.d.ts.map +1 -1
- package/package.json +29 -41
- package/src/assets/icons.tsx +9 -48
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +6 -24
- package/src/components/MainComponents/ChatHeader.tsx +3 -9
- package/src/components/MainComponents/ChatRoom.tsx +16 -111
- package/src/components/MainComponents/ChatWrapper.tsx +53 -36
- package/src/components/MainComponents/LoginWrapper.tsx +0 -1
- package/src/components/MainComponents/MediaMessage.tsx +8 -26
- package/src/components/MainComponents/MessageContainer.tsx +1 -5
- package/src/components/MainComponents/MessageList.tsx +4 -23
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +14 -21
- package/src/components/MainComponents/ReduxWrapper.tsx +18 -1
- package/src/components/MainComponents/RoomList.tsx +39 -236
- package/src/components/Menu/HeaderRoomListMenu.tsx +75 -328
- package/src/components/MessageBubble/MessageTranslate.tsx +17 -12
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +99 -331
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +293 -611
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +9 -7
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +38 -79
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +1 -2
- package/src/components/Modals/Modal/Modal.tsx +0 -7
- package/src/components/Modals/NewChatModal/ModalContent.tsx +3 -6
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +126 -223
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +1 -12
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +4 -14
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +25 -9
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +307 -617
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +58 -75
- package/src/components/Modals/styledModalComponents.tsx +2 -9
- package/src/components/RoomComponents/ChatRoomItem.tsx +50 -21
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +4 -28
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +3 -18
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +3 -18
- package/src/components/VideoCalls/VideoCallSession.tsx +3 -8
- package/src/components/styled/AudioMessage.tsx +1 -2
- package/src/components/styled/DateLabel.tsx +10 -3
- package/src/components/styled/MessageImage.tsx +7 -53
- package/src/components/styled/NewMessageLabel.tsx +3 -1
- package/src/components/styled/SendInput.tsx +18 -91
- package/src/components/styled/StyledComponents.ts +3 -9
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +4 -11
- package/src/components/styled/UnsupportedType.tsx +4 -14
- package/src/components/styled/VideoMessage.tsx +54 -131
- package/src/context/xmppProvider.tsx +51 -134
- package/src/helpers/createMessageFromXml.ts +1 -20
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getDataFromXml.ts +25 -1
- package/src/helpers/historyPreloadScheduler.ts +3 -80
- package/src/helpers/initXmppRooms.tsx +10 -14
- package/src/helpers/insertMessageWithDelimiter.ts +13 -0
- package/src/helpers/isUnresolvedSenderId.ts +9 -1
- package/src/helpers/mimeToExtension.ts +22 -6
- package/src/helpers/resolveInitBeforeLoadUser.ts +18 -125
- package/src/helpers/resolveLangSource.ts +40 -0
- package/src/helpers/xmppUsername.ts +38 -0
- package/src/hooks/useChatRoomFocus.ts +5 -14
- package/src/hooks/useChatWrapperInit.ts +16 -32
- package/src/hooks/useComposing.tsx +1 -37
- package/src/hooks/useLogout.tsx +9 -15
- package/src/hooks/usePendingNotification.ts +11 -5
- package/src/hooks/useSendMessage.tsx +15 -60
- package/src/hooks/useUnreadMessagesCounter.ts +0 -11
- package/src/i18n/strings.ts +133 -121
- package/src/i18n/useT.ts +1 -1
- package/src/main.ts +2 -26
- package/src/networking/api-requests/auth.api.ts +48 -156
- package/src/networking/api-requests/roomMembers.api.ts +1 -1
- package/src/networking/api-requests/rooms.api.ts +9 -9
- package/src/networking/api-requests/user.api.ts +7 -79
- package/src/networking/apiClient.ts +123 -68
- package/src/networking/stanzaHandlers.ts +51 -92
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +10 -71
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +1 -6
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +1 -12
- package/src/networking/xmppClient.ts +9 -141
- package/src/roomStore/chatSettingsSlice.ts +10 -34
- package/src/roomStore/index.ts +4 -40
- package/src/roomStore/persistence.ts +40 -234
- package/src/roomStore/roomsSlice.ts +7 -87
- package/src/services/pushSubscriptionService.ts +13 -18
- package/src/types/types.ts +5 -58
- package/src/version.ts +3 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +0 -226
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +0 -556
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +0 -210
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/commonjs/helpers/getChatBackground.js +0 -23
- package/lib/commonjs/helpers/getChatBackground.js.map +0 -1
- package/lib/commonjs/helpers/getDisplayFileName.js +0 -79
- package/lib/commonjs/helpers/getDisplayFileName.js.map +0 -1
- package/lib/commonjs/helpers/getServerReadTimestamp.js +0 -125
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/commonjs/helpers/isOwnMessage.js +0 -75
- package/lib/commonjs/helpers/isOwnMessage.js.map +0 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +0 -31
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/commonjs/helpers/persistCrypto.js +0 -122
- package/lib/commonjs/helpers/persistCrypto.js.map +0 -1
- package/lib/commonjs/helpers/pickImageAsset.js +0 -68
- package/lib/commonjs/helpers/pickImageAsset.js.map +0 -1
- package/lib/commonjs/helpers/pushPayload.js +0 -71
- package/lib/commonjs/helpers/pushPayload.js.map +0 -1
- package/lib/commonjs/helpers/secureFileUrl.js +0 -101
- package/lib/commonjs/helpers/secureFileUrl.js.map +0 -1
- package/lib/commonjs/helpers/secureKeyValue.js +0 -83
- package/lib/commonjs/helpers/secureKeyValue.js.map +0 -1
- package/lib/commonjs/helpers/secureStoreRuntime.js +0 -59
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/commonjs/helpers/secureUserStorage.js +0 -75
- package/lib/commonjs/helpers/secureUserStorage.js.map +0 -1
- package/lib/commonjs/helpers/shallowEqual.js +0 -36
- package/lib/commonjs/helpers/shallowEqual.js.map +0 -1
- package/lib/commonjs/helpers/sheetGestures.js +0 -32
- package/lib/commonjs/helpers/sheetGestures.js.map +0 -1
- package/lib/commonjs/hooks/useFileToken.js +0 -10
- package/lib/commonjs/hooks/useFileToken.js.map +0 -1
- package/lib/commonjs/networking/authRefresh.js +0 -332
- package/lib/commonjs/networking/authRefresh.js.map +0 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +0 -223
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +0 -548
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +0 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +0 -205
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +0 -1
- package/lib/module/helpers/getChatBackground.js +0 -18
- package/lib/module/helpers/getChatBackground.js.map +0 -1
- package/lib/module/helpers/getDisplayFileName.js +0 -73
- package/lib/module/helpers/getDisplayFileName.js.map +0 -1
- package/lib/module/helpers/getServerReadTimestamp.js +0 -120
- package/lib/module/helpers/getServerReadTimestamp.js.map +0 -1
- package/lib/module/helpers/isOwnMessage.js +0 -70
- package/lib/module/helpers/isOwnMessage.js.map +0 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +0 -25
- package/lib/module/helpers/mediaLibraryRuntime.js.map +0 -1
- package/lib/module/helpers/persistCrypto.js +0 -115
- package/lib/module/helpers/persistCrypto.js.map +0 -1
- package/lib/module/helpers/pickImageAsset.js +0 -63
- package/lib/module/helpers/pickImageAsset.js.map +0 -1
- package/lib/module/helpers/pushPayload.js +0 -63
- package/lib/module/helpers/pushPayload.js.map +0 -1
- package/lib/module/helpers/secureFileUrl.js +0 -91
- package/lib/module/helpers/secureFileUrl.js.map +0 -1
- package/lib/module/helpers/secureKeyValue.js +0 -75
- package/lib/module/helpers/secureKeyValue.js.map +0 -1
- package/lib/module/helpers/secureStoreRuntime.js +0 -52
- package/lib/module/helpers/secureStoreRuntime.js.map +0 -1
- package/lib/module/helpers/secureUserStorage.js +0 -72
- package/lib/module/helpers/secureUserStorage.js.map +0 -1
- package/lib/module/helpers/shallowEqual.js +0 -31
- package/lib/module/helpers/shallowEqual.js.map +0 -1
- package/lib/module/helpers/sheetGestures.js +0 -26
- package/lib/module/helpers/sheetGestures.js.map +0 -1
- package/lib/module/hooks/useFileToken.js +0 -5
- package/lib/module/hooks/useFileToken.js.map +0 -1
- package/lib/module/networking/authRefresh.js +0 -321
- package/lib/module/networking/authRefresh.js.map +0 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +0 -9
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts +0 -75
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +0 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +0 -25
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +0 -1
- package/lib/typescript/helpers/getChatBackground.d.ts +0 -15
- package/lib/typescript/helpers/getChatBackground.d.ts.map +0 -1
- package/lib/typescript/helpers/getDisplayFileName.d.ts +0 -49
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +0 -1
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +0 -69
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +0 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +0 -36
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +0 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +0 -3
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/persistCrypto.d.ts +0 -13
- package/lib/typescript/helpers/persistCrypto.d.ts.map +0 -1
- package/lib/typescript/helpers/pickImageAsset.d.ts +0 -27
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +0 -1
- package/lib/typescript/helpers/pushPayload.d.ts +0 -7
- package/lib/typescript/helpers/pushPayload.d.ts.map +0 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +0 -7
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +0 -1
- package/lib/typescript/helpers/secureKeyValue.d.ts +0 -13
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +0 -1
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +0 -29
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +0 -1
- package/lib/typescript/helpers/secureUserStorage.d.ts +0 -23
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +0 -1
- package/lib/typescript/helpers/shallowEqual.d.ts +0 -11
- package/lib/typescript/helpers/shallowEqual.d.ts.map +0 -1
- package/lib/typescript/helpers/sheetGestures.d.ts +0 -20
- package/lib/typescript/helpers/sheetGestures.d.ts.map +0 -1
- package/lib/typescript/hooks/useFileToken.d.ts +0 -2
- package/lib/typescript/hooks/useFileToken.d.ts.map +0 -1
- package/lib/typescript/networking/authRefresh.d.ts +0 -95
- package/lib/typescript/networking/authRefresh.d.ts.map +0 -1
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +0 -244
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +0 -615
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +0 -217
- package/src/helpers/getChatBackground.ts +0 -18
- package/src/helpers/getDisplayFileName.ts +0 -87
- package/src/helpers/getServerReadTimestamp.ts +0 -120
- package/src/helpers/isOwnMessage.ts +0 -90
- package/src/helpers/mediaLibraryRuntime.ts +0 -25
- package/src/helpers/persistCrypto.ts +0 -127
- package/src/helpers/pickImageAsset.ts +0 -68
- package/src/helpers/pushPayload.ts +0 -62
- package/src/helpers/secureFileUrl.ts +0 -103
- package/src/helpers/secureKeyValue.ts +0 -80
- package/src/helpers/secureStoreRuntime.ts +0 -62
- package/src/helpers/secureUserStorage.ts +0 -80
- package/src/helpers/shallowEqual.ts +0 -33
- package/src/helpers/sheetGestures.ts +0 -25
- package/src/hooks/useFileToken.ts +0 -7
- package/src/networking/authRefresh.ts +0 -451
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useSelector","useFileToken","state","chatSettingStore","user","fileToken"],"sourceRoot":"../../../src","sources":["hooks/useFileToken.ts"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,YAAY,GAAGA,CAAA,KAC1BD,WAAW,CACRE,KAAgB,IAAKA,KAAK,CAACC,gBAAgB,CAACC,IAAI,EAAEC,SAAS,IAAI,EAClE,CAAC","ignoreList":[]}
|
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import http from './apiClient';
|
|
4
|
-
import { store } from '../roomStore';
|
|
5
|
-
import { refreshTokens } from '../roomStore/chatSettingsSlice';
|
|
6
|
-
import { secureUserStorage } from '../helpers/secureUserStorage';
|
|
7
|
-
import { pushLog } from '../utils/devLogger';
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* THE single refresh-token rotation point for the SDK.
|
|
11
|
-
*
|
|
12
|
-
* The backend now runs refresh-token ROTATION with REUSE DETECTION:
|
|
13
|
-
* every successful `/users/login/refresh` burns the presented refresh
|
|
14
|
-
* token and issues a new one. Presenting an already-rotated token is
|
|
15
|
-
* indistinguishable, server-side, from a stolen token — so it is
|
|
16
|
-
* treated as theft and (once the backend leaves monitor mode and
|
|
17
|
-
* enables enforcing mode) kills the whole token family.
|
|
18
|
-
*
|
|
19
|
-
* That puts three hard obligations on the client:
|
|
20
|
-
*
|
|
21
|
-
* 1. Persist the NEW refreshToken from every response, immediately,
|
|
22
|
-
* before any other logic can throw and drop it on the floor.
|
|
23
|
-
* 2. Never rotate concurrently. Two parallel refreshes both start
|
|
24
|
-
* from the same token; the loser presents a burned one and looks
|
|
25
|
-
* like an attacker. React Native is single-process, so a shared
|
|
26
|
-
* in-flight promise is the whole lock — no Web Locks needed (the
|
|
27
|
-
* web build of this component does need them, see its own
|
|
28
|
-
* `authRefresh.ts`).
|
|
29
|
-
* 3. Route EVERY refresh path through here. One "side" refresh
|
|
30
|
-
* elsewhere in the codebase breaks the scheme for everyone.
|
|
31
|
-
*
|
|
32
|
-
* Callers must also stop treating 401 as "log out". Two of the four
|
|
33
|
-
* refresh error codes are race signals, not auth failures — see
|
|
34
|
-
* `RefreshErrorCode` below and `RefreshFatalError`.
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Thrown when the session is genuinely dead and the caller must do a
|
|
39
|
-
* hard logout (clear storage, drop XMPP, send the user to login).
|
|
40
|
-
*
|
|
41
|
-
* Anything else this module rejects with — network errors, 5xx, an
|
|
42
|
-
* unrecognised 401 — is NOT fatal and must NOT trigger a logout.
|
|
43
|
-
*/
|
|
44
|
-
export class RefreshFatalError extends Error {
|
|
45
|
-
constructor(code, message) {
|
|
46
|
-
super(message || `Refresh failed: ${code}`);
|
|
47
|
-
this.name = 'RefreshFatalError';
|
|
48
|
-
this.code = code;
|
|
49
|
-
// Required for `instanceof` to survive TS's ES5 class-extends-builtin
|
|
50
|
-
// downlevelling, which RN's babel preset still applies.
|
|
51
|
-
Object.setPrototypeOf(this, RefreshFatalError.prototype);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
export const isRefreshFatalError = error => error instanceof RefreshFatalError || error?.name === 'RefreshFatalError';
|
|
55
|
-
const REFRESH_ENDPOINT = '/v1/users/login/refresh';
|
|
56
|
-
|
|
57
|
-
/** `REFRESH_IN_PROGRESS` retry budget, per backend guidance (~300ms x 2-3). */
|
|
58
|
-
const IN_PROGRESS_MAX_ATTEMPTS = 3;
|
|
59
|
-
const IN_PROGRESS_BASE_DELAY_MS = 300;
|
|
60
|
-
/**
|
|
61
|
-
* Jitter matters: after a network blip every client in the app retries
|
|
62
|
-
* on the same schedule and would hammer the rotation mutex in lockstep.
|
|
63
|
-
*/
|
|
64
|
-
const IN_PROGRESS_JITTER_MS = 150;
|
|
65
|
-
const KNOWN_CODES = ['REFRESH_IN_PROGRESS', 'REFRESH_TOKEN_ALREADY_ROTATED', 'REFRESH_TOKEN_REUSE_DETECTED', 'REFRESH_TOKEN_NOT_FOUND'];
|
|
66
|
-
const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
|
|
67
|
-
const inProgressDelay = attempt => IN_PROGRESS_BASE_DELAY_MS * attempt + Math.floor(Math.random() * IN_PROGRESS_JITTER_MS);
|
|
68
|
-
|
|
69
|
-
/**
|
|
70
|
-
* All four codes come back as HTTP 401, so the status alone tells us
|
|
71
|
-
* nothing — the code in the body is the only signal.
|
|
72
|
-
*
|
|
73
|
-
* TODO(backend-confirm): the exact location of `code` in the payload is
|
|
74
|
-
* not documented yet. Until it is, probe every shape the API uses
|
|
75
|
-
* elsewhere and take the first hit. Once confirmed, collapse this to
|
|
76
|
-
* the single real path.
|
|
77
|
-
*/
|
|
78
|
-
export const parseRefreshErrorCode = error => {
|
|
79
|
-
const response = error?.response;
|
|
80
|
-
if (!response) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
const data = response.data;
|
|
84
|
-
const candidates = [data?.code, data?.error?.code, data?.errors?.[0]?.code, data?.error, data?.message, response.headers?.['x-error-code']];
|
|
85
|
-
for (const candidate of candidates) {
|
|
86
|
-
if (typeof candidate !== 'string') {
|
|
87
|
-
continue;
|
|
88
|
-
}
|
|
89
|
-
const match = KNOWN_CODES.find(code => candidate.includes(code));
|
|
90
|
-
if (match) {
|
|
91
|
-
return match;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return null;
|
|
95
|
-
};
|
|
96
|
-
const getStoreUser = () => store.getState().chatSettingStore?.user || {};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* The refresh token as of RIGHT NOW. Read at the moment of use, never
|
|
100
|
-
* captured ahead of time — that is the single-process equivalent of the
|
|
101
|
-
* web build's "re-read inside the lock".
|
|
102
|
-
*
|
|
103
|
-
* Redux is the source of truth in RN (one process, one store);
|
|
104
|
-
* AsyncStorage is only consulted as a cold-start fallback, before
|
|
105
|
-
* `resolveInitBeforeLoadUser` has hydrated the store.
|
|
106
|
-
*/
|
|
107
|
-
const readCurrentRefreshToken = async () => {
|
|
108
|
-
const fromStore = getStoreUser().refreshToken;
|
|
109
|
-
if (fromStore) {
|
|
110
|
-
return fromStore;
|
|
111
|
-
}
|
|
112
|
-
const stored = await secureUserStorage().get();
|
|
113
|
-
return stored?.refreshToken || '';
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Persist BEFORE resolving. The dispatch updates redux (and, until
|
|
118
|
-
* phase 6 lands, fires its own best-effort AsyncStorage write); the
|
|
119
|
-
* awaited write below is the one that actually guarantees the rotated
|
|
120
|
-
* token survives the app being killed a moment later. Losing it means
|
|
121
|
-
* the next launch presents a burned token — i.e. looks like theft.
|
|
122
|
-
*/
|
|
123
|
-
const persistTokens = async result => {
|
|
124
|
-
store.dispatch(refreshTokens({
|
|
125
|
-
token: result.token,
|
|
126
|
-
refreshToken: result.refreshToken,
|
|
127
|
-
xmppPassword: result.xmppPassword,
|
|
128
|
-
fileToken: result.fileToken
|
|
129
|
-
}));
|
|
130
|
-
try {
|
|
131
|
-
// Write the post-dispatch snapshot rather than a read-modify-write
|
|
132
|
-
// merge, so this can't race the reducer's own write back to a
|
|
133
|
-
// stale copy of the surrounding user fields.
|
|
134
|
-
await secureUserStorage().set(store.getState().chatSettingStore.user);
|
|
135
|
-
} catch (error) {
|
|
136
|
-
pushLog('warn', 'authRefresh: failed to persist rotated tokens', error);
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* A rotation that happened somewhere we didn't drive — currently only
|
|
142
|
-
* reachable via the ALREADY_ROTATED recovery path, kept separate so the
|
|
143
|
-
* web build and this one stay structurally identical.
|
|
144
|
-
*/
|
|
145
|
-
const adoptStoredTokens = async () => {
|
|
146
|
-
const stored = await secureUserStorage().get();
|
|
147
|
-
if (!stored?.refreshToken || !stored?.token) {
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
const user = getStoreUser();
|
|
151
|
-
if (user.refreshToken !== stored.refreshToken) {
|
|
152
|
-
store.dispatch(refreshTokens({
|
|
153
|
-
token: stored.token,
|
|
154
|
-
refreshToken: stored.refreshToken
|
|
155
|
-
}));
|
|
156
|
-
}
|
|
157
|
-
return {
|
|
158
|
-
token: stored.token,
|
|
159
|
-
refreshToken: stored.refreshToken,
|
|
160
|
-
xmppPassword: stored.xmppPassword,
|
|
161
|
-
fileToken: stored.fileToken
|
|
162
|
-
};
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
/** Host-supplied rotation, mirrors `IConfig['refreshTokens']['refreshFunction']`. */
|
|
166
|
-
|
|
167
|
-
const runConsumerRefresh = async refreshFunction => {
|
|
168
|
-
const refreshed = await refreshFunction();
|
|
169
|
-
if (!refreshed?.accessToken) {
|
|
170
|
-
throw new Error('Custom refresh function did not return an access token');
|
|
171
|
-
}
|
|
172
|
-
if (!refreshed.refreshToken) {
|
|
173
|
-
// Not fatal — some hosts still run non-rotating backends — but on a
|
|
174
|
-
// rotating one this silently keeps a burned token around, which is
|
|
175
|
-
// exactly the failure the new scheme punishes.
|
|
176
|
-
pushLog('warn', 'authRefresh: custom refreshFunction returned no refreshToken; ' + 'keeping the existing one. On a rotating backend this will be ' + 'seen as token reuse.');
|
|
177
|
-
}
|
|
178
|
-
const result = {
|
|
179
|
-
token: refreshed.accessToken,
|
|
180
|
-
refreshToken: refreshed.refreshToken || (await readCurrentRefreshToken()) || '',
|
|
181
|
-
xmppPassword: refreshed.xmppPassword,
|
|
182
|
-
fileToken: refreshed.fileToken
|
|
183
|
-
};
|
|
184
|
-
await persistTokens(result);
|
|
185
|
-
return result;
|
|
186
|
-
};
|
|
187
|
-
const requestRotation = async refreshToken => {
|
|
188
|
-
const response = await http.post(REFRESH_ENDPOINT, {}, {
|
|
189
|
-
headers: {
|
|
190
|
-
Authorization: refreshToken
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
const result = {
|
|
194
|
-
token: response?.data?.token || '',
|
|
195
|
-
refreshToken: response?.data?.refreshToken || '',
|
|
196
|
-
wsToken: response?.data?.wsToken,
|
|
197
|
-
xmppPassword: response?.data?.xmppPassword,
|
|
198
|
-
fileToken: response?.data?.fileToken
|
|
199
|
-
};
|
|
200
|
-
if (!result.token || !result.refreshToken) {
|
|
201
|
-
throw new Error('Refresh response did not contain both tokens');
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Persist first, resolve second. Every early return between here and
|
|
205
|
-
// the caller is a chance to lose the rotation.
|
|
206
|
-
await persistTokens(result);
|
|
207
|
-
return result;
|
|
208
|
-
};
|
|
209
|
-
const performRefresh = async overrideToken => {
|
|
210
|
-
const consumerRefresh = store.getState().chatSettingStore?.config?.refreshTokens?.refreshFunction;
|
|
211
|
-
if (consumerRefresh) {
|
|
212
|
-
// A configured host function wins unconditionally — including over
|
|
213
|
-
// an explicit bootstrap token. Hosts that embed this SDK often own
|
|
214
|
-
// the Ethora refresh token themselves (their own storage, their own
|
|
215
|
-
// rotation) and only hand us a copy; rotating it here would burn
|
|
216
|
-
// THEIR token behind their back and leave them holding a dead one.
|
|
217
|
-
//
|
|
218
|
-
// It still has to be serialised — it hits the same backend mutex —
|
|
219
|
-
// hence running it inside the shared in-flight promise.
|
|
220
|
-
return runConsumerRefresh(consumerRefresh);
|
|
221
|
-
}
|
|
222
|
-
for (let attempt = 1; attempt <= IN_PROGRESS_MAX_ATTEMPTS; attempt++) {
|
|
223
|
-
const refreshToken = overrideToken || (await readCurrentRefreshToken());
|
|
224
|
-
if (!refreshToken) {
|
|
225
|
-
// Deliberately NOT fatal: a missing token mid-bootstrap must not
|
|
226
|
-
// nuke a session that is still being hydrated.
|
|
227
|
-
throw new Error('Refresh token is missing');
|
|
228
|
-
}
|
|
229
|
-
try {
|
|
230
|
-
return await requestRotation(refreshToken);
|
|
231
|
-
} catch (error) {
|
|
232
|
-
const code = parseRefreshErrorCode(error);
|
|
233
|
-
if (code === 'REFRESH_IN_PROGRESS') {
|
|
234
|
-
if (attempt < IN_PROGRESS_MAX_ATTEMPTS) {
|
|
235
|
-
await sleep(inProgressDelay(attempt));
|
|
236
|
-
continue;
|
|
237
|
-
}
|
|
238
|
-
// Budget spent. Whoever holds the mutex has very likely
|
|
239
|
-
// finished and written a newer token — take it if so. Skipped
|
|
240
|
-
// for an explicit token: it may belong to a different session
|
|
241
|
-
// than whatever is currently in storage.
|
|
242
|
-
const adopted = overrideToken ? null : await adoptStoredTokens();
|
|
243
|
-
if (adopted && adopted.refreshToken !== refreshToken) {
|
|
244
|
-
return adopted;
|
|
245
|
-
}
|
|
246
|
-
throw error;
|
|
247
|
-
}
|
|
248
|
-
if (code === 'REFRESH_TOKEN_ALREADY_ROTATED') {
|
|
249
|
-
// Our copy is stale. If something already wrote a newer token,
|
|
250
|
-
// this is a benign race — use it. Otherwise the session really
|
|
251
|
-
// is unrecoverable.
|
|
252
|
-
const adopted = overrideToken ? null : await adoptStoredTokens();
|
|
253
|
-
if (adopted && adopted.refreshToken !== refreshToken) {
|
|
254
|
-
return adopted;
|
|
255
|
-
}
|
|
256
|
-
throw new RefreshFatalError(code);
|
|
257
|
-
}
|
|
258
|
-
if (code === 'REFRESH_TOKEN_REUSE_DETECTED' || code === 'REFRESH_TOKEN_NOT_FOUND') {
|
|
259
|
-
throw new RefreshFatalError(code);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
// Network error, 5xx, plain 401 without a code — pass through
|
|
263
|
-
// untouched. The caller must not log out on these.
|
|
264
|
-
throw error;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
// Unreachable: the loop either returns or throws.
|
|
269
|
-
throw new Error('Refresh attempts exhausted');
|
|
270
|
-
};
|
|
271
|
-
let inflight = null;
|
|
272
|
-
let lastRotationAt = 0;
|
|
273
|
-
const QUIET_ROTATION_MIN_INTERVAL_MS = 5 * 60 * 1000;
|
|
274
|
-
|
|
275
|
-
/**
|
|
276
|
-
* Rotate the tokens. Concurrent callers share ONE request — this is the
|
|
277
|
-
* lock the new backend scheme requires.
|
|
278
|
-
*
|
|
279
|
-
* Rejects with `RefreshFatalError` when the session is dead (caller
|
|
280
|
-
* should hard-logout) and with a plain error otherwise (caller should
|
|
281
|
-
* surface the failure and leave the session alone).
|
|
282
|
-
*/
|
|
283
|
-
export function refreshAuthTokens(options) {
|
|
284
|
-
if (inflight) {
|
|
285
|
-
// Whatever that rotation produces is at least as fresh as anything
|
|
286
|
-
// this caller could have asked for.
|
|
287
|
-
return inflight;
|
|
288
|
-
}
|
|
289
|
-
inflight = performRefresh(options?.refreshToken).then(result => {
|
|
290
|
-
lastRotationAt = Date.now();
|
|
291
|
-
return result;
|
|
292
|
-
}).finally(() => {
|
|
293
|
-
inflight = null;
|
|
294
|
-
});
|
|
295
|
-
return inflight;
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
/**
|
|
299
|
-
* Fire-and-forget variant for call sites that only want "make sure the
|
|
300
|
-
* tokens are fresh" and have no meaningful error handling — chat
|
|
301
|
-
* bootstrap, XMPP reconnect. Never rejects.
|
|
302
|
-
*/
|
|
303
|
-
|
|
304
|
-
export async function refreshAuthTokensQuietly(options) {
|
|
305
|
-
if (!options?.force && Date.now() - lastRotationAt < QUIET_ROTATION_MIN_INTERVAL_MS) {
|
|
306
|
-
return null;
|
|
307
|
-
}
|
|
308
|
-
try {
|
|
309
|
-
return await refreshAuthTokens();
|
|
310
|
-
} catch (error) {
|
|
311
|
-
pushLog(isRefreshFatalError(error) ? 'error' : 'warn', 'authRefresh: background refresh failed', error);
|
|
312
|
-
return null;
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/** Test seam — drops any shared in-flight promise between cases. */
|
|
317
|
-
export function __resetAuthRefreshStateForTests() {
|
|
318
|
-
inflight = null;
|
|
319
|
-
lastRotationAt = 0;
|
|
320
|
-
}
|
|
321
|
-
//# sourceMappingURL=authRefresh.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["http","store","refreshTokens","secureUserStorage","pushLog","RefreshFatalError","Error","constructor","code","message","name","Object","setPrototypeOf","prototype","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","getState","chatSettingStore","user","readCurrentRefreshToken","fromStore","refreshToken","stored","get","persistTokens","result","dispatch","token","xmppPassword","fileToken","set","adoptStoredTokens","runConsumerRefresh","refreshFunction","refreshed","accessToken","requestRotation","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":[]}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** @format */
|
|
2
|
-
import React from 'react';
|
|
3
|
-
interface ReportChatModalProps {
|
|
4
|
-
visible: boolean;
|
|
5
|
-
onClose: () => void;
|
|
6
|
-
}
|
|
7
|
-
declare const ReportChatModal: React.FC<ReportChatModalProps>;
|
|
8
|
-
export default ReportChatModal;
|
|
9
|
-
//# sourceMappingURL=ReportChatModal.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReportChatModal.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modals/ChatProfileModal/ReportChatModal.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAAmB,MAAM,OAAO,CAAC;AAiCxC,UAAU,oBAAoB;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+HnD,CAAC;AA4EF,eAAe,eAAe,CAAC"}
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/** @format */
|
|
2
|
-
import React from 'react';
|
|
3
|
-
import { Animated, StyleProp, TextStyle } from 'react-native';
|
|
4
|
-
/** Height of the expanded photo hero. */
|
|
5
|
-
export declare const HERO_HEIGHT = 320;
|
|
6
|
-
/** Back / "…" row, directly below the status-bar inset. */
|
|
7
|
-
export declare const TOP_BAR_BUTTONS = 60;
|
|
8
|
-
/**
|
|
9
|
-
* Avatar + name row underneath it, revealed as the header collapses.
|
|
10
|
-
* Taller than the 48pt avatar it holds, so the row breathes: the extra
|
|
11
|
-
* height splits evenly above and below (the row centres its content),
|
|
12
|
-
* putting real space between the avatar and both the buttons above and
|
|
13
|
-
* the content below.
|
|
14
|
-
*/
|
|
15
|
-
export declare const TOP_BAR_NAME = 92;
|
|
16
|
-
/** Content band of the collapsed bar, below the status-bar inset. */
|
|
17
|
-
export declare const TOP_BAR_BAND: number;
|
|
18
|
-
/** True when the frosted-glass layer is the real thing, not the dim. */
|
|
19
|
-
export declare const hasNativeBlur: () => boolean;
|
|
20
|
-
export interface HeroAction {
|
|
21
|
-
key: string;
|
|
22
|
-
label: string;
|
|
23
|
-
/** Rendered inside a circle tinted for the current background. */
|
|
24
|
-
icon: (color: string) => React.ReactNode;
|
|
25
|
-
onPress: () => void;
|
|
26
|
-
}
|
|
27
|
-
interface CommonProps {
|
|
28
|
-
title: string;
|
|
29
|
-
subtitle?: string;
|
|
30
|
-
imageUri?: string | null;
|
|
31
|
-
/** Background when the chat has no picture — one flat colour, no scrims. */
|
|
32
|
-
fallbackColor: string;
|
|
33
|
-
/** Two uppercase letters shown on that background. */
|
|
34
|
-
initials: string;
|
|
35
|
-
scrollY: Animated.Value;
|
|
36
|
-
/** Prefixes every testID, so each screen's tests address their own. */
|
|
37
|
-
testIDPrefix?: string;
|
|
38
|
-
}
|
|
39
|
-
/** Everything the screen needs to line its scroll content up with the bar. */
|
|
40
|
-
export declare const useHeaderMetrics: () => {
|
|
41
|
-
insets: import("react-native-safe-area-context").EdgeInsets;
|
|
42
|
-
barHeight: number;
|
|
43
|
-
/** Scroll distance between the expanded hero and the collapsed bar. */
|
|
44
|
-
collapseDistance: number;
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* The chat picture, blown up to a full-bleed hero with the name, member
|
|
48
|
-
* count and the round action buttons on top of it.
|
|
49
|
-
*
|
|
50
|
-
* It lives INSIDE the ScrollView (rather than behind it) so the action
|
|
51
|
-
* buttons stay tappable — an absolutely-positioned hero would sit under a
|
|
52
|
-
* full-screen scroll surface that swallows every touch. Parallax is done
|
|
53
|
-
* on the inner image instead: the wrapper keeps its layout height while
|
|
54
|
-
* the picture drifts at ~⅓ of the scroll speed, and over-scrolling
|
|
55
|
-
* upwards scales it up the way iOS profile headers do.
|
|
56
|
-
*/
|
|
57
|
-
export declare const ProfileHero: React.FC<CommonProps & {
|
|
58
|
-
actions: HeroAction[];
|
|
59
|
-
/** Rendered to the right of the name (the profile's Leave button). */
|
|
60
|
-
titleAccessory?: React.ReactNode;
|
|
61
|
-
titleStyle?: StyleProp<TextStyle>;
|
|
62
|
-
subtitleStyle?: StyleProp<TextStyle>;
|
|
63
|
-
}>;
|
|
64
|
-
/**
|
|
65
|
-
* The bar pinned over the hero: back button and the "…" menu are always
|
|
66
|
-
* there, while the frosted picture, small avatar and name fade in as the
|
|
67
|
-
* hero scrolls away — the collapsed state from the design's third screen.
|
|
68
|
-
*/
|
|
69
|
-
export declare const ProfileTopBar: React.FC<CommonProps & {
|
|
70
|
-
onBack: () => void;
|
|
71
|
-
menu?: React.ReactNode;
|
|
72
|
-
titleStyle?: StyleProp<TextStyle>;
|
|
73
|
-
}>;
|
|
74
|
-
export {};
|
|
75
|
-
//# sourceMappingURL=ProfileHeader.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modals/ProfileHeader/ProfileHeader.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,QAAQ,EAER,SAAS,EAGT,SAAS,EAGV,MAAM,cAAc,CAAC;AAKtB,yCAAyC;AACzC,eAAO,MAAM,WAAW,MAAM,CAAC;AAC/B,2DAA2D;AAC3D,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,KAAK,CAAC;AAC/B,qEAAqE;AACrE,eAAO,MAAM,YAAY,QAAiC,CAAC;AAyC3D,wEAAwE;AACxE,eAAO,MAAM,aAAa,eAAmB,CAAC;AAyC9C,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC;IACxB,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8EAA8E;AAC9E,eAAO,MAAM,gBAAgB;;;IAMzB,uEAAuE;;CAG1E,CAAC;AAYF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAChC,WAAW,GAAG;IACZ,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,sEAAsE;IACtE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,aAAa,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACtC,CAoKF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAClC,WAAW,GAAG;IACZ,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,UAAU,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACnC,CAyGF,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** @format */
|
|
2
|
-
import React from 'react';
|
|
3
|
-
export interface ProfileMenuItem {
|
|
4
|
-
key: string;
|
|
5
|
-
label: string;
|
|
6
|
-
icon: React.ReactNode;
|
|
7
|
-
destructive?: boolean;
|
|
8
|
-
onPress: () => void;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* The "…" overflow menu shared by the chat and user profile screens.
|
|
12
|
-
*
|
|
13
|
-
* The shared `DropdownMenu` pins its card at a hard-coded `top: 95`, which
|
|
14
|
-
* on this screen landed it over the host's own tab bar, unanchored to the
|
|
15
|
-
* button. This one measures the button and grows the card out of it: the
|
|
16
|
-
* card scales up from its top-right corner (translate → scale → translate
|
|
17
|
-
* back, which is how you fake a transform-origin in React Native) so the
|
|
18
|
-
* menu visibly unfolds from the three dots.
|
|
19
|
-
*/
|
|
20
|
-
declare const ProfileMenu: React.FC<{
|
|
21
|
-
items: ProfileMenuItem[];
|
|
22
|
-
testIDPrefix?: string;
|
|
23
|
-
}>;
|
|
24
|
-
export default ProfileMenu;
|
|
25
|
-
//# sourceMappingURL=ProfileMenu.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ProfileMenu.d.ts","sourceRoot":"","sources":["../../../../../src/components/Modals/ProfileHeader/ProfileMenu.tsx"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAA2B,MAAM,OAAO,CAAC;AAchD,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAUD;;;;;;;;;GASG;AACH,QAAA,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAC1B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CA2HA,CAAC;AAgDF,eAAe,WAAW,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/** @format */
|
|
2
|
-
import type { IConfig } from '../types/types';
|
|
3
|
-
/** Ground behind the conversation, and behind the rounded corners of the
|
|
4
|
-
* header and the composer that sit over it. */
|
|
5
|
-
export declare const DEFAULT_CHAT_BACKGROUND = "#F3F6FC";
|
|
6
|
-
/**
|
|
7
|
-
* One place for the conversation's background colour.
|
|
8
|
-
*
|
|
9
|
-
* The message list has always painted it; the chat container behind it was
|
|
10
|
-
* plain white, which is what made the header's rounded bottom corners and
|
|
11
|
-
* the composer's rounded top corners invisible — the corners revealed the
|
|
12
|
-
* white parent, not the conversation.
|
|
13
|
-
*/
|
|
14
|
-
export declare const getChatBackgroundColor: (config?: IConfig) => string;
|
|
15
|
-
//# sourceMappingURL=getChatBackground.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getChatBackground.d.ts","sourceRoot":"","sources":["../../../src/helpers/getChatBackground.ts"],"names":[],"mappings":"AAAA,cAAc;AAEd,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C;+CAC+C;AAC/C,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,GAAI,SAAS,OAAO,KAAG,MACA,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export interface DisplayFileNameOptions {
|
|
2
|
-
originalName?: string | null;
|
|
3
|
-
fileName?: string | null;
|
|
4
|
-
location?: string | null;
|
|
5
|
-
mimetype?: string | null;
|
|
6
|
-
}
|
|
7
|
-
/**
|
|
8
|
-
* Picks the best human-readable filename for a chat attachment - the
|
|
9
|
-
* single source of truth for every place a file name is rendered in the
|
|
10
|
-
* UI, saved to disk, shared, or downloaded.
|
|
11
|
-
*
|
|
12
|
-
* Priority: `originalName` (the sender's own file name, e.g. "test1.pdf")
|
|
13
|
-
* beats `fileName` (the server's stored/hashed name, e.g.
|
|
14
|
-
* "3f9a1c...c2.pdf") beats the last path segment of `location`. The
|
|
15
|
-
* stored hash name is only a fallback of last resort.
|
|
16
|
-
*
|
|
17
|
-
* Bug #40: display and save/share/download logic used to prefer the
|
|
18
|
-
* stored hash name over the original one, so an attachment sent as
|
|
19
|
-
* "test1.pdf" showed up (and got saved to the phone) as something like
|
|
20
|
-
* "3f9a1c...c2.pdf" - both directions (web -> RN and RN -> RN).
|
|
21
|
-
*
|
|
22
|
-
* Always returns a non-empty string with a valid extension: if the
|
|
23
|
-
* chosen candidate has no extension (a hash name can be `<hex>` with no
|
|
24
|
-
* extension at all, or `<hex>.<ext>`), one is appended from `mimetype`
|
|
25
|
-
* (or `.bin` as a last resort when the mime is unknown/missing too).
|
|
26
|
-
*/
|
|
27
|
-
export declare function getDisplayFileName(options: DisplayFileNameOptions): string;
|
|
28
|
-
/**
|
|
29
|
-
* Makes a display name safe to use as an actual path segment when
|
|
30
|
-
* saving/sharing a file to the device: strips path separators (so an
|
|
31
|
-
* odd/hostile server-provided name can't escape the target directory)
|
|
32
|
-
* and control characters. Keeps the rest of the name - including the
|
|
33
|
-
* extension - intact.
|
|
34
|
-
*/
|
|
35
|
-
export declare function sanitizeFileNameForPath(name: string): string;
|
|
36
|
-
/**
|
|
37
|
-
* Resolves a filename that is safe to write into a target directory:
|
|
38
|
-
* sanitizes it, then - if `exists` reports a collision - inserts
|
|
39
|
-
* " (1)", " (2)", ... before the extension until a free name is found,
|
|
40
|
-
* so saving two different attachments that share a display name never
|
|
41
|
-
* silently overwrites the first one.
|
|
42
|
-
*
|
|
43
|
-
* `exists` is injected so callers can back it with whatever existence
|
|
44
|
-
* check makes sense for their storage API (expo-file-system,
|
|
45
|
-
* StorageAccessFramework directory listing, ...) - this function stays
|
|
46
|
-
* pure and easy to unit test.
|
|
47
|
-
*/
|
|
48
|
-
export declare function getUniqueFileName(name: string, exists: (candidateName: string) => Promise<boolean>): Promise<string>;
|
|
49
|
-
//# sourceMappingURL=getDisplayFileName.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getDisplayFileName.d.ts","sourceRoot":"","sources":["../../../src/helpers/getDisplayFileName.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAO1E;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAClD,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import type { IMessage, IRoom } from '../types/types';
|
|
2
|
-
export declare const FUTURE_READ_MARKER_TOLERANCE_MS: number;
|
|
3
|
-
export interface ReadTimestampHeapState {
|
|
4
|
-
messageHeap?: IMessage[] | null;
|
|
5
|
-
failedMessages?: Record<string, unknown> | null;
|
|
6
|
-
}
|
|
7
|
-
type RoomForReadTimestamp = Pick<IRoom, 'jid' | 'messages' | 'lastViewedTimestamp'>;
|
|
8
|
-
/**
|
|
9
|
-
* Resolve the "read up to here" marker for `room` using SERVER time,
|
|
10
|
-
* never the device clock.
|
|
11
|
-
*
|
|
12
|
-
* Bug #38: if the device clock is ahead when the user leaves a room, a
|
|
13
|
-
* `Date.now()` read marker lands in the future. The private-store merge
|
|
14
|
-
* (flushLastViewedToPrivateStore.ts) is forward-only ("if (prevNum >=
|
|
15
|
-
* ts) continue"), so once a future marker is written, no later
|
|
16
|
-
* *correct* write can ever replace it - the room's unread count is
|
|
17
|
-
* stuck wrong forever, on every device, from that point on. Anchoring
|
|
18
|
-
* to the newest SERVER-acknowledged message's own timestamp instead
|
|
19
|
-
* means the marker we write can never be ahead of what the server
|
|
20
|
-
* itself has recorded for the room.
|
|
21
|
-
*
|
|
22
|
-
* "Server-acknowledged" excludes:
|
|
23
|
-
* - a message still marked `pending` (the optimistic bubble shown
|
|
24
|
-
* while a send is in flight - it carries the DEVICE send time via
|
|
25
|
-
* `date`, not a server timestamp, until the server echoes it back
|
|
26
|
-
* and insertMessageWithDelimiter flips `pending` off);
|
|
27
|
-
* - a message id present in `heapState.messageHeap` (queued retry -
|
|
28
|
-
* used for offline media sends, see roomHeapSlice.ts) or
|
|
29
|
-
* `heapState.failedMessages` (a send that never reached the server
|
|
30
|
-
* at all).
|
|
31
|
-
*
|
|
32
|
-
* `msgSortableMs` (roomsSlice.ts) reads the server-assigned microsecond
|
|
33
|
-
* timestamp encoded in the first 13 digits of the message id - the same
|
|
34
|
-
* source already used for message ordering and unread counting - so
|
|
35
|
-
* this stays consistent with the rest of the read/unread pipeline.
|
|
36
|
-
*
|
|
37
|
-
* Falls back to the room's existing `lastViewedTimestamp` (so leaving
|
|
38
|
-
* an empty or never-scrolled room doesn't regress the marker), then to
|
|
39
|
-
* `0` when there's truly nothing to anchor to yet (a brand new room
|
|
40
|
-
* with no history and no prior marker). Callers should treat `0` as
|
|
41
|
-
* "skip the write" rather than substituting a device-clock guess.
|
|
42
|
-
*/
|
|
43
|
-
export declare function getServerReadTimestamp(room: RoomForReadTimestamp | null | undefined, heapState?: ReadTimestampHeapState | null): number;
|
|
44
|
-
/**
|
|
45
|
-
* Is `marker` a leftover from a device whose clock was wrong when it
|
|
46
|
-
* stamped a read marker (bug #38)?
|
|
47
|
-
*
|
|
48
|
-
* TWO independent signals must agree before we're willing to throw a
|
|
49
|
-
* stored marker away, because "waive the forward-only guard" is a
|
|
50
|
-
* destructive operation:
|
|
51
|
-
*
|
|
52
|
-
* 1. it sits well past the newest message we know the room has, AND
|
|
53
|
-
* 2. it sits well past real time.
|
|
54
|
-
*
|
|
55
|
-
* Signal 1 alone is NOT enough, and that is the whole point of this
|
|
56
|
-
* function: a device whose local cache for a room is simply stale (very
|
|
57
|
-
* common - any room whose history hasn't been synced yet this session)
|
|
58
|
-
* sees a perfectly legitimate marker written by another device that HAS
|
|
59
|
-
* seen newer messages, and would happily "heal" it backwards, resurrecting
|
|
60
|
-
* already-read messages as unread on every device. A real timestamp can
|
|
61
|
-
* never be ahead of real time, so requiring signal 2 as well means a
|
|
62
|
-
* stale cache on its own can no longer trigger the self-heal.
|
|
63
|
-
*
|
|
64
|
-
* Signal 2 alone is not used either: it would let a device whose own
|
|
65
|
-
* clock is running SLOW mistake every correct marker for a corrupt one.
|
|
66
|
-
*/
|
|
67
|
-
export declare function isCorruptFutureReadMarker(marker: number, newestAckedMs: number): boolean;
|
|
68
|
-
export {};
|
|
69
|
-
//# sourceMappingURL=getServerReadTimestamp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getServerReadTimestamp.d.ts","sourceRoot":"","sources":["../../../src/helpers/getServerReadTimestamp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAWtD,eAAO,MAAM,+BAA+B,QAAgB,CAAC;AAE7D,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CACjD;AAED,KAAK,oBAAoB,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,UAAU,GAAG,qBAAqB,CAAC,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,CAAC,EAAE,sBAAsB,GAAG,IAAI,GACxC,MAAM,CA4BR;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAKT"}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { IMessage } from '../types/types';
|
|
2
|
-
/**
|
|
3
|
-
* Bug #41: during reconnect catch-up (app was backgrounded/offline, then
|
|
4
|
-
* comes back online), messages replayed from MAM could transiently render
|
|
5
|
-
* on the RIGHT (as if sent by the current user) before flipping to the
|
|
6
|
-
* LEFT a moment later. Root cause: `message.user.id === walletAddress`
|
|
7
|
-
* treats `undefined === undefined` (or `'' === ''`) as a match, and the
|
|
8
|
-
* two sides could independently be empty for one frame -- the message's
|
|
9
|
-
* sender id before the MAM-derived value settled, and/or the current
|
|
10
|
-
* user's id before it rehydrated. Two blank ids must never compare equal.
|
|
11
|
-
*
|
|
12
|
-
* A second, related issue: the same logical sender id can show up in
|
|
13
|
-
* different shapes depending on which code path produced it -- a bare
|
|
14
|
-
* id ("wallet123") or a bare JID with an incidental session resource
|
|
15
|
-
* ("wallet123@host/sessionResource", as `senderJID` attrs carry on the
|
|
16
|
-
* wire -- see src/assets/test.xml). In every shape used in this
|
|
17
|
-
* codebase the identifying segment is the part BEFORE the first '@' (or
|
|
18
|
-
* before '/' when there's no '@'); anything after that -- domain,
|
|
19
|
-
* resource -- is noise. Comparing raw strings with `===` fails whenever
|
|
20
|
-
* one side still carries that noise and the other doesn't. Normalizing
|
|
21
|
-
* both sides (strip resource, strip domain, lowercase) before comparing
|
|
22
|
-
* makes the check tolerant of that drift.
|
|
23
|
-
*/
|
|
24
|
-
export interface OwnMessageUserLike {
|
|
25
|
-
id?: string | null;
|
|
26
|
-
xmppUsername?: string | null;
|
|
27
|
-
walletAddress?: string | null;
|
|
28
|
-
}
|
|
29
|
-
export type OwnMessageCurrentUser = OwnMessageUserLike | string | null | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* Robustly determine whether `message` was sent by `currentUser`. Never
|
|
32
|
-
* returns true from two blank/undefined ids, and tolerates bare-id vs.
|
|
33
|
-
* full-JID mismatches between the sender id and the current user id.
|
|
34
|
-
*/
|
|
35
|
-
export declare const isOwnMessage: (message: Pick<IMessage, "user"> | null | undefined, currentUser: OwnMessageCurrentUser) => boolean;
|
|
36
|
-
//# sourceMappingURL=isOwnMessage.d.ts.map
|