diff --git a/.circleci/config.yml b/.circleci/config.yml index 9cfbb84ef..7e9bb5068 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -525,4 +525,4 @@ workflows: tags: only: /^v(\d+\.)(\d+\.)(\d+)(.*)?$/ branches: - only: unsigned + only: unsigned \ No newline at end of file diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml new file mode 100644 index 000000000..350626d81 --- /dev/null +++ b/.github/codeql/codeql-config.yml @@ -0,0 +1,13 @@ +name: "CodeQL config" + +query-filters: + - exclude: + problem.severity: + - warning + - recommendation + - exclude: + id: js/insecure-randomness + +paths-ignore: + - test + - '**/*.test.*' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index a546cd52f..c49e51154 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -9,8 +9,13 @@ on: schedule: - cron: '0 0 * * 0' +permissions: + contents: read + jobs: analyze: + permissions: + security-events: write name: Analyze runs-on: ubuntu-latest @@ -18,26 +23,20 @@ jobs: fail-fast: false matrix: language: [ 'javascript' ] - # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] steps: - name: Checkout repository - uses: actions/checkout@v2 + uses: actions/checkout@v3 - # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v1 + uses: github/codeql-action/init@v2 with: languages: ${{ matrix.language }} - # If you wish to specify custom queries, you can do so here or in a config file. - # By default, queries listed here will override any specified in a config file. - # Prefix the list here with "+" to use these queries and those in the config file. - # queries: ./path/to/local/query, your-org/your-repo/queries@main + config-file: ./.github/codeql/codeql-config.yml - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) + # Autobuild attempts to build any compiled languages - name: Autobuild - uses: github/codeql-action/autobuild@v1 + uses: github/codeql-action/autobuild@v2 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v1 + uses: github/codeql-action/analyze@v2 diff --git a/.gitignore b/.gitignore index 0f8fa3058..a9285d81c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,6 +42,8 @@ ios/Pods .gradle local.properties *.iml +*.hprof +.cxx/ android/app/bin android/app/build android/build diff --git a/README.md b/README.md index 228d3330b..d6d857eb9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This `master` branch is mostly in maintenance mode while we're working to gettin # Mattermost Mobile App [![Mattermost](https://user-images.githubusercontent.com/7205829/136108314-75cd2e1f-4147-4cfa-a16c-9b3b0313ea25.png)](https://mattermost.com) -- **Minimum Server versions:** Current ESR version (6.3.0) +- **Minimum Server versions:** Current ESR version (7.1.0) - **Supported iOS versions:** 12.1+ - **Supported Android versions:** 7.0+ diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 0063cf4f3..604a17eef 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -8,6 +8,6 @@ android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning"> - + - + \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 6fce38562..eda01403a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -33,10 +33,12 @@ + android:taskAffinity="" + android:exported="true" + > @@ -72,7 +74,9 @@ android:screenOrientation="portrait" android:theme="@style/AppTheme" android:taskAffinity="com.mattermost.share" - android:launchMode="singleInstance"> + android:launchMode="singleInstance" + android:exported="true" + > @@ -91,4 +95,4 @@ - + \ No newline at end of file diff --git a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.java b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.java index 73468cb50..e084b1efa 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotification.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import com.wix.reactnativenotifications.core.notification.PushNotification; +import com.wix.reactnativenotifications.core.NotificationIntentAdapter; import com.wix.reactnativenotifications.core.AppLaunchHelper; import com.wix.reactnativenotifications.core.AppLifecycleFacade; import com.wix.reactnativenotifications.core.JsIOHelper; @@ -246,7 +247,7 @@ public class CustomPushNotification extends PushNotification { } private void buildNotification(Integer notificationId, boolean createSummary) { - final PendingIntent pendingIntent = super.getCTAPendingIntent(); + final PendingIntent pendingIntent = NotificationIntentAdapter.createPendingNotificationIntent(mContext, mNotificationProps); final Notification notification = buildNotification(pendingIntent); if (createSummary) { final Notification summary = getNotificationSummaryBuilder(pendingIntent).build(); diff --git a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotificationHelper.java b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotificationHelper.java index 1fbaff01f..5f89c5092 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotificationHelper.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/CustomPushNotificationHelper.java @@ -1,5 +1,6 @@ package com.mattermost.rnbeta; +import android.annotation.SuppressLint; import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; @@ -128,11 +129,20 @@ public class CustomPushNotificationHelper { replyIntent.putExtra(NOTIFICATION_ID, notificationId); replyIntent.putExtra("pushNotification", bundle); - PendingIntent replyPendingIntent = PendingIntent.getBroadcast( - context, - notificationId, - replyIntent, - PendingIntent.FLAG_UPDATE_CURRENT); + PendingIntent replyPendingIntent; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + replyPendingIntent = PendingIntent.getBroadcast( + context, + notificationId, + replyIntent, + PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_MUTABLE); + } else { + replyPendingIntent = PendingIntent.getBroadcast( + context, + notificationId, + replyIntent, + PendingIntent.FLAG_UPDATE_CURRENT); + } RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY) .setLabel("Reply") @@ -381,10 +391,12 @@ public class CustomPushNotificationHelper { private static void setNotificationDeleteIntent(Context context, NotificationCompat.Builder notification, Bundle bundle, int notificationId) { // Let's add a delete intent when the notification is dismissed + final String PUSH_NOTIFICATION_EXTRA_NAME = "pushNotification"; Intent delIntent = new Intent(context, NotificationDismissService.class); - PushNotificationProps notificationProps = new PushNotificationProps(bundle); delIntent.putExtra(NOTIFICATION_ID, notificationId); - PendingIntent deleteIntent = NotificationIntentAdapter.createPendingNotificationIntent(context, delIntent, notificationProps); + delIntent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, bundle); + @SuppressLint("UnspecifiedImmutableFlag") + PendingIntent deleteIntent = PendingIntent.getService(context, (int) System.currentTimeMillis(), delIntent, PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE); notification.setDeleteIntent(deleteIntent); } diff --git a/android/app/src/main/java/com/mattermost/rnbeta/NotificationReplyBroadcastReceiver.java b/android/app/src/main/java/com/mattermost/rnbeta/NotificationReplyBroadcastReceiver.java index c345222d0..754fd8476 100644 --- a/android/app/src/main/java/com/mattermost/rnbeta/NotificationReplyBroadcastReceiver.java +++ b/android/app/src/main/java/com/mattermost/rnbeta/NotificationReplyBroadcastReceiver.java @@ -129,9 +129,8 @@ public class NotificationReplyBroadcastReceiver extends BroadcastReceiver { } private void recreateNotification(int notificationId, final CharSequence message) { - final Intent cta = new Intent(mContext, ProxyService.class); final PushNotificationProps notificationProps = new PushNotificationProps(bundle); - final PendingIntent pendingIntent = NotificationIntentAdapter.createPendingNotificationIntent(mContext, cta, notificationProps); + final PendingIntent pendingIntent = NotificationIntentAdapter.createPendingNotificationIntent(mContext, notificationProps); NotificationCompat.Builder builder = CustomPushNotificationHelper.createNotificationBuilder(mContext, pendingIntent, bundle, false); Notification notification = builder.build(); NotificationCompat.MessagingStyle messagingStyle = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(notification); diff --git a/android/app/src/main/jni/CMakeLists.txt b/android/app/src/main/jni/CMakeLists.txt new file mode 100644 index 000000000..1d9982059 --- /dev/null +++ b/android/app/src/main/jni/CMakeLists.txt @@ -0,0 +1,5 @@ +cmake_minimum_required(VERSION 3.13) +# Define the library name here. +project(rndiffapp_appmodules) +# This file includes all the necessary to let you build your application with the New Architecture. +include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake) diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/android/app/src/main/jni/MainApplicationModuleProvider.cpp new file mode 100644 index 000000000..d34a1e498 --- /dev/null +++ b/android/app/src/main/jni/MainApplicationModuleProvider.cpp @@ -0,0 +1,32 @@ +#include "MainApplicationModuleProvider.h" + +#include +#include + +namespace facebook { +namespace react { + +std::shared_ptr MainApplicationModuleProvider( + const std::string &moduleName, + const JavaTurboModule::InitParams ¶ms) { + // Here you can provide your own module provider for TurboModules coming from + // either your application or from external libraries. The approach to follow + // is similar to the following (for a library called `samplelibrary`: + // + // auto module = samplelibrary_ModuleProvider(moduleName, params); + // if (module != nullptr) { + // return module; + // } + // return rncore_ModuleProvider(moduleName, params); + + // Module providers autolinked by RN CLI + auto rncli_module = rncli_ModuleProvider(moduleName, params); + if (rncli_module != nullptr) { + return rncli_module; + } + + return rncore_ModuleProvider(moduleName, params); +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/android/app/src/main/jni/MainApplicationModuleProvider.h b/android/app/src/main/jni/MainApplicationModuleProvider.h new file mode 100644 index 000000000..48f1d107a --- /dev/null +++ b/android/app/src/main/jni/MainApplicationModuleProvider.h @@ -0,0 +1,16 @@ +#pragma once + +#include +#include + +#include + +namespace facebook { +namespace react { + +std::shared_ptr MainApplicationModuleProvider( + const std::string &moduleName, + const JavaTurboModule::InitParams ¶ms); + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp new file mode 100644 index 000000000..ae730d132 --- /dev/null +++ b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp @@ -0,0 +1,45 @@ +#include "MainApplicationTurboModuleManagerDelegate.h" +#include "MainApplicationModuleProvider.h" + +namespace facebook { +namespace react { + +jni::local_ref +MainApplicationTurboModuleManagerDelegate::initHybrid( + jni::alias_ref) { + return makeCxxInstance(); +} + +void MainApplicationTurboModuleManagerDelegate::registerNatives() { + registerHybrid({ + makeNativeMethod( + "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), + makeNativeMethod( + "canCreateTurboModule", + MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), + }); +} + +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string &name, + const std::shared_ptr &jsInvoker) { + // Not implemented yet: provide pure-C++ NativeModules here. + return nullptr; +} + +std::shared_ptr +MainApplicationTurboModuleManagerDelegate::getTurboModule( + const std::string &name, + const JavaTurboModule::InitParams ¶ms) { + return MainApplicationModuleProvider(name, params); +} + +bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( + const std::string &name) { + return getTurboModule(name, nullptr) != nullptr || + getTurboModule(name, {.moduleName = name}) != nullptr; +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h new file mode 100644 index 000000000..a51ba9dd7 --- /dev/null +++ b/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h @@ -0,0 +1,38 @@ +#include +#include + +#include +#include + +namespace facebook { +namespace react { + +class MainApplicationTurboModuleManagerDelegate + : public jni::HybridClass< + MainApplicationTurboModuleManagerDelegate, + TurboModuleManagerDelegate> { + public: + // Adapt it to the package you used for your Java class. + static constexpr auto kJavaDescriptor = + "Lcom/rndiffapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; + + static jni::local_ref initHybrid(jni::alias_ref); + + static void registerNatives(); + + std::shared_ptr getTurboModule( + const std::string &name, + const std::shared_ptr &jsInvoker) override; + std::shared_ptr getTurboModule( + const std::string &name, + const JavaTurboModule::InitParams ¶ms) override; + + /** + * Test-only method. Allows user to verify whether a TurboModule can be + * created by instances of this class. + */ + bool canCreateTurboModule(const std::string &name); +}; + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/android/app/src/main/jni/MainComponentsRegistry.cpp b/android/app/src/main/jni/MainComponentsRegistry.cpp new file mode 100644 index 000000000..1f42510bc --- /dev/null +++ b/android/app/src/main/jni/MainComponentsRegistry.cpp @@ -0,0 +1,65 @@ +#include "MainComponentsRegistry.h" + +#include +#include +#include +#include +#include + +namespace facebook { +namespace react { + +MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} + +std::shared_ptr +MainComponentsRegistry::sharedProviderRegistry() { + auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); + + // Autolinked providers registered by RN CLI + rncli_registerProviders(providerRegistry); + + // Custom Fabric Components go here. You can register custom + // components coming from your App or from 3rd party libraries here. + // + // providerRegistry->add(concreteComponentDescriptorProvider< + // AocViewerComponentDescriptor>()); + return providerRegistry; +} + +jni::local_ref +MainComponentsRegistry::initHybrid( + jni::alias_ref, + ComponentFactory *delegate) { + auto instance = makeCxxInstance(delegate); + + auto buildRegistryFunction = + [](EventDispatcher::Weak const &eventDispatcher, + ContextContainer::Shared const &contextContainer) + -> ComponentDescriptorRegistry::Shared { + auto registry = MainComponentsRegistry::sharedProviderRegistry() + ->createComponentDescriptorRegistry( + {eventDispatcher, contextContainer}); + + auto mutableRegistry = + std::const_pointer_cast(registry); + + mutableRegistry->setFallbackComponentDescriptor( + std::make_shared( + ComponentDescriptorParameters{ + eventDispatcher, contextContainer, nullptr})); + + return registry; + }; + + delegate->buildRegistryFunction = buildRegistryFunction; + return instance; +} + +void MainComponentsRegistry::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), + }); +} + +} // namespace react +} // namespace facebook \ No newline at end of file diff --git a/android/build.gradle b/android/build.gradle index 6296de78b..4753306cd 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -2,11 +2,11 @@ buildscript { ext { - buildToolsVersion = "30.0.2" + buildToolsVersion = "31.0.0" minSdkVersion = 24 - compileSdkVersion = 30 - targetSdkVersion = 30 - supportLibVersion = "28.0.0" + compileSdkVersion = 31 + targetSdkVersion = 31 + supportLibVersion = "31.0.0" kotlinVersion = "1.5.30" firebaseVersion = "21.0.0" RNNKotlinVersion = kotlinVersion diff --git a/android/gradle.properties b/android/gradle.properties index c88cd69c4..5bcc2744f 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -9,9 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -# Default value: -Xmx1024m -XX:MaxPermSize=256m -# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -org.gradle.jvmargs=-Xmx2048M +# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m +org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar index e708b1c02..41d9927a4 100644 Binary files a/android/gradle/wrapper/gradle-wrapper.jar and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 966aa8e62..f338a8808 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip diff --git a/android/gradlew b/android/gradlew index 645f6ca31..a58591e97 100755 --- a/android/gradlew +++ b/android/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,78 +17,113 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -105,79 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/app/constants/calls.ts b/app/constants/calls.ts index 76d5d528f..9b466ba96 100644 --- a/app/constants/calls.ts +++ b/app/constants/calls.ts @@ -4,9 +4,9 @@ const RefreshConfigMillis = 20 * 60 * 1000; // Refresh config after 20 minutes const RequiredServer = { - FULL_VERSION: '6.3.0', - MAJOR_VERSION: 6, - MIN_VERSION: 3, + FULL_VERSION: '7.1.0', + MAJOR_VERSION: 7, + MIN_VERSION: 1, PATCH_VERSION: 0, }; diff --git a/app/constants/view.js b/app/constants/view.js index 2daf50bff..d0e81dc81 100644 --- a/app/constants/view.js +++ b/app/constants/view.js @@ -115,9 +115,9 @@ const ViewTypes = keyMirror({ }); const RequiredServer = { - FULL_VERSION: '5.37.0', - MAJOR_VERSION: 5, - MIN_VERSION: 37, + FULL_VERSION: '7.1.0', + MAJOR_VERSION: 7, + MIN_VERSION: 1, PATCH_VERSION: 0, }; diff --git a/app/products/calls/connection.ts b/app/products/calls/connection.ts index 29f72f43b..008f4615c 100644 --- a/app/products/calls/connection.ts +++ b/app/products/calls/connection.ts @@ -203,7 +203,7 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs ws.on('message', ({data}) => { const msg = JSON.parse(data); - if (msg.type === 'answer' || msg.type === 'offer') { + if (msg.type === 'answer' || msg.type === 'candidate' || msg.type === 'offer') { peer?.signal(data); } }); diff --git a/app/utils/url.test.js b/app/utils/url.test.js index 1306c49f9..8abc68ff5 100644 --- a/app/utils/url.test.js +++ b/app/utils/url.test.js @@ -3,6 +3,7 @@ import {Linking} from 'react-native'; +import TestHelper from '@test/test_helper'; import * as UrlUtils from '@utils/url'; /* eslint-disable max-nested-callbacks */ @@ -152,7 +153,8 @@ describe('UrlUtils', () => { const onError = jest.fn(); const onSuccess = jest.fn(); - await UrlUtils.tryOpenURL(url, onError, onSuccess); + UrlUtils.tryOpenURL(url, onError, onSuccess); + await TestHelper.wait(200); expect(onError).toHaveBeenCalledTimes(1); expect(onSuccess).not.toHaveBeenCalled(); }); diff --git a/assets/base/i18n/de.json b/assets/base/i18n/de.json index 287de637d..bbeac4aef 100644 --- a/assets/base/i18n/de.json +++ b/assets/base/i18n/de.json @@ -96,7 +96,7 @@ "channel_modal.headerHelp": "Der Text, der in der Kopfzeile des Kanals neben dem Namen steht. Zum Beispiel könntest Du häufig genutzte Links durch Hinzufügen von [Link Titel](http://example.de) anzeigen lassen.", "channel_modal.name": "Name", "channel_modal.nameEx": "Z.B.: \"Bugs\", \"Marketing\", \"客户支持\"", - "channel_modal.optional": "(wahlweise)", + "channel_modal.optional": "(optional)", "channel_modal.purpose": "Zweck", "channel_modal.purposeEx": "Z.B.: \"Ein Kanal um Fehler und Verbesserungsvorschläge abzulegen\"", "channel_modal.type.private": "Privater Kanal", @@ -115,7 +115,7 @@ "combined_system_message.added_to_channel.two": "{firstUser} und {secondUser} wurden durch {actor} **zum Kanal hinzugefügt**.", "combined_system_message.added_to_team.many_expanded": "{users} und {lastUser} wurden durch {actor} **zum Team hinzugefügt**.", "combined_system_message.added_to_team.one": "{firstUser} wurde durch {actor} **zum Team hinzugefügt**.", - "combined_system_message.added_to_team.one_you": "Du wurden durch {actor} **zum Team hinzugefügt**.", + "combined_system_message.added_to_team.one_you": "Du wurdest durch {actor} **zum Team hinzugefügt**.", "combined_system_message.added_to_team.two": "{firstUser} und {secondUser} wurden durch {actor} **zum Team hinzugefügt**.", "combined_system_message.joined_channel.many_expanded": "{users} und {lastUser} **sind dem Kanal beigetreten**.", "combined_system_message.joined_channel.one": "{firstUser} **ist dem Kanal beigetreten**.", @@ -683,11 +683,11 @@ "permalink.show_dialog_warn.description": "Du bist dabei, \"{channel}\" beizutreten ohne explizit durch den Kanaladministrator hinzugefügt worden zu sein. Bist Du sicher, dass du diesem privaten Kanal beitreten willst?", "permalink.show_dialog_warn.join": "Beitreten", "permalink.show_dialog_warn.title": "Privatem Kanal beitreten", - "post_body.check_for_out_of_channel_groups_mentions.message": "wurde durch diese Erwähnung nicht benachrichtigt, da sich der Benutzer nicht im Kanal befindet. Er kann dem Kanal nicht hinzugefügt werden, da er nicht Mitglied der verknüpften Gruppen ist. Um ihn zu diesem Kanal hinzuzufügen, muss er zu den verknüpften Gruppen hinzugefügt werden.", + "post_body.check_for_out_of_channel_groups_mentions.message": "wurde durch diese Erwähnung nicht benachrichtigt, da sie sich nicht im Kanal befinden. Sie sind auch keine Mitglieder der mit diesem Kanal verknüpften Gruppen.", "post_body.check_for_out_of_channel_mentions.link.and": " und ", "post_body.check_for_out_of_channel_mentions.link.private": "sie zu diesem privaten Kanal hinzufügen", - "post_body.check_for_out_of_channel_mentions.link.public": "sie zu diesem Kanal hinzufügen", - "post_body.check_for_out_of_channel_mentions.message.multiple": "wurde durch diese Erwähnung nicht benachrichtigt, da der Benutzer sich nicht im Kanal befindet. Möchtest Du ", + "post_body.check_for_out_of_channel_mentions.link.public": "ihn/sie zu diesem Kanal hinzufügen", + "post_body.check_for_out_of_channel_mentions.message.multiple": "wurden erwähnt, sind aber nicht im Kanal. Möchtest Du ", "post_body.check_for_out_of_channel_mentions.message.one": "wurde durch diese Erwähnung nicht benachrichtigt, da der Benutzer sich nicht im Kanal befindet. Möchtest Du ", "post_body.check_for_out_of_channel_mentions.message_last": "? Sie werden Zugriff auf den Nachrichtenverlauf haben.", "post_body.commentedOn": "Kommentierte auf {name}{apostrophe} Nachricht: ", diff --git a/assets/base/i18n/es.json b/assets/base/i18n/es.json index 6aeda7d5d..2b1b7af0b 100644 --- a/assets/base/i18n/es.json +++ b/assets/base/i18n/es.json @@ -26,7 +26,7 @@ "apps.error.form.no_lookup": "No se ha definido el término \"búsqueda\".", "apps.error.form.no_source": "La \"fuente\" no está definida.", "apps.error.form.no_submit": "`enviar` no está definido", - "apps.error.form.refresh": "Se ha producido un error en la obtención de los campos seleccionados. Póngase en contacto con el desarrollador de la aplicación. Detalles: {detalles}", + "apps.error.form.refresh": "Se ha producido un error en la obtención de los campos seleccionados. Póngase en contacto con el desarrollador de la aplicación. Detalles: {details}", "apps.error.form.refresh_no_refresh": "Llamada de refresco en un campo no refrescado.", "apps.error.form.submit.pretext": "Se ha producido un error al enviar el modal. Póngase en contacto con el desarrollador de la aplicación. Detalles: {details}", "apps.error.lookup.error_preparing_request": "Error al preparar la solicitud de búsqueda: {errorMessage}", @@ -276,7 +276,7 @@ "mobile.alert_dialog.alertCancel": "Cancelar", "mobile.android.back_handler_exit": "Presione de nuevo para salir", "mobile.android.photos_permission_denied_description": "Para cargar imágenes desde tu biblioteca, por favor, cambia la configuración de permisos.", - "mobile.android.photos_permission_denied_title": "Acceso a la biblioteca de fotos es necesario", + "mobile.android.photos_permission_denied_title": "{applicationName} desea acceder a tus fotos", "mobile.android.videos_permission_denied_description": "Para subir los vídeos de tu biblioteca, por favor, cambia la configuración de permisos.", "mobile.android.videos_permission_denied_title": "Acceso a la biblioteca de vídeos es necesario", "mobile.announcement_banner.title": "Anuncio", @@ -388,7 +388,7 @@ "mobile.intro_messages.default_message": "Es es el primer canal que tus compañeros ven cuando se registran - puedes utilizarlo para enviar mensajes que todos deben leer.", "mobile.intro_messages.default_welcome": "¡Bienvenido a {name}!", "mobile.ios.photos_permission_denied_description": "Para guardar imágenes y vídeos en tu librería, por favor, cambia la configuración de permisos.", - "mobile.ios.photos_permission_denied_title": "Acceso a la biblioteca de fotos es necesario", + "mobile.ios.photos_permission_denied_title": "{applicationName} desea acceder a tu librería de fotos", "mobile.join_channel.error": "No pudimos unirnos al canal {displayName}. Por favor revisa tu conexión e intenta de nuevo.", "mobile.link.error.text": "No se pudo abrir el enlace.", "mobile.link.error.title": "Error", @@ -510,10 +510,10 @@ "mobile.post_textbox.entire_channel.cancel": "Cancelar", "mobile.post_textbox.entire_channel.confirm": "Confirmar", "mobile.post_textbox.entire_channel.message": "Al utilizar @all ó @channel estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}}. ¿Estás seguro de querer hacer esto?", - "mobile.post_textbox.entire_channel.message.with_timezones": "Al utilizar @all ó @channel estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}} en {timezones, number} {zonas horarias, plural, one {zona horaria} other {zonas horarias}}. ¿Estás seguro de querer hacer esto?", + "mobile.post_textbox.entire_channel.message.with_timezones": "Al utilizar @all ó @channel estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}} en {timezones, number} {timezones, plural, one {zona horaria} other {zonas horarias}}. ¿Estás seguro de querer hacer esto?", "mobile.post_textbox.entire_channel.title": "Confirma el envío de notificaciones a todo el canal", "mobile.post_textbox.entire_channel_here.message": "Al utilizar @here estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}}. ¿Estás seguro de querer hacer esto?", - "mobile.post_textbox.entire_channel_here.message.with_timezones": "Al utilizar @here estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}} en {timezones, number} {zonas horarias, plural, one {zona horaria} other {zonas horarias}}. ¿Estás seguro de querer hacer esto?", + "mobile.post_textbox.entire_channel_here.message.with_timezones": "Al utilizar @here estás a punto de enviar notificaciones a {totalMembers, number} {totalMembers, plural, one {persona} other {personas}} en {timezones, number} {timezones, plural, one {zona horaria} other {zonas horarias}}. ¿Estás seguro de querer hacer esto?", "mobile.post_textbox.groups.title": "Confirma el envío de notificaciones a grupos", "mobile.post_textbox.multi_group.message.with_timezones": "Al utilizar {mentions} y {finalMention} estás a punto de enviar notificaciones al menos a {totalMembers} personas en {timezones, number} {timezones, plural, one {zona horaria} other {zonas horarias}}. ¿Estás seguro?", "mobile.post_textbox.multi_group.message.without_timezones": "Al utilizar {mentions} y {finalMention} estás a punto de enviar notificaciones al menos a {totalMembers} personas. ¿Estás seguro?", @@ -690,7 +690,7 @@ "post_body.check_for_out_of_channel_mentions.message.multiple": "fueron mencionados pero no son parte de este canal. Quieres ", "post_body.check_for_out_of_channel_mentions.message.one": "fue mencionado pero no es parte de este canal. Quieres ", "post_body.check_for_out_of_channel_mentions.message_last": "? Tendrán acceso al historial de mensajes.", - "post_body.commentedOn": "Comento en el mensaje de {name}: ", + "post_body.commentedOn": "Comentado en el mensaje de {name}{apostrophe}: ", "post_body.deleted": "(mensaje eliminado)", "post_info.auto_responder": "RESPUESTA AUTOMÁTICA", "post_info.bot": "BOT", @@ -702,8 +702,8 @@ "posts_view.newMsg": "Nuevos Mensajes", "rhs_thread.rootPostDeletedMessage.body": "Parte de esta conversación ha sido eliminada debido a la política de retención de datos. No se puede seguir respondiendo a esta conversación.", "search_bar.search": "Buscar", - "search_header.results": "Resultados de la Búsqueda", - "search_header.title2": "Menciones Recientes", + "search_header.results": "Resultados de búsqueda", + "search_header.title2": "Mencines recientes", "search_header.title3": "Mensajes Guardados", "search_item.channelArchived": "Archivado", "sidebar.channels": "CANALES PÚBLICOS", diff --git a/assets/base/i18n/hr.json b/assets/base/i18n/hr.json new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/assets/base/i18n/hr.json @@ -0,0 +1 @@ +{} diff --git a/assets/base/i18n/ja.json b/assets/base/i18n/ja.json index d32b9f799..b59dd37ff 100644 --- a/assets/base/i18n/ja.json +++ b/assets/base/i18n/ja.json @@ -690,7 +690,7 @@ "post_body.check_for_out_of_channel_mentions.message.multiple": "がメンションされましたが、彼らはチャンネルにいません。 ", "post_body.check_for_out_of_channel_mentions.message.one": "がメンションされましたが、彼はチャンネルにいません。 ", "post_body.check_for_out_of_channel_mentions.message_last": "? 彼らは全ての会話履歴にアクセスできます。", - "post_body.commentedOn": "{name}のメッセージへのコメント: ", + "post_body.commentedOn": "{name} {apostrophe} のメッセージへのコメント: ", "post_body.deleted": "(メッセージは削除されています)", "post_info.auto_responder": "自動返信", "post_info.bot": "BOT", @@ -748,7 +748,7 @@ "threads.replies": "{count} {count, plural, one {返信} other {返信}}", "threads.unfollowMessage": "メッセージのフォローをやめる", "threads.unfollowThread": "スレッドのフォローをやめる", - "user.settings.display.clockDisplay": "時計表示", + "user.settings.display.clockDisplay": "時刻表示", "user.settings.display.custom_theme": "カスタムテーマ", "user.settings.display.militaryClock": "時計の24時間表示(例: 16:00)", "user.settings.display.normalClock": "時計の12時間表示(例: 4:00 PM)", diff --git a/assets/base/i18n/ko.json b/assets/base/i18n/ko.json index 978523092..e48dc0005 100644 --- a/assets/base/i18n/ko.json +++ b/assets/base/i18n/ko.json @@ -700,7 +700,7 @@ "post_info.system": "시스템", "post_message_view.edited": "(수정됨)", "posts_view.newMsg": "새로운 메시지", - "rhs_thread.rootPostDeletedMessage.body": "이 글타래의 일부는 데이터 보존 정책으로 인해 삭제되었습니다. 더 이상 이 글타래에 회신할 수 없습니다.", + "rhs_thread.rootPostDeletedMessage.body": "이 글타래의 일부는 데이터 보존 정책으로 인해 삭제되었습니다. 더 이상 이 글타래에 응답 할 수 없습니다.", "search_bar.search": "검색", "search_header.results": "검색 결과", "search_header.title2": "최근 멘션", diff --git a/assets/base/i18n/nl.json b/assets/base/i18n/nl.json index 1ebe856b9..f468931c6 100644 --- a/assets/base/i18n/nl.json +++ b/assets/base/i18n/nl.json @@ -7,8 +7,8 @@ "about.hashee": "EE Compilatiehash:", "about.teamEditionLearn": "Word lid van de Mattermost-gemeenschap op ", "about.teamEditionSt": "Alle team-communicatie op één plaats, doorzoekbaar en van overal bereikbaar.", - "about.teamEditiont0": "Team Editie", - "about.teamEditiont1": "Enterprise Editie", + "about.teamEditiont0": "Team-Editie", + "about.teamEditiont1": "Enterprise-Editie", "about.title": "Info over {appTitle}", "announcment_banner.dont_show_again": "Niet opnieuw tonen", "api.channel.add_guest.added": "{addedUsername} werd toegevoegd aan het kanaal als gast door {username}.", @@ -141,7 +141,7 @@ "combined_system_message.removed_from_team.one": "{firstUser} werd **verwijderd uit het team**.", "combined_system_message.removed_from_team.one_you": "Je werd **verwijderd uit het team**.", "combined_system_message.removed_from_team.two": "{firstUser} en {secondUser} werden **verwijderd van het team**.", - "combined_system_message.you": "Jij", + "combined_system_message.you": "jou", "create_comment.addComment": "Voeg commentaar toe...", "create_post.deactivated": "Je bekijkt een gearchiveerd kanaal met een gedeactiveerde gebruiker.", "create_post.write": "Schrijven naar {channelDisplayName}", diff --git a/assets/base/i18n/sv.json b/assets/base/i18n/sv.json index 93a383419..32fc13848 100644 --- a/assets/base/i18n/sv.json +++ b/assets/base/i18n/sv.json @@ -141,7 +141,7 @@ "combined_system_message.removed_from_team.one": "{firstUser} **togs bort från kanalen**.", "combined_system_message.removed_from_team.one_you": "Du **togs bort från teamet**.", "combined_system_message.removed_from_team.two": "{firstUser} och {secondUser} **togs bort från teamet**.", - "combined_system_message.you": "Du", + "combined_system_message.you": "dig", "create_comment.addComment": "Lägg till en kommentar...", "create_post.deactivated": "Du visar en arkiverad kanal med ett avstängt användarkonto.", "create_post.write": "Skriv i kanalen {channelDisplayName}", diff --git a/assets/base/i18n/tr.json b/assets/base/i18n/tr.json index 3112b8bb1..93adaf960 100644 --- a/assets/base/i18n/tr.json +++ b/assets/base/i18n/tr.json @@ -1,14 +1,14 @@ { "about.date": "Yapım tarihi:", - "about.enterpriseEditionLearn": "Enterprise sürüm hakkında şuradan ayrıntılı bilgi alabilirsiniz ", + "about.enterpriseEditionLearn": "Enterprise paketi hakkında ayrıntılı bilgiyi şuradan alabilirsiniz ", "about.enterpriseEditionSt": "Güvenlik duvarının arkasından modern iletişim.", - "about.enterpriseEditione1": "Enterprise sürümü", + "about.enterpriseEditione1": "Enterprise paketi", "about.hash": "Yapım karması:", - "about.hashee": "Enterprise sürüm yapım karması:", + "about.hashee": "Enterprise tarifesi yapım karması:", "about.teamEditionLearn": "Mattermost topluluğuna katılın: ", "about.teamEditionSt": "Tüm takım iletişimi tek bir yerde, anında aranabilir ve her yerden erişilebilir.", - "about.teamEditiont0": "Team sürümü", - "about.teamEditiont1": "Enterprise sürümü", + "about.teamEditiont0": "Team paketi", + "about.teamEditiont1": "Enterprise paketi", "about.title": "{appTitle} hakkında", "announcment_banner.dont_show_again": "Yeniden görüntülenmesin", "api.channel.add_guest.added": "{addedUsername}, {username} tarafından konuk olarak kanala eklendi.", @@ -595,7 +595,7 @@ "mobile.server_link.unreachable_user.error": "Bu bağlantı silinmiş bir kullanıcıya ait.", "mobile.server_ssl.error.text": "{host} sertifikası güvenilir değil.\n\nLütfen sertifika sorunlarını çözerek bu sunucu ile bağlantı kurulabilmesini sağlaması için sistem yöneticiniz ile görüşün.", "mobile.server_ssl.error.title": "Güvenli olmayan sertifika", - "mobile.server_upgrade.alert_description": "Bu sunucu sürümü desteklenmediğinden, kullanıcılar uyumluluk sorunlarından kaynaklanan çökmeler ya da uygulamanın temel işlevselliğini bozan ciddi sorunlar ile karşılaşacak. Sunucu sürümünün {serverVersion} ya da üzerindeki bir sürüme yükseltilmesi gerekli.", + "mobile.server_upgrade.alert_description": "Bu sunucu sürümü desteklenmediğinden, kullanıcılar uyumluluk sorunlarından kaynaklanan çökmeler ya da uygulamanın temel işlevselliğini bozan ciddi sorunlar ile karşılaşacak. Sunucunun {serverVersion} ya da üzerindeki bir sürüme güncellenmesi gerekli.", "mobile.server_upgrade.button": "Tamam", "mobile.server_upgrade.dismiss": "Kapat", "mobile.server_upgrade.learn_more": "Ayrıntılı bilgi alın", @@ -636,7 +636,7 @@ "mobile.timezone_settings.manual": "Saat dilimini değiştir", "mobile.timezone_settings.select": "Saat dilimini seçin", "mobile.tos_link": "Hizmet koşulları", - "mobile.unsupported_server.message": "Ek dosyalar, bağlantı ön izlemeleri, tepkiler ve gömülü veriler doğru görüntülenmeyebilir. Bu sorun sürerse sistem yöneticinize Mattermost sürümünü yükseltmesi gerektiğini bildirin.", + "mobile.unsupported_server.message": "Ek dosyalar, bağlantı ön izlemeleri, tepkiler ve gömülü veriler doğru görüntülenmeyebilir. Bu sorun sürerse sistem yöneticinize Mattermost sunucusunu güncellemesi gerektiğini bildirin.", "mobile.unsupported_server.ok": "Tamam", "mobile.unsupported_server.title": "Sunucu sürümü desteklenmiyor", "mobile.user.settings.notifications.email.fifteenMinutes": "15 dakikada bir", diff --git a/assets/base/i18n/uk.json b/assets/base/i18n/uk.json index 88d220724..b819e8165 100644 --- a/assets/base/i18n/uk.json +++ b/assets/base/i18n/uk.json @@ -11,7 +11,15 @@ "about.teamEditiont1": "Enterprise Edition", "about.title": "Про {appTitle}", "announcment_banner.dont_show_again": "Не показувати знову", + "api.channel.add_guest.added": "{addedUsername} доданий до каналу під гостьовим ім'ям {username}.", "api.channel.add_member.added": "{addedUsername} додано до каналу за {username}.", + "api.channel.guest_join_channel.post_and_forget": "{username} приєднався до каналу як гість.", + "apps.error": "Помилка:{error}", + "apps.error.command.field_missing": "Обов'язкові поля відсутні:`{fieldName}`.", + "apps.error.command.same_channel": "Канал повторюється для поля `{fieldName}`: `{option}`.", + "apps.error.command.same_option": "Опція повторюється для поля `{fieldName}`: `{option}`.", + "apps.error.command.same_user": "Користувач повторюється для поля `{fieldName}`: `{option}`.", + "apps.error.command.unknown_channel": "Невідомий канал для поля `{fieldName}`: `{option}`.", "archivedChannelMessage": "Ви переглядаєте **архівований канал**. Нові повідомлення не можуть бути опубліковані.", "center_panel.archived.closeChannel": "Закрити канал", "channel.channelHasGuests": "У цому каналі є гості", @@ -32,6 +40,7 @@ "channel_loader.someone": "Хтось", "channel_members_modal.remove": "Видалити", "channel_modal.cancel": "Відміна", + "channel_modal.channelType": "Тип", "channel_modal.descriptionHelp": "Опишіть, як слід використовувати цей канал.", "channel_modal.header": "Заголовок", "channel_modal.headerEx": "Наприклад: \"[Тема посилання](http://example.com)\"", @@ -70,7 +79,7 @@ "combined_system_message.left_channel.one_you": "**залишив канал**.", "combined_system_message.left_channel.two": "{firstUser} і {secondUser} **залишив канал**. ", "combined_system_message.left_team.many_expanded": "{users} і {lastUser} **залишили команду**.", - "combined_system_message.left_team.one": "{firstUser} **залишає команду**. ", + "combined_system_message.left_team.one": "{firstUser} **залишає команду**.", "combined_system_message.left_team.one_you": "**залишив команду**.", "combined_system_message.left_team.two": "{firstUser} та {secondUser} **залишили команду**.", "combined_system_message.removed_from_channel.many_expanded": "{users} та {lastUser} **видалені з каналу**.", @@ -85,16 +94,26 @@ "create_comment.addComment": "Додати коментар...", "create_post.deactivated": "Ви переглядаєте архівований канал з деактивованим користувачем.", "create_post.write": "Написати у {channelDisplayName}", + "custom_status.expiry_dropdown.custom": "На вибір", + "custom_status.expiry_dropdown.today": "Сьогодні", + "custom_status.expiry_time.today": "Сьогодні", "date_separator.today": "Сьогодні", "date_separator.yesterday": "Вчора", "edit_post.editPost": "Редагувати повідомлення...", "edit_post.save": "Зберегти", + "emoji_picker.custom": "На вибір", + "emoji_picker.flags": "Прапори", + "emoji_picker.objects": "Об'єкти", + "emoji_picker.searchResults": "Результати пошуку", + "emoji_picker.symbols": "Символи", "file_upload.fileAbove": "Не можна завантажити файл більше {max} МВ: {filename}", + "friendly_date.yesterday": "Вчора", "gallery.download_file": "Завантажити файл", "gallery.footer.channel_name": "Поділилися в {channelName}", "gallery.open_file": "Відкрити файл", "gallery.unsuppored": "Попередній перегляд не підтримується для цього типу файлу", "get_post_link_modal.title": "Скопіювати посилання", + "global_threads.markAllRead.cancel": "Відміна", "integrations.add": "Додати", "intro_messages.anyMember": "Будь-який учасник може зайти і читати цей канал.", "intro_messages.beginning": "Початок {name}", @@ -152,7 +171,7 @@ "mobile.advanced_settings.delete_message": "\nДана дія приведе до очищення локальних даних і перезапуску програми.\n", "mobile.advanced_settings.delete_title": "Delete Documents & Data", "mobile.advanced_settings.timezone": "Часовий пояс ", - "mobile.advanced_settings.title": "Додаткові параметри ", + "mobile.advanced_settings.title": "Додаткові параметри", "mobile.alert_dialog.alertCancel": "Відміна", "mobile.android.back_handler_exit": "Повторно натисніть назад, щоб вийти", "mobile.android.photos_permission_denied_description": "Щоб завантажити зображення з вашої бібліотеки, будь-ласка, змініть налаштування вашого дозволу.", @@ -211,6 +230,7 @@ "mobile.create_channel.public": "Новий публічний канал", "mobile.create_post.read_only": "Цей канал доступний лише для читання", "mobile.custom_list.no_results": "Немає результатів", + "mobile.custom_status.modal_confirm": "Готово", "mobile.display_settings.sidebar": "Бічна панель ", "mobile.display_settings.theme": "Тема ", "mobile.document_preview.failed_description": "Під час відкриття документа сталася помилка. Будь-ласка, переконайтеся, що ви встановили програму перегляду {fileType} та повторіть спробу.\n", @@ -255,19 +275,24 @@ "mobile.files_paste.error_title": "Не вдалося вставити", "mobile.flagged_posts.empty_description": "Збережені повідомлення бачите лише ви. Позначте повідомлення для подальших дій або збережіть на потім, довго натискаючи повідомлення та вибираючи Зберегти в меню.", "mobile.flagged_posts.empty_title": "Ще немає збережених повідомлень", + "mobile.forms.select.done": "Готово", "mobile.gallery.title": "{index} з {total}", + "mobile.general.error.title": "Помилка", "mobile.help.title": "Допомога ", + "mobile.interactive_dialog.defaultSubmit": "Відправити", "mobile.intro_messages.DM": "Початок історії особистих повідомлень з {teammate}. Особисті повідомлення і файли доступні тут і не видно за межами цієї області.", "mobile.intro_messages.default_message": "Це перший канал, який бачить новий учасник групи - використовуйте його для направлення повідомлень, які повинні побачити всі.", "mobile.intro_messages.default_welcome": "Ласкаво просимо до {name}!", "mobile.ios.photos_permission_denied_description": "Щоб зберегти зображення та відео в бібліотеці, змініть налаштування вашого дозволу.", "mobile.ios.photos_permission_denied_title": "Потрібен доступ до фото-бібліотеки", "mobile.join_channel.error": "Ми не можемо підключитися до каналу {displayName}. Будь-ласка, перевірте підключення та спробуйте знову.", + "mobile.link.error.title": "Помилка", "mobile.loading_channels": "Завантаження списку каналів...", "mobile.loading_members": "Завантаження списку учасників...", "mobile.loading_options": "Параметри завантаження...", "mobile.loading_posts": "Завантаження повідомлень...", "mobile.login_options.choose_title": "Виберіть спосіб входу", + "mobile.mailTo.error.title": "Помилка", "mobile.managed.blocked_by": "Заблоковано {vendor}", "mobile.managed.exit": "Вхід", "mobile.managed.jailbreak": "Пристрої з Jailbroken не є довіреними {vendor}, вийдіть з програми.", @@ -333,6 +358,7 @@ "mobile.open_dm.error": "Ми не можемо підключитися до каналу {displayName}. Будь-ласка, перевірте підключення та спробуйте знову.", "mobile.open_gm.error": "Помилка з'єднання із групи з цими користувачами. Будь-ласка, перевірте підключення та спробуйте заново.", "mobile.open_unknown_channel.error": "Не вдається приєднатися до каналу. Скиньте кеш і спробуйте ще раз.", + "mobile.participants.you": "(Це ви)", "mobile.permission_denied_dismiss": "Не дозволяти", "mobile.permission_denied_retry": "Налаштування", "mobile.pinned_posts.empty_description": "Закріпіть важливі повідомлення, видимі для всього каналу. Довго натискайте повідомлення та виберіть Закріпити на каналі, щоб зберегти його тут.", @@ -362,7 +388,7 @@ "mobile.post_textbox.entire_channel.title": "Підтвердьте надсилання повідомлень на весь канал", "mobile.post_textbox.groups.title": "Confirm sending notifications to groups", "mobile.post_textbox.one_group.message.without_timezones": "Використовуючи {mention}, ви збираєтеся надіслати сповіщення {totalMembers} людям. Ви впевнені, що хочете це зробити?", - "mobile.post_textbox.uploadFailedDesc": "Деякі вкладення не змогли завантажити на сервер. Ви впевнені, що хочете опублікувати це повідомлення? ", + "mobile.post_textbox.uploadFailedDesc": "Деякі вкладення не змогли завантажити на сервер. Ви впевнені, що хочете опублікувати це повідомлення?", "mobile.post_textbox.uploadFailedTitle": "Вкладення несправності", "mobile.posts_view.moreMsg": "Більше нових повідомлень ", "mobile.prepare_file.failed_description": "Під час підготовки файлу сталася помилка. Будь ласка спробуйте ще раз.\n", @@ -408,6 +434,7 @@ "mobile.routes.sso": "Одиночна система входу", "mobile.routes.table": "Таблиця", "mobile.routes.thread": "{channelName} Деталі", + "mobile.routes.thread_crt": "Thread", "mobile.routes.thread_dm": "Прямий потік повідомлень", "mobile.routes.user_profile": "Профіль ", "mobile.routes.user_profile.edit": "Редагувати", @@ -510,6 +537,7 @@ "password_send.reset": "Скинути пароль ", "permalink.error.access": "Постійне посилання належить до видаленого повідомлення або до каналу, на який ви не маєте доступу.", "permalink.error.link_not_found": "Посилання не знайдено", + "permalink.show_dialog_warn.cancel": "Відміна", "post_body.check_for_out_of_channel_groups_mentions.message": "did not get notified by this mention because they are not in the channel. They cannot be added to the channel because they are not a member of the linked groups. To add them to this channel, they must be added to the linked groups.", "post_body.check_for_out_of_channel_mentions.link.and": "і", "post_body.check_for_out_of_channel_mentions.link.private": "додайте їх до цього приватного каналу", @@ -578,9 +606,10 @@ "user.settings.general.emailSamlCantUpdate": "Вхід здійснюється через GitLab. Електронна пошта не може бути оновлена. Електронна адреса, яку використовують для сповіщень, є {email}. ", "user.settings.general.field_handled_externally": "Це поле обробляється вашим провайдером входу. Якщо ви хочете це змінити,то потрібно це зробити через свого постачальника послуг входу.", "user.settings.general.firstName": "Ім'я ", - "user.settings.general.lastName": "Прізвище ", + "user.settings.general.lastName": "Прізвище", "user.settings.general.nickname": "Псевдонім", "user.settings.general.position": "Посада", + "user.settings.general.status": "Статус", "user.settings.general.username": "Ім'я користувача", "user.settings.modal.display": "Вигляд", "user.settings.modal.notifications": "Сповіщення ", diff --git a/detox/package-lock.json b/detox/package-lock.json index 87d830032..e2accc45b 100644 --- a/detox/package-lock.json +++ b/detox/package-lock.json @@ -6765,9 +6765,9 @@ } }, "node_modules/moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true, "optional": true, "engines": { @@ -13536,9 +13536,9 @@ } }, "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "dev": true, "optional": true }, diff --git a/fastlane/Fastfile b/fastlane/Fastfile index ae0938291..13bdabff5 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -661,14 +661,6 @@ platform :android do beta_dir = './android/app/src/main/java/com/mattermost/rnbeta/' release_dir = "./android/app/src/main/java/#{package_id.gsub '.', '/'}/" - if ENV['BUILD_FOR_RELEASE'] == 'true' - find_replace_string( - path_to_file: "#{beta_dir}MainApplication.java", - old_string: 'return BuildConfig.DEBUG;', - new_string: 'return false;' - ) - end - if release_dir != beta_dir unless Dir.exist?(".#{release_dir}") FileUtils.mkdir_p ".#{release_dir}" @@ -689,6 +681,14 @@ platform :android do new_string: "package #{package_id};" ) end + + Dir.glob('../android/app/src/main/java/com/mattermost/newarchitecture/*.java') do |item| + find_replace_string( + path_to_file: item[1..-1], + old_string: 'import com.mattermost.rnbeta.BuildConfig;', + new_string: "import #{package_id}.BuildConfig;" + ) + end Dir.glob('../android/app/src/main/java/com/mattermost/share/*.java') do |item| find_replace_string( diff --git a/fastlane/Gemfile.lock b/fastlane/Gemfile.lock index c90dd6bc5..30d642814 100644 --- a/fastlane/Gemfile.lock +++ b/fastlane/Gemfile.lock @@ -8,20 +8,20 @@ GEM artifactory (3.0.15) atomos (0.1.3) aws-eventstream (1.2.0) - aws-partitions (1.626.0) - aws-sdk-core (3.141.0) + aws-partitions (1.656.0) + aws-sdk-core (3.166.0) aws-eventstream (~> 1, >= 1.0.2) - aws-partitions (~> 1, >= 1.525.0) - aws-sigv4 (~> 1.1) + aws-partitions (~> 1, >= 1.651.0) + aws-sigv4 (~> 1.5) jmespath (~> 1, >= 1.6.1) - aws-sdk-kms (1.58.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-kms (1.59.0) + aws-sdk-core (~> 3, >= 3.165.0) aws-sigv4 (~> 1.1) - aws-sdk-s3 (1.114.0) - aws-sdk-core (~> 3, >= 3.127.0) + aws-sdk-s3 (1.117.1) + aws-sdk-core (~> 3, >= 3.165.0) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.4) - aws-sigv4 (1.5.1) + aws-sigv4 (1.5.2) aws-eventstream (~> 1, >= 1.0.2) babosa (1.0.4) claide (1.1.0) @@ -36,7 +36,7 @@ GEM unf (>= 0.0.5, < 1.0.0) dotenv (2.8.1) emoji_regex (3.2.3) - excon (0.92.4) + excon (0.93.1) faraday (1.10.2) faraday-em_http (~> 1.0) faraday-em_synchrony (~> 1.0) @@ -66,7 +66,7 @@ GEM faraday_middleware (1.2.0) faraday (~> 1.0) fastimage (2.2.6) - fastlane (2.209.1) + fastlane (2.210.1) CFPropertyList (>= 2.3, < 4.0.0) addressable (>= 2.8, < 3.0.0) artifactory (~> 3.0) @@ -111,9 +111,9 @@ GEM fastlane-plugin-find_replace_string (0.1.0) fastlane-plugin-versioning_android (0.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.25.0) - google-apis-core (>= 0.7, < 2.a) - google-apis-core (0.7.0) + google-apis-androidpublisher_v3 (0.31.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-core (0.9.1) addressable (~> 2.5, >= 2.5.1) googleauth (>= 0.16.2, < 2.a) httpclient (>= 2.8.1, < 3.a) @@ -122,27 +122,27 @@ GEM retriable (>= 2.0, < 4.a) rexml webrick - google-apis-iamcredentials_v1 (0.13.0) - google-apis-core (>= 0.7, < 2.a) - google-apis-playcustomapp_v1 (0.10.0) - google-apis-core (>= 0.7, < 2.a) - google-apis-storage_v1 (0.17.0) - google-apis-core (>= 0.7, < 2.a) + google-apis-iamcredentials_v1 (0.16.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-playcustomapp_v1 (0.12.0) + google-apis-core (>= 0.9.1, < 2.a) + google-apis-storage_v1 (0.19.0) + google-apis-core (>= 0.9.0, < 2.a) google-cloud-core (1.6.0) google-cloud-env (~> 1.0) google-cloud-errors (~> 1.0) google-cloud-env (1.6.0) faraday (>= 0.17.3, < 3.0) - google-cloud-errors (1.2.0) - google-cloud-storage (1.39.0) + google-cloud-errors (1.3.0) + google-cloud-storage (1.44.0) addressable (~> 2.8) digest-crc (~> 0.4) google-apis-iamcredentials_v1 (~> 0.1) - google-apis-storage_v1 (~> 0.17.0) + google-apis-storage_v1 (~> 0.19.0) google-cloud-core (~> 1.6) googleauth (>= 0.16.2, < 2.a) mini_mime (~> 1.0) - googleauth (1.2.0) + googleauth (1.3.0) faraday (>= 0.17.3, < 3.a) jwt (>= 1.4, < 3.0) memoist (~> 0.16) @@ -164,7 +164,7 @@ GEM multipart-post (2.0.0) nanaimo (0.3.0) naturally (2.2.1) - nokogiri (1.13.8) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) optparse (0.1.1) diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index cbac3c1af..21b40540a 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,4 +1,4 @@ -Requires Mattermost Server v6.3.0+. Older servers may not be able to connect or have unexpected behavior. +Requires Mattermost Server v7.1.0+. Older servers may not be able to connect or have unexpected behavior. ------- diff --git a/fastlane/metadata/changelog b/fastlane/metadata/changelog index 0eff6df3c..9f16f8a83 100644 --- a/fastlane/metadata/changelog +++ b/fastlane/metadata/changelog @@ -1,4 +1,4 @@ -This version is compatible with Mattermost servers v6.3.0+. +This version is compatible with Mattermost servers v7.1.0+. Please see [changelog](https://docs.mattermost.com/administration/mobile-changelog.html) for full release notes. If you're interested in helping beta test upcoming versions before they are released, please see our [documentation](https://github.com/mattermost/mattermost-mobile#testing). diff --git a/index.js b/index.js index b3882a584..342209ee1 100644 --- a/index.js +++ b/index.js @@ -3,10 +3,14 @@ import 'react-native/Libraries/Core/InitializeCore'; import {Platform, Text} from 'react-native'; +import ViewReactNativeStyleAttributes from 'react-native/Libraries/Components/View/ReactNativeStyleAttributes'; import 'react-native-gesture-handler'; import 'app/mattermost'; +// Add scaleY back to work around its removal in React Native 0.70. +ViewReactNativeStyleAttributes.scaleY = true; + if (Platform.OS === 'android') { require('harmony-reflect'); } diff --git a/ios/Mattermost.xcodeproj/project.pbxproj b/ios/Mattermost.xcodeproj/project.pbxproj index 2e90177e1..db7770ebb 100644 --- a/ios/Mattermost.xcodeproj/project.pbxproj +++ b/ios/Mattermost.xcodeproj/project.pbxproj @@ -912,7 +912,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 423; - DEAD_CODE_STRIPPING = NO; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( @@ -954,7 +954,7 @@ CODE_SIGN_IDENTITY = "iPhone Developer"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 423; - DEAD_CODE_STRIPPING = NO; + DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = UQ8HT4Q2XM; ENABLE_BITCODE = NO; HEADER_SEARCH_PATHS = ( diff --git a/ios/Podfile b/ios/Podfile index 5d2b26fdd..3476a673e 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -38,6 +38,11 @@ target 'Mattermost' do config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET' end end + if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle" + target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end + end end end end diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 0c6ce1d74..aa28c9440 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -3,14 +3,14 @@ PODS: - BVLinearGradient (2.5.6): - React - DoubleConversion (1.1.6) - - FBLazyVector (0.67.2) - - FBReactNativeSpec (0.67.2): + - FBLazyVector (0.67.5) + - FBReactNativeSpec (0.67.5): - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.67.2) - - RCTTypeSafety (= 0.67.2) - - React-Core (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) + - RCTRequired (= 0.67.5) + - RCTTypeSafety (= 0.67.5) + - React-Core (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) - fmt (6.2.1) - glog (0.3.5) - HMSegmentedControl (1.5.6) @@ -52,195 +52,195 @@ PODS: - DoubleConversion - fmt (~> 6.2.1) - glog - - RCTRequired (0.67.2) - - RCTTypeSafety (0.67.2): - - FBLazyVector (= 0.67.2) + - RCTRequired (0.67.5) + - RCTTypeSafety (0.67.5): + - FBLazyVector (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTRequired (= 0.67.2) - - React-Core (= 0.67.2) + - RCTRequired (= 0.67.5) + - React-Core (= 0.67.5) - RCTYouTube (2.0.2): - React - YoutubePlayer-in-WKWebView (~> 0.3.1) - - React (0.67.2): - - React-Core (= 0.67.2) - - React-Core/DevSupport (= 0.67.2) - - React-Core/RCTWebSocket (= 0.67.2) - - React-RCTActionSheet (= 0.67.2) - - React-RCTAnimation (= 0.67.2) - - React-RCTBlob (= 0.67.2) - - React-RCTImage (= 0.67.2) - - React-RCTLinking (= 0.67.2) - - React-RCTNetwork (= 0.67.2) - - React-RCTSettings (= 0.67.2) - - React-RCTText (= 0.67.2) - - React-RCTVibration (= 0.67.2) - - React-callinvoker (0.67.2) - - React-Core (0.67.2): + - React (0.67.5): + - React-Core (= 0.67.5) + - React-Core/DevSupport (= 0.67.5) + - React-Core/RCTWebSocket (= 0.67.5) + - React-RCTActionSheet (= 0.67.5) + - React-RCTAnimation (= 0.67.5) + - React-RCTBlob (= 0.67.5) + - React-RCTImage (= 0.67.5) + - React-RCTLinking (= 0.67.5) + - React-RCTNetwork (= 0.67.5) + - React-RCTSettings (= 0.67.5) + - React-RCTText (= 0.67.5) + - React-RCTVibration (= 0.67.5) + - React-callinvoker (0.67.5) + - React-Core (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-Core/Default (= 0.67.5) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/CoreModulesHeaders (0.67.2): + - React-Core/CoreModulesHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/Default (0.67.2): + - React-Core/Default (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/DevSupport (0.67.2): + - React-Core/DevSupport (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.2) - - React-Core/RCTWebSocket (= 0.67.2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-jsinspector (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-Core/Default (= 0.67.5) + - React-Core/RCTWebSocket (= 0.67.5) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-jsinspector (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTActionSheetHeaders (0.67.2): + - React-Core/RCTActionSheetHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTAnimationHeaders (0.67.2): + - React-Core/RCTAnimationHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTBlobHeaders (0.67.2): + - React-Core/RCTBlobHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTImageHeaders (0.67.2): + - React-Core/RCTImageHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTLinkingHeaders (0.67.2): + - React-Core/RCTLinkingHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTNetworkHeaders (0.67.2): + - React-Core/RCTNetworkHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTSettingsHeaders (0.67.2): + - React-Core/RCTSettingsHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTTextHeaders (0.67.2): + - React-Core/RCTTextHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTVibrationHeaders (0.67.2): + - React-Core/RCTVibrationHeaders (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - React-Core/Default - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-Core/RCTWebSocket (0.67.2): + - React-Core/RCTWebSocket (0.67.5): - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/Default (= 0.67.2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsiexecutor (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-Core/Default (= 0.67.5) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsiexecutor (= 0.67.5) + - React-perflogger (= 0.67.5) - Yoga - - React-CoreModules (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - React-CoreModules (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.2) - - React-Core/CoreModulesHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - React-RCTImage (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-cxxreact (0.67.2): + - RCTTypeSafety (= 0.67.5) + - React-Core/CoreModulesHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - React-RCTImage (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-cxxreact (0.67.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.67.2) - - React-jsi (= 0.67.2) - - React-jsinspector (= 0.67.2) - - React-logger (= 0.67.2) - - React-perflogger (= 0.67.2) - - React-runtimeexecutor (= 0.67.2) - - React-jsi (0.67.2): + - React-callinvoker (= 0.67.5) + - React-jsi (= 0.67.5) + - React-jsinspector (= 0.67.5) + - React-logger (= 0.67.5) + - React-perflogger (= 0.67.5) + - React-runtimeexecutor (= 0.67.5) + - React-jsi (0.67.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-jsi/Default (= 0.67.2) - - React-jsi/Default (0.67.2): + - React-jsi/Default (= 0.67.5) + - React-jsi/Default (0.67.5): - boost (= 1.76.0) - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-jsiexecutor (0.67.2): + - React-jsiexecutor (0.67.5): - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-perflogger (= 0.67.2) - - React-jsinspector (0.67.2) - - React-logger (0.67.2): + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-perflogger (= 0.67.5) + - React-jsinspector (0.67.5) + - React-logger (0.67.5): - glog - react-native-cameraroll (4.1.2): - React-Core @@ -259,7 +259,7 @@ PODS: - React-Core - react-native-netinfo (7.1.9): - React-Core - - react-native-notifications (4.1.3): + - react-native-notifications (4.3.1): - React-Core - react-native-passcode-status (1.1.2): - React @@ -281,71 +281,71 @@ PODS: - React - react-native-webview (11.17.1): - React-Core - - React-perflogger (0.67.2) - - React-RCTActionSheet (0.67.2): - - React-Core/RCTActionSheetHeaders (= 0.67.2) - - React-RCTAnimation (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - React-perflogger (0.67.5) + - React-RCTActionSheet (0.67.5): + - React-Core/RCTActionSheetHeaders (= 0.67.5) + - React-RCTAnimation (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.2) - - React-Core/RCTAnimationHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTBlob (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - RCTTypeSafety (= 0.67.5) + - React-Core/RCTAnimationHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTBlob (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTBlobHeaders (= 0.67.2) - - React-Core/RCTWebSocket (= 0.67.2) - - React-jsi (= 0.67.2) - - React-RCTNetwork (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTImage (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - React-Core/RCTBlobHeaders (= 0.67.5) + - React-Core/RCTWebSocket (= 0.67.5) + - React-jsi (= 0.67.5) + - React-RCTNetwork (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTImage (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.2) - - React-Core/RCTImageHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - React-RCTNetwork (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTLinking (0.67.2): - - FBReactNativeSpec (= 0.67.2) - - React-Core/RCTLinkingHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTNetwork (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - RCTTypeSafety (= 0.67.5) + - React-Core/RCTImageHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - React-RCTNetwork (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTLinking (0.67.5): + - FBReactNativeSpec (= 0.67.5) + - React-Core/RCTLinkingHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTNetwork (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.2) - - React-Core/RCTNetworkHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTSettings (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - RCTTypeSafety (= 0.67.5) + - React-Core/RCTNetworkHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTSettings (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - RCTTypeSafety (= 0.67.2) - - React-Core/RCTSettingsHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-RCTText (0.67.2): - - React-Core/RCTTextHeaders (= 0.67.2) - - React-RCTVibration (0.67.2): - - FBReactNativeSpec (= 0.67.2) + - RCTTypeSafety (= 0.67.5) + - React-Core/RCTSettingsHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-RCTText (0.67.5): + - React-Core/RCTTextHeaders (= 0.67.5) + - React-RCTVibration (0.67.5): + - FBReactNativeSpec (= 0.67.5) - RCT-Folly (= 2021.06.28.00-v2) - - React-Core/RCTVibrationHeaders (= 0.67.2) - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (= 0.67.2) - - React-runtimeexecutor (0.67.2): - - React-jsi (= 0.67.2) - - ReactCommon/turbomodule/core (0.67.2): + - React-Core/RCTVibrationHeaders (= 0.67.5) + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (= 0.67.5) + - React-runtimeexecutor (0.67.5): + - React-jsi (= 0.67.5) + - ReactCommon/turbomodule/core (0.67.5): - DoubleConversion - glog - RCT-Folly (= 2021.06.28.00-v2) - - React-callinvoker (= 0.67.2) - - React-Core (= 0.67.2) - - React-cxxreact (= 0.67.2) - - React-jsi (= 0.67.2) - - React-logger (= 0.67.2) - - React-perflogger (= 0.67.2) + - React-callinvoker (= 0.67.5) + - React-Core (= 0.67.5) + - React-cxxreact (= 0.67.5) + - React-jsi (= 0.67.5) + - React-logger (= 0.67.5) + - React-perflogger (= 0.67.5) - ReactNativeExceptionHandler (2.10.10): - React-Core - ReactNativeIncallManager (3.3.0): @@ -730,8 +730,8 @@ SPEC CHECKSUMS: boost: a7c83b31436843459a1961bfd74b96033dc77234 BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662 - FBLazyVector: 244195e30d63d7f564c55da4410b9a24e8fbceaa - FBReactNativeSpec: c94002c1d93da3658f4d5119c6994d19961e3d52 + FBLazyVector: d2db9d00883282819d03bbd401b2ad4360d47580 + FBReactNativeSpec: 94da4d84ba3b1acf459103320882daa481a2b62d fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85 HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 @@ -747,18 +747,18 @@ SPEC CHECKSUMS: Permission-PhotoLibrary: 7bec836dcdd04a0bfb200c314f1aae06d4476357 Permission-PhotoLibraryAddOnly: 06fb0cdb1d35683b235ad8c464ef0ecc88859ea3 RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685 - RCTRequired: cd47794163052d2b8318c891a7a14fcfaccc75ab - RCTTypeSafety: 393bb40b3e357b224cde53d3fec26813c52428b1 + RCTRequired: 412e994c1e570cf35378a32c18fd46e50634938b + RCTTypeSafety: ef27340c728e6d673af345ed69e479a010c8a2d8 RCTYouTube: a8bb45705622a6fc9decf64be04128d3658ed411 - React: dec6476bc27155b250eeadfc11ea779265f53ebf - React-callinvoker: e5047929e80aea942e6fdd96482504ef0189ca63 - React-Core: e382655566b2b9a6e3b4f641d777b7bfdbe52358 - React-CoreModules: cf262e82fa101c0aee022b6f90d1a5b612038b64 - React-cxxreact: 69d53de3b30c7c161ba087ca1ecdffed9ccb1039 - React-jsi: ce9a2d804adf75809ce2fe2374ba3fbbf5d59b03 - React-jsiexecutor: 52beb652bbc61201bd70cbe4f0b8edb607e8da4f - React-jsinspector: 595f76eba2176ebd8817a1fffd47b84fbdab9383 - React-logger: 23de8ea0f44fa00ee77e96060273225607fd4d78 + React: 36b9f5116572e5b80f01e562bb1f1451e8848e47 + React-callinvoker: 91e62870884d3db3a0db33bbb1ba4e53fa5210ca + React-Core: 765ccc3861be1b93c7d5ca37f6b06e2efd6e7999 + React-CoreModules: da2ddff50a92576b6d58fbfc80a62ba3f81d8a4e + React-cxxreact: b54cffd4feb550c3213cd38db4a2a4bdd896f715 + React-jsi: 103674913e4159a07df20ef214c6b563e90e7b2e + React-jsiexecutor: e9895ccae253323ca70f693945fecbba091f0abd + React-jsinspector: ec4fe4f65ccf9d67c8429dda955d3412db8a25ef + React-logger: 85f4ef06b9723714b2dfa5b0e5502b673b271b58 react-native-cameraroll: 2957f2bce63ae896a848fbe0d5352c1bd4d20866 react-native-cookies: cd92f3824ed1e32a20802e8185101e14bb5b76da react-native-document-picker: 429972f7ece4463aa5bcdd789622b3a674a3c5d1 @@ -767,7 +767,7 @@ SPEC CHECKSUMS: react-native-local-auth: 49d336dcf0cb0268a930100013a6525844093844 react-native-mmkv-storage: 2b57ca101fae52428f6cef6552793f83c0cdbc46 react-native-netinfo: 87e5bfaf21ea5c6c110941290aa481dd8e849f98 - react-native-notifications: 805108822ceff3440644d5701944f0cda35f5b4b + react-native-notifications: 33ec77006f7987bb22de8f1665889abc633b9196 react-native-passcode-status: e78f76b3c8db613e6ced6bd40b54aa4f53374173 react-native-paste-input: 80c06e2c5c65afd696f9bd43cfd371141d8b3a1b react-native-safe-area: e8230b0017d76c00de6b01e2412dcf86b127c6a3 @@ -776,18 +776,18 @@ SPEC CHECKSUMS: react-native-video: a4c2635d0802f983594b7057e1bce8f442f0ad28 react-native-webrtc: 86d841823e66d68cc1f86712db1c2956056bf0c2 react-native-webview: 162b6453d074e0b1c7025242bb7a939b6f72b9e7 - React-perflogger: 3c9bb7372493e49036f07a82c44c8cf65cbe88db - React-RCTActionSheet: 052606483045a408693aa7e864410b4a052f541a - React-RCTAnimation: 08d4cac13222bb1348c687a0158dfd3b577cdb63 - React-RCTBlob: 928ad1df65219c3d9e2ac80983b943a75b5c3629 - React-RCTImage: 524d7313b142a39ee0e20fa312b67277917fe076 - React-RCTLinking: 44036ea6f13a2e46238be07a67566247fee35244 - React-RCTNetwork: 9b6faacf1e0789253e319ca53b1f8d92c2ac5455 - React-RCTSettings: ecd8094f831130a49581d5112a8607220e5d12a5 - React-RCTText: 14ba976fb48ed283cfdb1a754a5d4276471e0152 - React-RCTVibration: 99c7f67fba7a5ade46e98e870c6ff2444484f995 - React-runtimeexecutor: 2450b43df7ffe8e805a0b3dcb2abd4282f1f1836 - ReactCommon: d98c6c96b567f9b3a15f9fd4cc302c1eda8e3cf2 + React-perflogger: d32ee13196f4ae2e4098fb7f8e7ed4f864c6fb0f + React-RCTActionSheet: 81779c09e34a6a3d6b15783407ba9016a774f535 + React-RCTAnimation: b778eaaa42a884abcc5719035a7a0b2f54672658 + React-RCTBlob: 8edfc04c117decb0e7d4e6ab32bec91707e63ecb + React-RCTImage: 2022097f1291bfebd0003e477318c72b07853578 + React-RCTLinking: bd8d889c65695181342541ce4420e9419845084c + React-RCTNetwork: eae64b805d967bf3ece2cec3ad09218eeb32cb74 + React-RCTSettings: 0645af8aec5f40726e98d434a07ff58e75a81aa9 + React-RCTText: e55de507cda263ff58404c3e7d75bf76c2b80813 + React-RCTVibration: c3b8a3245267a3849b0c7cb91a37606bf5f3aa65 + React-runtimeexecutor: 434efc9e5b6d0f14f49867f130b39376c971c1aa + ReactCommon: a30c2448e5a88bae6fcb0e3da124c14ae493dac1 ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60 ReactNativeIncallManager: 642c22630caadff0a0619413aff4a9da08d63df9 ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306 @@ -819,9 +819,9 @@ SPEC CHECKSUMS: Sentry: 2f7e91f247cfb05b05bd01e0b5d0692557a7687b Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b XCDYouTubeKit: b120aced3d8638ffb570c5450cddb5a1dac448c7 - Yoga: 9b6696970c3289e8dea34b3eda93f23e61fb8121 + Yoga: 099a946cbf84c9b32ffdc4278d72db26710ecf92 YoutubePlayer-in-WKWebView: 4fca3b4f6f09940077bfbae7bddb771f2b43aacd -PODFILE CHECKSUM: 8214414d5676358401d8ad51dff19e7fd8c71b5c +PODFILE CHECKSUM: f291d3248a7b8e74342008fb662bad0b0e1b7589 -COCOAPODS: 1.11.3 +COCOAPODS: 1.11.2 diff --git a/package-lock.json b/package-lock.json index fddef148a..a9679f3bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,8 @@ "requires": true, "packages": { "": { - "version": "1.51.0", + "name": "mattermost-mobile", + "version": "1.55.1", "hasInstallScript": true, "license": "Apache 2.0", "dependencies": { @@ -42,7 +43,7 @@ "prop-types": "15.8.1", "react": "17.0.2", "react-intl": "2.8.0", - "react-native": "0.67.2", + "react-native": "0.67.5", "react-native-android-open-settings": "1.3.0", "react-native-animatable": "1.3.3", "react-native-button": "3.0.1", @@ -67,7 +68,7 @@ "react-native-math-view": "3.9.5", "react-native-mmkv-storage": "0.6.11", "react-native-navigation": "7.25.1", - "react-native-notifications": "4.1.3", + "react-native-notifications": "4.3.1", "react-native-passcode-status": "1.1.2", "react-native-permissions": "3.2.0", "react-native-reanimated": "2.3.1", @@ -2862,6 +2863,70 @@ "node": ">=8" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true, + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@mattermost/react-native-paste-input": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@mattermost/react-native-paste-input/-/react-native-paste-input-0.3.6.tgz", @@ -17415,9 +17480,9 @@ "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==" }, "node_modules/moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==", + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } @@ -19292,9 +19357,9 @@ "integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==" }, "node_modules/react-native": { - "version": "0.67.2", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz", - "integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==", + "version": "0.67.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.5.tgz", + "integrity": "sha512-/xEksthqImZGDfcqzEmbOw0KRkp9/x+cC8T8uTHhSKLLa8pOFLGdF190UOjnLammGmAmFy0+ZcJf0Ujm53IGeA==", "dependencies": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "^6.0.0", @@ -19626,12 +19691,12 @@ "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "node_modules/react-native-notifications": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.1.3.tgz", - "integrity": "sha512-A4SmRyfh2OlkptlJQvcQKkfnBKO1toUShmFplTkLXPNCqfpm/i4Fz+Uv+LzHSvbsU5U7EYf3JX9sfuyR06ZGPg==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.1.tgz", + "integrity": "sha512-A668d+Q0/VQRjmrh+LvDpc/REA8GXgwCijXDCIlDHGMK8enmrtdxY5OANQf1VM3hecf+fD0wYFw2uqL/ZR8jgg==", "peerDependencies": { - "react": ">=0.14.5", - "react-native": ">=0.25.1" + "react": "*", + "react-native": "*" } }, "node_modules/react-native-passcode-status": { @@ -22515,14 +22580,15 @@ } }, "node_modules/terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "peer": true, "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "bin": { @@ -22530,14 +22596,6 @@ }, "engines": { "node": ">=10" - }, - "peerDependencies": { - "acorn": "^8.5.0" - }, - "peerDependenciesMeta": { - "acorn": { - "optional": true - } } }, "node_modules/terser-webpack-plugin": { @@ -22645,16 +22703,6 @@ "dev": true, "peer": true }, - "node_modules/terser/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -26017,12 +26065,66 @@ } } }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "peer": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "peer": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true, + "peer": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", + "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", + "dev": true, + "peer": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "@mattermost/react-native-paste-input": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/@mattermost/react-native-paste-input/-/react-native-paste-input-0.3.6.tgz", "integrity": "sha512-/XwUkWfkXDPv1/N+3sILKRoqa4sElqN/fADQzkC2KHYxVKN72297vMm8s+X1n2l+y7phNQ8ZmhjjL0ghuz/1og==", - "requires": { - } + "requires": {} }, "@msgpack/msgpack": { "version": "2.7.1", @@ -26074,8 +26176,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/@react-native-community/cameraroll/-/cameraroll-4.1.2.tgz", "integrity": "sha512-jkdhMByMKD2CZ/5MPeBieYn8vkCfC4MOTouPpBpps3I8N6HUYJk+1JnDdktVYl2WINnqXpQptDA2YptVyifYAg==", - "requires": { - } + "requires": {} }, "@react-native-community/cli": { "version": "6.4.0", @@ -26825,8 +26926,7 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/@react-native-community/clipboard/-/clipboard-1.5.1.tgz", "integrity": "sha512-AHAmrkLEH5UtPaDiRqoULERHh3oNv7Dgs0bTC0hO5Z2GdNokAMPT5w8ci8aMcRemcwbtdHjxChgtjbeA38GBdA==", - "requires": { - } + "requires": {} }, "@react-native-community/datetimepicker": { "version": "5.1.0", @@ -26931,8 +27031,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-22.4.1.tgz", "integrity": "sha512-gcLfn6P2PrFAVx3AobaOzlIEevpAEf9chTpFZz7bYfc7pz8XRv7vuKTIE4hxPKZSha6XWKKplDQ0x9Pq8xX2mg==", "dev": true, - "requires": { - } + "requires": {} }, "eslint-plugin-react-native": { "version": "3.11.0", @@ -26962,15 +27061,13 @@ "version": "0.1.11", "resolved": "https://registry.npmjs.org/@react-native-community/masked-view/-/masked-view-0.1.11.tgz", "integrity": "sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw==", - "requires": { - } + "requires": {} }, "@react-native-community/netinfo": { "version": "7.1.9", "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-7.1.9.tgz", "integrity": "sha512-xxbxFherpOjQeJm3rIx6gmZNEEBqVDIcmBII5QVSN8zf3xAwmaT/RxT74ISYDkeSlZwv4eegpkD4QA1ky52CNg==", - "requires": { - } + "requires": {} }, "@react-native-cookies/cookies": { "version": "6.0.11", @@ -27011,8 +27108,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.0.tgz", "integrity": "sha512-C0roIxajvleskEpeYYJ1+2XTg8UqZO6o/SyzqTRuEUVsVD8CbFzKSOfj9kpfzA7jbYNzZPbzUJcm9kIigY9kHg==", - "requires": { - } + "requires": {} }, "@react-navigation/native": { "version": "6.0.7", @@ -27962,8 +28058,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", "dev": true, - "requires": { - } + "requires": {} }, "@webpack-cli/info": { "version": "1.4.1", @@ -27979,8 +28074,7 @@ "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", "dev": true, - "requires": { - } + "requires": {} }, "@xtuc/ieee754": { "version": "1.2.0", @@ -28065,16 +28159,14 @@ "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", "dev": true, "peer": true, - "requires": { - } + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "requires": { - } + "requires": {} }, "acorn-walk": { "version": "7.2.0", @@ -28462,8 +28554,7 @@ "version": "7.0.0-bridge.0", "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", - "requires": { - } + "requires": {} }, "babel-eslint": { "version": "10.1.0", @@ -30771,8 +30862,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz", "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==", "dev": true, - "requires": { - } + "requires": {} }, "eslint-plugin-import": { "version": "2.25.4", @@ -30899,8 +30989,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.3.0.tgz", "integrity": "sha512-XslZy0LnMn+84NEG9jSGR6eGqaZB3133L8xewQo3fQagbQuGt7a63gf+P1NGKZavEYEC3UXaWEAA/AqDkuN6xA==", "dev": true, - "requires": { - } + "requires": {} }, "eslint-plugin-react-native-globals": { "version": "0.1.2", @@ -34542,8 +34631,7 @@ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", "dev": true, - "requires": { - } + "requires": {} }, "jest-regex-util": { "version": "27.4.0", @@ -35364,8 +35452,7 @@ "integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==", "dev": true, "peer": true, - "requires": { - } + "requires": {} } } }, @@ -35374,8 +35461,7 @@ "resolved": "https://registry.npmjs.org/jsdom-global/-/jsdom-global-3.0.2.tgz", "integrity": "sha1-a9KZwTsMRiay2iwDk81DhdYGrLk=", "dev": true, - "requires": { - } + "requires": {} }, "jsesc": { "version": "2.5.2", @@ -37378,9 +37464,9 @@ "integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ==" }, "moment": { - "version": "2.29.2", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz", - "integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==" + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" }, "moment-timezone": { "version": "0.5.34", @@ -38793,8 +38879,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/react-freeze/-/react-freeze-1.0.0.tgz", "integrity": "sha512-yQaiOqDmoKqks56LN9MTgY06O0qQHgV4FUrikH357DydArSZHQhl0BJFqGKIZoTqi8JizF9Dxhuk1FIZD6qCaw==", - "requires": { - } + "requires": {} }, "react-intl": { "version": "2.8.0", @@ -38826,9 +38911,9 @@ "integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ==" }, "react-native": { - "version": "0.67.2", - "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz", - "integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==", + "version": "0.67.5", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.5.tgz", + "integrity": "sha512-/xEksthqImZGDfcqzEmbOw0KRkp9/x+cC8T8uTHhSKLLa8pOFLGdF190UOjnLammGmAmFy0+ZcJf0Ujm53IGeA==", "requires": { "@jest/create-cache-key-function": "^27.0.1", "@react-native-community/cli": "^6.0.0", @@ -39002,8 +39087,7 @@ "version": "8.4.8", "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-8.4.8.tgz", "integrity": "sha512-92676ZWHZHsPM/EW1ulgb2MuVfjYfMWRTWMbLcrCsipkcMaZ9Traz5mpsnCS7KZpsOksnvUinzDIjsct2XGc6Q==", - "requires": { - } + "requires": {} }, "react-native-document-picker": { "version": "8.0.0", @@ -39041,22 +39125,19 @@ "version": "2.10.10", "resolved": "https://registry.npmjs.org/react-native-exception-handler/-/react-native-exception-handler-2.10.10.tgz", "integrity": "sha512-otAXGoZDl1689OoUJWN/rXxVbdoZ3xcmyF1uq/CsizdLwwyZqVGd6d+p/vbYvnF996FfEyAEBnHrdFxulTn51w==", - "requires": { - } + "requires": {} }, "react-native-fast-image": { "version": "8.5.11", "resolved": "https://registry.npmjs.org/react-native-fast-image/-/react-native-fast-image-8.5.11.tgz", "integrity": "sha512-cNW4bIJg3nvKaheG8vGMfqCt5LMWX9MS5+wMudgKIHbGO51spRr4sgnlhVgwHLcZ5aeNOVJ8CPRxDIWKRq/0QA==", - "requires": { - } + "requires": {} }, "react-native-file-viewer": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/react-native-file-viewer/-/react-native-file-viewer-2.1.5.tgz", "integrity": "sha512-MGC6sx9jsqHdefhVQ6o0akdsPGpkXgiIbpygb2Sg4g4bh7v6K1cardLV1NwGB9A6u1yICOSDT/MOC//9Ez6EUg==", - "requires": { - } + "requires": {} }, "react-native-gesture-handler": { "version": "2.2.0", @@ -39074,42 +39155,36 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/react-native-haptic-feedback/-/react-native-haptic-feedback-1.13.0.tgz", "integrity": "sha512-g8G5QURitDeC/zRlobDvUXLxKYfMlIM2HQNWJKbHPSu61qfs0djnK4s1NZuQzihkeAO0KJ4AS2XWvKBzUmlXtA==", - "requires": { - } + "requires": {} }, "react-native-hw-keyboard-event": { "version": "0.0.4", "resolved": "https://registry.npmjs.org/react-native-hw-keyboard-event/-/react-native-hw-keyboard-event-0.0.4.tgz", "integrity": "sha512-G8qp0nm17PHigLb/axgdF9xg51BKCG2p1AGeq//J/luLp5zNczIcQJh+nm02R1MeEUE3e53wqO4LMe0MV3raZg==", - "requires": { - } + "requires": {} }, "react-native-image-picker": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/react-native-image-picker/-/react-native-image-picker-4.7.3.tgz", "integrity": "sha512-eRKm4wlsmZHmsWFyv77kYc2F+ZyEVqe0m7mqhsMzWk6TQT4FBDtEDxmRDDFq+ivCu/1QD+EPhmYcAIpeGr7Ekg==", - "requires": { - } + "requires": {} }, "react-native-incall-manager": { "version": "git+ssh://git@github.com/cpoile/react-native-incall-manager.git#8c55b9dac0a2ab25d651fb54b504d384f9989b36", "from": "react-native-incall-manager@github:cpoile/react-native-incall-manager", - "requires": { - } + "requires": {} }, "react-native-keyboard-aware-scrollview": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/react-native-keyboard-aware-scrollview/-/react-native-keyboard-aware-scrollview-2.1.0.tgz", "integrity": "sha512-XfWozWFPhdecfxN+wuqERX3mCGDrAim5siC6TWg3Qw7wK/zlwIwe1UIsHDNOQCzf9oIh0SkZXvoOFsMrnyIVmQ==", - "requires": { - } + "requires": {} }, "react-native-keyboard-tracking-view": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/react-native-keyboard-tracking-view/-/react-native-keyboard-tracking-view-5.7.0.tgz", "integrity": "sha512-MDeEwAbn9LJDOfHq0QLCGaZirVLk2X/tHqkAqz3y6uxryTRdSl9PwleOVar5Jx2oAPEg4J9BXbUD1wwOOi+5Kg==", - "requires": { - } + "requires": {} }, "react-native-keychain": { "version": "8.0.0", @@ -39120,22 +39195,19 @@ "version": "2.5.6", "resolved": "https://registry.npmjs.org/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz", "integrity": "sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg==", - "requires": { - } + "requires": {} }, "react-native-local-auth": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/react-native-local-auth/-/react-native-local-auth-1.6.0.tgz", "integrity": "sha512-36cYGZGCG82pMiVJbQa5WMA93khP4v5JqLutFkMyB/eRpCULHmojNIBlbUPIY9SCeN4sg5VBRFTVGCtTg2r2kA==", - "requires": { - } + "requires": {} }, "react-native-localize": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/react-native-localize/-/react-native-localize-2.1.9.tgz", "integrity": "sha512-n2Bi5P0cII8BrnG23Fs9PmpYcufD3JRbr1IBn3ArIA3Z3cGWg4eebv6am+CgdFC4kTPWUlVzX9fEgEMA+X8d6w==", - "requires": { - } + "requires": {} }, "react-native-math-view": { "version": "3.9.5", @@ -39152,8 +39224,7 @@ "version": "0.6.11", "resolved": "https://registry.npmjs.org/react-native-mmkv-storage/-/react-native-mmkv-storage-0.6.11.tgz", "integrity": "sha512-PaxUxbTwr+PHfzoYt6E1Mds9/CjV5uOFVstuBW0laFUWlGrTHgiaLWR8VwJt0EPScSl5Lz4RM8IiqmXbIUSbbw==", - "requires": { - } + "requires": {} }, "react-native-navigation": { "version": "7.25.1", @@ -39175,11 +39246,10 @@ } }, "react-native-notifications": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.1.3.tgz", - "integrity": "sha512-A4SmRyfh2OlkptlJQvcQKkfnBKO1toUShmFplTkLXPNCqfpm/i4Fz+Uv+LzHSvbsU5U7EYf3JX9sfuyR06ZGPg==", - "requires": { - } + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-native-notifications/-/react-native-notifications-4.3.1.tgz", + "integrity": "sha512-A668d+Q0/VQRjmrh+LvDpc/REA8GXgwCijXDCIlDHGMK8enmrtdxY5OANQf1VM3hecf+fD0wYFw2uqL/ZR8jgg==", + "requires": {} }, "react-native-passcode-status": { "version": "1.1.2", @@ -39190,8 +39260,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/react-native-permissions/-/react-native-permissions-3.2.0.tgz", "integrity": "sha512-UPXxf2twjYL9vPI4HP2kT15AOTY489MhsNuyAgp+wJM2IRkkSVW6rO3k4WuSRL9ZmPhwkWb9bYjf8EEwRzZcXg==", - "requires": { - } + "requires": {} }, "react-native-ratings": { "version": "8.0.4", @@ -39249,8 +39318,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-3.3.2.tgz", "integrity": "sha512-yOwiiPJ1rk+/nfK13eafbpW6sKW0jOnsRem2C1LPJjM3tfTof6hlvV5eWHATye3XOpu2cJ7N+HdkUvUDGwFD2Q==", - "requires": { - } + "requires": {} }, "react-native-screens": { "version": "3.10.2", @@ -39275,8 +39343,7 @@ "version": "0.3.1", "resolved": "https://registry.npmjs.org/react-native-size-matters/-/react-native-size-matters-0.3.1.tgz", "integrity": "sha512-mKOfBLIBFBcs9br1rlZDvxD5+mAl8Gfr5CounwJtxI6Z82rGrMO+Kgl9EIg3RMVf3G855a85YVqHJL2f5EDRlw==", - "requires": { - } + "requires": {} }, "react-native-slider": { "version": "0.11.0", @@ -39290,8 +39357,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/react-native-startup-time/-/react-native-startup-time-2.0.0.tgz", "integrity": "sha512-tYruEDvwoVEOf+FMTTqp3aHNfA5ARWXXV+ar4wJBIQBdIlPEYDQWaYljOAV2dITuTsKAyPY2Q/N58gkKvGWIrA==", - "requires": { - } + "requires": {} }, "react-native-svg": { "version": "12.1.1", @@ -39656,8 +39722,7 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/redux-batched-actions/-/redux-batched-actions-0.5.0.tgz", "integrity": "sha512-6orZWyCnIQXMGY4DUGM0oj0L7oYnwTACsfsru/J7r94RM3P9eS7SORGpr3LCeRCMoIMQcpfKZ7X4NdyFHBS8Eg==", - "requires": { - } + "requires": {} }, "redux-mock-store": { "version": "1.5.4", @@ -39672,8 +39737,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/redux-persist/-/redux-persist-6.0.0.tgz", "integrity": "sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==", - "requires": { - } + "requires": {} }, "redux-persist-node-storage": { "version": "2.0.0", @@ -39702,8 +39766,7 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.4.1.tgz", "integrity": "sha512-OOYGNY5Jy2TWvTL1KgAlVy6dcx3siPJ1wTq741EPyUKfn6W6nChdICjZwCd0p8AZBs5kWpZlbkXW2nE/zjUa+Q==", - "requires": { - } + "requires": {} }, "reflect.ownkeys": { "version": "0.2.0", @@ -40046,8 +40109,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/rn-placeholder/-/rn-placeholder-3.0.3.tgz", "integrity": "sha512-EmVeLT8zDcTPilQZ2OHO/IiYUy2gApKGgbshDZBX0C4qxsn0cFATwgwOwyz8O7Vwg1Hul97Ci95hu7d6Js6XMQ==", - "requires": { - } + "requires": {} }, "rst-selector-parser": { "version": "2.2.3", @@ -40363,8 +40425,7 @@ "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "requires": { - } + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -41371,14 +41432,15 @@ } }, "terser": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", - "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "version": "5.14.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", + "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", "dev": true, "peer": true, "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", "commander": "^2.20.0", - "source-map": "~0.7.2", "source-map-support": "~0.5.20" }, "dependencies": { @@ -41388,13 +41450,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "dev": true, "peer": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "peer": true } } }, @@ -41431,8 +41486,7 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "peer": true, - "requires": { - } + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -42160,8 +42214,7 @@ "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, "peer": true, - "requires": { - } + "requires": {} }, "json-schema-traverse": { "version": "0.4.1", @@ -42435,8 +42488,7 @@ "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "requires": { - } + "requires": {} }, "xcode": { "version": "3.0.1", diff --git a/package.json b/package.json index 5aeb09187..99235735e 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "prop-types": "15.8.1", "react": "17.0.2", "react-intl": "2.8.0", - "react-native": "0.67.2", + "react-native": "0.67.5", "react-native-android-open-settings": "1.3.0", "react-native-animatable": "1.3.3", "react-native-button": "3.0.1", @@ -65,7 +65,7 @@ "react-native-math-view": "3.9.5", "react-native-mmkv-storage": "0.6.11", "react-native-navigation": "7.25.1", - "react-native-notifications": "4.1.3", + "react-native-notifications": "4.3.1", "react-native-passcode-status": "1.1.2", "react-native-permissions": "3.2.0", "react-native-reanimated": "2.3.1", diff --git a/patches/react-native+0.67.2.patch b/patches/react-native+0.67.5.patch similarity index 100% rename from patches/react-native+0.67.2.patch rename to patches/react-native+0.67.5.patch diff --git a/patches/react-native-notifications+4.1.3.patch b/patches/react-native-notifications+4.3.1.patch similarity index 69% rename from patches/react-native-notifications+4.1.3.patch rename to patches/react-native-notifications+4.3.1.patch index 80ef69234..023bdad0f 100644 --- a/patches/react-native-notifications+4.1.3.patch +++ b/patches/react-native-notifications+4.3.1.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/AndroidManifest.xml b/node_modules/react-native-notifications/lib/android/app/src/main/AndroidManifest.xml -index abd988a..4ac4725 100644 +index 24cd226..4bfacba 100644 --- a/node_modules/react-native-notifications/lib/android/app/src/main/AndroidManifest.xml +++ b/node_modules/react-native-notifications/lib/android/app/src/main/AndroidManifest.xml @@ -3,6 +3,7 @@ @@ -10,7 +10,7 @@ index abd988a..4ac4725 100644