diff --git a/.eslintrc.json b/.eslintrc.json index 0d0323071..229d31473 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -61,6 +61,7 @@ "afterColon": true }}], "@typescript-eslint/member-delimiter-style": 2, + "@typescript-eslint/no-unsafe-declaration-merging": "off", "import/order": [ 2, { diff --git a/.github/actions/prepare-node-deps/action.yaml b/.github/actions/prepare-node-deps/action.yaml index 22967d7d6..bb621a052 100644 --- a/.github/actions/prepare-node-deps/action.yaml +++ b/.github/actions/prepare-node-deps/action.yaml @@ -7,7 +7,7 @@ runs: - name: ci/setup-node uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0 with: - node-version: "${{ env.NODE_VERSION }}" + node-version-file: ".nvmrc" cache: "npm" cache-dependency-path: package-lock.json diff --git a/.node-version b/.node-version index fb67e3d51..aacb51810 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -18.7.0 +18.17 diff --git a/.npmrc b/.npmrc index cffe8cdef..145d3fa25 100644 --- a/.npmrc +++ b/.npmrc @@ -1 +1,2 @@ save-exact=true +engine-strict=true diff --git a/.nvmrc b/.nvmrc index fb67e3d51..aacb51810 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -18.7.0 +18.17 diff --git a/.solidarity b/.solidarity index 5ad4be2b1..01799368b 100644 --- a/.solidarity +++ b/.solidarity @@ -4,29 +4,11 @@ "output" : "moderate" }, "requirements": { - "Node": [ - { - "rule": "cli", - "binary": "node", - "semver": ">=16.0.0", - "error": "install node using nvm https://github.com/nvm-sh/nvm#installing-and-updating" - }, - { - "rule": "cli", - "binary": "npm", - "semver": ">=7.24.0 <9.0.0", - "error": "install npm 8.5.5 `npm i -g npm@8.5.5" - } - ], "Android": [ { "rule": "cli", "binary": "emulator" }, - { - "rule": "cli", - "binary": "android" - }, { "rule": "env", "variable": "ANDROID_HOME", @@ -57,7 +39,7 @@ { "rule": "cli", "binary": "pod", - "semver": "1.11.3", + "semver": "1.12.1", "platform": "darwin" } ], diff --git a/NOTICE.txt b/NOTICE.txt index 61e23b28b..7a0630561 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -484,6 +484,48 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +--- + +## @react-native/eslint-config + +This product contains '@react-native/eslint-config' by Meta. + +ESLint config for React Native + +* HOMEPAGE: + * https://github.com/facebook/react-native/tree/HEAD/packages/eslint-config-react-native-community#readme + +* LICENSE: MIT + + +--- + +## @react-native/metro-config + +This product contains '@react-native/metro-config' by Meta. + +Config resolver and transformer for Metro. + +* HOMEPAGE: + * https://github.com/facebook/react-native#readme + +* LICENSE: MIT + + +--- + +## @tsconfig/react-native + +This product contains '@tsconfig/react-native' by TSC Base. + +Hosts TSConfigs for you to extend in your apps, tuned to a particular runtime environment. Owned and improved by the community. Basically Definitely Typed for TSConfigs. + +* HOMEPAGE: + * https://github.com/tsconfig/bases#readme + +* LICENSE: MIT + + --- ## @react-navigation/bottom-tabs @@ -554,42 +596,6 @@ Stack navigator component for iOS and Android with animated transitions and gest ---- - -## @rudderstack/rudder-sdk-react-native - -This product contains '@rudderstack/rudder-sdk-react-native' by RudderStack. - -Rudder React Native SDK - -* HOMEPAGE: - * https://github.com/rudderlabs/rudder-sdk-reactnative#readme - -* LICENSE: Apache-2.0 - -MIT License - -Copyright (c) 2021 RudderStack - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --- ## @sentry/react-native diff --git a/README.md b/README.md index c5adbf777..ac548d2c4 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Mattermost Mobile v2 - **Minimum Server versions:** Current ESR version (7.8.0+) -- **Supported iOS versions:** 12.1+ +- **Supported iOS versions:** 13.4+ - **Supported Android versions:** 7.0+ Mattermost is an open source Slack-alternative used by thousands of companies around the world in 21 languages. Learn more at [https://mattermost.com](https://mattermost.com). diff --git a/android/app/build.gradle b/android/app/build.gradle index 8b9cf38f9..90156e9d7 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -110,8 +110,8 @@ android { applicationId "com.mattermost.rnbeta" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 480 - versionName "2.7.0" + versionCode 487 + versionName "2.9.0" testBuildType System.getProperty('testBuildType', 'debug') testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' } diff --git a/android/app/src/main/java/com/mattermost/helpers/CustomPushNotificationHelper.java b/android/app/src/main/java/com/mattermost/helpers/CustomPushNotificationHelper.java index 488cd8e8e..0cb97ffc3 100644 --- a/android/app/src/main/java/com/mattermost/helpers/CustomPushNotificationHelper.java +++ b/android/app/src/main/java/com/mattermost/helpers/CustomPushNotificationHelper.java @@ -52,6 +52,7 @@ public class CustomPushNotificationHelper { public static final String PUSH_TYPE_MESSAGE = "message"; public static final String PUSH_TYPE_CLEAR = "clear"; public static final String PUSH_TYPE_SESSION = "session"; + public static final String CATEGORY_CAN_REPLY = "CAN_REPLY"; private static NotificationChannel mHighImportanceChannel; private static NotificationChannel mMinImportanceChannel; @@ -132,8 +133,9 @@ public class CustomPushNotificationHelper { private static void addNotificationReplyAction(Context context, NotificationCompat.Builder notification, Bundle bundle, int notificationId) { String postId = bundle.getString("post_id"); String serverUrl = bundle.getString("server_url"); + boolean canReply = bundle.containsKey("category") && bundle.getString("category").equals(CATEGORY_CAN_REPLY); - if (android.text.TextUtils.isEmpty(postId) || serverUrl == null) { + if (android.text.TextUtils.isEmpty(postId) || serverUrl == null || !canReply) { return; } diff --git a/android/app/src/main/res/drawable/rn_edit_text_material.xml b/android/app/src/main/res/drawable/rn_edit_text_material.xml index bb6f578c3..ab58c0f44 100644 --- a/android/app/src/main/res/drawable/rn_edit_text_material.xml +++ b/android/app/src/main/res/drawable/rn_edit_text_material.xml @@ -16,7 +16,7 @@ android:insetTop="@dimen/abc_edit_text_inset_top_material" android:insetBottom="@dimen/abc_edit_text_inset_bottom_material"> -