@ethora/chat-component-rn 26.8.2 → 26.8.3
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 +14 -0
- package/README.md +27 -1
- package/lib/commonjs/assets/EmptyChatIllustration.js +7 -6
- package/lib/commonjs/assets/EmptyChatIllustration.js.map +1 -1
- package/lib/commonjs/assets/icons.js +2 -2
- package/lib/commonjs/assets/icons.js.map +1 -1
- package/lib/commonjs/components/AuthForms/Login.js +23 -8
- package/lib/commonjs/components/AuthForms/Login.js.map +1 -1
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js +12 -4
- package/lib/commonjs/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/commonjs/components/DropdownMenu/DropdownMenu.js +16 -9
- package/lib/commonjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/lib/commonjs/components/ExampleComponents/CustomMessage.js +25 -7
- package/lib/commonjs/components/ExampleComponents/CustomMessage.js.map +1 -1
- package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
- package/lib/commonjs/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
- package/lib/commonjs/components/Header/HeaderRoomList.js +9 -6
- package/lib/commonjs/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/commonjs/components/InputComponents/Search.js +13 -4
- package/lib/commonjs/components/InputComponents/Search.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 +6 -3
- package/lib/commonjs/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ChatWrapper.js +8 -6
- package/lib/commonjs/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js +37 -10
- package/lib/commonjs/components/MainComponents/LanguageSelectorModal.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MediaMessage.js +43 -19
- package/lib/commonjs/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/commonjs/components/MainComponents/MessageList.js +9 -3
- package/lib/commonjs/components/MainComponents/MessageList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RNStyled.js +12 -4
- package/lib/commonjs/components/MainComponents/RNStyled.js.map +1 -1
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js +25 -8
- package/lib/commonjs/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/commonjs/components/MainComponents/RoomList.js +12 -9
- package/lib/commonjs/components/MainComponents/RoomList.js.map +1 -1
- package/lib/commonjs/components/MainComponents/Select.js +29 -8
- package/lib/commonjs/components/MainComponents/Select.js.map +1 -1
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js +24 -13
- package/lib/commonjs/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js +24 -8
- package/lib/commonjs/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/Message.js +46 -24
- package/lib/commonjs/components/MessageBubble/Message.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js +15 -4
- package/lib/commonjs/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/commonjs/components/MessageBubble/MessageReaction.js +10 -5
- package/lib/commonjs/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js +1 -5
- package/lib/commonjs/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js +42 -27
- package/lib/commonjs/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js +77 -24
- package/lib/commonjs/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js +5 -7
- package/lib/commonjs/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js +18 -14
- package/lib/commonjs/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js +20 -9
- package/lib/commonjs/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js +8 -2
- package/lib/commonjs/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js +8 -8
- package/lib/commonjs/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js +1 -5
- package/lib/commonjs/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js +18 -15
- package/lib/commonjs/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js +14 -9
- package/lib/commonjs/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -1
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js +3 -7
- package/lib/commonjs/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
- package/lib/commonjs/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
- package/lib/commonjs/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
- package/lib/commonjs/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
- package/lib/commonjs/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js +3 -1
- package/lib/commonjs/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js +18 -15
- package/lib/commonjs/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js +9 -6
- package/lib/commonjs/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/commonjs/components/Modals/styledModalComponents.js +60 -16
- package/lib/commonjs/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js +16 -10
- package/lib/commonjs/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js +6 -2
- package/lib/commonjs/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
- package/lib/commonjs/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
- package/lib/commonjs/components/Thread/ThreadWrapper.js +9 -2
- package/lib/commonjs/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/commonjs/components/Toast/Toast.js +3 -1
- package/lib/commonjs/components/Toast/Toast.js.map +1 -1
- package/lib/commonjs/components/styled/AudioMessage.js +16 -11
- package/lib/commonjs/components/styled/AudioMessage.js.map +1 -1
- package/lib/commonjs/components/styled/Button.js +18 -9
- package/lib/commonjs/components/styled/Button.js.map +1 -1
- package/lib/commonjs/components/styled/DateLabel.js +8 -5
- package/lib/commonjs/components/styled/DateLabel.js.map +1 -1
- package/lib/commonjs/components/styled/MediaModal.js +27 -21
- package/lib/commonjs/components/styled/MediaModal.js.map +1 -1
- package/lib/commonjs/components/styled/RoomListComponents/index.js +60 -38
- package/lib/commonjs/components/styled/RoomListComponents/index.js.map +1 -1
- package/lib/commonjs/components/styled/SendInput.js +13 -8
- package/lib/commonjs/components/styled/SendInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledComponents.js +67 -23
- package/lib/commonjs/components/styled/StyledComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInput.js +32 -18
- package/lib/commonjs/components/styled/StyledInput.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
- package/lib/commonjs/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js +20 -9
- package/lib/commonjs/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js +39 -18
- package/lib/commonjs/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/commonjs/components/styled/TreadLabel.js +6 -3
- package/lib/commonjs/components/styled/TreadLabel.js.map +1 -1
- package/lib/commonjs/context/MessageNotificationContext.js +14 -3
- package/lib/commonjs/context/MessageNotificationContext.js.map +1 -1
- package/lib/commonjs/helpers/getChatBackground.js +4 -1
- package/lib/commonjs/helpers/getChatBackground.js.map +1 -1
- package/lib/commonjs/helpers/getDateLabelColor.js +3 -1
- package/lib/commonjs/helpers/getDateLabelColor.js.map +1 -1
- package/lib/commonjs/helpers/getIconColor.js +4 -1
- package/lib/commonjs/helpers/getIconColor.js.map +1 -1
- package/lib/commonjs/helpers/getSenderNameColor.js +3 -1
- package/lib/commonjs/helpers/getSenderNameColor.js.map +1 -1
- package/lib/commonjs/helpers/markdownParser.js +27 -5
- package/lib/commonjs/helpers/markdownParser.js.map +1 -1
- package/lib/commonjs/helpers/parseMessageBody.js +82 -24
- package/lib/commonjs/helpers/parseMessageBody.js.map +1 -1
- package/lib/commonjs/hooks/useCustomTypingIndicator.js +7 -3
- package/lib/commonjs/hooks/useCustomTypingIndicator.js.map +1 -1
- package/lib/commonjs/hooks/useLogout.js +10 -3
- package/lib/commonjs/hooks/useLogout.js.map +1 -1
- package/lib/commonjs/hooks/useTheme.js +35 -0
- package/lib/commonjs/hooks/useTheme.js.map +1 -0
- package/lib/commonjs/i18n/strings.js +18 -0
- package/lib/commonjs/i18n/strings.js.map +1 -1
- package/lib/commonjs/main.js +75 -0
- package/lib/commonjs/main.js.map +1 -1
- package/lib/commonjs/networking/api-requests/push.api.js +130 -45
- package/lib/commonjs/networking/api-requests/push.api.js.map +1 -1
- package/lib/commonjs/networking/api-requests/rooms.api.js +13 -0
- package/lib/commonjs/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/commonjs/services/pushRegistration.js +250 -0
- package/lib/commonjs/services/pushRegistration.js.map +1 -0
- package/lib/commonjs/services/pushSubscriptionService.js +0 -24
- package/lib/commonjs/services/pushSubscriptionService.js.map +1 -1
- package/lib/commonjs/theme/index.js +38 -0
- package/lib/commonjs/theme/index.js.map +1 -0
- package/lib/commonjs/theme/styled.d.js +4 -0
- package/lib/commonjs/theme/styled.d.js.map +1 -0
- package/lib/commonjs/theme/theme.js +137 -0
- package/lib/commonjs/theme/theme.js.map +1 -0
- package/lib/module/assets/EmptyChatIllustration.js +7 -6
- package/lib/module/assets/EmptyChatIllustration.js.map +1 -1
- package/lib/module/assets/icons.js +1 -1
- package/lib/module/assets/icons.js.map +1 -1
- package/lib/module/components/AuthForms/Login.js +23 -8
- package/lib/module/components/AuthForms/Login.js.map +1 -1
- package/lib/module/components/ContextMenu/ContextMenuComponents.js +12 -4
- package/lib/module/components/ContextMenu/ContextMenuComponents.js.map +1 -1
- package/lib/module/components/DropdownMenu/DropdownMenu.js +16 -9
- package/lib/module/components/DropdownMenu/DropdownMenu.js.map +1 -1
- package/lib/module/components/ExampleComponents/CustomMessage.js +25 -7
- package/lib/module/components/ExampleComponents/CustomMessage.js.map +1 -1
- package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js +18 -6
- package/lib/module/components/ExampleComponents/CustomTypingIndicatorExamples.js.map +1 -1
- package/lib/module/components/Header/HeaderRoomList.js +9 -6
- package/lib/module/components/Header/HeaderRoomList.js.map +1 -1
- package/lib/module/components/InputComponents/Search.js +13 -4
- package/lib/module/components/InputComponents/Search.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 +6 -3
- package/lib/module/components/MainComponents/ChatRoom.js.map +1 -1
- package/lib/module/components/MainComponents/ChatWrapper.js +8 -6
- package/lib/module/components/MainComponents/ChatWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/LanguageSelectorModal.js +37 -10
- package/lib/module/components/MainComponents/LanguageSelectorModal.js.map +1 -1
- package/lib/module/components/MainComponents/MediaMessage.js +42 -19
- package/lib/module/components/MainComponents/MediaMessage.js.map +1 -1
- package/lib/module/components/MainComponents/MessageList.js +9 -3
- package/lib/module/components/MainComponents/MessageList.js.map +1 -1
- package/lib/module/components/MainComponents/RNStyled.js +12 -4
- package/lib/module/components/MainComponents/RNStyled.js.map +1 -1
- package/lib/module/components/MainComponents/ReduxWrapper.js +25 -8
- package/lib/module/components/MainComponents/ReduxWrapper.js.map +1 -1
- package/lib/module/components/MainComponents/RoomList.js +12 -9
- package/lib/module/components/MainComponents/RoomList.js.map +1 -1
- package/lib/module/components/MainComponents/Select.js +29 -8
- package/lib/module/components/MainComponents/Select.js.map +1 -1
- package/lib/module/components/Menu/HeaderRoomListMenu.js +24 -13
- package/lib/module/components/Menu/HeaderRoomListMenu.js.map +1 -1
- package/lib/module/components/MessageBubble/BottomReplyContainer.js +24 -8
- package/lib/module/components/MessageBubble/BottomReplyContainer.js.map +1 -1
- package/lib/module/components/MessageBubble/Message.js +47 -25
- package/lib/module/components/MessageBubble/Message.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageInteractions.js +15 -4
- package/lib/module/components/MessageBubble/MessageInteractions.js.map +1 -1
- package/lib/module/components/MessageBubble/MessageReaction.js +10 -5
- package/lib/module/components/MessageBubble/MessageReaction.js.map +1 -1
- package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js +2 -6
- package/lib/module/components/Modals/AddMembersModal/AddMembersModal.js.map +1 -1
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js +42 -27
- package/lib/module/components/Modals/AttachSheet/AttachSheet.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js +79 -26
- package/lib/module/components/Modals/ChatProfileModal/ChatProfileModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js +6 -8
- package/lib/module/components/Modals/ChatProfileModal/DeleteChatModal.js.map +1 -1
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js +18 -16
- package/lib/module/components/Modals/ChatProfileModal/ReportChatModal.js.map +1 -1
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js +20 -9
- package/lib/module/components/Modals/FilePreviewModal/FilePreviewModal.js.map +1 -1
- package/lib/module/components/Modals/ModalHeaderComponent.js +8 -2
- package/lib/module/components/Modals/ModalHeaderComponent.js.map +1 -1
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js +10 -10
- package/lib/module/components/Modals/ModalWrapper/ModalWrapper.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/ModalContent.js +2 -6
- package/lib/module/components/Modals/NewChatModal/ModalContent.js.map +1 -1
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js +18 -15
- package/lib/module/components/Modals/NewChatModal/NewChatModal.js.map +1 -1
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js +14 -9
- package/lib/module/components/Modals/ProfileHeader/ProfileMenu.js.map +1 -1
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js +4 -8
- package/lib/module/components/Modals/SelectUsersModal/SelectUsersModal.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js +8 -6
- package/lib/module/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js +7 -2
- package/lib/module/components/Modals/SettingsModals/Referrals/Referrals.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js +7 -3
- package/lib/module/components/Modals/SettingsModals/SharedStyledComponents.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js +10 -6
- package/lib/module/components/Modals/SettingsModals/Visibility/RadioInput.js.map +1 -1
- package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js +7 -6
- package/lib/module/components/Modals/SettingsModals/Visibility/VisibilityModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js +3 -2
- package/lib/module/components/Modals/UserProfileModal/EditUserModal.js.map +1 -1
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js +18 -15
- package/lib/module/components/Modals/UserProfileModal/UserProfileModal.js.map +1 -1
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js +9 -6
- package/lib/module/components/Modals/UserSettingsModal/UserSettingsModal.js.map +1 -1
- package/lib/module/components/Modals/styledModalComponents.js +59 -15
- package/lib/module/components/Modals/styledModalComponents.js.map +1 -1
- package/lib/module/components/RoomComponents/ChatRoomItem.js +16 -10
- package/lib/module/components/RoomComponents/ChatRoomItem.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js +6 -2
- package/lib/module/components/RoomComponents/styled/LastAudioMessage.js.map +1 -1
- package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js +6 -0
- package/lib/module/components/RoomComponents/styled/StyledRoomComponents.js.map +1 -1
- package/lib/module/components/Thread/ThreadWrapper.js +9 -2
- package/lib/module/components/Thread/ThreadWrapper.js.map +1 -1
- package/lib/module/components/Toast/Toast.js +3 -1
- package/lib/module/components/Toast/Toast.js.map +1 -1
- package/lib/module/components/styled/AudioMessage.js +16 -11
- package/lib/module/components/styled/AudioMessage.js.map +1 -1
- package/lib/module/components/styled/Button.js +17 -9
- package/lib/module/components/styled/Button.js.map +1 -1
- package/lib/module/components/styled/DateLabel.js +8 -5
- package/lib/module/components/styled/DateLabel.js.map +1 -1
- package/lib/module/components/styled/MediaModal.js +29 -23
- package/lib/module/components/styled/MediaModal.js.map +1 -1
- package/lib/module/components/styled/RoomListComponents/index.js +62 -39
- package/lib/module/components/styled/RoomListComponents/index.js.map +1 -1
- package/lib/module/components/styled/SendInput.js +13 -8
- package/lib/module/components/styled/SendInput.js.map +1 -1
- package/lib/module/components/styled/StyledComponents.js +67 -23
- package/lib/module/components/styled/StyledComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInput.js +32 -18
- package/lib/module/components/styled/StyledInput.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js +13 -8
- package/lib/module/components/styled/StyledInputComponents/CustomTypingIndicator.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js +20 -9
- package/lib/module/components/styled/StyledInputComponents/MediaComponents.js.map +1 -1
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js +39 -18
- package/lib/module/components/styled/StyledInputComponents/StyledInputComponents.js.map +1 -1
- package/lib/module/components/styled/TreadLabel.js +6 -3
- package/lib/module/components/styled/TreadLabel.js.map +1 -1
- package/lib/module/context/MessageNotificationContext.js +14 -3
- package/lib/module/context/MessageNotificationContext.js.map +1 -1
- package/lib/module/helpers/getChatBackground.js +5 -1
- package/lib/module/helpers/getChatBackground.js.map +1 -1
- package/lib/module/helpers/getDateLabelColor.js +4 -1
- package/lib/module/helpers/getDateLabelColor.js.map +1 -1
- package/lib/module/helpers/getIconColor.js +5 -1
- package/lib/module/helpers/getIconColor.js.map +1 -1
- package/lib/module/helpers/getSenderNameColor.js +4 -1
- package/lib/module/helpers/getSenderNameColor.js.map +1 -1
- package/lib/module/helpers/markdownParser.js +27 -5
- package/lib/module/helpers/markdownParser.js.map +1 -1
- package/lib/module/helpers/parseMessageBody.js +82 -24
- package/lib/module/helpers/parseMessageBody.js.map +1 -1
- package/lib/module/hooks/useCustomTypingIndicator.js +8 -3
- package/lib/module/hooks/useCustomTypingIndicator.js.map +1 -1
- package/lib/module/hooks/useLogout.js +10 -3
- package/lib/module/hooks/useLogout.js.map +1 -1
- package/lib/module/hooks/useTheme.js +30 -0
- package/lib/module/hooks/useTheme.js.map +1 -0
- package/lib/module/i18n/strings.js +18 -0
- package/lib/module/i18n/strings.js.map +1 -1
- package/lib/module/main.js +3 -0
- package/lib/module/main.js.map +1 -1
- package/lib/module/networking/api-requests/push.api.js +119 -45
- package/lib/module/networking/api-requests/push.api.js.map +1 -1
- package/lib/module/networking/api-requests/rooms.api.js +12 -0
- package/lib/module/networking/api-requests/rooms.api.js.map +1 -1
- package/lib/module/services/pushRegistration.js +239 -0
- package/lib/module/services/pushRegistration.js.map +1 -0
- package/lib/module/services/pushSubscriptionService.js +0 -24
- package/lib/module/services/pushSubscriptionService.js.map +1 -1
- package/lib/module/theme/index.js +7 -0
- package/lib/module/theme/index.js.map +1 -0
- package/lib/module/theme/styled.d.js +6 -0
- package/lib/module/theme/styled.d.js.map +1 -0
- package/lib/module/theme/theme.js +131 -0
- package/lib/module/theme/theme.js.map +1 -0
- package/lib/typescript/assets/EmptyChatIllustration.d.ts +1 -0
- package/lib/typescript/assets/EmptyChatIllustration.d.ts.map +1 -1
- package/lib/typescript/assets/icons.d.ts +8 -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/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/lib/typescript/components/ExampleComponents/CustomMessage.d.ts.map +1 -1
- package/lib/typescript/components/Header/HeaderRoomList.d.ts.map +1 -1
- package/lib/typescript/components/InputComponents/Search.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/LanguageSelectorModal.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MediaMessage.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/MessageList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/ReduxWrapper.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/RoomList.d.ts.map +1 -1
- package/lib/typescript/components/MainComponents/Select.d.ts.map +1 -1
- package/lib/typescript/components/Menu/HeaderRoomListMenu.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/BottomReplyContainer.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/Message.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageInteractions.d.ts.map +1 -1
- package/lib/typescript/components/MessageBubble/MessageReaction.d.ts.map +1 -1
- package/lib/typescript/components/Modals/AttachSheet/AttachSheet.d.ts.map +1 -1
- 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/ChatProfileModal/ReportChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/FilePreviewModal/FilePreviewModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalHeaderComponent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ModalWrapper/ModalWrapper.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/ModalContent.d.ts.map +1 -1
- package/lib/typescript/components/Modals/NewChatModal/NewChatModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/ProfileHeader/ProfileMenu.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SelectUsersModal/SelectUsersModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Referrals/Referrals.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts +2 -2
- package/lib/typescript/components/Modals/SettingsModals/SharedStyledComponents.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Visibility/RadioInput.d.ts.map +1 -1
- package/lib/typescript/components/Modals/SettingsModals/Visibility/VisibilityModal.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.map +1 -1
- package/lib/typescript/components/Modals/UserSettingsModal/UserSettingsModal.d.ts.map +1 -1
- package/lib/typescript/components/Modals/styledModalComponents.d.ts +2 -0
- 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/LastAudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/RoomComponents/styled/StyledRoomComponents.d.ts.map +1 -1
- package/lib/typescript/components/Thread/ThreadWrapper.d.ts.map +1 -1
- package/lib/typescript/components/styled/AudioMessage.d.ts.map +1 -1
- package/lib/typescript/components/styled/Button.d.ts.map +1 -1
- package/lib/typescript/components/styled/DateLabel.d.ts.map +1 -1
- package/lib/typescript/components/styled/MediaModal.d.ts +2 -2
- package/lib/typescript/components/styled/MediaModal.d.ts.map +1 -1
- package/lib/typescript/components/styled/RoomListComponents/index.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/StyledInput.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/MediaComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/StyledInputComponents/StyledInputComponents.d.ts.map +1 -1
- package/lib/typescript/components/styled/TreadLabel.d.ts.map +1 -1
- package/lib/typescript/context/MessageNotificationContext.d.ts.map +1 -1
- package/lib/typescript/helpers/getAvatarColor.d.ts +1 -1
- package/lib/typescript/helpers/getChatBackground.d.ts.map +1 -1
- package/lib/typescript/helpers/getDateLabelColor.d.ts +3 -7
- package/lib/typescript/helpers/getDateLabelColor.d.ts.map +1 -1
- package/lib/typescript/helpers/getIconColor.d.ts +4 -7
- package/lib/typescript/helpers/getIconColor.d.ts.map +1 -1
- package/lib/typescript/helpers/getSenderNameColor.d.ts +3 -7
- package/lib/typescript/helpers/getSenderNameColor.d.ts.map +1 -1
- package/lib/typescript/helpers/markdownParser.d.ts +8 -1
- package/lib/typescript/helpers/markdownParser.d.ts.map +1 -1
- package/lib/typescript/helpers/parseMessageBody.d.ts +8 -1
- package/lib/typescript/helpers/parseMessageBody.d.ts.map +1 -1
- package/lib/typescript/hooks/useCustomTypingIndicator.d.ts +2 -0
- package/lib/typescript/hooks/useCustomTypingIndicator.d.ts.map +1 -1
- package/lib/typescript/hooks/useLogout.d.ts.map +1 -1
- package/lib/typescript/hooks/useTheme.d.ts +16 -0
- package/lib/typescript/hooks/useTheme.d.ts.map +1 -0
- package/lib/typescript/i18n/strings.d.ts.map +1 -1
- package/lib/typescript/main.d.ts +7 -0
- package/lib/typescript/main.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/push.api.d.ts +46 -3
- package/lib/typescript/networking/api-requests/push.api.d.ts.map +1 -1
- package/lib/typescript/networking/api-requests/rooms.api.d.ts +1 -0
- package/lib/typescript/networking/api-requests/rooms.api.d.ts.map +1 -1
- package/lib/typescript/services/pushRegistration.d.ts +21 -0
- package/lib/typescript/services/pushRegistration.d.ts.map +1 -0
- package/lib/typescript/services/pushSubscriptionService.d.ts +0 -4
- package/lib/typescript/services/pushSubscriptionService.d.ts.map +1 -1
- package/lib/typescript/theme/index.d.ts +5 -0
- package/lib/typescript/theme/index.d.ts.map +1 -0
- package/lib/typescript/theme/theme.d.ts +113 -0
- package/lib/typescript/theme/theme.d.ts.map +1 -0
- package/lib/typescript/types/models/room.model.d.ts +1 -0
- package/lib/typescript/types/models/room.model.d.ts.map +1 -1
- package/lib/typescript/types/types.d.ts +20 -0
- package/lib/typescript/types/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/assets/EmptyChatIllustration.tsx +7 -5
- package/src/assets/icons.tsx +24 -0
- package/src/components/AuthForms/Login.tsx +11 -9
- package/src/components/ContextMenu/ContextMenuComponents.tsx +4 -4
- package/src/components/DropdownMenu/DropdownMenu.tsx +14 -6
- package/src/components/ExampleComponents/CustomMessage.tsx +9 -8
- package/src/components/ExampleComponents/CustomTypingIndicatorExamples.tsx +6 -6
- package/src/components/Header/HeaderRoomList.tsx +11 -6
- package/src/components/InputComponents/Search.tsx +7 -4
- package/src/components/MainComponents/ChatHeader.tsx +9 -3
- package/src/components/MainComponents/ChatRoom.tsx +5 -2
- package/src/components/MainComponents/ChatWrapper.tsx +8 -6
- package/src/components/MainComponents/LanguageSelectorModal.tsx +33 -7
- package/src/components/MainComponents/MediaMessage.tsx +37 -18
- package/src/components/MainComponents/MessageList.tsx +13 -3
- package/src/components/MainComponents/RNStyled.tsx +4 -4
- package/src/components/MainComponents/ReduxWrapper.tsx +23 -7
- package/src/components/MainComponents/RoomList.tsx +13 -7
- package/src/components/MainComponents/Select.tsx +13 -8
- package/src/components/Menu/HeaderRoomListMenu.tsx +30 -13
- package/src/components/MessageBubble/BottomReplyContainer.tsx +16 -11
- package/src/components/MessageBubble/Message.tsx +48 -25
- package/src/components/MessageBubble/MessageInteractions.tsx +17 -4
- package/src/components/MessageBubble/MessageReaction.tsx +9 -4
- package/src/components/Modals/AddMembersModal/AddMembersModal.tsx +2 -2
- package/src/components/Modals/AttachSheet/AttachSheet.tsx +57 -23
- package/src/components/Modals/ChatProfileModal/ChatProfileModal.tsx +63 -25
- package/src/components/Modals/ChatProfileModal/DeleteChatModal.tsx +6 -4
- package/src/components/Modals/ChatProfileModal/ReportChatModal.tsx +18 -14
- package/src/components/Modals/FilePreviewModal/FilePreviewModal.tsx +14 -9
- package/src/components/Modals/ModalHeaderComponent.tsx +9 -2
- package/src/components/Modals/ModalWrapper/ModalWrapper.tsx +14 -6
- package/src/components/Modals/NewChatModal/ModalContent.tsx +2 -2
- package/src/components/Modals/NewChatModal/NewChatModal.tsx +19 -15
- package/src/components/Modals/ProfileHeader/ProfileMenu.tsx +15 -8
- package/src/components/Modals/SelectUsersModal/SelectUsersModal.tsx +2 -3
- package/src/components/Modals/SettingsModals/ManageDataModal/ManageDataModal.tsx +8 -6
- package/src/components/Modals/SettingsModals/Referrals/Referrals.tsx +5 -3
- package/src/components/Modals/SettingsModals/SharedStyledComponents.ts +4 -4
- package/src/components/Modals/SettingsModals/Visibility/RadioInput.tsx +9 -5
- package/src/components/Modals/SettingsModals/Visibility/VisibilityModal.tsx +7 -7
- package/src/components/Modals/UserProfileModal/EditUserModal.tsx +3 -1
- package/src/components/Modals/UserProfileModal/UserProfileModal.tsx +19 -15
- package/src/components/Modals/UserSettingsModal/UserSettingsModal.tsx +15 -6
- package/src/components/Modals/styledModalComponents.tsx +23 -15
- package/src/components/RoomComponents/ChatRoomItem.tsx +19 -10
- package/src/components/RoomComponents/styled/LastAudioMessage.tsx +4 -2
- package/src/components/RoomComponents/styled/StyledRoomComponents.ts +2 -0
- package/src/components/Thread/ThreadWrapper.tsx +6 -5
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/components/styled/AudioMessage.tsx +12 -9
- package/src/components/styled/Button.tsx +15 -8
- package/src/components/styled/DateLabel.tsx +7 -3
- package/src/components/styled/MediaModal.tsx +30 -25
- package/src/components/styled/RoomListComponents/index.tsx +60 -35
- package/src/components/styled/SendInput.tsx +23 -8
- package/src/components/styled/StyledComponents.ts +30 -23
- package/src/components/styled/StyledInput.tsx +35 -21
- package/src/components/styled/StyledInputComponents/CustomTypingIndicator.tsx +8 -8
- package/src/components/styled/StyledInputComponents/MediaComponents.tsx +20 -7
- package/src/components/styled/StyledInputComponents/StyledInputComponents.tsx +15 -19
- package/src/components/styled/TreadLabel.tsx +9 -3
- package/src/context/MessageNotificationContext.tsx +18 -4
- package/src/helpers/getChatBackground.ts +3 -1
- package/src/helpers/getDateLabelColor.ts +5 -3
- package/src/helpers/getIconColor.ts +6 -3
- package/src/helpers/getSenderNameColor.ts +5 -3
- package/src/helpers/markdownParser.tsx +29 -5
- package/src/helpers/parseMessageBody.tsx +79 -26
- package/src/hooks/useCustomTypingIndicator.tsx +7 -3
- package/src/hooks/useLogout.tsx +10 -3
- package/src/hooks/useTheme.ts +41 -0
- package/src/i18n/strings.ts +18 -0
- package/src/main.ts +31 -0
- package/src/networking/api-requests/push.api.ts +185 -62
- package/src/networking/api-requests/rooms.api.ts +9 -0
- package/src/services/pushRegistration.ts +356 -0
- package/src/services/pushSubscriptionService.ts +0 -34
- package/src/theme/index.ts +10 -0
- package/src/theme/styled.d.ts +9 -0
- package/src/theme/theme.ts +243 -0
- package/src/types/models/room.model.ts +1 -0
- package/src/types/types.ts +24 -0
- package/lib/commonjs/context/PushNotificationProvider.js +0 -79
- package/lib/commonjs/context/PushNotificationProvider.js.map +0 -1
- package/lib/commonjs/hooks/usePushNotifications.js +0 -110
- package/lib/commonjs/hooks/usePushNotifications.js.map +0 -1
- package/lib/commonjs/services/pushNotifications.js +0 -143
- package/lib/commonjs/services/pushNotifications.js.map +0 -1
- package/lib/module/context/PushNotificationProvider.js +0 -79
- package/lib/module/context/PushNotificationProvider.js.map +0 -1
- package/lib/module/hooks/usePushNotifications.js +0 -106
- package/lib/module/hooks/usePushNotifications.js.map +0 -1
- package/lib/module/services/pushNotifications.js +0 -130
- package/lib/module/services/pushNotifications.js.map +0 -1
- package/lib/typescript/context/PushNotificationProvider.d.ts +0 -2
- package/lib/typescript/context/PushNotificationProvider.d.ts.map +0 -1
- package/lib/typescript/hooks/usePushNotifications.d.ts +0 -5
- package/lib/typescript/hooks/usePushNotifications.d.ts.map +0 -1
- package/lib/typescript/services/pushNotifications.d.ts +0 -10
- package/lib/typescript/services/pushNotifications.d.ts.map +0 -1
- package/src/context/PushNotificationProvider.tsx +0 -78
- package/src/hooks/usePushNotifications.ts +0 -131
- package/src/services/pushNotifications.ts +0 -170
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import messaging from '@react-native-firebase/messaging';
|
|
4
|
-
import { getApp } from '@react-native-firebase/app';
|
|
5
|
-
import { Platform, PermissionsAndroid } from 'react-native';
|
|
6
|
-
let appInstance;
|
|
7
|
-
try {
|
|
8
|
-
appInstance = getApp();
|
|
9
|
-
} catch (error) {}
|
|
10
|
-
const AuthorizationStatus = messaging.AuthorizationStatus;
|
|
11
|
-
let cachedMessagingInstance = null;
|
|
12
|
-
const getMessagingInstance = () => {
|
|
13
|
-
if (cachedMessagingInstance) {
|
|
14
|
-
return cachedMessagingInstance;
|
|
15
|
-
}
|
|
16
|
-
if (!appInstance) {
|
|
17
|
-
try {
|
|
18
|
-
appInstance = getApp();
|
|
19
|
-
} catch (e) {}
|
|
20
|
-
}
|
|
21
|
-
cachedMessagingInstance = messaging();
|
|
22
|
-
return cachedMessagingInstance;
|
|
23
|
-
};
|
|
24
|
-
export async function requestNotificationPermission() {
|
|
25
|
-
const messagingInstance = getMessagingInstance();
|
|
26
|
-
if (Platform.OS === 'ios') {
|
|
27
|
-
const authStatus = await messagingInstance.requestPermission();
|
|
28
|
-
return authStatus === AuthorizationStatus.AUTHORIZED || authStatus === AuthorizationStatus.PROVISIONAL;
|
|
29
|
-
}
|
|
30
|
-
if (Platform.OS === 'android' && Platform.Version >= 33) {
|
|
31
|
-
const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);
|
|
32
|
-
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
|
33
|
-
}
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
export async function getFCMToken() {
|
|
37
|
-
try {
|
|
38
|
-
const messagingInstance = getMessagingInstance();
|
|
39
|
-
if (!messagingInstance.isDeviceRegisteredForRemoteMessages) {
|
|
40
|
-
await messagingInstance.registerDeviceForRemoteMessages();
|
|
41
|
-
}
|
|
42
|
-
if (Platform.OS === 'ios') {
|
|
43
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
44
|
-
let apnsToken = await messagingInstance.getAPNSToken();
|
|
45
|
-
if (!apnsToken) {
|
|
46
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
47
|
-
apnsToken = await messagingInstance.getAPNSToken();
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// No APNS token means push not configured - this is OK for development
|
|
51
|
-
if (!apnsToken) {
|
|
52
|
-
console.log('Push notifications not configured (missing APNs). App will work without push.');
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const token = await messagingInstance.getToken();
|
|
57
|
-
return token;
|
|
58
|
-
} catch (error) {
|
|
59
|
-
// Silently handle missing aps-environment (push not configured in Xcode)
|
|
60
|
-
const errorMsg = error?.message || String(error);
|
|
61
|
-
if (errorMsg.includes('aps-environment') || errorMsg.includes('messaging/unknown')) {
|
|
62
|
-
console.log('Push notifications not configured in Xcode. App will work without push.');
|
|
63
|
-
return null;
|
|
64
|
-
}
|
|
65
|
-
console.warn('Error getting FCM token:', error);
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
export function onForegroundMessage(callback) {
|
|
70
|
-
const messagingInstance = getMessagingInstance();
|
|
71
|
-
return messagingInstance.onMessage(callback);
|
|
72
|
-
}
|
|
73
|
-
export function setBackgroundMessageHandler(handler) {
|
|
74
|
-
const messagingInstance = getMessagingInstance();
|
|
75
|
-
messagingInstance.setBackgroundMessageHandler(handler);
|
|
76
|
-
}
|
|
77
|
-
export function onNotificationOpenedApp(callback) {
|
|
78
|
-
const messagingInstance = getMessagingInstance();
|
|
79
|
-
return messagingInstance.onNotificationOpenedApp(callback);
|
|
80
|
-
}
|
|
81
|
-
export async function getInitialNotification() {
|
|
82
|
-
try {
|
|
83
|
-
const messagingInstance = getMessagingInstance();
|
|
84
|
-
const message = await messagingInstance.getInitialNotification();
|
|
85
|
-
return message;
|
|
86
|
-
} catch (error) {
|
|
87
|
-
console.error('Error getting initial notification:', error);
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
export async function initPushNotifications() {
|
|
92
|
-
const hasPermission = await requestNotificationPermission();
|
|
93
|
-
if (!hasPermission) {
|
|
94
|
-
console.error('Push notification permission denied');
|
|
95
|
-
return null;
|
|
96
|
-
}
|
|
97
|
-
const token = await getFCMToken();
|
|
98
|
-
return token;
|
|
99
|
-
}
|
|
100
|
-
export async function checkNotificationPermission() {
|
|
101
|
-
try {
|
|
102
|
-
const messagingInstance = getMessagingInstance();
|
|
103
|
-
if (Platform.OS === 'ios') {
|
|
104
|
-
try {
|
|
105
|
-
const apnsToken = await messagingInstance.getAPNSToken();
|
|
106
|
-
return apnsToken !== null;
|
|
107
|
-
} catch (error) {
|
|
108
|
-
return false;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
if (Platform.OS === 'android' && Platform.Version >= 33) {
|
|
112
|
-
const granted = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS);
|
|
113
|
-
return granted;
|
|
114
|
-
}
|
|
115
|
-
return true;
|
|
116
|
-
} catch (error) {
|
|
117
|
-
console.warn('Error checking notification permission:', error);
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
export async function disablePushNotifications() {
|
|
122
|
-
try {
|
|
123
|
-
const messagingInstance = getMessagingInstance();
|
|
124
|
-
await messagingInstance.deleteToken();
|
|
125
|
-
console.log('FCM token deleted successfully');
|
|
126
|
-
} catch (error) {
|
|
127
|
-
console.warn('Error deleting FCM token:', error);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
//# sourceMappingURL=pushNotifications.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["messaging","getApp","Platform","PermissionsAndroid","appInstance","error","AuthorizationStatus","cachedMessagingInstance","getMessagingInstance","e","requestNotificationPermission","messagingInstance","OS","authStatus","requestPermission","AUTHORIZED","PROVISIONAL","Version","granted","request","PERMISSIONS","POST_NOTIFICATIONS","RESULTS","GRANTED","getFCMToken","isDeviceRegisteredForRemoteMessages","registerDeviceForRemoteMessages","Promise","resolve","setTimeout","apnsToken","getAPNSToken","console","log","token","getToken","errorMsg","message","String","includes","warn","onForegroundMessage","callback","onMessage","setBackgroundMessageHandler","handler","onNotificationOpenedApp","getInitialNotification","initPushNotifications","hasPermission","checkNotificationPermission","check","disablePushNotifications","deleteToken"],"sourceRoot":"../../../src","sources":["services/pushNotifications.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PushNotificationProvider.d.ts","sourceRoot":"","sources":["../../../src/context/PushNotificationProvider.tsx"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"usePushNotifications.d.ts","sourceRoot":"","sources":["../../../src/hooks/usePushNotifications.ts"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB;;;EAmHnC"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare function requestNotificationPermission(): Promise<boolean>;
|
|
2
|
-
export declare function getFCMToken(): Promise<string | null>;
|
|
3
|
-
export declare function onForegroundMessage(callback: (message: any) => void): () => void;
|
|
4
|
-
export declare function setBackgroundMessageHandler(handler: (message: any) => Promise<void>): void;
|
|
5
|
-
export declare function onNotificationOpenedApp(callback: (message: any) => void): () => void;
|
|
6
|
-
export declare function getInitialNotification(): Promise<any | null>;
|
|
7
|
-
export declare function initPushNotifications(): Promise<string | null>;
|
|
8
|
-
export declare function checkNotificationPermission(): Promise<boolean>;
|
|
9
|
-
export declare function disablePushNotifications(): Promise<void>;
|
|
10
|
-
//# sourceMappingURL=pushNotifications.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pushNotifications.d.ts","sourceRoot":"","sources":["../../../src/services/pushNotifications.ts"],"names":[],"mappings":"AA8BA,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,OAAO,CAAC,CAkBtE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqC1D;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAC/B,MAAM,IAAI,CAGZ;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,GACvC,IAAI,CAGN;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,GAC/B,MAAM,IAAI,CAGZ;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CASlE;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAYpE;AAED,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC,CAwBpE;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ9D"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
// /**
|
|
2
|
-
// * Push Notification Provider
|
|
3
|
-
// * Initializes and manages push notifications for the chat
|
|
4
|
-
// */
|
|
5
|
-
|
|
6
|
-
// import React, { createContext, useContext, useEffect, ReactNode } from 'react';
|
|
7
|
-
// import { useSelector, useDispatch } from 'react-redux';
|
|
8
|
-
// import { usePushNotifications } from '../hooks/usePushNotifications';
|
|
9
|
-
// import { RootState } from '../roomStore';
|
|
10
|
-
// import { setCurrentRoom } from '../roomStore/roomsSlice';
|
|
11
|
-
// import { IConfig } from '../types/types';
|
|
12
|
-
|
|
13
|
-
// interface PushNotificationContextType {
|
|
14
|
-
// fcmToken: string | null;
|
|
15
|
-
// isInitialized: boolean;
|
|
16
|
-
// error: string | null;
|
|
17
|
-
// }
|
|
18
|
-
|
|
19
|
-
// const PushNotificationContext = createContext<PushNotificationContextType>({
|
|
20
|
-
// fcmToken: null,
|
|
21
|
-
// isInitialized: false,
|
|
22
|
-
// error: null,
|
|
23
|
-
// });
|
|
24
|
-
|
|
25
|
-
// interface PushNotificationProviderProps {
|
|
26
|
-
// children: ReactNode;
|
|
27
|
-
// config?: IConfig;
|
|
28
|
-
// }
|
|
29
|
-
|
|
30
|
-
// export const PushNotificationProvider: React.FC<PushNotificationProviderProps> = ({
|
|
31
|
-
// children,
|
|
32
|
-
// config,
|
|
33
|
-
// }) => {
|
|
34
|
-
// const dispatch = useDispatch();
|
|
35
|
-
// const rooms = useSelector((state: RootState) => state.rooms.rooms);
|
|
36
|
-
|
|
37
|
-
// // Handle notification press - navigate to chat
|
|
38
|
-
// const handleNotificationPress = (data: any) => {
|
|
39
|
-
// console.log('[PushProvider] Notification pressed:', data);
|
|
40
|
-
|
|
41
|
-
// if (data?.chatJid) {
|
|
42
|
-
// // Find the room and set it as current
|
|
43
|
-
// const room = rooms.find((r) => r.jid === data.chatJid);
|
|
44
|
-
// if (room) {
|
|
45
|
-
// dispatch(setCurrentRoom({ roomJID: room.jid }));
|
|
46
|
-
// }
|
|
47
|
-
// }
|
|
48
|
-
|
|
49
|
-
// // Call custom handler if provided
|
|
50
|
-
// config?.pushNotifications?.onNotificationPress?.(data);
|
|
51
|
-
// };
|
|
52
|
-
|
|
53
|
-
// const { fcmToken, isInitialized, error } = usePushNotifications({
|
|
54
|
-
// enabled: config?.pushNotifications?.enabled ?? false,
|
|
55
|
-
// pushApiUrl: config?.pushNotifications?.pushApiUrl,
|
|
56
|
-
// onNotificationPress: handleNotificationPress,
|
|
57
|
-
// });
|
|
58
|
-
|
|
59
|
-
// useEffect(() => {
|
|
60
|
-
// if (isInitialized) {
|
|
61
|
-
// console.log('[PushProvider] Push notifications initialized');
|
|
62
|
-
// }
|
|
63
|
-
// if (error) {
|
|
64
|
-
// console.error('[PushProvider] Push error:', error);
|
|
65
|
-
// }
|
|
66
|
-
// }, [isInitialized, error]);
|
|
67
|
-
|
|
68
|
-
// return (
|
|
69
|
-
// <PushNotificationContext.Provider value={{ fcmToken, isInitialized, error }}>
|
|
70
|
-
// {children}
|
|
71
|
-
// </PushNotificationContext.Provider>
|
|
72
|
-
// );
|
|
73
|
-
// };
|
|
74
|
-
|
|
75
|
-
// export const usePushNotificationContext = () => useContext(PushNotificationContext);
|
|
76
|
-
|
|
77
|
-
// export default PushNotificationProvider;
|
|
78
|
-
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
import { Alert, Platform } from 'react-native';
|
|
3
|
-
import {
|
|
4
|
-
initPushNotifications,
|
|
5
|
-
onForegroundMessage,
|
|
6
|
-
onNotificationOpenedApp,
|
|
7
|
-
getInitialNotification,
|
|
8
|
-
} from '../services/pushNotifications';
|
|
9
|
-
import { pushSubscriptionService } from '../services/pushSubscriptionService';
|
|
10
|
-
import { useSelector, useDispatch } from 'react-redux';
|
|
11
|
-
import { RootState } from '../roomStore';
|
|
12
|
-
import { useLocalStorage } from './useLocalStorage';
|
|
13
|
-
import { setPendingNotificationJid } from '../roomStore/roomsSlice';
|
|
14
|
-
import { handleCallPush } from '../helpers/incomingCallFromPush';
|
|
15
|
-
|
|
16
|
-
export function usePushNotifications() {
|
|
17
|
-
const [fcmToken, setFcmToken] = useState<string | null>(null);
|
|
18
|
-
const [notification, setNotification] = useState<any>(null);
|
|
19
|
-
const { user, config } = useSelector((state: RootState) => state.chatSettingStore);
|
|
20
|
-
const rooms = useSelector((state: RootState) => state.rooms.rooms);
|
|
21
|
-
const dispatch = useDispatch();
|
|
22
|
-
|
|
23
|
-
const { set, get } = useLocalStorage('fcmToken');
|
|
24
|
-
|
|
25
|
-
const handleNotificationPress = (remoteMessage: any) => {
|
|
26
|
-
// Tapping a call notification (or launching the app from one) should
|
|
27
|
-
// land on the ring screen, not on the chat room.
|
|
28
|
-
if (handleCallPush(remoteMessage?.data)) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
const jid = remoteMessage?.data?.jid || remoteMessage?.data?.chatJid || remoteMessage?.jid;
|
|
33
|
-
|
|
34
|
-
if (jid) {
|
|
35
|
-
dispatch(setPendingNotificationJid(jid));
|
|
36
|
-
} else {
|
|
37
|
-
console.warn('No JID found in notification data:', remoteMessage?.data);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const initToken = async () => {
|
|
42
|
-
try {
|
|
43
|
-
|
|
44
|
-
const token = await get();
|
|
45
|
-
if (token) {
|
|
46
|
-
setFcmToken(token as string);
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
const newToken = await initPushNotifications();
|
|
50
|
-
|
|
51
|
-
setFcmToken(newToken);
|
|
52
|
-
set(newToken as string);
|
|
53
|
-
} catch (error) {
|
|
54
|
-
console.error('Failed to init token:', error);
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
|
|
58
|
-
useEffect(() => {
|
|
59
|
-
// initToken is async — `initToken()` without `.catch` leaves any
|
|
60
|
-
// rejection unhandled (showed as `Uncaught (in promise, id: X)` red
|
|
61
|
-
// screen in dev). The inner try/catch covers most paths but any
|
|
62
|
-
// synchronous throw before the try-block ran would still leak.
|
|
63
|
-
initToken().catch((err) =>
|
|
64
|
-
console.warn('[usePushNotifications] initToken rejected', err)
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
const unsubscribeForeground = onForegroundMessage((message) => {
|
|
68
|
-
// Calls first: a call push must open the ring screen, never an
|
|
69
|
-
// "OK / Open" alert. handleCallPush returns true for anything
|
|
70
|
-
// call-shaped, so we bail before the chat-notification path.
|
|
71
|
-
if (handleCallPush(message?.data)) {
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
setNotification(message);
|
|
76
|
-
|
|
77
|
-
const { notification: notif } = message;
|
|
78
|
-
if (notif) {
|
|
79
|
-
Alert.alert(
|
|
80
|
-
notif.title || 'Notification',
|
|
81
|
-
notif.body || '',
|
|
82
|
-
[
|
|
83
|
-
{ text: 'OK' },
|
|
84
|
-
{
|
|
85
|
-
text: 'Open',
|
|
86
|
-
onPress: () => handleNotificationPress(message),
|
|
87
|
-
},
|
|
88
|
-
]
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
const unsubscribeOpened = onNotificationOpenedApp((message) => {
|
|
94
|
-
console.log('[usePushNotifications] App opened from notification:', JSON.stringify(message, null, 2));
|
|
95
|
-
setNotification(message);
|
|
96
|
-
handleNotificationPress(message);
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
getInitialNotification()
|
|
100
|
-
.then((message) => {
|
|
101
|
-
if (message) {
|
|
102
|
-
console.log('[usePushNotifications] Initial notification:', JSON.stringify(message, null, 2));
|
|
103
|
-
setNotification(message);
|
|
104
|
-
handleNotificationPress(message);
|
|
105
|
-
}
|
|
106
|
-
})
|
|
107
|
-
.catch((err) =>
|
|
108
|
-
console.warn(
|
|
109
|
-
'[usePushNotifications] getInitialNotification failed',
|
|
110
|
-
err
|
|
111
|
-
)
|
|
112
|
-
);
|
|
113
|
-
|
|
114
|
-
return () => {
|
|
115
|
-
unsubscribeForeground();
|
|
116
|
-
unsubscribeOpened();
|
|
117
|
-
};
|
|
118
|
-
}, [rooms]);
|
|
119
|
-
|
|
120
|
-
useEffect(() => {
|
|
121
|
-
if (fcmToken && user && user.xmppPassword && user.defaultWallet?.walletAddress) {
|
|
122
|
-
pushSubscriptionService
|
|
123
|
-
.subscribeToPush(fcmToken, user, config?.projectName || '')
|
|
124
|
-
.catch((error) => {
|
|
125
|
-
console.error('Failed to subscribe to push:', error);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}, [fcmToken, user?.defaultWallet?.walletAddress, user?.xmppPassword]);
|
|
129
|
-
|
|
130
|
-
return { fcmToken, notification };
|
|
131
|
-
}
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import messaging, { FirebaseMessagingTypes } from '@react-native-firebase/messaging';
|
|
2
|
-
import { getApp } from '@react-native-firebase/app';
|
|
3
|
-
import { Platform, PermissionsAndroid } from 'react-native';
|
|
4
|
-
|
|
5
|
-
let appInstance: any;
|
|
6
|
-
try {
|
|
7
|
-
appInstance = getApp();
|
|
8
|
-
} catch (error) {
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const AuthorizationStatus = (messaging as any).AuthorizationStatus;
|
|
12
|
-
|
|
13
|
-
let cachedMessagingInstance: any = null;
|
|
14
|
-
|
|
15
|
-
const getMessagingInstance = () => {
|
|
16
|
-
if (cachedMessagingInstance) {
|
|
17
|
-
return cachedMessagingInstance;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
if (!appInstance) {
|
|
21
|
-
try {
|
|
22
|
-
appInstance = getApp();
|
|
23
|
-
} catch (e) {
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
cachedMessagingInstance = messaging();
|
|
28
|
-
return cachedMessagingInstance;
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export async function requestNotificationPermission(): Promise<boolean> {
|
|
32
|
-
const messagingInstance = getMessagingInstance();
|
|
33
|
-
if (Platform.OS === 'ios') {
|
|
34
|
-
const authStatus = await messagingInstance.requestPermission();
|
|
35
|
-
return (
|
|
36
|
-
authStatus === AuthorizationStatus.AUTHORIZED ||
|
|
37
|
-
authStatus === AuthorizationStatus.PROVISIONAL
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
if (Platform.OS === 'android' && Platform.Version >= 33) {
|
|
42
|
-
const granted = await PermissionsAndroid.request(
|
|
43
|
-
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS
|
|
44
|
-
);
|
|
45
|
-
return granted === PermissionsAndroid.RESULTS.GRANTED;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return true;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
export async function getFCMToken(): Promise<string | null> {
|
|
52
|
-
try {
|
|
53
|
-
const messagingInstance = getMessagingInstance();
|
|
54
|
-
if (!messagingInstance.isDeviceRegisteredForRemoteMessages) {
|
|
55
|
-
await messagingInstance.registerDeviceForRemoteMessages();
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
if (Platform.OS === 'ios') {
|
|
59
|
-
await new Promise(resolve => setTimeout(resolve, 2000));
|
|
60
|
-
|
|
61
|
-
let apnsToken = await messagingInstance.getAPNSToken();
|
|
62
|
-
|
|
63
|
-
if (!apnsToken) {
|
|
64
|
-
await new Promise(resolve => setTimeout(resolve, 3000));
|
|
65
|
-
apnsToken = await messagingInstance.getAPNSToken();
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
// No APNS token means push not configured - this is OK for development
|
|
69
|
-
if (!apnsToken) {
|
|
70
|
-
console.log('Push notifications not configured (missing APNs). App will work without push.');
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
const token = await messagingInstance.getToken();
|
|
76
|
-
|
|
77
|
-
return token;
|
|
78
|
-
} catch (error: any) {
|
|
79
|
-
// Silently handle missing aps-environment (push not configured in Xcode)
|
|
80
|
-
const errorMsg = error?.message || String(error);
|
|
81
|
-
if (errorMsg.includes('aps-environment') || errorMsg.includes('messaging/unknown')) {
|
|
82
|
-
console.log('Push notifications not configured in Xcode. App will work without push.');
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
console.warn('Error getting FCM token:', error);
|
|
86
|
-
return null;
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
export function onForegroundMessage(
|
|
91
|
-
callback: (message: any) => void
|
|
92
|
-
): () => void {
|
|
93
|
-
const messagingInstance = getMessagingInstance();
|
|
94
|
-
return messagingInstance.onMessage(callback);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
export function setBackgroundMessageHandler(
|
|
98
|
-
handler: (message: any) => Promise<void>
|
|
99
|
-
): void {
|
|
100
|
-
const messagingInstance = getMessagingInstance();
|
|
101
|
-
messagingInstance.setBackgroundMessageHandler(handler);
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function onNotificationOpenedApp(
|
|
105
|
-
callback: (message: any) => void
|
|
106
|
-
): () => void {
|
|
107
|
-
const messagingInstance = getMessagingInstance();
|
|
108
|
-
return messagingInstance.onNotificationOpenedApp(callback);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export async function getInitialNotification(): Promise<any | null> {
|
|
112
|
-
try {
|
|
113
|
-
const messagingInstance = getMessagingInstance();
|
|
114
|
-
const message = await messagingInstance.getInitialNotification();
|
|
115
|
-
return message;
|
|
116
|
-
} catch (error) {
|
|
117
|
-
console.error('Error getting initial notification:', error);
|
|
118
|
-
return null;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
export async function initPushNotifications(): Promise<string | null> {
|
|
123
|
-
|
|
124
|
-
const hasPermission = await requestNotificationPermission();
|
|
125
|
-
|
|
126
|
-
if (!hasPermission) {
|
|
127
|
-
console.error('Push notification permission denied');
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const token = await getFCMToken();
|
|
132
|
-
|
|
133
|
-
return token;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
export async function checkNotificationPermission(): Promise<boolean> {
|
|
137
|
-
try {
|
|
138
|
-
const messagingInstance = getMessagingInstance();
|
|
139
|
-
if (Platform.OS === 'ios') {
|
|
140
|
-
try {
|
|
141
|
-
const apnsToken = await messagingInstance.getAPNSToken();
|
|
142
|
-
return apnsToken !== null;
|
|
143
|
-
} catch (error) {
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
if (Platform.OS === 'android' && Platform.Version >= 33) {
|
|
149
|
-
const granted = await PermissionsAndroid.check(
|
|
150
|
-
PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS
|
|
151
|
-
);
|
|
152
|
-
return granted;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return true;
|
|
156
|
-
} catch (error) {
|
|
157
|
-
console.warn('Error checking notification permission:', error);
|
|
158
|
-
return false;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
export async function disablePushNotifications(): Promise<void> {
|
|
163
|
-
try {
|
|
164
|
-
const messagingInstance = getMessagingInstance();
|
|
165
|
-
await messagingInstance.deleteToken();
|
|
166
|
-
console.log('FCM token deleted successfully');
|
|
167
|
-
} catch (error) {
|
|
168
|
-
console.warn('Error deleting FCM token:', error);
|
|
169
|
-
}
|
|
170
|
-
}
|