@ethora/chat-component-rn 26.8.1 → 26.8.2
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 +96 -0
- package/README.md +43 -10
- package/lib/commonjs/assets/icons.js +7 -2
- 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 +29 -8
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatHeader.js +9 -3
- package/lib/commonjs/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatRoom.js +150 -14
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +34 -13
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/commonjs/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +29 -9
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js +5 -1
- package/lib/commonjs/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +13 -5
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/commonjs/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +208 -35
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +317 -98
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +322 -110
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +546 -203
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +226 -0
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +69 -27
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/commonjs/components/Modals/Modal/Modal.js +8 -0
- package/lib/commonjs/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +2 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +202 -106
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/commonjs/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js +563 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +210 -0
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +7 -21
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +507 -244
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +74 -46
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +9 -2
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +21 -7
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/commonjs/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/commonjs/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +2 -1
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/MessageImage.js +37 -9
- package/lib/commonjs/components/styled/MessageImage.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +80 -11
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +9 -3
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/UnsupportedType.js +14 -4
- package/lib/commonjs/components/styled/UnsupportedType.js.map +1 -1
- package/lib/commonjs/components/styled/VideoMessage.js +119 -61
- package/lib/commonjs/components/styled/VideoMessage.js.map +1 -1
- package/lib/commonjs/context/xmppProvider.js +184 -59
- package/lib/commonjs/context/xmppProvider.js.map +1 -1
- package/lib/commonjs/helpers/createMessageFromXml.js +19 -1
- 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/getChatBackground.js +23 -0
- package/lib/commonjs/helpers/getChatBackground.js.map +1 -0
- package/lib/commonjs/helpers/getDisplayFileName.js +79 -0
- package/lib/commonjs/helpers/getDisplayFileName.js.map +1 -0
- package/lib/commonjs/helpers/getServerReadTimestamp.js +188 -0
- package/lib/commonjs/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/commonjs/helpers/historyPreloadScheduler.js +65 -2
- package/lib/commonjs/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/commonjs/helpers/initXmppRooms.js +14 -8
- package/lib/commonjs/helpers/initXmppRooms.js.map +1 -1
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js +51 -9
- package/lib/commonjs/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/commonjs/helpers/isOwnMessage.js +75 -0
- package/lib/commonjs/helpers/isOwnMessage.js.map +1 -0
- package/lib/commonjs/helpers/keyboardLayout.js +12 -2
- package/lib/commonjs/helpers/keyboardLayout.js.map +1 -1
- package/lib/commonjs/helpers/mediaLibraryRuntime.js +31 -0
- package/lib/commonjs/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/commonjs/helpers/mimeToExtension.js +6 -14
- package/lib/commonjs/helpers/mimeToExtension.js.map +1 -1
- package/lib/commonjs/helpers/msgSortableMs.js +37 -0
- package/lib/commonjs/helpers/msgSortableMs.js.map +1 -0
- package/lib/commonjs/helpers/persistCrypto.js +122 -0
- package/lib/commonjs/helpers/persistCrypto.js.map +1 -0
- package/lib/commonjs/helpers/pickImageAsset.js +68 -0
- package/lib/commonjs/helpers/pickImageAsset.js.map +1 -0
- package/lib/commonjs/helpers/pushPayload.js +71 -0
- package/lib/commonjs/helpers/pushPayload.js.map +1 -0
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js +130 -17
- package/lib/commonjs/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/commonjs/helpers/secureFileUrl.js +101 -0
- package/lib/commonjs/helpers/secureFileUrl.js.map +1 -0
- package/lib/commonjs/helpers/secureKeyValue.js +83 -0
- package/lib/commonjs/helpers/secureKeyValue.js.map +1 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js +59 -0
- package/lib/commonjs/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/commonjs/helpers/secureUserStorage.js +75 -0
- package/lib/commonjs/helpers/secureUserStorage.js.map +1 -0
- package/lib/commonjs/helpers/shallowEqual.js +36 -0
- package/lib/commonjs/helpers/shallowEqual.js.map +1 -0
- package/lib/commonjs/helpers/sheetGestures.js +32 -0
- package/lib/commonjs/helpers/sheetGestures.js.map +1 -0
- package/lib/commonjs/hooks/useChatRoomFocus.js +45 -12
- package/lib/commonjs/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/commonjs/hooks/useChatWrapperInit.js +30 -10
- package/lib/commonjs/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/commonjs/hooks/useComposing.js +27 -0
- package/lib/commonjs/hooks/useComposing.js.map +1 -1
- package/lib/commonjs/hooks/useFileToken.js +10 -0
- package/lib/commonjs/hooks/useFileToken.js.map +1 -0
- package/lib/commonjs/hooks/useLogout.js +23 -7
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/usePendingNotification.js +8 -11
- package/lib/commonjs/hooks/usePendingNotification.js.map +1 -1
- package/lib/commonjs/hooks/useSendMessage.js +50 -14
- package/lib/commonjs/hooks/useSendMessage.js.map +1 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/commonjs/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/commonjs/i18n/strings.js +145 -37
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js +44 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/auth.api.js +134 -60
- 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 +68 -9
- package/lib/commonjs/networking/api-requests/user.api.js.map +1 -1
- package/lib/commonjs/networking/apiClient.js +62 -112
- package/lib/commonjs/networking/apiClient.js.map +1 -1
- package/lib/commonjs/networking/authRefresh.js +332 -0
- package/lib/commonjs/networking/authRefresh.js.map +1 -0
- package/lib/commonjs/networking/stanzaHandlers.js +41 -28
- package/lib/commonjs/networking/stanzaHandlers.js.map +1 -1
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/commonjs/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/commonjs/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/commonjs/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/commonjs/networking/xmppClient.js +124 -8
- package/lib/commonjs/networking/xmppClient.js.map +1 -1
- package/lib/commonjs/roomStore/chatSettingsSlice.js +26 -7
- package/lib/commonjs/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/commonjs/roomStore/index.js +35 -2
- package/lib/commonjs/roomStore/index.js.map +1 -1
- package/lib/commonjs/roomStore/persistence.js +226 -23
- package/lib/commonjs/roomStore/persistence.js.map +1 -1
- package/lib/commonjs/roomStore/roomsSlice.js +151 -38
- package/lib/commonjs/roomStore/roomsSlice.js.map +1 -1
- package/lib/commonjs/services/pushSubscriptionService.js +15 -13
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/assets/icons.js +6 -1
- 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 +29 -8
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/MainComponents/ChatHeader.js +9 -3
- package/lib/module/components/MainComponents/ChatHeader.js.map +1 -1
- package/lib/module/components/MainComponents/ChatRoom.js +152 -16
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +35 -14
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LoginWrapper.js +2 -1
- package/lib/module/components/MainComponents/LoginWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +30 -10
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageContainer.js +5 -1
- package/lib/module/components/MainComponents/MessageContainer.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +13 -5
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js +14 -13
- package/lib/module/components/MainComponents/ProfileImagePlaceholder.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +207 -35
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +319 -101
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +313 -113
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +549 -207
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +223 -0
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -0
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +70 -28
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js +2 -1
- package/lib/module/components/Modals/FilePreviewModal/PdfView.js.map +1 -1
- package/lib/module/components/Modals/Modal/Modal.js +9 -1
- package/lib/module/components/Modals/Modal/Modal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +205 -108
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js +8 -0
- package/lib/module/components/Modals/NewChatModal/UpdNewChatModal.js.map +1 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js +555 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileHeader.js.map +1 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +205 -0
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -0
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -2
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +9 -23
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +509 -248
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +76 -48
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +9 -2
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +21 -7
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js +22 -3
- package/lib/module/components/RoomComponents/styled/LastMessageFile.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessagePhoto.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js +17 -3
- package/lib/module/components/RoomComponents/styled/LastMessageVideo.js.map +1 -1
- package/lib/module/components/VideoCalls/VideoCallSession.js +6 -3
- package/lib/module/components/VideoCalls/VideoCallSession.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +2 -1
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/MessageImage.js +37 -9
- package/lib/module/components/styled/MessageImage.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +81 -12
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +9 -3
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +11 -4
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/UnsupportedType.js +14 -4
- package/lib/module/components/styled/UnsupportedType.js.map +1 -1
- package/lib/module/components/styled/VideoMessage.js +120 -62
- package/lib/module/components/styled/VideoMessage.js.map +1 -1
- package/lib/module/context/xmppProvider.js +184 -60
- package/lib/module/context/xmppProvider.js.map +1 -1
- package/lib/module/helpers/createMessageFromXml.js +19 -1
- 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/getChatBackground.js +18 -0
- package/lib/module/helpers/getChatBackground.js.map +1 -0
- package/lib/module/helpers/getDisplayFileName.js +73 -0
- package/lib/module/helpers/getDisplayFileName.js.map +1 -0
- package/lib/module/helpers/getServerReadTimestamp.js +181 -0
- package/lib/module/helpers/getServerReadTimestamp.js.map +1 -0
- package/lib/module/helpers/historyPreloadScheduler.js +66 -3
- package/lib/module/helpers/historyPreloadScheduler.js.map +1 -1
- package/lib/module/helpers/initXmppRooms.js +14 -8
- package/lib/module/helpers/initXmppRooms.js.map +1 -1
- package/lib/module/helpers/insertMessageWithDelimiter.js +52 -9
- package/lib/module/helpers/insertMessageWithDelimiter.js.map +1 -1
- package/lib/module/helpers/isOwnMessage.js +70 -0
- package/lib/module/helpers/isOwnMessage.js.map +1 -0
- package/lib/module/helpers/keyboardLayout.js +12 -2
- package/lib/module/helpers/keyboardLayout.js.map +1 -1
- package/lib/module/helpers/mediaLibraryRuntime.js +25 -0
- package/lib/module/helpers/mediaLibraryRuntime.js.map +1 -0
- package/lib/module/helpers/mimeToExtension.js +6 -13
- package/lib/module/helpers/mimeToExtension.js.map +1 -1
- package/lib/module/helpers/msgSortableMs.js +32 -0
- package/lib/module/helpers/msgSortableMs.js.map +1 -0
- package/lib/module/helpers/persistCrypto.js +115 -0
- package/lib/module/helpers/persistCrypto.js.map +1 -0
- package/lib/module/helpers/pickImageAsset.js +63 -0
- package/lib/module/helpers/pickImageAsset.js.map +1 -0
- package/lib/module/helpers/pushPayload.js +63 -0
- package/lib/module/helpers/pushPayload.js.map +1 -0
- package/lib/module/helpers/resolveInitBeforeLoadUser.js +130 -16
- package/lib/module/helpers/resolveInitBeforeLoadUser.js.map +1 -1
- package/lib/module/helpers/secureFileUrl.js +91 -0
- package/lib/module/helpers/secureFileUrl.js.map +1 -0
- package/lib/module/helpers/secureKeyValue.js +75 -0
- package/lib/module/helpers/secureKeyValue.js.map +1 -0
- package/lib/module/helpers/secureStoreRuntime.js +52 -0
- package/lib/module/helpers/secureStoreRuntime.js.map +1 -0
- package/lib/module/helpers/secureUserStorage.js +72 -0
- package/lib/module/helpers/secureUserStorage.js.map +1 -0
- package/lib/module/helpers/shallowEqual.js +31 -0
- package/lib/module/helpers/shallowEqual.js.map +1 -0
- package/lib/module/helpers/sheetGestures.js +26 -0
- package/lib/module/helpers/sheetGestures.js.map +1 -0
- package/lib/module/hooks/useChatRoomFocus.js +46 -13
- package/lib/module/hooks/useChatRoomFocus.js.map +1 -1
- package/lib/module/hooks/useChatWrapperInit.js +30 -10
- package/lib/module/hooks/useChatWrapperInit.js.map +1 -1
- package/lib/module/hooks/useComposing.js +28 -1
- package/lib/module/hooks/useComposing.js.map +1 -1
- package/lib/module/hooks/useFileToken.js +5 -0
- package/lib/module/hooks/useFileToken.js.map +1 -0
- package/lib/module/hooks/useLogout.js +23 -7
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/usePendingNotification.js +8 -11
- package/lib/module/hooks/usePendingNotification.js.map +1 -1
- package/lib/module/hooks/useSendMessage.js +52 -16
- package/lib/module/hooks/useSendMessage.js.map +1 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js +6 -1
- package/lib/module/hooks/useUnreadMessagesCounter.js.map +1 -1
- package/lib/module/i18n/strings.js +145 -37
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js +14 -2
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/auth.api.js +131 -59
- 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 +64 -7
- package/lib/module/networking/api-requests/user.api.js.map +1 -1
- package/lib/module/networking/apiClient.js +61 -113
- package/lib/module/networking/apiClient.js.map +1 -1
- package/lib/module/networking/authRefresh.js +321 -0
- package/lib/module/networking/authRefresh.js.map +1 -0
- package/lib/module/networking/stanzaHandlers.js +41 -28
- package/lib/module/networking/stanzaHandlers.js.map +1 -1
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js +46 -8
- package/lib/module/networking/xmpp/flushLastViewedToPrivateStore.js.map +1 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js +8 -1
- package/lib/module/networking/xmpp/presenceInRoom.xmpp.js.map +1 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js +5 -1
- package/lib/module/networking/xmpp/subscribeToRoomMessages.xmpp.js.map +1 -1
- package/lib/module/networking/xmppClient.js +124 -8
- package/lib/module/networking/xmppClient.js.map +1 -1
- package/lib/module/roomStore/chatSettingsSlice.js +26 -7
- package/lib/module/roomStore/chatSettingsSlice.js.map +1 -1
- package/lib/module/roomStore/index.js +37 -4
- package/lib/module/roomStore/index.js.map +1 -1
- package/lib/module/roomStore/persistence.js +223 -22
- package/lib/module/roomStore/persistence.js.map +1 -1
- package/lib/module/roomStore/roomsSlice.js +139 -34
- package/lib/module/roomStore/roomsSlice.js.map +1 -1
- package/lib/module/services/pushSubscriptionService.js +15 -13
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/assets/icons.d.ts +16 -0
- 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 +10 -1
- 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/RoomList.d.ts +7 -0
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts +3 -0
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts +9 -0
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts +10 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ChatProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts +9 -0
- package/lib/typescript/components/Modals/ChatProfileModal/ReportChatModal.d.ts.map +1 -0
- 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 +4 -2
- 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/ProfileHeader/ProfileHeader.d.ts +75 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileHeader.d.ts.map +1 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts +25 -0
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -0
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts +6 -1
- 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 +16 -0
- package/lib/typescript/components/Modals/UserProfileModal/UserProfileModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts +1 -0
- 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/MessageImage.d.ts +14 -0
- package/lib/typescript/components/styled/MessageImage.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 +8 -0
- 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/getChatBackground.d.ts +15 -0
- package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -0
- package/lib/typescript/helpers/getDisplayFileName.d.ts +49 -0
- package/lib/typescript/helpers/getDisplayFileName.d.ts.map +1 -0
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts +108 -0
- package/lib/typescript/helpers/getServerReadTimestamp.d.ts.map +1 -0
- 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 +1 -1
- package/lib/typescript/helpers/insertMessageWithDelimiter.d.ts.map +1 -1
- package/lib/typescript/helpers/isOwnMessage.d.ts +36 -0
- package/lib/typescript/helpers/isOwnMessage.d.ts.map +1 -0
- package/lib/typescript/helpers/keyboardLayout.d.ts +5 -1
- package/lib/typescript/helpers/keyboardLayout.d.ts.map +1 -1
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts +3 -0
- package/lib/typescript/helpers/mediaLibraryRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/mimeToExtension.d.ts +0 -15
- package/lib/typescript/helpers/mimeToExtension.d.ts.map +1 -1
- package/lib/typescript/helpers/msgSortableMs.d.ts +2 -0
- package/lib/typescript/helpers/msgSortableMs.d.ts.map +1 -0
- package/lib/typescript/helpers/persistCrypto.d.ts +13 -0
- package/lib/typescript/helpers/persistCrypto.d.ts.map +1 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts +27 -0
- package/lib/typescript/helpers/pickImageAsset.d.ts.map +1 -0
- package/lib/typescript/helpers/pushPayload.d.ts +7 -0
- package/lib/typescript/helpers/pushPayload.d.ts.map +1 -0
- package/lib/typescript/helpers/resolveInitBeforeLoadUser.d.ts.map +1 -1
- package/lib/typescript/helpers/secureFileUrl.d.ts +7 -0
- package/lib/typescript/helpers/secureFileUrl.d.ts.map +1 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts +13 -0
- package/lib/typescript/helpers/secureKeyValue.d.ts.map +1 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts +29 -0
- package/lib/typescript/helpers/secureStoreRuntime.d.ts.map +1 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts +23 -0
- package/lib/typescript/helpers/secureUserStorage.d.ts.map +1 -0
- package/lib/typescript/helpers/shallowEqual.d.ts +11 -0
- package/lib/typescript/helpers/shallowEqual.d.ts.map +1 -0
- package/lib/typescript/helpers/sheetGestures.d.ts +20 -0
- package/lib/typescript/helpers/sheetGestures.d.ts.map +1 -0
- package/lib/typescript/hooks/useChatRoomFocus.d.ts +4 -1
- 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/useFileToken.d.ts +2 -0
- package/lib/typescript/hooks/useFileToken.d.ts.map +1 -0
- 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 +1 -0
- package/lib/typescript/hooks/useUnreadMessagesCounter.d.ts.map +1 -1
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +9 -2
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts +3 -1
- package/lib/typescript/networking/api-requests/auth.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/user.api.d.ts +27 -0
- package/lib/typescript/networking/api-requests/user.api.d.ts.map +1 -1
- package/lib/typescript/networking/apiClient.d.ts +12 -6
- package/lib/typescript/networking/apiClient.d.ts.map +1 -1
- package/lib/typescript/networking/authRefresh.d.ts +95 -0
- package/lib/typescript/networking/authRefresh.d.ts.map +1 -0
- package/lib/typescript/networking/stanzaHandlers.d.ts.map +1 -1
- package/lib/typescript/networking/xmpp/flushLastViewedToPrivateStore.d.ts +10 -2
- 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 +14 -0
- package/lib/typescript/networking/xmppClient.d.ts.map +1 -1
- package/lib/typescript/roomStore/chatSettingsSlice.d.ts +16 -0
- 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 +18 -1
- package/lib/typescript/roomStore/persistence.d.ts.map +1 -1
- package/lib/typescript/roomStore/roomsSlice.d.ts +43 -3
- 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 +50 -5
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +41 -28
- package/src/assets/icons.tsx +48 -9
- package/src/components/AuthForms/Login.tsx +3 -3
- package/src/components/Header/HeaderRoomList.tsx +29 -7
- package/src/components/MainComponents/ChatHeader.tsx +9 -3
- package/src/components/MainComponents/ChatRoom.tsx +161 -15
- package/src/components/MainComponents/ChatWrapper.tsx +36 -20
- package/src/components/MainComponents/LoginWrapper.tsx +1 -0
- package/src/components/MainComponents/MediaMessage.tsx +26 -8
- package/src/components/MainComponents/MessageContainer.tsx +5 -1
- package/src/components/MainComponents/MessageList.tsx +23 -4
- package/src/components/MainComponents/ProfileImagePlaceholder.tsx +21 -14
- package/src/components/MainComponents/RoomList.tsx +236 -39
- package/src/components/Menu/HeaderRoomListMenu.tsx +328 -75
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +333 -97
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +600 -282
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +244 -0
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +79 -38
- package/src/components/Modals/FilePreviewModal/PdfView.tsx +2 -1
- package/src/components/Modals/Modal/Modal.tsx +7 -0
- package/src/components/Modals/NewChatModal/ModalContent.tsx +6 -3
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +219 -119
- package/src/components/Modals/NewChatModal/UpdNewChatModal.tsx +12 -1
- package/src/components/Modals/ProfileHeader/ProfileHeader.tsx +624 -0
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +217 -0
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +14 -4
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +9 -25
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +617 -307
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +75 -58
- package/src/components/Modals/styledModalComponents.tsx +9 -2
- package/src/components/RoomComponents/ChatRoomItem.tsx +18 -3
- package/src/components/RoomComponents/styled/LastMessageFile.tsx +28 -4
- package/src/components/RoomComponents/styled/LastMessagePhoto.tsx +18 -3
- package/src/components/RoomComponents/styled/LastMessageVideo.tsx +18 -3
- package/src/components/VideoCalls/VideoCallSession.tsx +8 -3
- package/src/components/styled/AudioMessage.tsx +2 -1
- package/src/components/styled/MessageImage.tsx +53 -7
- package/src/components/styled/SendInput.tsx +83 -12
- package/src/components/styled/StyledComponents.ts +9 -3
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +11 -4
- package/src/components/styled/UnsupportedType.tsx +14 -4
- package/src/components/styled/VideoMessage.tsx +131 -54
- package/src/context/xmppProvider.tsx +216 -57
- package/src/helpers/createMessageFromXml.ts +20 -1
- package/src/helpers/ensureScopedChatCache.ts +2 -2
- package/src/helpers/getChatBackground.ts +18 -0
- package/src/helpers/getDisplayFileName.ts +87 -0
- package/src/helpers/getServerReadTimestamp.ts +197 -0
- package/src/helpers/historyPreloadScheduler.ts +80 -3
- package/src/helpers/initXmppRooms.tsx +14 -10
- package/src/helpers/insertMessageWithDelimiter.ts +55 -19
- package/src/helpers/isOwnMessage.ts +90 -0
- package/src/helpers/keyboardLayout.ts +23 -2
- package/src/helpers/mediaLibraryRuntime.ts +25 -0
- package/src/helpers/mimeToExtension.ts +6 -22
- package/src/helpers/msgSortableMs.ts +25 -0
- package/src/helpers/persistCrypto.ts +127 -0
- package/src/helpers/pickImageAsset.ts +68 -0
- package/src/helpers/pushPayload.ts +62 -0
- package/src/helpers/resolveInitBeforeLoadUser.ts +125 -18
- package/src/helpers/secureFileUrl.ts +103 -0
- package/src/helpers/secureKeyValue.ts +80 -0
- package/src/helpers/secureStoreRuntime.ts +62 -0
- package/src/helpers/secureUserStorage.ts +80 -0
- package/src/helpers/shallowEqual.ts +33 -0
- package/src/helpers/sheetGestures.ts +25 -0
- package/src/hooks/useChatRoomFocus.ts +49 -9
- package/src/hooks/useChatWrapperInit.ts +30 -10
- package/src/hooks/useComposing.tsx +37 -1
- package/src/hooks/useFileToken.ts +7 -0
- package/src/hooks/useLogout.tsx +29 -9
- package/src/hooks/usePendingNotification.ts +5 -11
- package/src/hooks/useSendMessage.tsx +60 -15
- package/src/hooks/useUnreadMessagesCounter.ts +11 -0
- package/src/i18n/strings.ts +145 -37
- package/src/main.ts +26 -2
- package/src/networking/api-requests/auth.api.ts +156 -48
- 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 +79 -7
- package/src/networking/apiClient.ts +68 -123
- package/src/networking/authRefresh.ts +451 -0
- package/src/networking/stanzaHandlers.ts +44 -28
- package/src/networking/xmpp/flushLastViewedToPrivateStore.ts +71 -10
- package/src/networking/xmpp/presenceInRoom.xmpp.ts +6 -1
- package/src/networking/xmpp/subscribeToRoomMessages.xmpp.ts +12 -1
- package/src/networking/xmppClient.ts +141 -9
- package/src/roomStore/chatSettingsSlice.ts +34 -10
- package/src/roomStore/index.ts +40 -4
- package/src/roomStore/persistence.ts +234 -24
- package/src/roomStore/roomsSlice.ts +161 -29
- package/src/services/pushSubscriptionService.ts +18 -13
- package/src/types/types.ts +72 -5
- package/src/version.ts +1 -1
|
@@ -9,8 +9,8 @@ import {
|
|
|
9
9
|
clearMessageFailure,
|
|
10
10
|
markMessageFailed,
|
|
11
11
|
} from '../roomStore/roomHeapSlice';
|
|
12
|
-
import {
|
|
13
|
-
import { enqueueOutboundSend } from '../networking/outboundQueue';
|
|
12
|
+
import { uploadFileV2 } from '../networking/api-requests/auth.api';
|
|
13
|
+
import { enqueueOutboundSend, removeOutboundSend } from '../networking/outboundQueue';
|
|
14
14
|
import { RootState, store } from '../roomStore';
|
|
15
15
|
import { getGlobalXmppClient } from '../utils/clientRegistry';
|
|
16
16
|
import { useEventHandlers } from './useEventHandlers';
|
|
@@ -182,17 +182,45 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
182
182
|
// PENDING_WATCHDOG_MS, flip the bubble to "failed → tap to
|
|
183
183
|
// retry". We check at fire-time whether the message is still
|
|
184
184
|
// pending and not already marked failed by the catch path.
|
|
185
|
-
|
|
185
|
+
// One-shot extension for the case below. Declared outside the
|
|
186
|
+
// timer so the rescheduled run can't extend again.
|
|
187
|
+
let watchdogExtended = false;
|
|
188
|
+
const runWatchdog = () => {
|
|
186
189
|
const state = reduxStore.getState();
|
|
187
190
|
const roomMsgs = state.rooms?.rooms?.[activeRoomJID]?.messages || [];
|
|
188
191
|
const stillPending = roomMsgs.find(
|
|
189
192
|
(m: any) => m.id === optimisticId && m.pending
|
|
190
193
|
);
|
|
191
194
|
const alreadyFailed = state.roomHeapSlice?.failedMessages?.[optimisticId];
|
|
195
|
+
|
|
196
|
+
// Don't call it a failure while the stream is still coming back.
|
|
197
|
+
// A reconnect tears the old client down and builds a new one, and
|
|
198
|
+
// any echo in flight during that window is simply lost — the
|
|
199
|
+
// message may well have been delivered (it has been observed
|
|
200
|
+
// arriving twice on the receiving side). Failing it here shows a
|
|
201
|
+
// red "tap to retry" under a message that actually went through.
|
|
202
|
+
// Give the reconnect one more window to produce an echo, once.
|
|
203
|
+
const streamOnline = getGlobalXmppClient()?.status === 'online';
|
|
204
|
+
if (stillPending && !alreadyFailed && !streamOnline && !watchdogExtended) {
|
|
205
|
+
watchdogExtended = true;
|
|
206
|
+
console.warn(
|
|
207
|
+
`Send watchdog — ${optimisticId} still pending but the stream is not online; extending one window`
|
|
208
|
+
);
|
|
209
|
+
watchdogTimer = setTimeout(runWatchdog, PENDING_WATCHDOG_MS);
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
|
|
192
213
|
if (stillPending && !alreadyFailed) {
|
|
193
214
|
console.warn(
|
|
194
215
|
`Send watchdog fired — message ${optimisticId} stuck pending > ${PENDING_WATCHDOG_MS}ms; marking failed`
|
|
195
216
|
);
|
|
217
|
+
// Drop the buffered replay now that the bubble is showing
|
|
218
|
+
// "failed / tap to retry" — a later onOnline flush must not
|
|
219
|
+
// silently resend it behind the user's back. If the original
|
|
220
|
+
// send actually lands after this point, the server echo still
|
|
221
|
+
// flips the bubble back to delivered (newMessageMidlleware);
|
|
222
|
+
// only an explicit tap-to-retry should trigger another send.
|
|
223
|
+
removeOutboundSend(optimisticId);
|
|
196
224
|
dispatch(
|
|
197
225
|
markMessageFailed({
|
|
198
226
|
kind: 'text',
|
|
@@ -211,7 +239,9 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
211
239
|
messageType: 'text',
|
|
212
240
|
});
|
|
213
241
|
}
|
|
214
|
-
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
let watchdogTimer = setTimeout(runWatchdog, PENDING_WATCHDOG_MS);
|
|
215
245
|
|
|
216
246
|
try {
|
|
217
247
|
// The single send closure, used both for the immediate send and for
|
|
@@ -285,6 +315,9 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
285
315
|
});
|
|
286
316
|
} catch (error) {
|
|
287
317
|
clearTimeout(watchdogTimer);
|
|
318
|
+
// Same reasoning as the watchdog: once the bubble shows failed,
|
|
319
|
+
// only an explicit tap-to-retry should resend it.
|
|
320
|
+
removeOutboundSend(optimisticId);
|
|
288
321
|
dispatch(
|
|
289
322
|
markMessageFailed({
|
|
290
323
|
kind: 'text',
|
|
@@ -431,6 +464,10 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
431
464
|
console.warn(
|
|
432
465
|
`Media-send watchdog fired — ${id} stuck pending > ${PENDING_WATCHDOG_MS}ms; marking failed`
|
|
433
466
|
);
|
|
467
|
+
// See the text-send watchdog above: drop the buffered replay so
|
|
468
|
+
// a later onOnline flush can't silently resend behind the
|
|
469
|
+
// "failed / tap to retry" bubble.
|
|
470
|
+
removeOutboundSend(id);
|
|
434
471
|
dispatch(
|
|
435
472
|
markMessageFailed({
|
|
436
473
|
kind: 'media',
|
|
@@ -467,19 +504,11 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
467
504
|
name: data?.name || data?.fileName || `media_${Date.now()}`,
|
|
468
505
|
};
|
|
469
506
|
|
|
470
|
-
// Mirror the web client: a single multipart POST to /files/ with
|
|
471
|
-
// the file under the plural "files" field. We send it via fetch
|
|
472
|
-
// (not axios) because RN's fetch sets the multipart boundary on the
|
|
473
|
-
// Content-Type header correctly. The previous axios fallback omitted
|
|
474
|
-
// a valid boundary, so the server mis-parsed one file as many and
|
|
475
|
-
// rejected the request with HTTP 413 "TOO_MANY_FILES". The only
|
|
476
|
-
// retry is the documented singular-"file" fallback for deployments
|
|
477
|
-
// that 500 on the plural field (bug #10).
|
|
478
507
|
const tryUpload = async () => {
|
|
479
508
|
const fd = new FormData();
|
|
480
509
|
fd.append('files', fileBlob as any);
|
|
481
510
|
try {
|
|
482
|
-
return await
|
|
511
|
+
return await uploadFileV2(fd, activeRoomJID);
|
|
483
512
|
} catch (err: any) {
|
|
484
513
|
if (err?.response?.status === 500) {
|
|
485
514
|
console.warn(
|
|
@@ -488,7 +517,7 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
488
517
|
);
|
|
489
518
|
const fd2 = new FormData();
|
|
490
519
|
fd2.append('file', fileBlob as any);
|
|
491
|
-
return await
|
|
520
|
+
return await uploadFileV2(fd2, activeRoomJID);
|
|
492
521
|
}
|
|
493
522
|
throw err;
|
|
494
523
|
}
|
|
@@ -646,6 +675,22 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
646
675
|
async (failedId: string) => {
|
|
647
676
|
const payload = failedMessages[failedId];
|
|
648
677
|
if (!payload) {return;}
|
|
678
|
+
|
|
679
|
+
// The server may have accepted the original send even though its
|
|
680
|
+
// echo arrived too late to beat the watchdog — the bubble shows
|
|
681
|
+
// failed, but a confirmed (non-pending) copy is already sitting in
|
|
682
|
+
// the room. Resending here would deliver a genuine duplicate; just
|
|
683
|
+
// clear the failure and let the existing copy stand.
|
|
684
|
+
const roomMsgs = rooms?.[payload.roomJID]?.messages || [];
|
|
685
|
+
const alreadyDelivered = roomMsgs.some(
|
|
686
|
+
(m: any) =>
|
|
687
|
+
!m.pending && (m.id === failedId || m.xmppId === failedId)
|
|
688
|
+
);
|
|
689
|
+
if (alreadyDelivered) {
|
|
690
|
+
dispatch(clearMessageFailure(failedId));
|
|
691
|
+
return;
|
|
692
|
+
}
|
|
693
|
+
|
|
649
694
|
dispatch(clearMessageFailure(failedId));
|
|
650
695
|
handleMessageRetry({
|
|
651
696
|
messageId: failedId,
|
|
@@ -675,7 +720,7 @@ export const useSendMessage = (_configOverride?: IConfig) => {
|
|
|
675
720
|
);
|
|
676
721
|
}
|
|
677
722
|
},
|
|
678
|
-
[failedMessages, dispatch, handleMessageRetry, sendMessage, sendMedia]
|
|
723
|
+
[failedMessages, rooms, dispatch, handleMessageRetry, sendMessage, sendMedia]
|
|
679
724
|
);
|
|
680
725
|
|
|
681
726
|
// ChatRoom/ThreadWrapper consume this as the "edit branch" of send.
|
|
@@ -11,6 +11,12 @@ interface UnreadMessagesStats {
|
|
|
11
11
|
totalCount: number;
|
|
12
12
|
unreadByRoom: UnreadMessagesMap;
|
|
13
13
|
isLoading: boolean;
|
|
14
|
+
// True while at least one room's unread count could still be a floor
|
|
15
|
+
// rather than the true total — the history-preload scheduler paged back
|
|
16
|
+
// as far as its catch-up budget allows without finding the read
|
|
17
|
+
// boundary. Lets a host show "99+"-style affordances honestly instead of
|
|
18
|
+
// implying an exact count it can't back up.
|
|
19
|
+
isCapped: boolean;
|
|
14
20
|
}
|
|
15
21
|
|
|
16
22
|
export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
@@ -35,6 +41,7 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
35
41
|
const rooms = roomsState.rooms;
|
|
36
42
|
const unreadByRoom: UnreadMessagesMap = {};
|
|
37
43
|
let totalCount = 0;
|
|
44
|
+
let isCapped = false;
|
|
38
45
|
|
|
39
46
|
Object.entries(rooms).forEach(([roomJid, room]: [string, IRoom]) => {
|
|
40
47
|
const unreadCount = room.unreadMessages || 0;
|
|
@@ -42,6 +49,9 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
42
49
|
unreadByRoom[roomJid] = unreadCount;
|
|
43
50
|
totalCount += unreadCount;
|
|
44
51
|
}
|
|
52
|
+
if ((room as any)?.unreadCapped) {
|
|
53
|
+
isCapped = true;
|
|
54
|
+
}
|
|
45
55
|
});
|
|
46
56
|
|
|
47
57
|
return {
|
|
@@ -49,6 +59,7 @@ export const useUnreadMessagesCounter = (): UnreadMessagesStats => {
|
|
|
49
59
|
totalCount,
|
|
50
60
|
unreadByRoom,
|
|
51
61
|
isLoading: !!roomsState.isUnreadSyncing || !!roomsState.isLoading,
|
|
62
|
+
isCapped,
|
|
52
63
|
};
|
|
53
64
|
};
|
|
54
65
|
|
package/src/i18n/strings.ts
CHANGED
|
@@ -15,6 +15,9 @@ export type UiStringTable = Record<string, string>;
|
|
|
15
15
|
|
|
16
16
|
const en: UiStringTable = {
|
|
17
17
|
'search.placeholder': 'Search...',
|
|
18
|
+
'roomList.title': 'Chats',
|
|
19
|
+
'search.members': 'Search members',
|
|
20
|
+
'search.noResults': 'Nobody found',
|
|
18
21
|
'input.placeholder': 'Type message',
|
|
19
22
|
'room.created': 'Room created',
|
|
20
23
|
'room.empty': 'This chat is empty',
|
|
@@ -91,15 +94,16 @@ const en: UiStringTable = {
|
|
|
91
94
|
'action.add': 'Add',
|
|
92
95
|
'action.backToCreation': 'Back to creation',
|
|
93
96
|
'action.report': 'Report',
|
|
97
|
+
'action.search': 'Search',
|
|
98
|
+
'action.edit': 'Edit',
|
|
99
|
+
'action.deleteAndLeave': 'Delete and Leave',
|
|
100
|
+
'status.banned': 'banned',
|
|
94
101
|
'action.unban': 'Unban',
|
|
95
102
|
'action.openSettings': 'Open Settings',
|
|
96
|
-
'attach.title': 'Attach',
|
|
97
103
|
'attach.takePhoto': 'Take photo',
|
|
98
|
-
'attach.
|
|
99
|
-
'attach.
|
|
100
|
-
'attach.
|
|
101
|
-
'attach.document': 'Document',
|
|
102
|
-
'attach.documentHint': 'Choose a file',
|
|
104
|
+
'attach.photosAndVideos': 'Photos & Videos',
|
|
105
|
+
'attach.viewLibrary': 'View Library',
|
|
106
|
+
'attach.uploadFile': 'Upload a File',
|
|
103
107
|
'permission.requiredTitle': 'Permission required',
|
|
104
108
|
'permission.photoLibrary': 'Photo library permission is needed to select images.',
|
|
105
109
|
'permission.camera': 'Camera permission is needed to take photos and videos.',
|
|
@@ -116,7 +120,10 @@ const en: UiStringTable = {
|
|
|
116
120
|
'translation.modeManual': 'Manual',
|
|
117
121
|
'language.select': 'Select language',
|
|
118
122
|
'modal.newChat.title': 'Create New Chat',
|
|
119
|
-
'modal.newChat.roomNamePlaceholder': '
|
|
123
|
+
'modal.newChat.roomNamePlaceholder': 'Chat name',
|
|
124
|
+
'modal.newChat.descriptionPlaceholder': 'Description (optional)',
|
|
125
|
+
'modal.newChat.createButton': 'Create new chat',
|
|
126
|
+
'modal.newChat.nameTooShort': 'Chat name must be at least 3 characters.',
|
|
120
127
|
'modal.newChat.chatTypePlaceholder': 'Select chat type',
|
|
121
128
|
'modal.newChat.selectUsersTitle': 'Select users to add to Chat',
|
|
122
129
|
'modal.selectUsers.title': 'Select Users (max 20)',
|
|
@@ -163,6 +170,8 @@ const en: UiStringTable = {
|
|
|
163
170
|
'action.call': 'Call',
|
|
164
171
|
'action.audioCall': 'Audio call',
|
|
165
172
|
'action.copyUserId': 'Copy User Id',
|
|
173
|
+
'action.account': 'Account',
|
|
174
|
+
'action.share': 'Share',
|
|
166
175
|
'action.deleteChat': 'Delete chat',
|
|
167
176
|
'action.appointAsAdmin': 'Appoint as an admin',
|
|
168
177
|
'action.moreOptions': 'More Options',
|
|
@@ -181,12 +190,21 @@ const en: UiStringTable = {
|
|
|
181
190
|
'auth.anonymousLoginMessage': 'You are logged in anonymously!',
|
|
182
191
|
'modal.profile.title': 'Profile',
|
|
183
192
|
'modal.profile.about': 'About',
|
|
193
|
+
'modal.profile.language': 'Language',
|
|
194
|
+
'modal.profile.media': 'Media',
|
|
195
|
+
'modal.profile.documents': 'Documents',
|
|
196
|
+
'modal.profile.noFiles': 'Nothing here yet',
|
|
184
197
|
'modal.profile.noDescription': 'No description',
|
|
185
198
|
'modal.chatProfile.title': 'Chat Profile',
|
|
186
199
|
'modal.chatProfile.description': 'Description',
|
|
187
200
|
'modal.chatProfile.chatType': 'Chat type',
|
|
188
201
|
'modal.chatProfile.memberCountSingular': '{count} member',
|
|
189
202
|
'modal.chatProfile.memberCountPlural': '{count} members',
|
|
203
|
+
'modal.chatProfile.addMembers': 'Add Members',
|
|
204
|
+
'modal.chatProfile.removePhoto': 'Remove photo',
|
|
205
|
+
'modal.chatProfile.membersLabel': 'Members: {count}',
|
|
206
|
+
'modal.chatProfile.membersUnavailable': 'Member list unavailable',
|
|
207
|
+
'modal.chatProfile.removeMember': 'Remove from this chat?',
|
|
190
208
|
'modal.chatProfile.memberListUnavailable': 'Member list unavailable',
|
|
191
209
|
'modal.deleteChat.title': 'Delete this chat ?',
|
|
192
210
|
'modal.addMembers.title': 'Add New Member',
|
|
@@ -245,6 +263,9 @@ const en: UiStringTable = {
|
|
|
245
263
|
|
|
246
264
|
const fr: UiStringTable = {
|
|
247
265
|
'search.placeholder': 'Rechercher...',
|
|
266
|
+
'roomList.title': 'Discussions',
|
|
267
|
+
'search.members': 'Rechercher des membres',
|
|
268
|
+
'search.noResults': 'Personne trouvée',
|
|
248
269
|
'input.placeholder': 'Écrire un message',
|
|
249
270
|
'room.created': 'Salon créé',
|
|
250
271
|
'room.empty': 'Ce salon est vide',
|
|
@@ -321,15 +342,16 @@ const fr: UiStringTable = {
|
|
|
321
342
|
'action.add': 'Ajouter',
|
|
322
343
|
'action.backToCreation': 'Retour à la création',
|
|
323
344
|
'action.report': 'Signaler',
|
|
345
|
+
'action.search': 'Rechercher',
|
|
346
|
+
'action.edit': 'Modifier',
|
|
347
|
+
'action.deleteAndLeave': 'Supprimer et quitter',
|
|
348
|
+
'status.banned': 'banni',
|
|
324
349
|
'action.unban': 'Débannir',
|
|
325
350
|
'action.openSettings': 'Ouvrir les réglages',
|
|
326
|
-
'attach.title': 'Joindre',
|
|
327
351
|
'attach.takePhoto': 'Prendre une photo',
|
|
328
|
-
'attach.
|
|
329
|
-
'attach.
|
|
330
|
-
'attach.
|
|
331
|
-
'attach.document': 'Document',
|
|
332
|
-
'attach.documentHint': 'Choisir un fichier',
|
|
352
|
+
'attach.photosAndVideos': 'Photos et vidéos',
|
|
353
|
+
'attach.viewLibrary': 'Voir la bibliothèque',
|
|
354
|
+
'attach.uploadFile': 'Téléverser un fichier',
|
|
333
355
|
'permission.requiredTitle': 'Autorisation requise',
|
|
334
356
|
'permission.photoLibrary': "L'autorisation d'accès à la photothèque est nécessaire pour sélectionner des images.",
|
|
335
357
|
'permission.camera': "L'autorisation d'accès à la caméra est nécessaire pour prendre des photos et des vidéos.",
|
|
@@ -347,6 +369,9 @@ const fr: UiStringTable = {
|
|
|
347
369
|
'language.select': 'Choisir la langue',
|
|
348
370
|
'modal.newChat.title': 'Créer une discussion',
|
|
349
371
|
'modal.newChat.roomNamePlaceholder': 'Nom du salon',
|
|
372
|
+
'modal.newChat.descriptionPlaceholder': 'Description (facultatif)',
|
|
373
|
+
'modal.newChat.createButton': 'Créer la discussion',
|
|
374
|
+
'modal.newChat.nameTooShort': 'Le nom doit contenir au moins 3 caractères.',
|
|
350
375
|
'modal.newChat.chatTypePlaceholder': 'Choisir le type de discussion',
|
|
351
376
|
'modal.newChat.selectUsersTitle': 'Sélectionner des utilisateurs à ajouter',
|
|
352
377
|
'modal.selectUsers.title': 'Sélectionner des utilisateurs (max 20)',
|
|
@@ -393,6 +418,8 @@ const fr: UiStringTable = {
|
|
|
393
418
|
'action.call': 'Appeler',
|
|
394
419
|
'action.audioCall': 'Appel audio',
|
|
395
420
|
'action.copyUserId': "Copier l'ID utilisateur",
|
|
421
|
+
'action.account': 'Compte',
|
|
422
|
+
'action.share': 'Partager',
|
|
396
423
|
'action.deleteChat': 'Supprimer la discussion',
|
|
397
424
|
'action.appointAsAdmin': 'Nommer administrateur',
|
|
398
425
|
'action.moreOptions': "Plus d'options",
|
|
@@ -411,12 +438,21 @@ const fr: UiStringTable = {
|
|
|
411
438
|
'auth.anonymousLoginMessage': 'Vous êtes connecté anonymement !',
|
|
412
439
|
'modal.profile.title': 'Profil',
|
|
413
440
|
'modal.profile.about': 'À propos',
|
|
441
|
+
'modal.profile.language': 'Langue',
|
|
442
|
+
'modal.profile.media': 'Médias',
|
|
443
|
+
'modal.profile.documents': 'Documents',
|
|
444
|
+
'modal.profile.noFiles': 'Rien pour le moment',
|
|
414
445
|
'modal.profile.noDescription': 'Aucune description',
|
|
415
446
|
'modal.chatProfile.title': 'Profil de la discussion',
|
|
416
447
|
'modal.chatProfile.description': 'Description',
|
|
417
448
|
'modal.chatProfile.chatType': 'Type de discussion',
|
|
418
449
|
'modal.chatProfile.memberCountSingular': '{count} membre',
|
|
419
450
|
'modal.chatProfile.memberCountPlural': '{count} membres',
|
|
451
|
+
'modal.chatProfile.addMembers': 'Ajouter des membres',
|
|
452
|
+
'modal.chatProfile.removePhoto': 'Supprimer la photo',
|
|
453
|
+
'modal.chatProfile.membersLabel': 'Membres : {count}',
|
|
454
|
+
'modal.chatProfile.membersUnavailable': 'Liste des membres indisponible',
|
|
455
|
+
'modal.chatProfile.removeMember': 'Retirer de cette discussion ?',
|
|
420
456
|
'modal.chatProfile.memberListUnavailable': 'Liste des membres indisponible',
|
|
421
457
|
'modal.deleteChat.title': 'Supprimer cette discussion ?',
|
|
422
458
|
'modal.addMembers.title': 'Ajouter un nouveau membre',
|
|
@@ -475,6 +511,9 @@ const fr: UiStringTable = {
|
|
|
475
511
|
|
|
476
512
|
const es: UiStringTable = {
|
|
477
513
|
'search.placeholder': 'Buscar...',
|
|
514
|
+
'roomList.title': 'Chats',
|
|
515
|
+
'search.members': 'Buscar miembros',
|
|
516
|
+
'search.noResults': 'No se encontró a nadie',
|
|
478
517
|
'input.placeholder': 'Escribe un mensaje',
|
|
479
518
|
'room.created': 'Sala creada',
|
|
480
519
|
'room.empty': 'Este chat está vacío',
|
|
@@ -551,15 +590,16 @@ const es: UiStringTable = {
|
|
|
551
590
|
'action.add': 'Añadir',
|
|
552
591
|
'action.backToCreation': 'Volver a la creación',
|
|
553
592
|
'action.report': 'Reportar',
|
|
593
|
+
'action.search': 'Buscar',
|
|
594
|
+
'action.edit': 'Editar',
|
|
595
|
+
'action.deleteAndLeave': 'Eliminar y salir',
|
|
596
|
+
'status.banned': 'bloqueado',
|
|
554
597
|
'action.unban': 'Desbanear',
|
|
555
598
|
'action.openSettings': 'Abrir configuración',
|
|
556
|
-
'attach.title': 'Adjuntar',
|
|
557
599
|
'attach.takePhoto': 'Tomar foto',
|
|
558
|
-
'attach.
|
|
559
|
-
'attach.
|
|
560
|
-
'attach.
|
|
561
|
-
'attach.document': 'Documento',
|
|
562
|
-
'attach.documentHint': 'Elegir un archivo',
|
|
600
|
+
'attach.photosAndVideos': 'Fotos y videos',
|
|
601
|
+
'attach.viewLibrary': 'Ver galería',
|
|
602
|
+
'attach.uploadFile': 'Subir un archivo',
|
|
563
603
|
'permission.requiredTitle': 'Permiso requerido',
|
|
564
604
|
'permission.photoLibrary': 'Se necesita permiso de acceso a la galería de fotos para seleccionar imágenes.',
|
|
565
605
|
'permission.camera': 'Se necesita permiso de cámara para tomar fotos y videos.',
|
|
@@ -577,6 +617,9 @@ const es: UiStringTable = {
|
|
|
577
617
|
'language.select': 'Seleccionar idioma',
|
|
578
618
|
'modal.newChat.title': 'Crear nuevo chat',
|
|
579
619
|
'modal.newChat.roomNamePlaceholder': 'Nombre de la sala',
|
|
620
|
+
'modal.newChat.descriptionPlaceholder': 'Descripción (opcional)',
|
|
621
|
+
'modal.newChat.createButton': 'Crear chat',
|
|
622
|
+
'modal.newChat.nameTooShort': 'El nombre debe tener al menos 3 caracteres.',
|
|
580
623
|
'modal.newChat.chatTypePlaceholder': 'Selecciona el tipo de chat',
|
|
581
624
|
'modal.newChat.selectUsersTitle': 'Selecciona usuarios para añadir al chat',
|
|
582
625
|
'modal.selectUsers.title': 'Seleccionar usuarios (máx. 20)',
|
|
@@ -623,6 +666,8 @@ const es: UiStringTable = {
|
|
|
623
666
|
'action.call': 'Llamar',
|
|
624
667
|
'action.audioCall': 'Llamada de audio',
|
|
625
668
|
'action.copyUserId': 'Copiar ID de usuario',
|
|
669
|
+
'action.account': 'Cuenta',
|
|
670
|
+
'action.share': 'Compartir',
|
|
626
671
|
'action.deleteChat': 'Eliminar chat',
|
|
627
672
|
'action.appointAsAdmin': 'Nombrar administrador',
|
|
628
673
|
'action.moreOptions': 'Más opciones',
|
|
@@ -641,12 +686,21 @@ const es: UiStringTable = {
|
|
|
641
686
|
'auth.anonymousLoginMessage': '¡Has iniciado sesión de forma anónima!',
|
|
642
687
|
'modal.profile.title': 'Perfil',
|
|
643
688
|
'modal.profile.about': 'Acerca de',
|
|
689
|
+
'modal.profile.language': 'Idioma',
|
|
690
|
+
'modal.profile.media': 'Multimedia',
|
|
691
|
+
'modal.profile.documents': 'Documentos',
|
|
692
|
+
'modal.profile.noFiles': 'Todavía no hay nada',
|
|
644
693
|
'modal.profile.noDescription': 'Sin descripción',
|
|
645
694
|
'modal.chatProfile.title': 'Perfil del chat',
|
|
646
695
|
'modal.chatProfile.description': 'Descripción',
|
|
647
696
|
'modal.chatProfile.chatType': 'Tipo de chat',
|
|
648
697
|
'modal.chatProfile.memberCountSingular': '{count} miembro',
|
|
649
698
|
'modal.chatProfile.memberCountPlural': '{count} miembros',
|
|
699
|
+
'modal.chatProfile.addMembers': 'Añadir miembros',
|
|
700
|
+
'modal.chatProfile.removePhoto': 'Quitar la foto',
|
|
701
|
+
'modal.chatProfile.membersLabel': 'Miembros: {count}',
|
|
702
|
+
'modal.chatProfile.membersUnavailable': 'Lista de miembros no disponible',
|
|
703
|
+
'modal.chatProfile.removeMember': '¿Quitar de este chat?',
|
|
650
704
|
'modal.chatProfile.memberListUnavailable': 'Lista de miembros no disponible',
|
|
651
705
|
'modal.deleteChat.title': '¿Eliminar este chat?',
|
|
652
706
|
'modal.addMembers.title': 'Añadir nuevo miembro',
|
|
@@ -705,6 +759,9 @@ const es: UiStringTable = {
|
|
|
705
759
|
|
|
706
760
|
const pt: UiStringTable = {
|
|
707
761
|
'search.placeholder': 'Pesquisar...',
|
|
762
|
+
'roomList.title': 'Conversas',
|
|
763
|
+
'search.members': 'Pesquisar membros',
|
|
764
|
+
'search.noResults': 'Ninguém encontrado',
|
|
708
765
|
'input.placeholder': 'Escreva uma mensagem',
|
|
709
766
|
'room.created': 'Sala criada',
|
|
710
767
|
'room.empty': 'Este chat está vazio',
|
|
@@ -781,15 +838,16 @@ const pt: UiStringTable = {
|
|
|
781
838
|
'action.add': 'Adicionar',
|
|
782
839
|
'action.backToCreation': 'Voltar à criação',
|
|
783
840
|
'action.report': 'Denunciar',
|
|
841
|
+
'action.search': 'Pesquisar',
|
|
842
|
+
'action.edit': 'Editar',
|
|
843
|
+
'action.deleteAndLeave': 'Eliminar e sair',
|
|
844
|
+
'status.banned': 'banido',
|
|
784
845
|
'action.unban': 'Desbanir',
|
|
785
846
|
'action.openSettings': 'Abrir definições',
|
|
786
|
-
'attach.title': 'Anexar',
|
|
787
847
|
'attach.takePhoto': 'Tirar foto',
|
|
788
|
-
'attach.
|
|
789
|
-
'attach.
|
|
790
|
-
'attach.
|
|
791
|
-
'attach.document': 'Documento',
|
|
792
|
-
'attach.documentHint': 'Escolher um ficheiro',
|
|
848
|
+
'attach.photosAndVideos': 'Fotos e vídeos',
|
|
849
|
+
'attach.viewLibrary': 'Ver biblioteca',
|
|
850
|
+
'attach.uploadFile': 'Carregar um ficheiro',
|
|
793
851
|
'permission.requiredTitle': 'Permissão necessária',
|
|
794
852
|
'permission.photoLibrary': 'É necessária permissão de acesso à biblioteca de fotos para selecionar imagens.',
|
|
795
853
|
'permission.camera': 'É necessária permissão da câmara para tirar fotos e vídeos.',
|
|
@@ -807,6 +865,9 @@ const pt: UiStringTable = {
|
|
|
807
865
|
'language.select': 'Selecionar idioma',
|
|
808
866
|
'modal.newChat.title': 'Criar novo chat',
|
|
809
867
|
'modal.newChat.roomNamePlaceholder': 'Nome da sala',
|
|
868
|
+
'modal.newChat.descriptionPlaceholder': 'Descrição (opcional)',
|
|
869
|
+
'modal.newChat.createButton': 'Criar conversa',
|
|
870
|
+
'modal.newChat.nameTooShort': 'O nome deve ter pelo menos 3 caracteres.',
|
|
810
871
|
'modal.newChat.chatTypePlaceholder': 'Selecione o tipo de chat',
|
|
811
872
|
'modal.newChat.selectUsersTitle': 'Selecione utilizadores para adicionar ao chat',
|
|
812
873
|
'modal.selectUsers.title': 'Selecionar utilizadores (máx. 20)',
|
|
@@ -853,6 +914,8 @@ const pt: UiStringTable = {
|
|
|
853
914
|
'action.call': 'Ligar',
|
|
854
915
|
'action.audioCall': 'Chamada de áudio',
|
|
855
916
|
'action.copyUserId': 'Copiar ID do utilizador',
|
|
917
|
+
'action.account': 'Conta',
|
|
918
|
+
'action.share': 'Partilhar',
|
|
856
919
|
'action.deleteChat': 'Eliminar chat',
|
|
857
920
|
'action.appointAsAdmin': 'Nomear administrador',
|
|
858
921
|
'action.moreOptions': 'Mais opções',
|
|
@@ -871,12 +934,21 @@ const pt: UiStringTable = {
|
|
|
871
934
|
'auth.anonymousLoginMessage': 'Iniciou sessão anonimamente!',
|
|
872
935
|
'modal.profile.title': 'Perfil',
|
|
873
936
|
'modal.profile.about': 'Sobre',
|
|
937
|
+
'modal.profile.language': 'Idioma',
|
|
938
|
+
'modal.profile.media': 'Multimédia',
|
|
939
|
+
'modal.profile.documents': 'Documentos',
|
|
940
|
+
'modal.profile.noFiles': 'Ainda não há nada aqui',
|
|
874
941
|
'modal.profile.noDescription': 'Sem descrição',
|
|
875
942
|
'modal.chatProfile.title': 'Perfil do chat',
|
|
876
943
|
'modal.chatProfile.description': 'Descrição',
|
|
877
944
|
'modal.chatProfile.chatType': 'Tipo de chat',
|
|
878
945
|
'modal.chatProfile.memberCountSingular': '{count} membro',
|
|
879
946
|
'modal.chatProfile.memberCountPlural': '{count} membros',
|
|
947
|
+
'modal.chatProfile.addMembers': 'Adicionar membros',
|
|
948
|
+
'modal.chatProfile.removePhoto': 'Remover foto',
|
|
949
|
+
'modal.chatProfile.membersLabel': 'Membros: {count}',
|
|
950
|
+
'modal.chatProfile.membersUnavailable': 'Lista de membros indisponível',
|
|
951
|
+
'modal.chatProfile.removeMember': 'Remover deste chat?',
|
|
880
952
|
'modal.chatProfile.memberListUnavailable': 'Lista de membros indisponível',
|
|
881
953
|
'modal.deleteChat.title': 'Eliminar este chat?',
|
|
882
954
|
'modal.addMembers.title': 'Adicionar novo membro',
|
|
@@ -935,6 +1007,9 @@ const pt: UiStringTable = {
|
|
|
935
1007
|
|
|
936
1008
|
const ht: UiStringTable = {
|
|
937
1009
|
'search.placeholder': 'Chèche...',
|
|
1010
|
+
'roomList.title': 'Chat yo',
|
|
1011
|
+
'search.members': 'Chèche manm',
|
|
1012
|
+
'search.noResults': 'Pa jwenn pèsonn',
|
|
938
1013
|
'input.placeholder': 'Ekri yon mesaj',
|
|
939
1014
|
'room.created': 'Sal la kreye',
|
|
940
1015
|
'room.empty': 'Chat sa a vid',
|
|
@@ -1011,15 +1086,16 @@ const ht: UiStringTable = {
|
|
|
1011
1086
|
'action.add': 'Ajoute',
|
|
1012
1087
|
'action.backToCreation': 'Retounen nan kreyasyon',
|
|
1013
1088
|
'action.report': 'Rapòte',
|
|
1089
|
+
'action.search': 'Chèche',
|
|
1090
|
+
'action.edit': 'Modifye',
|
|
1091
|
+
'action.deleteAndLeave': 'Efase epi kite',
|
|
1092
|
+
'status.banned': 'bloke',
|
|
1014
1093
|
'action.unban': 'Retire Ban',
|
|
1015
1094
|
'action.openSettings': 'Louvri Paramèt yo',
|
|
1016
|
-
'attach.title': 'Atache',
|
|
1017
1095
|
'attach.takePhoto': 'Pran yon foto',
|
|
1018
|
-
'attach.
|
|
1019
|
-
'attach.
|
|
1020
|
-
'attach.
|
|
1021
|
-
'attach.document': 'Dokiman',
|
|
1022
|
-
'attach.documentHint': 'Chwazi yon fichye',
|
|
1096
|
+
'attach.photosAndVideos': 'Foto ak videyo',
|
|
1097
|
+
'attach.viewLibrary': 'Wè bibliyotèk la',
|
|
1098
|
+
'attach.uploadFile': 'Telechaje yon fichye',
|
|
1023
1099
|
'permission.requiredTitle': 'Otorizasyon nesesè',
|
|
1024
1100
|
'permission.photoLibrary': 'Nou bezwen otorizasyon pou aksè nan bibliyotèk foto ou pou chwazi imaj.',
|
|
1025
1101
|
'permission.camera': 'Nou bezwen otorizasyon kamera pou pran foto ak videyo.',
|
|
@@ -1037,6 +1113,9 @@ const ht: UiStringTable = {
|
|
|
1037
1113
|
'language.select': 'Chwazi lang',
|
|
1038
1114
|
'modal.newChat.title': 'Kreye yon nouvo chat',
|
|
1039
1115
|
'modal.newChat.roomNamePlaceholder': 'Antre non sal la',
|
|
1116
|
+
'modal.newChat.descriptionPlaceholder': 'Deskripsyon (opsyonèl)',
|
|
1117
|
+
'modal.newChat.createButton': 'Kreye chat la',
|
|
1118
|
+
'modal.newChat.nameTooShort': 'Non an dwe gen omwen 3 karaktè.',
|
|
1040
1119
|
'modal.newChat.chatTypePlaceholder': 'Chwazi tip chat la',
|
|
1041
1120
|
'modal.newChat.selectUsersTitle': 'Chwazi itilizatè pou ajoute nan chat la',
|
|
1042
1121
|
'modal.selectUsers.title': 'Chwazi itilizatè (maksimòm 20)',
|
|
@@ -1083,6 +1162,8 @@ const ht: UiStringTable = {
|
|
|
1083
1162
|
'action.call': 'Rele',
|
|
1084
1163
|
'action.audioCall': 'Apèl odyo',
|
|
1085
1164
|
'action.copyUserId': 'Kopye ID itilizatè a',
|
|
1165
|
+
'action.account': 'Kont',
|
|
1166
|
+
'action.share': 'Pataje',
|
|
1086
1167
|
'action.deleteChat': 'Efase chat la',
|
|
1087
1168
|
'action.appointAsAdmin': 'Nonmen kòm administratè',
|
|
1088
1169
|
'action.moreOptions': 'Plis opsyon',
|
|
@@ -1101,12 +1182,21 @@ const ht: UiStringTable = {
|
|
|
1101
1182
|
'auth.anonymousLoginMessage': 'Ou konekte anonim!',
|
|
1102
1183
|
'modal.profile.title': 'Pwofil',
|
|
1103
1184
|
'modal.profile.about': 'Konsènan',
|
|
1185
|
+
'modal.profile.language': 'Lang',
|
|
1186
|
+
'modal.profile.media': 'Medya',
|
|
1187
|
+
'modal.profile.documents': 'Dokiman',
|
|
1188
|
+
'modal.profile.noFiles': 'Poko gen anyen',
|
|
1104
1189
|
'modal.profile.noDescription': 'Pa gen deskripsyon',
|
|
1105
1190
|
'modal.chatProfile.title': 'Pwofil chat la',
|
|
1106
1191
|
'modal.chatProfile.description': 'Deskripsyon',
|
|
1107
1192
|
'modal.chatProfile.chatType': 'Tip chat',
|
|
1108
1193
|
'modal.chatProfile.memberCountSingular': '{count} manm',
|
|
1109
1194
|
'modal.chatProfile.memberCountPlural': '{count} manm',
|
|
1195
|
+
'modal.chatProfile.addMembers': 'Ajoute manm',
|
|
1196
|
+
'modal.chatProfile.removePhoto': 'Retire foto a',
|
|
1197
|
+
'modal.chatProfile.membersLabel': 'Manm: {count}',
|
|
1198
|
+
'modal.chatProfile.membersUnavailable': 'Lis manm yo pa disponib',
|
|
1199
|
+
'modal.chatProfile.removeMember': 'Retire nan chat sa a?',
|
|
1110
1200
|
'modal.chatProfile.memberListUnavailable': 'Lis manm yo pa disponib',
|
|
1111
1201
|
'modal.deleteChat.title': 'Efase chat sa a?',
|
|
1112
1202
|
'modal.addMembers.title': 'Ajoute yon nouvo manm',
|
|
@@ -1165,6 +1255,9 @@ const ht: UiStringTable = {
|
|
|
1165
1255
|
|
|
1166
1256
|
const zh: UiStringTable = {
|
|
1167
1257
|
'search.placeholder': '搜索...',
|
|
1258
|
+
'roomList.title': '聊天',
|
|
1259
|
+
'search.members': '搜索成员',
|
|
1260
|
+
'search.noResults': '未找到成员',
|
|
1168
1261
|
'input.placeholder': '输入消息',
|
|
1169
1262
|
'room.created': '聊天室已创建',
|
|
1170
1263
|
'room.empty': '此聊天为空',
|
|
@@ -1241,15 +1334,16 @@ const zh: UiStringTable = {
|
|
|
1241
1334
|
'action.add': '添加',
|
|
1242
1335
|
'action.backToCreation': '返回创建',
|
|
1243
1336
|
'action.report': '举报',
|
|
1337
|
+
'action.search': '搜索',
|
|
1338
|
+
'action.edit': '编辑',
|
|
1339
|
+
'action.deleteAndLeave': '删除并退出',
|
|
1340
|
+
'status.banned': '已封禁',
|
|
1244
1341
|
'action.unban': '解除封禁',
|
|
1245
1342
|
'action.openSettings': '打开设置',
|
|
1246
|
-
'attach.title': '添加附件',
|
|
1247
1343
|
'attach.takePhoto': '拍照',
|
|
1248
|
-
'attach.
|
|
1249
|
-
'attach.
|
|
1250
|
-
'attach.
|
|
1251
|
-
'attach.document': '文档',
|
|
1252
|
-
'attach.documentHint': '选择一个文件',
|
|
1344
|
+
'attach.photosAndVideos': '照片和视频',
|
|
1345
|
+
'attach.viewLibrary': '查看相册',
|
|
1346
|
+
'attach.uploadFile': '上传文件',
|
|
1253
1347
|
'permission.requiredTitle': '需要权限',
|
|
1254
1348
|
'permission.photoLibrary': '需要照片图库权限才能选择图片。',
|
|
1255
1349
|
'permission.camera': '需要相机权限才能拍摄照片和视频。',
|
|
@@ -1267,6 +1361,9 @@ const zh: UiStringTable = {
|
|
|
1267
1361
|
'language.select': '选择语言',
|
|
1268
1362
|
'modal.newChat.title': '创建新聊天',
|
|
1269
1363
|
'modal.newChat.roomNamePlaceholder': '输入聊天室名称',
|
|
1364
|
+
'modal.newChat.descriptionPlaceholder': '描述(可选)',
|
|
1365
|
+
'modal.newChat.createButton': '创建聊天',
|
|
1366
|
+
'modal.newChat.nameTooShort': '名称至少需要 3 个字符。',
|
|
1270
1367
|
'modal.newChat.chatTypePlaceholder': '选择聊天类型',
|
|
1271
1368
|
'modal.newChat.selectUsersTitle': '选择要添加到聊天的用户',
|
|
1272
1369
|
'modal.selectUsers.title': '选择用户(最多 20 个)',
|
|
@@ -1313,6 +1410,8 @@ const zh: UiStringTable = {
|
|
|
1313
1410
|
'action.call': '通话',
|
|
1314
1411
|
'action.audioCall': '语音通话',
|
|
1315
1412
|
'action.copyUserId': '复制用户 ID',
|
|
1413
|
+
'action.account': '账户',
|
|
1414
|
+
'action.share': '分享',
|
|
1316
1415
|
'action.deleteChat': '删除聊天',
|
|
1317
1416
|
'action.appointAsAdmin': '设为管理员',
|
|
1318
1417
|
'action.moreOptions': '更多选项',
|
|
@@ -1331,12 +1430,21 @@ const zh: UiStringTable = {
|
|
|
1331
1430
|
'auth.anonymousLoginMessage': '您已匿名登录!',
|
|
1332
1431
|
'modal.profile.title': '个人资料',
|
|
1333
1432
|
'modal.profile.about': '简介',
|
|
1433
|
+
'modal.profile.language': '语言',
|
|
1434
|
+
'modal.profile.media': '媒体',
|
|
1435
|
+
'modal.profile.documents': '文件',
|
|
1436
|
+
'modal.profile.noFiles': '这里还没有内容',
|
|
1334
1437
|
'modal.profile.noDescription': '暂无简介',
|
|
1335
1438
|
'modal.chatProfile.title': '聊天资料',
|
|
1336
1439
|
'modal.chatProfile.description': '描述',
|
|
1337
1440
|
'modal.chatProfile.chatType': '聊天类型',
|
|
1338
1441
|
'modal.chatProfile.memberCountSingular': '{count} 位成员',
|
|
1339
1442
|
'modal.chatProfile.memberCountPlural': '{count} 位成员',
|
|
1443
|
+
'modal.chatProfile.addMembers': '添加成员',
|
|
1444
|
+
'modal.chatProfile.removePhoto': '移除图片',
|
|
1445
|
+
'modal.chatProfile.membersLabel': '成员:{count}',
|
|
1446
|
+
'modal.chatProfile.membersUnavailable': '成员列表不可用',
|
|
1447
|
+
'modal.chatProfile.removeMember': '将其移出该聊天?',
|
|
1340
1448
|
'modal.chatProfile.memberListUnavailable': '成员列表不可用',
|
|
1341
1449
|
'modal.deleteChat.title': '删除此聊天?',
|
|
1342
1450
|
'modal.addMembers.title': '添加新成员',
|