From 1cd5fa862597ff3e0260500e15d30095dd249d37 Mon Sep 17 00:00:00 2001 From: Diego Mello Date: Wed, 29 Jan 2020 17:20:36 -0300 Subject: [PATCH] Merge beta into master (#1637) --- .circleci/config.yml | 3 +- README.md | 40 +- ...h-screen.js => react-native-bootsplash.js} | 0 .../__snapshots__/Storyshots.test.js.snap | 440 +- android/app/BUCK | 55 - android/app/build.gradle | 8 +- android/app/src/main/AndroidManifest.xml | 22 +- .../reactnative/CustomPushNotification.java | 182 +- .../reactnative/DismissNotification.java | 13 + .../java/chat/rocket/reactnative/Ejson.java | 42 + .../chat/rocket/reactnative/MainActivity.java | 6 +- .../rocket/reactnative/ReplyBroadcast.java | 157 + .../main/res/drawable-hdpi/icon_wordpress.png | Bin 0 -> 2485 bytes .../main/res/drawable-hdpi/launch_screen.png | Bin 11616 -> 0 bytes .../main/res/drawable-mdpi/icon_wordpress.png | Bin 0 -> 1427 bytes .../main/res/drawable-mdpi/launch_screen.png | Bin 6665 -> 0 bytes .../res/drawable-xhdpi/icon_wordpress.png | Bin 0 -> 3557 bytes .../main/res/drawable-xhdpi/launch_screen.png | Bin 19738 -> 0 bytes .../res/drawable-xxhdpi/icon_wordpress.png | Bin 0 -> 5833 bytes .../res/drawable-xxhdpi/launch_screen.png | Bin 26458 -> 0 bytes .../res/drawable-xxxhdpi/icon_wordpress.png | Bin 0 -> 7961 bytes .../res/drawable-xxxhdpi/launch_screen.png | Bin 35009 -> 0 bytes .../src/main/res/drawable-xxxhdpi/splash.png | Bin 0 -> 30602 bytes .../src/main/res/drawable/launch_screen.xml | 12 + .../res/drawable/launch_screen_bitmap.xml | 8 - .../app/src/main/res/layout/launch_screen.xml | 13 - .../app/src/main/res/values-night/colors.xml | 4 + android/app/src/main/res/values/colors.xml | 2 +- android/app/src/main/res/values/styles.xml | 9 +- android/build.gradle | 26 +- app/actions/actionsTypes.js | 8 + app/actions/inviteLinks.js | 55 + app/constants/settings.js | 3 + app/containers/EmojiPicker/EmojiCategory.js | 2 +- app/containers/EmojiPicker/index.js | 2 +- app/containers/FileModal.js | 132 - app/containers/HeaderButton.js | 10 + .../MessageBox/Mentions/MentionEmoji.js | 2 +- app/containers/MessageBox/index.js | 4 +- app/containers/Status/Status.js | 15 +- app/containers/Status/index.js | 12 +- app/containers/markdown/AtMention.js | 2 +- app/containers/markdown/Emoji.js | 4 +- app/containers/markdown/Hashtag.js | 4 +- app/containers/markdown/Link.js | 2 +- app/containers/markdown/ListItem.js | 2 +- app/containers/markdown/TableCell.js | 2 +- app/containers/markdown/index.js | 16 +- app/containers/message/Attachments.js | 8 +- app/containers/message/Content.js | 2 +- app/containers/message/Discussion.js | 4 +- app/containers/message/Emoji.js | 2 +- app/containers/message/Image.js | 16 +- app/containers/message/RepliedThread.js | 2 +- app/containers/message/Reply.js | 6 +- app/containers/message/Video.js | 6 +- app/containers/message/index.js | 6 +- app/i18n/locales/de.js | 96 +- app/i18n/locales/en.js | 22 +- app/i18n/locales/fr.js | 2 +- app/i18n/locales/pt-BR.js | 22 +- app/i18n/locales/pt-PT.js | 2 +- app/i18n/locales/ru.js | 2 +- app/i18n/locales/zh-CN.js | 2 +- app/index.js | 31 +- app/lib/methods/helpers/normalizeMessage.js | 9 +- app/lib/methods/sendMessage.js | 55 +- app/lib/methods/subscriptions/room.js | 41 +- app/lib/rocketchat.js | 23 +- app/lib/utils.js | 12 +- app/notifications/push/push.ios.js | 20 +- app/presentation/ImageViewer/index.android.js | 442 + app/presentation/ImageViewer/index.ios.js | 38 + app/presentation/RoomItem/LastMessage.js | 4 +- app/presentation/RoomItem/index.js | 4 +- app/reducers/index.js | 4 +- app/reducers/inviteLinks.js | 37 + app/sagas/deepLinking.js | 26 +- app/sagas/index.js | 4 +- app/sagas/init.js | 7 +- app/sagas/inviteLinks.js | 72 + app/sagas/login.js | 14 +- app/sagas/rooms.js | 63 +- app/sagas/selectServer.js | 9 +- app/tablet.js | 5 + app/utils/fetch.js | 3 +- app/utils/shortnameToUnicode/ascii.js | 10 + app/utils/shortnameToUnicode/emojis.js | 7 + app/utils/shortnameToUnicode/index.js | 46 + .../shortnameToUnicode.test.js | 38 + app/views/AttachmentView.js | 152 + app/views/AuthLoadingView.js | 20 - app/views/AuthenticationWebView.js | 26 +- app/views/InviteUsersEditView/index.js | 160 + app/views/InviteUsersEditView/styles.js | 45 + app/views/InviteUsersView/index.js | 151 + app/views/InviteUsersView/styles.js | 16 + app/views/LoginSignupView.js | 47 +- app/views/LoginView.js | 4 - app/views/MessagesView/index.js | 44 +- app/views/NewServerView.js | 19 - app/views/ProfileView/index.js | 2 +- app/views/RoomActionsView/index.js | 37 +- app/views/RoomInfoEditView/index.js | 4 +- app/views/RoomInfoView/index.js | 7 +- app/views/RoomMembersView/index.js | 2 +- app/views/RoomView/Header/Header.js | 2 +- app/views/RoomView/List.js | 6 +- app/views/RoomView/index.js | 114 +- app/views/RoomsListView/SortDropdown.js | 185 - app/views/RoomsListView/index.js | 8 +- app/views/SearchMessagesView/index.js | 2 +- app/views/SettingsView/index.js | 31 +- app/views/ShareView/index.js | 7 +- app/views/SidebarView/index.js | 2 +- app/views/Styles.js | 20 +- app/views/ThemeView.js | 11 +- app/views/ThreadMessagesView/index.js | 6 + index.js | 3 - ios/LaunchScreen.storyboard | 47 - ios/LaunchScreen.xib | 33 + ios/Podfile.lock | 32 +- .../Private/RNBootSplash/RNBootSplash.h | 1 + .../Headers/Private/ReactNativeART/ARTBrush.h | 1 + .../Private/ReactNativeART/ARTCGFloatArray.h | 1 + .../Private/ReactNativeART/ARTContainer.h | 1 + .../Headers/Private/ReactNativeART/ARTGroup.h | 1 + .../Private/ReactNativeART/ARTGroupManager.h | 1 + .../ReactNativeART/ARTLinearGradient.h | 1 + .../Headers/Private/ReactNativeART/ARTNode.h | 1 + .../Private/ReactNativeART/ARTNodeManager.h | 1 + .../Private/ReactNativeART/ARTPattern.h | 1 + .../ReactNativeART/ARTRadialGradient.h | 1 + .../Private/ReactNativeART/ARTRenderable.h | 1 + .../ReactNativeART/ARTRenderableManager.h | 1 + .../Headers/Private/ReactNativeART/ARTShape.h | 1 + .../Private/ReactNativeART/ARTShapeManager.h | 1 + .../Private/ReactNativeART/ARTSolidColor.h | 1 + .../Private/ReactNativeART/ARTSurfaceView.h | 1 + .../ReactNativeART/ARTSurfaceViewManager.h | 1 + .../Headers/Private/ReactNativeART/ARTText.h | 1 + .../Private/ReactNativeART/ARTTextFrame.h | 1 + .../Private/ReactNativeART/ARTTextManager.h | 1 + .../Private/ReactNativeART/RCTConvert+ART.h | 1 + .../RNCAssetsLibraryRequestHandler.h | 1 + .../RNCCameraRollManager.h | 1 + .../RNSplashScreen.h | 1 - .../Public/RNBootSplash/RNBootSplash.h | 1 + .../Headers/Public/ReactNativeART/ARTBrush.h | 1 + .../Public/ReactNativeART/ARTCGFloatArray.h | 1 + .../Public/ReactNativeART/ARTContainer.h | 1 + .../Headers/Public/ReactNativeART/ARTGroup.h | 1 + .../Public/ReactNativeART/ARTGroupManager.h | 1 + .../Public/ReactNativeART/ARTLinearGradient.h | 1 + .../Headers/Public/ReactNativeART/ARTNode.h | 1 + .../Public/ReactNativeART/ARTNodeManager.h | 1 + .../Public/ReactNativeART/ARTPattern.h | 1 + .../Public/ReactNativeART/ARTRadialGradient.h | 1 + .../Public/ReactNativeART/ARTRenderable.h | 1 + .../ReactNativeART/ARTRenderableManager.h | 1 + .../Headers/Public/ReactNativeART/ARTShape.h | 1 + .../Public/ReactNativeART/ARTShapeManager.h | 1 + .../Public/ReactNativeART/ARTSolidColor.h | 1 + .../Public/ReactNativeART/ARTSurfaceView.h | 1 + .../ReactNativeART/ARTSurfaceViewManager.h | 1 + .../Headers/Public/ReactNativeART/ARTText.h | 1 + .../Public/ReactNativeART/ARTTextFrame.h | 1 + .../Public/ReactNativeART/ARTTextManager.h | 1 + .../Public/ReactNativeART/RCTConvert+ART.h | 1 + .../RNCAssetsLibraryRequestHandler.h | 1 + .../RNCCameraRollManager.h | 1 + .../RNSplashScreen.h | 1 - .../Local Podspecs/RNBootSplash.podspec.json | 23 + .../RNUserDefaults.podspec.json | 10 +- .../ReactNativeART.podspec.json | 22 + .../react-native-cameraroll.podspec.json | 21 + .../react-native-jitsi-meet.podspec.json | 4 +- .../react-native-splash-screen.podspec.json | 21 - ios/Pods/Manifest.lock | 32 +- ios/Pods/Pods.xcodeproj/project.pbxproj | 16380 ++++++++-------- ...ods-RocketChatRN-acknowledgements.markdown | 99 +- .../Pods-RocketChatRN-acknowledgements.plist | 123 +- .../Pods-RocketChatRN.debug.xcconfig | 6 +- .../Pods-RocketChatRN.release.xcconfig | 6 +- ...hareRocketChatRN-acknowledgements.markdown | 99 +- ...s-ShareRocketChatRN-acknowledgements.plist | 123 +- .../Pods-ShareRocketChatRN.debug.xcconfig | 6 +- .../Pods-ShareRocketChatRN.release.xcconfig | 6 +- .../RNBootSplash/RNBootSplash-dummy.m | 5 + .../RNBootSplash-prefix.pch} | 0 .../RNBootSplash/RNBootSplash.xcconfig | 11 + .../ReactNativeART/ReactNativeART-dummy.m | 5 + .../ReactNativeART/ReactNativeART-prefix.pch | 12 + .../ReactNativeART/ReactNativeART.xcconfig | 11 + .../react-native-cameraroll-dummy.m | 5 + .../react-native-cameraroll-prefix.pch | 12 + .../react-native-cameraroll.xcconfig | 11 + .../react-native-splash-screen-dummy.m | 5 - .../react-native-splash-screen.xcconfig | 11 - .../Target Support Files/yoga/yoga-prefix.pch | 12 + ios/RocketChatRN.xcodeproj/project.pbxproj | 20 +- ios/RocketChatRN/AppDelegate.m | 4 +- .../icon_wordpress.imageset/Contents.json | 23 + .../icon_wordpress.imageset/iconWordpress.png | Bin 0 -> 1427 bytes .../iconWordpress@2x.png | Bin 0 -> 3557 bytes .../iconWordpress@3x.png | Bin 0 -> 5833 bytes .../Launch Screen Icon.imageset/icon.png | Bin 5047 -> 11410 bytes .../Launch Screen Icon.imageset/icon@2x.png | Bin 11181 -> 25464 bytes .../Launch Screen Icon.imageset/icon@3x.png | Bin 17737 -> 30602 bytes .../Contents.json | 59 + ios/RocketChatRN/Info.plist | 3 +- ios/ShareRocketChatRN/Info.plist | 2 +- package.json | 9 +- .../react-native-notifications+2.0.6.patch | 99 + storybook/index.js | 4 +- yarn.lock | 98 +- 216 files changed, 11956 insertions(+), 9284 deletions(-) rename __mocks__/{react-native-splash-screen.js => react-native-bootsplash.js} (100%) delete mode 100644 android/app/BUCK create mode 100644 android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java create mode 100644 android/app/src/main/java/chat/rocket/reactnative/Ejson.java create mode 100644 android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java create mode 100644 android/app/src/main/res/drawable-hdpi/icon_wordpress.png delete mode 100644 android/app/src/main/res/drawable-hdpi/launch_screen.png create mode 100644 android/app/src/main/res/drawable-mdpi/icon_wordpress.png delete mode 100644 android/app/src/main/res/drawable-mdpi/launch_screen.png create mode 100644 android/app/src/main/res/drawable-xhdpi/icon_wordpress.png delete mode 100644 android/app/src/main/res/drawable-xhdpi/launch_screen.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/icon_wordpress.png delete mode 100644 android/app/src/main/res/drawable-xxhdpi/launch_screen.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/icon_wordpress.png delete mode 100644 android/app/src/main/res/drawable-xxxhdpi/launch_screen.png create mode 100644 android/app/src/main/res/drawable-xxxhdpi/splash.png create mode 100644 android/app/src/main/res/drawable/launch_screen.xml delete mode 100644 android/app/src/main/res/drawable/launch_screen_bitmap.xml delete mode 100644 android/app/src/main/res/layout/launch_screen.xml create mode 100644 android/app/src/main/res/values-night/colors.xml create mode 100644 app/actions/inviteLinks.js delete mode 100644 app/containers/FileModal.js create mode 100644 app/presentation/ImageViewer/index.android.js create mode 100644 app/presentation/ImageViewer/index.ios.js create mode 100644 app/reducers/inviteLinks.js create mode 100644 app/sagas/inviteLinks.js create mode 100644 app/utils/shortnameToUnicode/ascii.js create mode 100644 app/utils/shortnameToUnicode/emojis.js create mode 100644 app/utils/shortnameToUnicode/index.js create mode 100644 app/utils/shortnameToUnicode/shortnameToUnicode.test.js create mode 100644 app/views/AttachmentView.js create mode 100644 app/views/InviteUsersEditView/index.js create mode 100644 app/views/InviteUsersEditView/styles.js create mode 100644 app/views/InviteUsersView/index.js create mode 100644 app/views/InviteUsersView/styles.js delete mode 100644 app/views/RoomsListView/SortDropdown.js delete mode 100644 ios/LaunchScreen.storyboard create mode 100644 ios/LaunchScreen.xib create mode 120000 ios/Pods/Headers/Private/RNBootSplash/RNBootSplash.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTBrush.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTCGFloatArray.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTContainer.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTGroup.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTGroupManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTLinearGradient.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTNode.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTNodeManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTPattern.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTRadialGradient.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTRenderable.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTRenderableManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTShape.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTShapeManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTSolidColor.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTSurfaceView.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTSurfaceViewManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTText.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTTextFrame.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/ARTTextManager.h create mode 120000 ios/Pods/Headers/Private/ReactNativeART/RCTConvert+ART.h create mode 120000 ios/Pods/Headers/Private/react-native-cameraroll/RNCAssetsLibraryRequestHandler.h create mode 120000 ios/Pods/Headers/Private/react-native-cameraroll/RNCCameraRollManager.h delete mode 120000 ios/Pods/Headers/Private/react-native-splash-screen/RNSplashScreen.h create mode 120000 ios/Pods/Headers/Public/RNBootSplash/RNBootSplash.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTBrush.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTCGFloatArray.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTContainer.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTGroup.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTGroupManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTLinearGradient.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTNode.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTNodeManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTPattern.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTRadialGradient.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTRenderable.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTRenderableManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTShape.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTShapeManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTSolidColor.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTSurfaceView.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTSurfaceViewManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTText.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTTextFrame.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/ARTTextManager.h create mode 120000 ios/Pods/Headers/Public/ReactNativeART/RCTConvert+ART.h create mode 120000 ios/Pods/Headers/Public/react-native-cameraroll/RNCAssetsLibraryRequestHandler.h create mode 120000 ios/Pods/Headers/Public/react-native-cameraroll/RNCCameraRollManager.h delete mode 120000 ios/Pods/Headers/Public/react-native-splash-screen/RNSplashScreen.h create mode 100644 ios/Pods/Local Podspecs/RNBootSplash.podspec.json create mode 100644 ios/Pods/Local Podspecs/ReactNativeART.podspec.json create mode 100644 ios/Pods/Local Podspecs/react-native-cameraroll.podspec.json delete mode 100644 ios/Pods/Local Podspecs/react-native-splash-screen.podspec.json create mode 100644 ios/Pods/Target Support Files/RNBootSplash/RNBootSplash-dummy.m rename ios/Pods/Target Support Files/{react-native-splash-screen/react-native-splash-screen-prefix.pch => RNBootSplash/RNBootSplash-prefix.pch} (100%) create mode 100644 ios/Pods/Target Support Files/RNBootSplash/RNBootSplash.xcconfig create mode 100644 ios/Pods/Target Support Files/ReactNativeART/ReactNativeART-dummy.m create mode 100644 ios/Pods/Target Support Files/ReactNativeART/ReactNativeART-prefix.pch create mode 100644 ios/Pods/Target Support Files/ReactNativeART/ReactNativeART.xcconfig create mode 100644 ios/Pods/Target Support Files/react-native-cameraroll/react-native-cameraroll-dummy.m create mode 100644 ios/Pods/Target Support Files/react-native-cameraroll/react-native-cameraroll-prefix.pch create mode 100644 ios/Pods/Target Support Files/react-native-cameraroll/react-native-cameraroll.xcconfig delete mode 100644 ios/Pods/Target Support Files/react-native-splash-screen/react-native-splash-screen-dummy.m delete mode 100644 ios/Pods/Target Support Files/react-native-splash-screen/react-native-splash-screen.xcconfig create mode 100644 ios/Pods/Target Support Files/yoga/yoga-prefix.pch create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_wordpress.imageset/Contents.json create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_wordpress.imageset/iconWordpress.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_wordpress.imageset/iconWordpress@2x.png create mode 100644 ios/RocketChatRN/Images.xcassets/Icons/icon_wordpress.imageset/iconWordpress@3x.png create mode 100644 ios/RocketChatRN/Images.xcassets/splashBackgroundColor.colorset/Contents.json create mode 100644 patches/react-native-notifications+2.0.6.patch diff --git a/.circleci/config.yml b/.circleci/config.yml index 206b41d8d..7d612de47 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -197,7 +197,8 @@ jobs: npx jetify cd android if [[ $KEYSTORE ]]; then - ./gradlew bundleRelease + # TODO: enable app bundle again + ./gradlew assembleRelease else ./gradlew assembleDebug fi diff --git a/README.md b/README.md index 0fa994229..f399817d3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Rocket.Chat React Native Mobile +# Rocket.Chat Mobile [![Project Dependencies](https://david-dm.org/RocketChat/Rocket.Chat.ReactNative.svg)](https://david-dm.org/RocketChat/Rocket.Chat.ReactNative) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/bb15e2392a71473ea59d3f634f35c54e)](https://www.codacy.com/app/RocketChat/Rocket.Chat.ReactNative?utm_source=github.com&utm_medium=referral&utm_content=RocketChat/Rocket.Chat.ReactNative&utm_campaign=badger) @@ -8,6 +8,16 @@ **Supported Server Versions:** 0.70.0+ ## Download + +### Official apps + + Download on Google Play + + + Download on App Store + + +### Experimental apps Download on Google Play @@ -19,11 +29,17 @@ ### TestFlight -You can signup to our TestFlight builds by acessing this link: https://testflight.apple.com/join/7I3dLCNT. +You can signup to our TestFlight builds by accessing these links: + +- Official: https://testflight.apple.com/join/3gcYeoMr +- Experimental: https://testflight.apple.com/join/7I3dLCNT. ### Google Play beta -You can subscribe to Google Play Beta program and download latest versions: https://play.google.com/store/apps/details?id=chat.rocket.reactnative +You can subscribe to Google Play Beta program and download latest versions: + +- Official: https://play.google.com/store/apps/details?id=chat.rocket.android +- Experimental: https://play.google.com/store/apps/details?id=chat.rocket.reactnative ## Reporting an Issue @@ -57,13 +73,8 @@ If you don't need multiple servers, there is a branch `single-server` just for t Readme will guide you on how to config. ## Current priorities -1) Jitsi integration -2) Notification Preferences -3) Two-way authentication -4) Bugsnag -5) Optional Analytics -6) Typescript -7) Prettier +1) Omnichannel support +2) E2E encryption ## Features | Feature | Status | @@ -71,6 +82,7 @@ Readme will guide you on how to config. | Jitsi Integration | ✅ | | Federation (Directory) | ✅ | | Discussions | ❌ | +| Omnichannel | ❌ | | Threads | ✅ | | Record Audio | ✅ | | Record Video | ✅ | @@ -83,18 +95,18 @@ Readme will guide you on how to config. | Grouped messages | ✅ | | Mark room as read | ✅ | | Mark room as unread | ✅ | -| Tablet Support | ❌ | +| Tablet Support | ✅ | | Read receipt | ✅ | | Broadbast Channel | ✅ | | Authentication via SAML | ✅ | | Authentication via CAS | ✅ | | Custom Fields on Signup | ✅ | | Report message | ✅ | -| Theming | ❌ | +| Theming | ✅ | | Settings -> Review the App | ❌ | | Settings -> Default Browser | ❌ | | Admin panel | ✅ | -| Reply message from notification | ❌ | +| Reply message from notification | ✅ | | Unread counter banner on message list | ✅ | | E2E Encryption | ❌ | | Join a Protected Room | ❌ | @@ -106,7 +118,7 @@ Readme will guide you on how to config. | Accessibility (Medium) | ❌ | | Accessibility (Advanced) | ❌ | | Authentication via Meteor | ❌ | -| Authentication via Wordpress | ❌ | +| Authentication via Wordpress | ✅ | | Authentication via Custom OAuth | ✅ | | Add user to the room | ✅ | | Send message | ✅ | diff --git a/__mocks__/react-native-splash-screen.js b/__mocks__/react-native-bootsplash.js similarity index 100% rename from __mocks__/react-native-splash-screen.js rename to __mocks__/react-native-bootsplash.js diff --git a/__tests__/__snapshots__/Storyshots.test.js.snap b/__tests__/__snapshots__/Storyshots.test.js.snap index b6bc2022d..b7e07750c 100644 --- a/__tests__/__snapshots__/Storyshots.test.js.snap +++ b/__tests__/__snapshots__/Storyshots.test.js.snap @@ -213,7 +213,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -455,7 +455,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -697,7 +697,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -917,7 +917,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1011,7 +1011,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1105,7 +1105,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1325,7 +1325,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1441,7 +1441,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1701,7 +1701,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -1939,7 +1939,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -2181,7 +2181,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -2452,7 +2452,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -2704,7 +2704,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -2745,7 +2745,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3005,7 +3005,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3025,7 +3025,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3083,7 +3083,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3103,7 +3103,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3165,7 +3165,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3185,7 +3185,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3453,7 +3453,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3473,7 +3473,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3533,7 +3533,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3553,7 +3553,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3817,7 +3817,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3837,7 +3837,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -3953,7 +3953,7 @@ exports[`Storyshots Message list 1`] = ` @@ -3973,7 +3973,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -4219,7 +4219,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -4461,7 +4461,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -4703,7 +4703,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -5108,7 +5108,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -5355,7 +5355,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -5602,7 +5602,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -5976,7 +5976,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -6224,7 +6224,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -6503,7 +6503,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -6803,7 +6803,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -7045,7 +7045,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -7627,7 +7627,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -8650,7 +8650,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -8870,7 +8870,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -9090,7 +9090,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -9310,7 +9310,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -9552,7 +9552,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -9834,7 +9834,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -9973,7 +9973,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -10193,7 +10193,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -10458,7 +10458,7 @@ exports[`Storyshots Message list 1`] = ` Array [ undefined, Object { - "color": "#0d0e12", + "color": "#2f343d", }, ] } @@ -10718,46 +10718,66 @@ exports[`Storyshots Message list 1`] = ` style={ Array [ Object { - "overflow": "hidden", + "borderRadius": 4, + "borderWidth": 1, + "minHeight": 200, + "width": "100%", + }, + Object { + "borderColor": "#e1e5e8", }, - Array [ - Object { - "borderRadius": 4, - "borderWidth": 1, - "minHeight": 200, - "width": "100%", - }, - Object { - "borderColor": "#e1e5e8", - }, - ], ] } > - + > + + - + > + + - Thread with emoji :) 😂 + Thread with emoji🙂 😂 + + + + + + + android:windowSoftInputMode="adjustResize" + android:exported="true"> - - @@ -40,6 +47,15 @@ + + + > notificationMessages = new HashMap>(); + public static String KEY_REPLY = "KEY_REPLY"; + public static String NOTIFICATION_ID = "NOTIFICATION_ID"; + + public static void clearMessages(int notId) { + notificationMessages.remove(Integer.toString(notId)); + } + + @Override + public void onReceived() throws InvalidNotificationException { + final Bundle bundle = mNotificationProps.asBundle(); + + String notId = bundle.getString("notId"); + String message = bundle.getString("message"); + + if (notificationMessages.get(notId) == null) { + notificationMessages.put(notId, new ArrayList()); + } + notificationMessages.get(notId).add(message); + + super.postNotification(notId != null ? Integer.parseInt(notId) : 1); + + notifyReceivedToJS(); + } + + @Override + public void onOpened() { + Bundle bundle = mNotificationProps.asBundle(); + final String notId = bundle.getString("notId"); + notificationMessages.remove(notId); + digestNotification(); } @Override protected Notification.Builder getNotificationBuilder(PendingIntent intent) { - final Resources res = mContext.getResources(); - String packageName = mContext.getPackageName(); + final Notification.Builder notification = new Notification.Builder(mContext); Bundle bundle = mNotificationProps.asBundle(); - int smallIconResId = res.getIdentifier("ic_notification", "mipmap", packageName); - int largeIconResId = res.getIdentifier("ic_launcher", "mipmap", packageName); String title = bundle.getString("title"); String message = bundle.getString("message"); + String notId = bundle.getString("notId"); - String CHANNEL_ID = "rocketchatrn_channel_01"; - String CHANNEL_NAME = "All"; - - final Notification.Builder notification = new Notification.Builder(mContext) - .setSmallIcon(smallIconResId) + notification .setContentIntent(intent) .setContentTitle(title) .setContentText(message) - .setStyle(new Notification.BigTextStyle().bigText(message)) .setPriority(Notification.PRIORITY_HIGH) .setDefaults(Notification.DEFAULT_ALL) .setAutoCancel(true); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - notification.setColor(mContext.getColor(R.color.notification_text)); - } + Integer notificationId = notId != null ? Integer.parseInt(notId) : 1; + notificationChannel(notification); + notificationIcons(notification, bundle); + notificationStyle(notification, notificationId, bundle); + notificationReply(notification, notificationId, bundle); + notificationDismiss(notification, notificationId); + return notification; + } + + private void notifyReceivedToJS() { + mJsIOHelper.sendEventToJS(NOTIFICATION_RECEIVED_EVENT_NAME, mNotificationProps.asBundle(), mAppLifecycleFacade.getRunningReactContext()); + } + + private Bitmap getAvatar(String uri) { + try { + return Glide.with(mContext) + .asBitmap() + .apply(RequestOptions.bitmapTransform(new RoundedCorners(10))) + .load(uri) + .submit(100, 100) + .get(); + } catch (final ExecutionException | InterruptedException e) { + return null; + } + } + + private void notificationIcons(Notification.Builder notification, Bundle bundle) { + final Resources res = mContext.getResources(); + String packageName = mContext.getPackageName(); + + int smallIconResId = res.getIdentifier("ic_notification", "mipmap", packageName); + + Gson gson = new Gson(); + Ejson ejson = gson.fromJson(bundle.getString("ejson", "{}"), Ejson.class); + + notification + .setSmallIcon(smallIconResId) + .setLargeIcon(getAvatar(ejson.getAvatarUri())); + } + + private void notificationChannel(Notification.Builder notification) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + String CHANNEL_ID = "rocketchatrn_channel_01"; + String CHANNEL_NAME = "All"; + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_NAME, NotificationManager.IMPORTANCE_DEFAULT); @@ -63,10 +146,65 @@ public class CustomPushNotification extends PushNotification { notification.setChannelId(CHANNEL_ID); } - - Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId); - notification.setLargeIcon(largeIconBitmap); - - return notification; } + + private void notificationStyle(Notification.Builder notification, int notId, Bundle bundle) { + Notification.InboxStyle messageStyle = new Notification.InboxStyle(); + List messages = notificationMessages.get(Integer.toString(notId)); + if (messages != null) { + for (int i = 0; i < messages.size(); i++) { + messageStyle.addLine(messages.get(i)); + } + String summary = bundle.getString("summaryText"); + messageStyle.setSummaryText(summary.replace("%n%", Integer.toString(messages.size()))); + notification.setNumber(messages.size()); + } + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + notification.setColor(mContext.getColor(R.color.notification_text)); + } + + notification.setStyle(messageStyle); + } + + private void notificationReply(Notification.Builder notification, int notificationId, Bundle bundle) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { + return; + } + String label = "Reply"; + + final Resources res = mContext.getResources(); + String packageName = mContext.getPackageName(); + int smallIconResId = res.getIdentifier("ic_notification", "mipmap", packageName); + + Intent replyIntent = new Intent(mContext, ReplyBroadcast.class); + replyIntent.setAction(KEY_REPLY); + replyIntent.putExtra("pushNotification", bundle); + + PendingIntent replyPendingIntent = PendingIntent.getBroadcast(mContext, notificationId, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT); + + RemoteInput remoteInput = new RemoteInput.Builder(KEY_REPLY) + .setLabel(label) + .build(); + + CharSequence title = label; + Notification.Action replyAction = new Notification.Action.Builder(smallIconResId, title, replyPendingIntent) + .addRemoteInput(remoteInput) + .setAllowGeneratedReplies(true) + .build(); + + notification + .setShowWhen(true) + .addAction(replyAction); + } + + private void notificationDismiss(Notification.Builder notification, int notificationId) { + Intent intent = new Intent(mContext, DismissNotification.class); + intent.putExtra(NOTIFICATION_ID, notificationId); + + PendingIntent dismissPendingIntent = PendingIntent.getBroadcast(mContext, notificationId, intent, 0); + + notification.setDeleteIntent(dismissPendingIntent); + } + } diff --git a/android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java b/android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java new file mode 100644 index 000000000..32524a35f --- /dev/null +++ b/android/app/src/main/java/chat/rocket/reactnative/DismissNotification.java @@ -0,0 +1,13 @@ +package chat.rocket.reactnative; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + +public class DismissNotification extends BroadcastReceiver { + @Override + public void onReceive(Context context, Intent intent) { + int notId = intent.getExtras().getInt(CustomPushNotification.NOTIFICATION_ID); + CustomPushNotification.clearMessages(notId); + } +} diff --git a/android/app/src/main/java/chat/rocket/reactnative/Ejson.java b/android/app/src/main/java/chat/rocket/reactnative/Ejson.java new file mode 100644 index 000000000..591fda93a --- /dev/null +++ b/android/app/src/main/java/chat/rocket/reactnative/Ejson.java @@ -0,0 +1,42 @@ +package chat.rocket.reactnative; + +import android.content.SharedPreferences; + +import chat.rocket.userdefaults.RNUserDefaultsModule; + +public class Ejson { + String host; + String rid; + String type; + Sender sender; + + private String TOKEN_KEY = "reactnativemeteor_usertoken-"; + private SharedPreferences sharedPreferences = RNUserDefaultsModule.getPreferences(CustomPushNotification.reactApplicationContext); + + public String getAvatarUri() { + if (type == null || !type.equals("d")) { + return null; + } + return serverURL() + "/avatar/" + this.sender.username + "?rc_token=" + token() + "&rc_uid=" + userId(); + } + + public String token() { + return sharedPreferences.getString(TOKEN_KEY.concat(userId()), ""); + } + + public String userId() { + return sharedPreferences.getString(TOKEN_KEY.concat(serverURL()), ""); + } + + public String serverURL() { + String url = this.host; + if (url.endsWith("/")) { + url = url.substring(0, url.length() - 1); + } + return url; + } + + private class Sender { + String username; + } +} \ No newline at end of file diff --git a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java index 078f14142..f408e11cd 100644 --- a/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java +++ b/android/app/src/main/java/chat/rocket/reactnative/MainActivity.java @@ -5,16 +5,16 @@ import com.facebook.react.ReactRootView; import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; import android.os.Bundle; import com.facebook.react.ReactFragmentActivity; -import org.devio.rn.splashscreen.SplashScreen; import android.content.Intent; import android.content.res.Configuration; +import com.zoontek.rnbootsplash.RNBootSplash; public class MainActivity extends ReactFragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { - SplashScreen.show(this); - super.onCreate(null); + super.onCreate(savedInstanceState); + RNBootSplash.show(R.drawable.launch_screen, MainActivity.this); } /** diff --git a/android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java b/android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java new file mode 100644 index 000000000..81c62aeb0 --- /dev/null +++ b/android/app/src/main/java/chat/rocket/reactnative/ReplyBroadcast.java @@ -0,0 +1,157 @@ +package chat.rocket.reactnative; + +import android.app.Notification; +import android.app.NotificationChannel; +import android.app.NotificationManager; +import android.app.RemoteInput; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import java.io.IOException; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import java.util.HashMap; +import java.util.Map; + +import okhttp3.Call; +import okhttp3.MediaType; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +import chat.rocket.userdefaults.RNUserDefaultsModule; +import com.wix.reactnativenotifications.core.NotificationIntentAdapter; + +public class ReplyBroadcast extends BroadcastReceiver { + private Context mContext; + private Bundle bundle; + private NotificationManager notificationManager; + + @Override + public void onReceive(Context context, Intent intent) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) { + final CharSequence message = getReplyMessage(intent); + if (message == null) { + return; + } + + mContext = context; + bundle = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent); + notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + + String notId = bundle.getString("notId"); + + Gson gson = new Gson(); + Ejson ejson = gson.fromJson(bundle.getString("ejson", "{}"), Ejson.class); + + replyToMessage(ejson, Integer.parseInt(notId), message); + } + } + + protected void replyToMessage(final Ejson ejson, final int notId, final CharSequence message) { + String serverURL = ejson.serverURL(); + String rid = ejson.rid; + + if (serverURL == null || rid == null) { + return; + } + + final OkHttpClient client = new OkHttpClient(); + final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); + + String json = buildMessage(rid, message.toString()); + + CustomPushNotification.clearMessages(notId); + + RequestBody body = RequestBody.create(JSON, json); + Request request = new Request.Builder() + .header("x-auth-token", ejson.token()) + .header("x-user-id", ejson.userId()) + .url(String.format("%s/api/v1/chat.sendMessage", serverURL)) + .post(body) + .build(); + + client.newCall(request).enqueue(new okhttp3.Callback() { + @Override + public void onFailure(Call call, IOException e) { + Log.i("RCNotification", String.format("Reply FAILED exception %s", e.getMessage())); + onReplyFailed(notificationManager, notId); + } + + @Override + public void onResponse(Call call, final Response response) throws IOException { + if (response.isSuccessful()) { + Log.d("RCNotification", "Reply SUCCESS"); + onReplySuccess(notificationManager, notId); + } else { + Log.i("RCNotification", String.format("Reply FAILED status %s BODY %s", response.code(), response.body().string())); + onReplyFailed(notificationManager, notId); + } + } + }); + } + + private String getMessageId() { + final String ALPHA_NUMERIC_STRING = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + int count = 17; + StringBuilder builder = new StringBuilder(); + while (count-- != 0) { + int character = (int)(Math.random()*ALPHA_NUMERIC_STRING.length()); + builder.append(ALPHA_NUMERIC_STRING.charAt(character)); + } + return builder.toString(); + } + + protected String buildMessage(String rid, String message) { + Gson gsonBuilder = new GsonBuilder().create(); + + Map msgMap = new HashMap(); + msgMap.put("_id", getMessageId()); + msgMap.put("rid", rid); + msgMap.put("msg", message); + msgMap.put("tmid", null); + + Map msg = new HashMap(); + msg.put("message", msgMap); + + String json = gsonBuilder.toJson(msg); + + return json; + } + + protected void onReplyFailed(NotificationManager notificationManager, int notId) { + String CHANNEL_ID = "CHANNEL_ID_REPLY_FAILED"; + + final Resources res = mContext.getResources(); + String packageName = mContext.getPackageName(); + int smallIconResId = res.getIdentifier("ic_notification", "mipmap", packageName); + + NotificationChannel channel = new NotificationChannel(CHANNEL_ID, CHANNEL_ID, NotificationManager.IMPORTANCE_LOW); + notificationManager.createNotificationChannel(channel); + Notification notification = + new Notification.Builder(mContext, CHANNEL_ID) + .setContentTitle("Failed to reply message.") + .setSmallIcon(smallIconResId) + .build(); + + notificationManager.notify(notId, notification); + } + + protected void onReplySuccess(NotificationManager notificationManager, int notId) { + notificationManager.cancel(notId); + } + + private CharSequence getReplyMessage(Intent intent) { + Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); + if (remoteInput != null) { + return remoteInput.getCharSequence(CustomPushNotification.KEY_REPLY); + } + return null; + } +} diff --git a/android/app/src/main/res/drawable-hdpi/icon_wordpress.png b/android/app/src/main/res/drawable-hdpi/icon_wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..4dbc11e676e1ea56abebd7f38f563253b1cdbacd GIT binary patch literal 2485 zcmV;m2}<^fP)Px;Z%IT!R9Fd}SbJ=o#S!1xJKJZ+abt+%M{Ea3(iReE%lUP-?{X%_5b~%R<1|2v zil{7Af>Nb4C8|pDM=4RHiV~_+q7e`kR2r*kg9)}1EYA4+wu4j={z_93gYDQ5h#f!9 zci*@D&3E3*cjpT@UFkf#v$M1F&1+{&;s%GubKgy2n%-&}bT5%A5{e2Gi2@Qz2_;4Z ziBZ6dQqY;S6m=>X41RGVSI|<4ODlXkO=Uizgs37C{W$kFDLPM*Mjc9yn5ibIu*g@W z3Y0bk$RQ37c6Xj!%3WV8kh|Ppt%Pw1U!D&oJWuJ)6GMT(XG>vTSy{I# zWX|psLhTcRh9%M7fu8rfzv}FD1!`z$a9kK3djaZy7#evlCp+^wf6Q06`*=-Aq#yk9jnH5tq+ zaU>O}y1F`hCL)fLpe&ce^@FaiGb8TW+Ha`o&|?s=5t_O^kx|k$iE&c$P^!#5($mv4 z>+#&PI%LkD6hsr0nYMfA-FL4fo?9ePR2b@llYX$=<$N4pI9FQf^O=Tv9bQ|M$Y3dJ zeAt*I**MVK(d_Xwq=(eltI*^|vD{UaC{&z4Y^MJVkG29iKGYk0#P9bzr$WZF%2dC> z#d0Z^e+3OJDV`hb>3o)HN<7{-VZJPwZ=2nGahI^qu$fphd}wOU_zQ&jEv9jFymzC6 zq}-cI`M)RR3jSgK6MXn8+Mz%uQ021Fca>^B`*8yk#A=5*P zZHTaO;8!5ZGU24DNQ(wGX5f31pq++~)Pp7~N-w(fJ$Bd^2z*jf;XSA#5!RBA_bh=p z=@~-hb7(ViusiS}fS2b74jhmzEuA?A&98&5>y=VY2>O~#cLcWj{o~j-nNAN5iZF6k zBrHl1ksBEgBP9(6@S>WUn!{7G#uKF#o3^vlTfV^=n3Epo879)q86wIuA{6?ssZ@}K zVVo({-;CMFXme|OBd_gaHY`qt=hZoA%o2w8ki8#5fMnX~cwXx9RdN)A;-D#vCmARC zZNisVat3B$pu(T=h8{R@6{>I1YdZw~$M!YP@su1-#6h^+sZfL?HE!S|A7zB(y9N0; z*GYaTVefu^4p?I7XK$jG96~O-#Nw<}rMvQ;wf0+}!+&5MXT~Tk{i4+G&$H9Q7w^5h z%3m=M2ylk~fTrgjko;=H8BZ}GxYWb$Ys!!a?FX~7TyG}<_s!{lo6{Spr#8?KuO@rCp3un$lF~ySW87?6#q)@A)P&~*fp69V4uXBkI zx54kKVsw}|MOsp`!Iz4)bHiLa_zcp9WpZ-R2o0s#+X{v^d&u$z)GY+vRev_YRn91K-2ZvfVn zmv7FstvSIh@(o;auCKH6Be%zQr=2!Urk}u@W!Q0;f5huZSUqIJTP3b3RRK&kg3?!w zaM>9pppP{nRO$@NdHX?;BJvbMPW{+0GUSR+oO zc&uB>s{AFuuZz(s8ss^IUk`9ma(4hNZDS-%(#}v1eD&R>RW+8aH4cSH>=JD*?Cl1_ z6bc#kFBhEsVYUdLMIO7f{r=hk!!Y8s4gp#%-Xyk3A-FZ`TAbU4a2&G; z7XFwN?t`d*$d#EJ8X{{498f^yDdr?;O*8ctbxmDT~U9&}K?3Tj3 zfZOZMhYa75*~?la_f0TE*GyQ{Ta}v>f7S;qsOS-X@ii{`7}8t3W^>^^ifIKJEi0+2 z`Ie@Q!e}6nkpC>J+T?{qR%)^KNd1xTgbwQ=L!hsvWzxEc`zCzvKJE@~UY`C3yOx;2 zskZhS`z6>%0}zcaoQq{&rZEj8PNS)m0ketAw-&8xH_dCpLp`6~oR#q>PQdu6XM{t% z#OE!6qD>qPbF0G7gp}$rd&q*(qfD$vPWG}kCFy8c91{1`Yjd$Q9TKHGc(HyR; zt6L_*bLi2;%jiV<_34;EjNpzE@j1bL6R)@5SGx!67kG}+B<_;tGw*GJMESh8XeiNu zN7SY9?3>WsHu%z0XZwPWvq?XjoIM6HKizTv=6#xuVVppg$D^Y}lH2I6sQ!Cf+qpET zdk^egk5BwIho?TQBJnv#;~BzNvZm)u>+$6E=aaK{IvjF`)(oDRCZN|lZ_0c)u_lib zh!0zxBsxl%FKb?n1-Vrj=zaeLBH|ACnN?G}8yiy)Y4uEhy1I4gsMH|Z+>uB;W%EzpIC^x> zey5(t!c!v>A=kWQ^-XjOjB$_)a;||B>5{G4#GLf3JcH2YXtFzSvNK;RkUqqH6Spcb zrH>18XyFv#d9L)hxMDgkArxM1_|ST2ZY$t-IRkUj(|JboyB=J!K$-!!D%>4#L5@p{ zk)#UX@RqaVa{iaz2xu=_4<+8FWPYM~C4>J1Nl`Ni!<)9200000NkvXXu0mjf%q_*` literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-hdpi/launch_screen.png b/android/app/src/main/res/drawable-hdpi/launch_screen.png deleted file mode 100644 index bc960ac727b80f29ac1f9c05c21f4ac72611e609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11616 zcmeHt`CF3d`!P!X|J#f4^a%1pGN zNy9C2OATozm(tY8eL*bCU2p>w1m64U^ZxR_f57+n{xF9=2l&YIJlywvUFUV4=XEFl z=Ipp}-S%}b7;NLIU+mAqU@L}TFqNHaSA#P$25T*NS?Pb`%n2BbMP0vqc@_A3C+?TC zXJD|{{V-UMFqq+gwE`Yfo<8;=AYf_YMf%qYbhUv(+|SURrfvs~@6R+uZx> z_M^v&t34ucyA8C{Bx|i2G*Ac%<>H!=uJ-o!hvUUe2@e_QSEuhJa#H0y610tGA5*b& zVGA#u$;I0UzsFFROePGbd$xQ^2bS>tmxL8NZ@^T3{%OVPgq1&Sfc1>#3)n%5FmpM! zPpT&$8$(W)1?(VRQ&&;xOH0~owNQ559!k-7U0#Ix3gtpBcErFZIWV@`n&~w)W_yoG(Qnq5$`~;dFA#I7 z{&f_xsDvIi#p=bc4~1XXG&}t(Ni-1<((@_pa*_B`y#GuKsNWV z@mnKukX^NYC_Xj8<2uvLV889m4LDg+!^nCRGZa*#dgoOt_R`L~hu@gEv6sIiLc2VA z@v5Pjn=d_h25yxs;UF9MqT+l%|L{F;Mmr*gUk_uyr}*q(w8gr0xD~#SPf54}CID0J z$r`p1ChG`Ec(8<3YUyL?cOSRF<0o8kEtvBt{;31L9MsRdSNNSOh!Unx=7SsM1JE2_8O%y*bT+=>oKb(of zih_K!8EtVRw}j_C96CdUkM*BTMC@*QB^xFBO&*h0Z%acX!iR2E=cw z%O`*O`07*jd}~i!Cx#_^{&-XF+K0X!4Gmb4P!W=9J9-RV-p{*=s0>LHKQQ9ZsBEYf-Wq^LG(M7cyHIj*ZAitSjvTD+=CxH!xZeo>{4d^q43{_bwT zj&P?A2Zz+mFT2288Ehqs&a>pfc>Cz%y&c~EHl}Op>-hI|C%MR4H`gJDWY`622z0zJ5N9t2fP2Yq{^zI%sP7 zb*)KrSDnu?>Kd`X{}o~QeYyX+0m;k6dP*MB#^EsMcvfEa^~HgK)rrSe`1JH{dZ{+MLUs@?re2KlfP#Qa_~$>p#8rtlEBuz2%pU1;i~3eo@@rZ4)R#aZ zbxck^r#IFpRxsMw%H`kEev#aMU3J;6aCw@auHizCl~iGeG{Iz+zi=U2nfpXyBvnIB z60&V2v)c7^S0LJKJ5Q@%^_m*fiz105_gWNLBtn4~rE`Hs=kl@(d3sRi`_#2_rKM=W zqmDgRwA@ps%u2WwdB@sSHRbjiFb(=o`y8%j_%?# z)~JnfLymGezrVm0A=lVHj8mW@fIWa8Y3$SPxJdi1OcfT;Btps1Lsf;3)~aq;qciM$K{Z7@JI#xmzkj=8(cmKwbRvIQkC4cPjz?|S!ZOK<7u}4=Mje)@1)naq zk<|4Fms>AOY~R|otj+Yr_g~;|-%4J3m|}XU-xND#JzEE_o%si@==4cbG#(#G^6Gd} zigTP&j9B2Lrn$+Fv_r;<_m)f4MK|)9`cf%&p~>I}+y;MdnzFlX=J3`KkI|s%Sc{7` zM7$Me`-S90d8Qs8)?$6_jyIC(ieK)DKTDA^F;JEw;MS(h7V`x~Y} zqts#$ZapZe&E&mi5gjh=5~47uj!D+s9pluaC8S_=xx6=VrK%SAUN5X@aL!0p&+MQ? z@Yt5+@2i!@pr-$693PhI9rIm{7~YAUyw<;MtKRaZspVW{sciA{N#{|3@Nzjz99fdW z(yTR+{Wi2~&s#%l*KRLOXpH)K&ts{=9KHL0AFxHZ0i4)iJDc2_7`8Ybft7~mrc5iR zIYx1h8egRXk`UI>&)2on^v)#how)~c?9VD8$ygv`^HaKlD@D3VOiF+m_S;-DwD3kt zj|(?-Evu5@{fc>V`Xgg<%w;mGJ^4myD}}*dY7GETC%*i4m;c>}2Wf#(=234XY_4>c zs;SNgB*%?ChGGfM;J5H~Ar_ThEuDZbrSZpdE{};!LzMFsf{NU5{I>MQ%wdn1V`f``~GhSY}HDYi`3pk zSRzFA$^^C6QE@Z3&@HXvC?26L^-O{H+#k?QURz6GP-$+N^wtE0-cQ)wm$JKwW{qoH zW4oD_oIGWhVE1c+$F}DRfe@=$gB&9*Tu?_yr~Dh44>@mYMh>re2Fh}fVn`JW7Qcp& zEdflC$6s`CB9EB%)~F_Cz)HWB3*MMU$$5N{Zo;e7r|S-1#>ooP*7t*=eg2E|6ex3vwYnEu zTIxIUY&E`rbP^Z8+qLVh;nf<>QcLD!m~$W`j#_JDsNJoa5Opeiz3_R^7Ty^M1tWvhW|LB@cdzJown}LJ zN0O|cZS?xL2T_|7Wt`eV&GlYtev{?ejI?9XSl`%YwM%k;WVeFkq(stH7L+`&e z)O+S8P(_mEYD|qz4FH0k*;)x|@&GcK+1@LuHdR9`v8eT*TywS*_{b*$a^mK0iem)U z{N(BGi(5-Ug#lB`vPj0*Pf5QWz|EDlV>C<%M%%}dX|uCE(h-Zs4v@+v_EI7d zvn36SN4xF)vAet8j2va33HQJtmVT$!i3x8Q*36PlG3jNGtQxGj6BulnkZqAJy^l<; zz3)76HFq?m_Lw;b&`YQihH<)il0J+^IA0!ejr2~Np7r=bMonGH)2DFD`Hz|7ms>}f zhBa+r55Lpv^fqZK@P4Nb9XP;X`<})VkknNBc{Qr#VwxLfY8k2q?YV*w$&CuH0#s*6 zBOq&*&lN)D^!Q)?oY^!uxs52UmuMcMklHQNIg?(zpm#E2Zj>N(nk>!ZEp|<+zG)N1 zMpWRbvq8lkWsNtp@^bq6&2mv{wBUYvHq9$z`kyZ+6FmNC@~WX{JsLmwR`mPtKxQtS zz?T9Q$(qC~D=KS<0G%E^%6ud4(?4)PFHW<68hS5SL-BS=W|JP*dXJ zZ@FQu$?3C2y{YtvU2ZIipfnD7T0=&Iz1v#$ZwdoO{Gr|(HQgv*6!8BO!q5er(7tW#?%wMwztOevq1eE zACnYhXH5jtGkWIb7jHMO{BP=DqhIG)Ut{Rg2g(hsE>!9+m_I&1QwR9h)t~f=Nr%Ie zxc)WO-XY|RgB;ra4lImqb|DDV{}1jiwv>&?Lgz(UVll{>L-SbSs+;6w%c16=e@P|04?HTYy)tPHRo$QIannBS*@6vZ$%qJ&VO{5H=P$p_!EHa za-WxR^ni+rpIJ+=LIY;oSrUs`KuWo5l-{U1KqGqEX)PEG3Vc+5Qz+$(@=B+E=vgPzW*H4BXEv_!p#i3=K_H2|IFfg3F$fUMX ze^H@69lj&AkD`&Xg`XQUu2AF`xpTeZL)A17f*A*Oh#*?x^xo7jDTgPPVuo55qn#8YALAy|zn8H9=X#d7RB^>`4iWh0+SM~Bn>WAOyTr-b z7d-Q3zS{Jh==DkNg1_z7_S_{Wafq?UkIE=_QFioi4Di(gL7NUpZPQ?|Df8yIzpmP86bGX?uXe`c(V0=#hfvb)9S5`SnkMkAn~fFyb|pIuJ;9& z!>g9(1j8sB@AWydK?!!bO<~wHK0d|vIbzjcQ7=Zy+XMI{0zU74^O5b1I+_MK;xg!B zfG~4XJ<03bR_9K}i^<}YWYzeW*1J}%`74W-Hj9*%W-c|IkL5f7#B^>U&v8D(^%X&H z6HpW%3_ztNiA#xkt29x7b2!Bfsj%kBa^vP9o!iV#iVk^J6A?3A&gM}6OE32*r9Q^j z{@QQ(4=_6ZdF$a{|Ni82^nj`3f>=4{gPp_aZT+J1Te&A<_J(R*x`bUqSPVmgj2;n&9^45 z@pb!)YptS|mvW5_YcU#-b`u%+T>ZN7!75IZ7P znQZf>AdoIw9{WhDdjOd*oGJ^)ptu2bP5dR=5AyjgA@Me>v{0QyVod-nYb`FjXPpg| z83VuCxjzN@>A7e?n!lBIH;_u=d_Ts0S)5WGzSnmS0M>8UObXg(H#zd7cnolf3(IGA|9{!K2yk z;hh-X(TvNFAlVyeJAsCD(!|}e?$KK*yREivg|LPwQC&})?#F$V3#mjO@v9#kV9VV# zoB1QaIqtKlMQm@>%O(9XbMMGce!bhFyUG&D@C%A}{`Xg@K)EDE;^V_N z99PT&cl|05-X&u~pSPNt>>}g1y^|4iK-Q)d;!2!UPqE97BQ6iX4-T+{-gqNtW&}$^ zM;1Wo>q9QT3&@EL6#stm5Rj6<7Zxl9r8w*fOhKHo&)bUe&^1St0J9h(o&r3{zz_H` z&^S<&f*Nw{`Ec}(=;%GW0qOQLg;WuwqoEV$}I5dhp@`Lrv--s?d;G# zRdY`&Je*w`(06PWV7+xKOYWlByC12TO>)lDZcl=q2fV;CVbuY@0;YC%tPM1!8#bbX zFYOH6vxf%IRq$k@ye8n_8zOVh_zjWa<;Ie{;;hc zC3}(QEzm6=7ozg;MceE+%gun1O$MuAG=Q3qyGEAv;}l&N9(G;rvFVOZQ79lT2e0}{ zai9Ia70u?>9tyBkTH^m$bofS{oplm8xSm*;TAa+!_sK=VO)1v@R|2YYd znXVCB1aZH*&DQ#EuDA?t1-ZE%_t}I{d*EWzS}THod>S;QD!F)%hM}cVsE&zckzi#S z(v=E+O_(queQHslHSS=q{_Y(&u5J(HxImN&VlMyqZB~g-hm}rEEl+aNdzBJpYziKO z0`4T7{gpzZZj=u^EbB)oZ|T()bCw?Wh(5SPJv1onroNeE6CJ7m^F*towRO@UV`Zq< zzY*%b$@6k`Mdd-Ik}VH5fYS0v-q(#CO+*gJ#>xzFix0`iR>zM&j29pyfu;jYaR=0r zGxb^eHNqTkJ9AK5^EzPxd$5^AHPie0!6(%x{0uO_$Cvu>q?Rl=sWqGq+CSM@6!Az4WLDtBxr&33Ap+20GN(y_GIcfj zIk=tzbt*?jYwr6_Y28u$;~zup5$4K9Wog$KpkWF6i3M&ba6ibBfLx{@2Q3;4`Repu zC+Xq8=YaRKzEi+s4fBNQz4$oXiKm5WsdWpZNWJ@d%IGp-t+gkCrvWft@JF25n#y1P z&Or-j_C2fvA+8TKGl9v>t)46fxVr;ToYFwJbs~-(i zpp~FTqxtb2qN71{mfsn(bQ^QX42MkOe7(qXW?hBJ*yzO-E+s07&S*??K$z=;JSHVs zHEw4GXIO`qV6<=!?-AulRYTHh!_>qFCqxjja+g(i%Ln!x$JFrB1Opc{TwQr<`S@Qy zFx!&@DnXUm^VR1z;nEXp()XEAbpy8uGJoqZ>hY+SWxx-cjTg!Kj#M;)R`T)VA*qL& z^T8DKtoPnr;4OXy-d_=_-Fq8z;6WKMI*(Pbr-RYXPCIm|DV7go8_eBqrh@ z!}0XIjUcR7xG5A47;pw?rPM82530>q4rYZn3g!P;FM>Ak*q`ScX6iK^L0?SX1xwT- zoG5(;U=u-@Z(&W|&rN+~OgiWZu)H&bp!pPej_|XPW(tTKFoY2i0L8z)YR1kCg!8^^ zIKC5nnM2J1z>EJl5Nh`^Zu~TY&}_sVtSHhRPRh;6@(#$5C|+my64o`w+CYH^dGup9 z*JHs!k7+uHUJ&_mRNh{828>qRYElk-2At%KMLjU}p{5?)^jI&A3l_{fek~=I#Q%5} znhqdsw1Af1t?8l*HLj-z!(AXJ$O>3rptp4F zXeZ5=$)p4CqXPS*OIUl|7m74MjPyvLaRPW_O^W&zImY$7i0u9=YR{epeMNE{UQjLulvGIT)|^~cb*Eq?C*Ql_wtpP Uun)e_wrAKWl(T*D$xAo?4-i=}J^%m! diff --git a/android/app/src/main/res/drawable-mdpi/icon_wordpress.png b/android/app/src/main/res/drawable-mdpi/icon_wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..cc24baf40772480857197cd9dafae9547c4cabe7 GIT binary patch literal 1427 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 ZEnOX5FutE%|NNf;85x-A<8R-O{vU3p2y_4d diff --git a/android/app/src/main/res/drawable-xhdpi/icon_wordpress.png b/android/app/src/main/res/drawable-xhdpi/icon_wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..e3457517b757540aad90d4429382c8845b0410b2 GIT binary patch literal 3557 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 fW4&9?g|z<%LFMM)NKv|>1a(H~j3Xc_MH7)` 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 diff --git a/android/app/src/main/res/drawable-xxhdpi/icon_wordpress.png b/android/app/src/main/res/drawable-xxhdpi/icon_wordpress.png new file mode 100644 index 0000000000000000000000000000000000000000..82b89663193428d56ba9e0aa3531655009b38dba GIT binary patch literal 5833 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 TQK*;%00000NkvXXu0mjf3co19 literal 0 HcmV?d00001 diff --git a/android/app/src/main/res/drawable-xxhdpi/launch_screen.png b/android/app/src/main/res/drawable-xxhdpi/launch_screen.png deleted file mode 100644 index 3b36d489cfa91292b476d4b587f7a5cd21dcb089..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26458 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Μ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�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%0D=|GV6E!_2DFNX`2$~AA+ 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%0D#}U*cY)Nx4zoi1)!le!1hu|mr~Jf=d82&4cAJ!r z-V4-D$ah(r=;4cNPMOhwrO{T4kf+)}4xEwY|_H%#u|>pFlyH9=s1> z!SK(xBf~Nw?PN7xB2M30;~p6Aek|0N)WLTrDQn0&!}VlkmylxabqS7}?y6a0dMF6-YTcB2Zf-zs)l^LJ+z&wRDUIp<67IQsMBs&p@< zk-#)!*Iqn8uwufPx&_1EyjWB7rWP;tL%wY_LA0R#mr@$|bw|gQmhNxc5*kpmiH+SJ z=B4sI=4FXNF~zof;oa!yjwGc<+?KDxACK7~kYml`UA@4f=RsjN;=X&L9ph^jyA`;U ziefbg3ME)}R@_NaA}1X}{c8@#DvG!kog;n@wYtH_#lM>mDwb~(OtU#9FJN8sJ6}(u z7G}C|Sc2adXVf~lK<^YTO>X{rs_F}UB6jpRoaLk+{TX-5c6&9WjC^&e$B*?mwSDKa zxc#WBFXFkBuO7U4yEGI2y9cM&eoIZQsN=0(J0azXzZ5XxE=97&RMU|mf%ZJV(I;yv z#VEc*B=8kC!73O8w0n{3O_9n?k?A%r&A`TW_G7Z6V|rn(#^_;?U9UKWiqfZ$@__xa zIF&|tAu`?F=ay4ZSNWe*nCC=i4{GRC-2W_K2xO_$a>nQi z?l#3|E$k0+Lcq-PErtoguA37^?Cgza?GNI&u5^Xyk#4#tE-rdwQshvj4|R^?yVP<* z(dz-0^(E>ejfw2 zkA~I~>H~T9Sl_}ck1}-V*!r5WYoCf*Uv8G{tRM=By*(<+&pv*rXFZh9o!?Md&{d9a z*Mgq~MJ1)C3`nT)GaKe(;k`hln1u zcjCis;^EPdoy4A*&)sgJwJsUX9*1)OMKY(5+MNAoX$F!`MxVQGvvxj1mT?O-e#{f#YKZ9&Uoo8x{1^uwLVS| z8}+?dNntqW;pPdRnMB?78%4$Ck_#-ywx&W@gG92s1uRz%C<>c8WHbsCB z0b@DIA+mR(Wcf*laM<3*g@5R^r`m1FIg}XeW*uk4)mRh+{=M5%U;PjN+o$cB#eaH` zh0MEhG&N@4e^sgqoJzIQ&=dX+97i7XlZ0}oLt4O*GpM-QJ=(Qhz@q+=QiE@)*@yv; z=*SGbgMIK-UODQSHa@u)8ie%iSHNn+Pzhe#Zd9vG)wY;ZBf8xTIlK6pflvAP3mqEb zEE=P>CLcDJlomQ7_O`gA%xDnL0D{CUzVK39u zRn}bpcNKsU4EvW$rKp{@hN->4nVFBz$dr)_!j$hJ>)Sq6ZThIZ9nHTHtKEZtt>$7) z)mCZ_UuG>=uv37qX=4?kr{N#bDHDq+iqaL9Mij14t$8~POst~5di$}5>;!8x4H>#I zd}qN$!C*fd(~#|=Bn-%!lSTBS>LVosn8h$!;4%;P;x3%TY<8(!x zGJh=qF%I-hQZeOD9*k@o@w~g^!Me=e(p*!wA@BZg$UpmpozrFoo~k?dM)Q|ohz6oN z$mQT>662Swtl0v5gP2BVWx1&f%GKl{;P0(U(Op8+^UK@0iIJ!B`m=(62!hl5sW>{b zPh5lIBlNJ+lF=KFJ6l1(4aDqvz>&HXKW591zk^k2$9PO3$Q0J}$H`t??61~XH&z<> z?>mw75)LY#SKIx)LUfHbP?nnOBJ@fBQ0gN*9#EPt$1Aap5$MaVOQO^GjT6C9*I?a{ z!_(`d@ta?sUNq?jviL?0?LcPpPXZHCLb-kIDD#i$40Y1y^;ja-H>dO4IXZBztvI>G zFOvJvjiMpz!zV9417GRwuzyTzT$}uiu1y-TVHnYA?p_TWv&GZN&R?QA>k2|247}8A zDE`e)UOu`|J4Z0(oS|~DhQn)4h$95IDuqhP*$g?5PuXt)-}QqSw@|YPU-flaclQs( z_R9{GJBLh}&!8qy#`jNM^p*WNJ)Y0e1J)RQPhz6=6Q7~5%}k2LTBYdtw^-@~i#4cE ziEw%eVg>m5wV()pL@pQdk~vBmc$KDQ7bs0IQjXxzV`y{Oo}Bpx;nN&9m;JzQL$88-wjl?0cj1tYx|^`gb$ zl+#M?Q!aW~{MuL? + + + + + + + + + \ No newline at end of file diff --git a/android/app/src/main/res/drawable/launch_screen_bitmap.xml b/android/app/src/main/res/drawable/launch_screen_bitmap.xml deleted file mode 100644 index de474fb1f..000000000 --- a/android/app/src/main/res/drawable/launch_screen_bitmap.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - diff --git a/android/app/src/main/res/layout/launch_screen.xml b/android/app/src/main/res/layout/launch_screen.xml deleted file mode 100644 index 97c4ac273..000000000 --- a/android/app/src/main/res/layout/launch_screen.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/android/app/src/main/res/values-night/colors.xml b/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 000000000..1e24e3159 --- /dev/null +++ b/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1,4 @@ + + + #000000 + \ No newline at end of file diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml index effdcbed1..8ba17e337 100644 --- a/android/app/src/main/res/values/colors.xml +++ b/android/app/src/main/res/values/colors.xml @@ -1,6 +1,6 @@ #660B0B0B - #FFFFFF + #eeeff1 #CC3333 \ No newline at end of file diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index fdfc9173c..50861d8e0 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -1,7 +1,8 @@ + + diff --git a/android/build.gradle b/android/build.gradle index 62a22d81d..aaef31e10 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -55,16 +55,16 @@ allprojects { } } -// subprojects { subproject -> -// afterEvaluate { -// if ((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) { -// android { -// compileSdkVersion 28 -// buildToolsVersion "28.0.3" -// defaultConfig { -// targetSdkVersion 28 -// } -// } -// } -// } -// } +subprojects { subproject -> + afterEvaluate { + if ((subproject.plugins.hasPlugin('android') || subproject.plugins.hasPlugin('android-library'))) { + android { + compileSdkVersion 28 + buildToolsVersion "28.0.3" + defaultConfig { + targetSdkVersion 28 + } + } + } + } +} diff --git a/app/actions/actionsTypes.js b/app/actions/actionsTypes.js index ced5b25ef..15718b171 100644 --- a/app/actions/actionsTypes.js +++ b/app/actions/actionsTypes.js @@ -54,3 +54,11 @@ export const TOGGLE_CRASH_REPORT = 'TOGGLE_CRASH_REPORT'; export const SET_CUSTOM_EMOJIS = 'SET_CUSTOM_EMOJIS'; export const SET_ACTIVE_USERS = 'SET_ACTIVE_USERS'; export const USERS_TYPING = createRequestTypes('USERS_TYPING', ['ADD', 'REMOVE', 'CLEAR']); +export const INVITE_LINKS = createRequestTypes('INVITE_LINKS', [ + 'SET_TOKEN', + 'SET_PARAMS', + 'SET_INVITE', + 'CREATE', + 'CLEAR', + ...defaultTypes +]); diff --git a/app/actions/inviteLinks.js b/app/actions/inviteLinks.js new file mode 100644 index 000000000..b456603cf --- /dev/null +++ b/app/actions/inviteLinks.js @@ -0,0 +1,55 @@ +import * as types from './actionsTypes'; + +export function inviteLinksSetToken(token) { + return { + type: types.INVITE_LINKS.SET_TOKEN, + token + }; +} + +export function inviteLinksRequest(token) { + return { + type: types.INVITE_LINKS.REQUEST, + token + }; +} + +export function inviteLinksSuccess() { + return { + type: types.INVITE_LINKS.SUCCESS + }; +} + +export function inviteLinksFailure() { + return { + type: types.INVITE_LINKS.FAILURE + }; +} + +export function inviteLinksClear() { + return { + type: types.INVITE_LINKS.CLEAR + }; +} + + +export function inviteLinksCreate(rid) { + return { + type: types.INVITE_LINKS.CREATE, + rid + }; +} + +export function inviteLinksSetParams(params) { + return { + type: types.INVITE_LINKS.SET_PARAMS, + params + }; +} + +export function inviteLinksSetInvite(invite) { + return { + type: types.INVITE_LINKS.SET_INVITE, + invite + }; +} diff --git a/app/constants/settings.js b/app/constants/settings.js index d4697a709..74c6234f6 100644 --- a/app/constants/settings.js +++ b/app/constants/settings.js @@ -59,6 +59,9 @@ export default { Message_TimeFormat: { type: 'valueAsString' }, + Message_TimeAndDateFormat: { + type: 'valueAsString' + }, Site_Name: { type: 'valueAsString' }, diff --git a/app/containers/EmojiPicker/EmojiCategory.js b/app/containers/EmojiPicker/EmojiCategory.js index e7a71f513..22382f1e3 100644 --- a/app/containers/EmojiPicker/EmojiCategory.js +++ b/app/containers/EmojiPicker/EmojiCategory.js @@ -1,9 +1,9 @@ import React from 'react'; import PropTypes from 'prop-types'; import { Text, TouchableOpacity, FlatList } from 'react-native'; -import { shortnameToUnicode } from 'emoji-toolkit'; import { responsive } from 'react-native-responsive-ui'; +import shortnameToUnicode from '../../utils/shortnameToUnicode'; import styles from './styles'; import CustomEmoji from './CustomEmoji'; import scrollPersistTaps from '../../utils/scrollPersistTaps'; diff --git a/app/containers/EmojiPicker/index.js b/app/containers/EmojiPicker/index.js index 817b0f602..65a973715 100644 --- a/app/containers/EmojiPicker/index.js +++ b/app/containers/EmojiPicker/index.js @@ -2,7 +2,6 @@ import React, { Component } from 'react'; import { View } from 'react-native'; import PropTypes from 'prop-types'; import ScrollableTabView from 'react-native-scrollable-tab-view'; -import { shortnameToUnicode } from 'emoji-toolkit'; import equal from 'deep-equal'; import { connect } from 'react-redux'; import orderBy from 'lodash/orderBy'; @@ -15,6 +14,7 @@ import categories from './categories'; import database from '../../lib/database'; import { emojisByCategory } from '../../emojis'; import protectedFunction from '../../lib/methods/helpers/protectedFunction'; +import shortnameToUnicode from '../../utils/shortnameToUnicode'; import log from '../../utils/log'; import { themes } from '../../constants/colors'; import { withTheme } from '../../theme'; diff --git a/app/containers/FileModal.js b/app/containers/FileModal.js deleted file mode 100644 index 2943afa4f..000000000 --- a/app/containers/FileModal.js +++ /dev/null @@ -1,132 +0,0 @@ -import React, { useState } from 'react'; -import { - View, Text, TouchableWithoutFeedback, StyleSheet, SafeAreaView -} from 'react-native'; -import FastImage from 'react-native-fast-image'; -import PropTypes from 'prop-types'; -import Modal from 'react-native-modal'; -import ImageViewer from 'react-native-image-zoom-viewer'; -import { Video } from 'expo-av'; - -import sharedStyles from '../views/Styles'; -import { formatAttachmentUrl } from '../lib/utils'; -import ActivityIndicator from './ActivityIndicator'; -import { themes } from '../constants/colors'; -import { withTheme } from '../theme'; - -const styles = StyleSheet.create({ - safeArea: { - flex: 1 - }, - modal: { - margin: 0 - }, - titleContainer: { - width: '100%', - alignItems: 'center', - marginVertical: 10 - }, - title: { - textAlign: 'center', - fontSize: 16, - ...sharedStyles.textSemibold - }, - description: { - textAlign: 'center', - fontSize: 14, - ...sharedStyles.textMedium - }, - video: { - flex: 1 - } -}); - -const ModalContent = React.memo(({ - attachment, onClose, user, baseUrl, theme -}) => { - if (attachment && attachment.image_url) { - const url = formatAttachmentUrl(attachment.image_url, user.id, user.token, baseUrl); - return ( - - - - {attachment.title} - {attachment.description ? {attachment.description} : null} - - - null} - renderImage={props => } - loadingRender={() => } - /> - - ); - } - if (attachment && attachment.video_url) { - const [loading, setLoading] = useState(true); - const uri = formatAttachmentUrl(attachment.video_url, user.id, user.token, baseUrl); - return ( - <> -