forked from Ivasoft/mattermost-mobile
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b42271960 | ||
|
|
1e4e59b537 | ||
|
|
fe29459906 | ||
|
|
8985791f40 |
@@ -286,6 +286,14 @@ jobs:
|
||||
name: Post results to Mattermost
|
||||
command: go run ../security-automation-config/dependency-check/post_results.go
|
||||
|
||||
build-android-beta:
|
||||
executor: android
|
||||
steps:
|
||||
- build-android
|
||||
- persist
|
||||
- save:
|
||||
filename: "*.apk"
|
||||
|
||||
build-android-release:
|
||||
executor: android
|
||||
steps:
|
||||
@@ -325,6 +333,14 @@ jobs:
|
||||
- save:
|
||||
filename: "*.apk"
|
||||
|
||||
build-ios-beta:
|
||||
executor: ios
|
||||
steps:
|
||||
- build-ios
|
||||
- persist
|
||||
- save:
|
||||
filename: "*.ipa"
|
||||
|
||||
build-ios-release:
|
||||
executor: ios
|
||||
steps:
|
||||
@@ -400,6 +416,16 @@ jobs:
|
||||
target: android
|
||||
file: "*.apk"
|
||||
|
||||
deploy-android-beta:
|
||||
executor:
|
||||
name: android
|
||||
resource_class: medium
|
||||
steps:
|
||||
- deploy-to-store:
|
||||
task: "Deploy to Google Play"
|
||||
target: android
|
||||
file: "*.apk"
|
||||
|
||||
deploy-ios-release:
|
||||
executor: ios
|
||||
steps:
|
||||
@@ -408,6 +434,14 @@ jobs:
|
||||
target: ios
|
||||
file: "*.ipa"
|
||||
|
||||
deploy-ios-beta:
|
||||
executor: ios
|
||||
steps:
|
||||
- deploy-to-store:
|
||||
task: "Deploy to TestFlight"
|
||||
target: ios
|
||||
file: "*.ipa"
|
||||
|
||||
github-release:
|
||||
executor:
|
||||
name: android
|
||||
@@ -451,6 +485,27 @@ workflows:
|
||||
- /^build-android-\d+$/
|
||||
- /^build-android-release-\d+$/
|
||||
|
||||
- build-android-beta:
|
||||
context: mattermost-mobile-android-beta
|
||||
requires:
|
||||
- test
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- /^build-\d+$/
|
||||
- /^build-android-\d+$/
|
||||
- /^build-android-beta-\d+$/
|
||||
- deploy-android-beta:
|
||||
context: mattermost-mobile-android-beta
|
||||
requires:
|
||||
- build-android-beta
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- /^build-\d+$/
|
||||
- /^build-android-\d+$/
|
||||
- /^build-android-beta-\d+$/
|
||||
|
||||
- build-ios-release:
|
||||
context: mattermost-mobile-ios-release
|
||||
requires:
|
||||
@@ -472,6 +527,27 @@ workflows:
|
||||
- /^build-ios-\d+$/
|
||||
- /^build-ios-release-\d+$/
|
||||
|
||||
- build-ios-beta:
|
||||
context: mattermost-mobile-ios-beta
|
||||
requires:
|
||||
- test
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- /^build-\d+$/
|
||||
- /^build-ios-\d+$/
|
||||
- /^build-ios-beta-\d+$/
|
||||
- deploy-ios-beta:
|
||||
context: mattermost-mobile-ios-beta
|
||||
requires:
|
||||
- build-ios-beta
|
||||
filters:
|
||||
branches:
|
||||
only:
|
||||
- /^build-\d+$/
|
||||
- /^build-ios-\d+$/
|
||||
- /^build-ios-beta-\d+$/
|
||||
|
||||
- build-android-pr:
|
||||
context: mattermost-mobile-android-pr
|
||||
requires:
|
||||
@@ -514,6 +590,7 @@ workflows:
|
||||
only:
|
||||
- /^build-\d+$/
|
||||
- /^build-ios-\d+$/
|
||||
- /^build-ios-beta-\d+$/
|
||||
- /^build-ios-sim-\d+$/
|
||||
|
||||
- github-release:
|
||||
@@ -525,4 +602,4 @@ workflows:
|
||||
tags:
|
||||
only: /^v(\d+\.)(\d+\.)(\d+)(.*)?$/
|
||||
branches:
|
||||
only: unsigned
|
||||
only: unsigned
|
||||
|
||||
13
.github/codeql/codeql-config.yml
vendored
13
.github/codeql/codeql-config.yml
vendored
@@ -1,13 +0,0 @@
|
||||
name: "CodeQL config"
|
||||
|
||||
query-filters:
|
||||
- exclude:
|
||||
problem.severity:
|
||||
- warning
|
||||
- recommendation
|
||||
- exclude:
|
||||
id: js/insecure-randomness
|
||||
|
||||
paths-ignore:
|
||||
- test
|
||||
- '**/*.test.*'
|
||||
23
.github/workflows/codeql-analysis.yml
vendored
23
.github/workflows/codeql-analysis.yml
vendored
@@ -9,13 +9,8 @@ on:
|
||||
schedule:
|
||||
- cron: '0 0 * * 0'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
permissions:
|
||||
security-events: write
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
@@ -23,20 +18,26 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
config-file: ./.github/codeql/codeql-config.yml
|
||||
# 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
|
||||
|
||||
# Autobuild attempts to build any compiled languages
|
||||
# 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)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v1
|
||||
|
||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -14,7 +14,7 @@ env.d.ts
|
||||
|
||||
# Xcode
|
||||
#
|
||||
ios/build/*
|
||||
build/
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
@@ -42,11 +42,7 @@ ios/Pods
|
||||
.gradle
|
||||
local.properties
|
||||
*.iml
|
||||
*.hprof
|
||||
.cxx/
|
||||
android/app/bin
|
||||
android/app/build
|
||||
android/build
|
||||
.settings
|
||||
.project
|
||||
.classpath
|
||||
@@ -107,8 +103,3 @@ detox/detox_pixel_4_xl_api_30
|
||||
|
||||
#editor-settings
|
||||
.vscode
|
||||
.scannerwork
|
||||
|
||||
# Notice.txt generation
|
||||
!build/notice-file
|
||||
|
||||
|
||||
555
NOTICE.txt
555
NOTICE.txt
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,3 @@
|
||||
# Note: development on this repository has primarily moved to the `main` branch
|
||||
This `master`(now `v1`) branch is mostly in maintenance mode while we're working to getting our "v2" (code named "gekidou") to the GA stage. To contribute check out the [main](https://github.com/mattermost/mattermost-mobile/tree/main) branch in this repository.
|
||||
|
||||
# Mattermost Mobile App
|
||||
[](https://mattermost.com)
|
||||
|
||||
|
||||
@@ -131,8 +131,8 @@ android {
|
||||
applicationId "com.mattermost.rnbeta"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 436
|
||||
versionName "1.56.0"
|
||||
versionCode 404
|
||||
versionName "1.53.0"
|
||||
multiDexEnabled = true
|
||||
testBuildType System.getProperty('testBuildType', 'debug')
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
|
||||
@@ -8,6 +8,6 @@
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" android:exported="false" />
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||
</application>
|
||||
</manifest>
|
||||
</manifest>
|
||||
|
||||
@@ -33,12 +33,10 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||
android:windowSoftInputMode="adjustResize"
|
||||
android:launchMode="singleTask"
|
||||
android:taskAffinity=""
|
||||
android:exported="true"
|
||||
>
|
||||
android:taskAffinity="">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
@@ -74,9 +72,7 @@
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme"
|
||||
android:taskAffinity="com.mattermost.share"
|
||||
android:launchMode="singleInstance"
|
||||
android:exported="true"
|
||||
>
|
||||
android:launchMode="singleInstance">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
@@ -95,4 +91,4 @@
|
||||
<data android:mimeType="*/*" />
|
||||
</intent>
|
||||
</queries>
|
||||
</manifest>
|
||||
</manifest>
|
||||
|
||||
@@ -22,7 +22,6 @@ 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;
|
||||
@@ -247,7 +246,7 @@ public class CustomPushNotification extends PushNotification {
|
||||
}
|
||||
|
||||
private void buildNotification(Integer notificationId, boolean createSummary) {
|
||||
final PendingIntent pendingIntent = NotificationIntentAdapter.createPendingNotificationIntent(mContext, mNotificationProps);
|
||||
final PendingIntent pendingIntent = super.getCTAPendingIntent();
|
||||
final Notification notification = buildNotification(pendingIntent);
|
||||
if (createSummary) {
|
||||
final Notification summary = getNotificationSummaryBuilder(pendingIntent).build();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.mattermost.rnbeta;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Notification;
|
||||
import android.app.NotificationChannel;
|
||||
import android.app.NotificationManager;
|
||||
@@ -129,20 +128,11 @@ public class CustomPushNotificationHelper {
|
||||
replyIntent.putExtra(NOTIFICATION_ID, notificationId);
|
||||
replyIntent.putExtra("pushNotification", bundle);
|
||||
|
||||
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);
|
||||
}
|
||||
PendingIntent replyPendingIntent = PendingIntent.getBroadcast(
|
||||
context,
|
||||
notificationId,
|
||||
replyIntent,
|
||||
PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
|
||||
RemoteInput remoteInput = new RemoteInput.Builder(KEY_TEXT_REPLY)
|
||||
.setLabel("Reply")
|
||||
@@ -391,12 +381,10 @@ 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);
|
||||
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);
|
||||
PendingIntent deleteIntent = NotificationIntentAdapter.createPendingNotificationIntent(context, delIntent, notificationProps);
|
||||
notification.setDeleteIntent(deleteIntent);
|
||||
}
|
||||
|
||||
|
||||
@@ -129,8 +129,9 @@ 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, notificationProps);
|
||||
final PendingIntent pendingIntent = NotificationIntentAdapter.createPendingNotificationIntent(mContext, cta, notificationProps);
|
||||
NotificationCompat.Builder builder = CustomPushNotificationHelper.createNotificationBuilder(mContext, pendingIntent, bundle, false);
|
||||
Notification notification = builder.build();
|
||||
NotificationCompat.MessagingStyle messagingStyle = NotificationCompat.MessagingStyle.extractMessagingStyleFromNotification(notification);
|
||||
|
||||
@@ -167,11 +167,6 @@ public class ShareModule extends ReactContextBaseJavaModule {
|
||||
map.putString("type", type);
|
||||
map.putBoolean("isString", false);
|
||||
items.pushMap(map);
|
||||
|
||||
map = Arguments.createMap();
|
||||
map.putString("value", extra);
|
||||
map.putBoolean("isString", true);
|
||||
items.pushMap(map);
|
||||
}
|
||||
} else if (Intent.ACTION_SEND_MULTIPLE.equals(action)) {
|
||||
ArrayList<Uri> uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
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)
|
||||
@@ -1,32 +0,0 @@
|
||||
#include "MainApplicationModuleProvider.h"
|
||||
|
||||
#include <rncli.h>
|
||||
#include <rncore.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
std::shared_ptr<TurboModule> 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
|
||||
@@ -1,16 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include <ReactCommon/JavaTurboModule.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
std::shared_ptr<TurboModule> MainApplicationModuleProvider(
|
||||
const std::string &moduleName,
|
||||
const JavaTurboModule::InitParams ¶ms);
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
@@ -1,45 +0,0 @@
|
||||
#include "MainApplicationTurboModuleManagerDelegate.h"
|
||||
#include "MainApplicationModuleProvider.h"
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata>
|
||||
MainApplicationTurboModuleManagerDelegate::initHybrid(
|
||||
jni::alias_ref<jhybridobject>) {
|
||||
return makeCxxInstance();
|
||||
}
|
||||
|
||||
void MainApplicationTurboModuleManagerDelegate::registerNatives() {
|
||||
registerHybrid({
|
||||
makeNativeMethod(
|
||||
"initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
|
||||
makeNativeMethod(
|
||||
"canCreateTurboModule",
|
||||
MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
|
||||
});
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule>
|
||||
MainApplicationTurboModuleManagerDelegate::getTurboModule(
|
||||
const std::string &name,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) {
|
||||
// Not implemented yet: provide pure-C++ NativeModules here.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::shared_ptr<TurboModule>
|
||||
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
|
||||
@@ -1,38 +0,0 @@
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
#include <ReactCommon/TurboModuleManagerDelegate.h>
|
||||
#include <fbjni/fbjni.h>
|
||||
|
||||
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<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>);
|
||||
|
||||
static void registerNatives();
|
||||
|
||||
std::shared_ptr<TurboModule> getTurboModule(
|
||||
const std::string &name,
|
||||
const std::shared_ptr<CallInvoker> &jsInvoker) override;
|
||||
std::shared_ptr<TurboModule> 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
|
||||
@@ -1,65 +0,0 @@
|
||||
#include "MainComponentsRegistry.h"
|
||||
|
||||
#include <CoreComponentsRegistry.h>
|
||||
#include <fbjni/fbjni.h>
|
||||
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
||||
#include <react/renderer/components/rncore/ComponentDescriptors.h>
|
||||
#include <rncli.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
|
||||
|
||||
std::shared_ptr<ComponentDescriptorProviderRegistry const>
|
||||
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::jhybriddata>
|
||||
MainComponentsRegistry::initHybrid(
|
||||
jni::alias_ref<jclass>,
|
||||
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<ComponentDescriptorRegistry>(registry);
|
||||
|
||||
mutableRegistry->setFallbackComponentDescriptor(
|
||||
std::make_shared<UnimplementedNativeViewComponentDescriptor>(
|
||||
ComponentDescriptorParameters{
|
||||
eventDispatcher, contextContainer, nullptr}));
|
||||
|
||||
return registry;
|
||||
};
|
||||
|
||||
delegate->buildRegistryFunction = buildRegistryFunction;
|
||||
return instance;
|
||||
}
|
||||
|
||||
void MainComponentsRegistry::registerNatives() {
|
||||
registerHybrid({
|
||||
makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "31.0.0"
|
||||
buildToolsVersion = "30.0.2"
|
||||
minSdkVersion = 24
|
||||
compileSdkVersion = 31
|
||||
targetSdkVersion = 31
|
||||
supportLibVersion = "31.0.0"
|
||||
compileSdkVersion = 30
|
||||
targetSdkVersion = 30
|
||||
supportLibVersion = "28.0.0"
|
||||
kotlinVersion = "1.5.30"
|
||||
firebaseVersion = "21.0.0"
|
||||
RNNKotlinVersion = kotlinVersion
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
|
||||
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
|
||||
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
org.gradle.jvmargs=-Xmx2048M
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
|
||||
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
BIN
android/gradle/wrapper/gradle-wrapper.jar
vendored
Binary file not shown.
@@ -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.3.3-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
|
||||
|
||||
259
android/gradlew
vendored
259
android/gradlew
vendored
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
#!/usr/bin/env sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
# Copyright 2015 the original author or authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -17,113 +17,78 @@
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# 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/.
|
||||
#
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
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
|
||||
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
|
||||
done
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_BASE_NAME=`basename "$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 ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
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
|
||||
@@ -132,7 +97,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
|
||||
@@ -140,95 +105,79 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
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
|
||||
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
|
||||
|
||||
# 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.
|
||||
# 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" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
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
|
||||
# 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" ;;
|
||||
esac
|
||||
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.
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=`save "$@"`
|
||||
|
||||
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' ' '
|
||||
)" '"$@"'
|
||||
# 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"
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
@@ -119,7 +119,12 @@ const ClientChannels = (superclass: any) => class extends superclass {
|
||||
};
|
||||
|
||||
convertChannelToPrivate = async (channelId: string) => {
|
||||
return this.updateChannelPrivacy(channelId, 'P');
|
||||
analytics.trackAPI('api_channels_convert_to_private', {channel_id: channelId});
|
||||
|
||||
return this.doFetch(
|
||||
`${this.getChannelRoute(channelId)}/convert`,
|
||||
{method: 'post'},
|
||||
);
|
||||
};
|
||||
|
||||
updateChannelPrivacy = async (channelId: string, privacy: any) => {
|
||||
|
||||
@@ -32,13 +32,12 @@ type Props = {
|
||||
placeholder?: string;
|
||||
dataSource?: string;
|
||||
options?: DialogOption[];
|
||||
selected?: DialogOption | DialogOption[] | null;
|
||||
selected?: DialogOption | DialogOption[];
|
||||
optional?: boolean;
|
||||
showRequiredAsterisk?: boolean;
|
||||
teammateNameDisplay?: string;
|
||||
theme: Theme;
|
||||
onSelected?: ((item: DialogOption) => void) | ((item: DialogOption[]) => void);
|
||||
onClear?: () => void;
|
||||
helpText?: string;
|
||||
errorText?: string;
|
||||
roundedBorders?: boolean;
|
||||
@@ -48,7 +47,7 @@ type Props = {
|
||||
|
||||
type State = {
|
||||
selectedText: string;
|
||||
selected?: DialogOption | DialogOption[] | null;
|
||||
selected?: DialogOption | DialogOption[];
|
||||
}
|
||||
|
||||
export default class AutocompleteSelector extends PureComponent<Props, State> {
|
||||
@@ -71,15 +70,7 @@ export default class AutocompleteSelector extends PureComponent<Props, State> {
|
||||
}
|
||||
|
||||
static getDerivedStateFromProps(props: Props, state: State) {
|
||||
if (props.selected === state.selected) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!props.selected) {
|
||||
if (state.selected) {
|
||||
return {selected: props.selected};
|
||||
}
|
||||
|
||||
if (!props.selected || props.selected === state.selected) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -108,11 +99,6 @@ export default class AutocompleteSelector extends PureComponent<Props, State> {
|
||||
};
|
||||
}
|
||||
|
||||
handleClear = () => {
|
||||
this.setState({selectedText: ''});
|
||||
this.props.onClear?.();
|
||||
};
|
||||
|
||||
handleSelect = (selected: Selection) => {
|
||||
if (!selected) {
|
||||
return;
|
||||
@@ -244,14 +230,14 @@ export default class AutocompleteSelector extends PureComponent<Props, State> {
|
||||
showRequiredAsterisk,
|
||||
roundedBorders,
|
||||
disabled,
|
||||
selected,
|
||||
onClear,
|
||||
} = this.props;
|
||||
const {selectedText} = this.state;
|
||||
const style = getStyleSheet(theme);
|
||||
const textStyles = getMarkdownTextStyles(theme);
|
||||
const blockStyles = getMarkdownBlockStyles(theme);
|
||||
|
||||
const chevron = Platform.select({ios: 'chevron-right', default: 'chevron-down'});
|
||||
|
||||
let text = placeholder || intl.formatMessage({id: 'mobile.action_menu.select', defaultMessage: 'Select an option'});
|
||||
let selectedStyle = style.dropdownPlaceholder;
|
||||
|
||||
@@ -340,21 +326,11 @@ export default class AutocompleteSelector extends PureComponent<Props, State> {
|
||||
>
|
||||
{text}
|
||||
</Text>
|
||||
{!disabled && onClear && selected && (
|
||||
<TouchableWithFeedback
|
||||
type={'opacity'}
|
||||
onPress={this.handleClear}
|
||||
disabled={disabled}
|
||||
style={style.clearx}
|
||||
hitSlop={clearXHitSlop}
|
||||
>
|
||||
<CompassIcon
|
||||
name='close-circle'
|
||||
color={changeOpacity(theme.centerChannelColor, 0.5)}
|
||||
size={20}
|
||||
/>
|
||||
</TouchableWithFeedback>
|
||||
)}
|
||||
<CompassIcon
|
||||
name={chevron}
|
||||
color={changeOpacity(theme.centerChannelColor, 0.32)}
|
||||
style={style.icon}
|
||||
/>
|
||||
</View>
|
||||
</TouchableWithFeedback>
|
||||
{helpTextContent}
|
||||
@@ -390,21 +366,18 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => {
|
||||
dropdownPlaceholder: {
|
||||
top: 3,
|
||||
marginLeft: 5,
|
||||
paddingRight: 55,
|
||||
color: changeOpacity(theme.centerChannelColor, 0.5),
|
||||
},
|
||||
dropdownSelected: {
|
||||
top: 3,
|
||||
marginLeft: 5,
|
||||
paddingRight: 55,
|
||||
color: theme.centerChannelColor,
|
||||
},
|
||||
clearx: {
|
||||
icon: {
|
||||
position: 'absolute',
|
||||
top: 1,
|
||||
right: 5,
|
||||
padding: 8,
|
||||
marginRight: 7,
|
||||
top: 6,
|
||||
right: 12,
|
||||
fontSize: 28,
|
||||
},
|
||||
labelContainer: {
|
||||
flexDirection: 'row',
|
||||
@@ -446,10 +419,3 @@ const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => {
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
const clearXHitSlop = {
|
||||
left: 30,
|
||||
right: 20,
|
||||
top: 20,
|
||||
bottom: 20,
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import React, {useCallback} from 'react';
|
||||
import React from 'react';
|
||||
|
||||
import AutocompleteSelector from '@components/autocomplete_selector';
|
||||
import {PostActionOption} from '@mm-redux/types/integration_actions';
|
||||
@@ -28,13 +28,13 @@ const ActionMenu = ({dataSource, defaultOption, disabled, id, name, options, pos
|
||||
isSelected = selected;
|
||||
}
|
||||
|
||||
const handleSelect = useCallback((selectedItem?: PostActionOption) => {
|
||||
const handleSelect = (selectedItem?: PostActionOption) => {
|
||||
if (!selectedItem) {
|
||||
return;
|
||||
}
|
||||
|
||||
selectAttachmentMenuAction(postId, id, selectedItem.text, selectedItem.value);
|
||||
}, [postId, id]);
|
||||
};
|
||||
|
||||
return (
|
||||
<AutocompleteSelector
|
||||
|
||||
@@ -38,7 +38,6 @@ export default class RemoveMarkdown extends React.PureComponent {
|
||||
channelLink: Renderer.forwardChildren,
|
||||
emoji: this.renderNull,
|
||||
hashtag: Renderer.forwardChildren,
|
||||
latexinline: Renderer.forwardChildren,
|
||||
|
||||
paragraph: Renderer.forwardChildren,
|
||||
heading: Renderer.forwardChildren,
|
||||
|
||||
@@ -140,16 +140,18 @@ export function componentDidDisappearListener({componentId}) {
|
||||
|
||||
if (componentId === 'MainSidebar') {
|
||||
EventEmitter.emit(NavigationTypes.MAIN_SIDEBAR_DID_CLOSE);
|
||||
} else if (componentId === 'SettingsSidebar') {
|
||||
EventEmitter.emit(NavigationTypes.CLOSE_SETTINGS_SIDEBAR);
|
||||
} else if (componentId === THREAD && EphemeralStore.hasModalsOpened()) {
|
||||
for (const modal of EphemeralStore.navigationModalStack) {
|
||||
const enableSwipe = {
|
||||
modal: {
|
||||
swipeToDismiss: true,
|
||||
},
|
||||
};
|
||||
Navigation.mergeOptions(modal, enableSwipe);
|
||||
}
|
||||
|
||||
if (componentId === THREAD) {
|
||||
if (EphemeralStore.hasModalsOpened()) {
|
||||
for (const modal of EphemeralStore.navigationModalStack) {
|
||||
const enableSwipe = {
|
||||
modal: {
|
||||
swipeToDismiss: true,
|
||||
},
|
||||
};
|
||||
Navigation.mergeOptions(modal, enableSwipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -277,7 +277,7 @@ describe('Actions.Channels', () => {
|
||||
it('convertChannelToPrivate', async () => {
|
||||
const publicChannel = TestHelper.basicChannel;
|
||||
nock(Client4.getChannelRoute(publicChannel.id)).
|
||||
put('/privacy').
|
||||
post('/convert').
|
||||
reply(200, {...TestHelper.basicChannel, type: General.PRIVATE_CHANNEL});
|
||||
|
||||
assert.equal(TestHelper.basicChannel.type, General.OPEN_CHANNEL);
|
||||
|
||||
@@ -150,7 +150,7 @@ export type AppForm = {
|
||||
depends_on?: string[];
|
||||
};
|
||||
|
||||
export type AppFormValue = string | AppSelectOption | AppSelectOption[] | boolean | null;
|
||||
export type AppFormValue = string | AppSelectOption | boolean | null;
|
||||
export type AppFormValues = {[name: string]: AppFormValue};
|
||||
|
||||
export type AppSelectOption = {
|
||||
|
||||
@@ -59,13 +59,6 @@ const ClientCalls = (superclass: any) => class extends superclass {
|
||||
{method: 'post'},
|
||||
);
|
||||
};
|
||||
|
||||
genTURNCredentials = async () => {
|
||||
return this.doFetch(
|
||||
`${this.getCallsRoute()}/turn-credentials`,
|
||||
{method: 'get'},
|
||||
);
|
||||
};
|
||||
};
|
||||
|
||||
export default ClientCalls;
|
||||
|
||||
@@ -14,16 +14,15 @@ import {
|
||||
|
||||
import {Client4} from '@client/rest';
|
||||
import {WebsocketEvents} from '@constants';
|
||||
import {ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||
|
||||
import Peer from './simple-peer';
|
||||
import {WebSocketClient, wsReconnectionTimeoutErr} from './websocket';
|
||||
import WebSocketClient from './websocket';
|
||||
|
||||
export let client: any = null;
|
||||
|
||||
const websocketConnectTimeout = 3000;
|
||||
|
||||
export async function newClient(channelID: string, iceServers: ICEServersConfigs, closeCb: () => void, setScreenShareURL: (url: string) => void) {
|
||||
export async function newClient(channelID: string, iceServers: string[], closeCb: () => void, setScreenShareURL: (url: string) => void) {
|
||||
let peer: Peer | null = null;
|
||||
let stream: MediaStream;
|
||||
let voiceTrackAdded = false;
|
||||
@@ -44,17 +43,13 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs
|
||||
console.log('Unable to get media device:', err); // eslint-disable-line no-console
|
||||
}
|
||||
|
||||
const ws = new WebSocketClient(Client4.getWebSocketUrl(), Client4.getToken());
|
||||
const ws = new WebSocketClient(Client4.getWebSocketUrl());
|
||||
|
||||
const disconnect = () => {
|
||||
if (isClosed) {
|
||||
return;
|
||||
if (!isClosed) {
|
||||
ws.close();
|
||||
}
|
||||
|
||||
isClosed = true;
|
||||
ws.send('leave');
|
||||
ws.close();
|
||||
|
||||
if (onCallEnd) {
|
||||
onCallEnd.remove();
|
||||
onCallEnd = null;
|
||||
@@ -85,19 +80,12 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs
|
||||
});
|
||||
|
||||
const mute = () => {
|
||||
if (!peer || peer.destroyed) {
|
||||
if (!peer) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (voiceTrackAdded && voiceTrack) {
|
||||
peer.replaceTrack(voiceTrack, null, stream);
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('Error from simple-peer:', e); //eslint-disable-line no-console
|
||||
return;
|
||||
if (voiceTrackAdded && voiceTrack) {
|
||||
peer.replaceTrack(voiceTrack, null, stream);
|
||||
}
|
||||
|
||||
if (voiceTrack) {
|
||||
voiceTrack.enabled = false;
|
||||
}
|
||||
@@ -107,22 +95,15 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs
|
||||
};
|
||||
|
||||
const unmute = () => {
|
||||
if (!peer || !voiceTrack || peer.destroyed) {
|
||||
if (!peer || !voiceTrack) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (voiceTrackAdded) {
|
||||
peer.replaceTrack(voiceTrack, voiceTrack, stream);
|
||||
} else {
|
||||
peer.addStream(stream);
|
||||
voiceTrackAdded = true;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('Error from simple-peer:', e); //eslint-disable-line no-console
|
||||
return;
|
||||
if (voiceTrackAdded) {
|
||||
peer.replaceTrack(voiceTrack, voiceTrack, stream);
|
||||
} else {
|
||||
peer.addStream(stream);
|
||||
voiceTrackAdded = true;
|
||||
}
|
||||
|
||||
voiceTrack.enabled = true;
|
||||
if (ws) {
|
||||
ws.send('unmute');
|
||||
@@ -142,14 +123,13 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs
|
||||
};
|
||||
|
||||
ws.on('error', (err) => {
|
||||
console.log('calls: ws error', err); // eslint-disable-line no-console
|
||||
if (err === wsReconnectionTimeoutErr) {
|
||||
disconnect();
|
||||
}
|
||||
console.log('WS (CALLS) ERROR', err); // eslint-disable-line no-console
|
||||
ws.close();
|
||||
});
|
||||
|
||||
ws.on('close', () => {
|
||||
console.log('calls: ws close'); // eslint-disable-line no-console
|
||||
isClosed = true;
|
||||
disconnect();
|
||||
});
|
||||
|
||||
ws.on('join', async () => {
|
||||
@@ -175,35 +155,19 @@ export async function newClient(channelID: string, iceServers: ICEServersConfigs
|
||||
});
|
||||
|
||||
peer.on('error', (err: any) => {
|
||||
console.log('calls: peer error', err); // eslint-disable-line no-console
|
||||
});
|
||||
|
||||
peer.on('close', () => {
|
||||
console.log('calls: peer closed'); // eslint-disable-line no-console
|
||||
if (!isClosed) {
|
||||
disconnect();
|
||||
}
|
||||
console.log('PEER ERROR', err); // eslint-disable-line no-console
|
||||
});
|
||||
});
|
||||
|
||||
ws.on('open', (originalConnID: string, prevConnID: string, isReconnect: boolean) => {
|
||||
if (isReconnect) {
|
||||
console.log('calls: ws reconnect, sending reconnect msg'); // eslint-disable-line no-console
|
||||
ws.send('reconnect', {
|
||||
channelID,
|
||||
originalConnID,
|
||||
prevConnID,
|
||||
});
|
||||
} else {
|
||||
ws.send('join', {
|
||||
channelID,
|
||||
});
|
||||
}
|
||||
ws.on('open', async () => {
|
||||
ws.send('join', {
|
||||
channelID,
|
||||
});
|
||||
});
|
||||
|
||||
ws.on('message', ({data}) => {
|
||||
const msg = JSON.parse(data);
|
||||
if (msg.type === 'answer' || msg.type === 'candidate' || msg.type === 'offer') {
|
||||
if (msg.type === 'answer' || msg.type === 'offer') {
|
||||
peer?.signal(data);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,8 +21,6 @@ import {
|
||||
} from 'react-native-webrtc';
|
||||
import stream from 'readable-stream';
|
||||
|
||||
import {ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||
|
||||
const queueMicrotask = (callback: any) => {
|
||||
Promise.resolve().then(callback).catch((e) => setTimeout(() => {
|
||||
throw e;
|
||||
@@ -96,7 +94,7 @@ export default class Peer extends stream.Duplex {
|
||||
private pc: RTCPeerConnection|null = null;
|
||||
private onFinishBound?: () => void;
|
||||
|
||||
constructor(localStream: MediaStream | null, iceServers: ICEServersConfigs) {
|
||||
constructor(localStream: MediaStream | null, iceServers?: string[]) {
|
||||
super({allowHalfOpen: false});
|
||||
|
||||
this.streams = localStream ? [localStream] : [];
|
||||
@@ -106,10 +104,21 @@ export default class Peer extends stream.Duplex {
|
||||
};
|
||||
|
||||
const connConfig = {
|
||||
iceServers,
|
||||
iceServers: [
|
||||
{
|
||||
urls: [
|
||||
'stun:stun.l.google.com:19302',
|
||||
'stun:global.stun.twilio.com:3478',
|
||||
],
|
||||
},
|
||||
],
|
||||
sdpSemantics: 'unified-plan',
|
||||
};
|
||||
|
||||
if (iceServers && iceServers.length > 0) {
|
||||
connConfig.iceServers[0].urls = iceServers;
|
||||
}
|
||||
|
||||
try {
|
||||
this.pc = new RTCPeerConnection(connConfig);
|
||||
} catch (err) {
|
||||
|
||||
@@ -34,10 +34,7 @@ jest.mock('@client/rest', () => ({
|
||||
},
|
||||
]),
|
||||
getCallsConfig: jest.fn(() => ({
|
||||
ICEServersConfigs: [{
|
||||
urls: 'stun:stun1.example.com',
|
||||
},
|
||||
],
|
||||
ICEServers: ['mattermost.com'],
|
||||
AllowEnableCalls: true,
|
||||
DefaultEnabled: true,
|
||||
last_retrieved_at: 1234,
|
||||
|
||||
@@ -28,7 +28,6 @@ import CallsTypes from '@mmproducts/calls/store/action_types/calls';
|
||||
import {
|
||||
getCallInCurrentChannel,
|
||||
getConfig,
|
||||
getICEServersConfigs,
|
||||
getNumCurrentConnectedParticipants,
|
||||
} from '@mmproducts/calls/store/selectors/calls';
|
||||
import {Call, CallParticipant, DefaultServerConfig} from '@mmproducts/calls/store/types/calls';
|
||||
@@ -202,13 +201,7 @@ export function joinCall(channelId: string, intl: typeof intlShape): ActionFunc
|
||||
dispatch(setSpeakerphoneOn(false));
|
||||
|
||||
try {
|
||||
const state = getState();
|
||||
const iceConfigs = [...getICEServersConfigs(state)];
|
||||
if (getConfig(state).NeedsTURNCredentials) {
|
||||
iceConfigs.push(...await Client4.genTURNCredentials());
|
||||
}
|
||||
|
||||
ws = await newClient(channelId, iceConfigs, () => {
|
||||
ws = await newClient(channelId, getConfig(getState()).ICEServers, () => {
|
||||
dispatch(setSpeakerphoneOn(false));
|
||||
dispatch({type: CallsTypes.RECEIVED_MYSELF_LEFT_CALL});
|
||||
}, setScreenShareURL);
|
||||
|
||||
@@ -408,7 +408,7 @@ describe('Reducers.calls.config', () => {
|
||||
const testAction = {
|
||||
type: CallsTypes.RECEIVED_CONFIG,
|
||||
data: {
|
||||
ICEServers: ['stun:stun.example.com'],
|
||||
ICEServers: ['google.com'],
|
||||
AllowEnableCalls: true,
|
||||
DefaultEnabled: true,
|
||||
last_retrieved_at: 123,
|
||||
|
||||
@@ -197,47 +197,4 @@ describe('Selectors.Calls', () => {
|
||||
// On cloud, MaxCallParticipants missing, default should be used.
|
||||
assert.equal(Selectors.isLimitRestricted(newState, 'call1'), true);
|
||||
});
|
||||
|
||||
it('getICEServersConfigs', () => {
|
||||
assert.deepEqual(Selectors.getICEServersConfigs(testState), []);
|
||||
|
||||
// backwards compatible case, no ICEServersConfigs present.
|
||||
let newState = {
|
||||
...testState,
|
||||
entities: {
|
||||
...testState.entities,
|
||||
calls: {
|
||||
...testState.entities.calls,
|
||||
config: {
|
||||
...testState.entities.calls.config,
|
||||
ICEServers: ['stun:stun1.example.com'],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
assert.deepEqual(Selectors.getICEServersConfigs(newState), [{urls: ['stun:stun1.example.com']}]);
|
||||
|
||||
// ICEServersConfigs defined case
|
||||
newState = {
|
||||
...testState,
|
||||
entities: {
|
||||
...testState.entities,
|
||||
calls: {
|
||||
...testState.entities.calls,
|
||||
config: {
|
||||
...testState.entities.calls.config,
|
||||
ICEServers: ['stun:stun1.example.com'],
|
||||
ICEServersConfigs: [
|
||||
{urls: 'stun:stun1.example.com'},
|
||||
{urls: 'turn:turn.example.com', username: 'username', credentail: 'password'},
|
||||
],
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
assert.deepEqual(Selectors.getICEServersConfigs(newState), [
|
||||
{urls: 'stun:stun1.example.com'},
|
||||
{urls: 'turn:turn.example.com', username: 'username', credentail: 'password'},
|
||||
]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -9,7 +9,7 @@ import {getCurrentChannelId} from '@mm-redux/selectors/entities/common';
|
||||
import {getLicense, getServerVersion} from '@mm-redux/selectors/entities/general';
|
||||
import {GlobalState} from '@mm-redux/types/store';
|
||||
import {isMinimumServerVersion} from '@mm-redux/utils/helpers';
|
||||
import {Call, ICEServersConfigs} from '@mmproducts/calls/store/types/calls';
|
||||
import {Call} from '@mmproducts/calls/store/types/calls';
|
||||
|
||||
export function getConfig(state: GlobalState) {
|
||||
return state.entities.calls.config;
|
||||
@@ -114,25 +114,3 @@ export const isLimitRestricted: (state: GlobalState, channelId?: string) => bool
|
||||
return max !== 0 && numParticipants >= max;
|
||||
},
|
||||
);
|
||||
|
||||
export const getICEServersConfigs: (state: GlobalState) => ICEServersConfigs = createSelector(
|
||||
getConfig,
|
||||
(config) => {
|
||||
// if ICEServersConfigs is set, we can trust this to be complete and
|
||||
// coming from an updated API.
|
||||
if (config.ICEServersConfigs?.length > 0) {
|
||||
return config.ICEServersConfigs;
|
||||
}
|
||||
|
||||
// otherwise we revert to using the now deprecated field.
|
||||
if (config.ICEServers?.length > 0) {
|
||||
return [
|
||||
{
|
||||
urls: config.ICEServers,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
return [];
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {ConfigurationParamWithUrls, ConfigurationParamWithUrl} from 'react-native-webrtc';
|
||||
|
||||
import {UserProfile} from '@mm-redux/types/users';
|
||||
import {Dictionary} from '@mm-redux/types/utilities';
|
||||
|
||||
@@ -62,24 +60,18 @@ export type VoiceEventData = {
|
||||
|
||||
export type ServerConfig = {
|
||||
ICEServers: string[];
|
||||
ICEServersConfigs: ICEServersConfigs;
|
||||
AllowEnableCalls: boolean;
|
||||
DefaultEnabled: boolean;
|
||||
MaxCallParticipants: number;
|
||||
NeedsTURNCredentials: boolean;
|
||||
sku_short_name: string;
|
||||
last_retrieved_at: number;
|
||||
}
|
||||
|
||||
export const DefaultServerConfig = {
|
||||
ICEServers: [],
|
||||
ICEServersConfigs: [],
|
||||
AllowEnableCalls: false,
|
||||
DefaultEnabled: false,
|
||||
MaxCallParticipants: 0,
|
||||
NeedsTURNCredentials: false,
|
||||
sku_short_name: '',
|
||||
last_retrieved_at: 0,
|
||||
} as ServerConfig;
|
||||
|
||||
export type ICEServersConfigs = Array<ConfigurationParamWithUrls | ConfigurationParamWithUrl>;
|
||||
|
||||
@@ -5,55 +5,25 @@ import {EventEmitter} from 'events';
|
||||
import Calls from '@constants/calls';
|
||||
import {encode} from '@msgpack/msgpack/dist';
|
||||
|
||||
const wsMinReconnectRetryTimeMs = 1000; // 1 second
|
||||
const wsReconnectionTimeout = 30000; // 30 seconds
|
||||
const wsReconnectTimeIncrement = 500; // 0.5 seconds
|
||||
export const wsReconnectionTimeoutErr = new Error('max disconnected time reached');
|
||||
|
||||
export class WebSocketClient extends EventEmitter {
|
||||
private ws: WebSocket | null = null;
|
||||
private wsURL: string;
|
||||
private authToken: string;
|
||||
private seqNo = 1;
|
||||
private serverSeqNo = 0;
|
||||
export default class WebSocketClient extends EventEmitter {
|
||||
private ws: WebSocket | null;
|
||||
private seqNo = 0;
|
||||
private connID = '';
|
||||
private originalConnID = '';
|
||||
private eventPrefix = `custom_${Calls.PluginId}`;
|
||||
private lastDisconnect = 0;
|
||||
private reconnectRetryTime = wsMinReconnectRetryTimeMs;
|
||||
private closed = false;
|
||||
|
||||
constructor(wsURL: string, authToken: string) {
|
||||
constructor(connURL: string) {
|
||||
super();
|
||||
this.wsURL = wsURL;
|
||||
this.authToken = authToken;
|
||||
this.init(false);
|
||||
}
|
||||
|
||||
private init(isReconnect: boolean) {
|
||||
if (this.closed) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.ws = new WebSocket(`${this.wsURL}?connection_id=${this.connID}&sequence_number=${this.serverSeqNo}`, [], {headers: {authorization: `Bearer ${this.authToken}`}});
|
||||
|
||||
if (isReconnect) {
|
||||
this.ws.onopen = () => {
|
||||
this.lastDisconnect = 0;
|
||||
this.reconnectRetryTime = wsMinReconnectRetryTimeMs;
|
||||
this.emit('open', this.originalConnID, this.connID, true);
|
||||
};
|
||||
}
|
||||
this.ws = new WebSocket(connURL);
|
||||
|
||||
this.ws.onerror = (err) => {
|
||||
this.emit('error', err);
|
||||
this.ws = null;
|
||||
this.close();
|
||||
};
|
||||
|
||||
this.ws.onclose = () => {
|
||||
this.ws = null;
|
||||
if (!this.closed) {
|
||||
this.close();
|
||||
}
|
||||
this.close();
|
||||
};
|
||||
|
||||
this.ws.onmessage = ({data}) => {
|
||||
@@ -64,12 +34,7 @@ export class WebSocketClient extends EventEmitter {
|
||||
try {
|
||||
msg = JSON.parse(data);
|
||||
} catch (err) {
|
||||
console.log('calls: ws msg parse error', err); // eslint-disable-line no-console
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg) {
|
||||
this.serverSeqNo = msg.seq + 1;
|
||||
console.log(err); // eslint-disable-line no-console
|
||||
}
|
||||
|
||||
if (!msg || !msg.event || !msg.data) {
|
||||
@@ -77,22 +42,14 @@ export class WebSocketClient extends EventEmitter {
|
||||
}
|
||||
|
||||
if (msg.event === 'hello') {
|
||||
if (msg.data.connection_id !== this.connID) {
|
||||
this.connID = msg.data.connection_id;
|
||||
this.serverSeqNo = 0;
|
||||
if (this.originalConnID === '') {
|
||||
this.originalConnID = this.connID;
|
||||
}
|
||||
}
|
||||
if (!isReconnect) {
|
||||
this.emit('open', this.originalConnID, this.connID, false);
|
||||
}
|
||||
this.connID = msg.data.connection_id;
|
||||
this.emit('open');
|
||||
return;
|
||||
} else if (!this.connID) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg.data.connID !== this.connID && msg.data.connID !== this.originalConnID) {
|
||||
if (msg.data.connID !== this.connID) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -127,35 +84,12 @@ export class WebSocketClient extends EventEmitter {
|
||||
|
||||
close() {
|
||||
if (this.ws) {
|
||||
this.closed = true;
|
||||
this.ws.close();
|
||||
this.ws = null;
|
||||
this.seqNo = 1;
|
||||
this.serverSeqNo = 0;
|
||||
this.connID = '';
|
||||
this.originalConnID = '';
|
||||
} else {
|
||||
this.emit('close');
|
||||
|
||||
const now = Date.now();
|
||||
if (this.lastDisconnect === 0) {
|
||||
this.lastDisconnect = now;
|
||||
}
|
||||
|
||||
if ((now - this.lastDisconnect) >= wsReconnectionTimeout) {
|
||||
this.closed = true;
|
||||
this.emit('error', wsReconnectionTimeoutErr);
|
||||
return;
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
if (!this.ws && !this.closed) {
|
||||
this.init(true);
|
||||
}
|
||||
}, this.reconnectRetryTime);
|
||||
|
||||
this.reconnectRetryTime += wsReconnectTimeIncrement;
|
||||
}
|
||||
this.seqNo = 0;
|
||||
this.connID = '';
|
||||
this.emit('close');
|
||||
}
|
||||
|
||||
state() {
|
||||
|
||||
@@ -26,12 +26,12 @@ export type Props = {
|
||||
theme: Theme;
|
||||
|
||||
value: AppFormValue;
|
||||
onChange: (name: string, value: AppFormValue) => void;
|
||||
onChange: (name: string, value: string | AppSelectOption | AppSelectOption[] | boolean) => void;
|
||||
performLookup: (name: string, userInput: string) => Promise<AppSelectOption[]>;
|
||||
}
|
||||
|
||||
type State = {
|
||||
selected?: DialogOption | DialogOption[] | null;
|
||||
selected?: DialogOption | DialogOption[];
|
||||
}
|
||||
|
||||
const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => {
|
||||
@@ -52,34 +52,7 @@ export default class AppsFormField extends React.PureComponent<Props, State> {
|
||||
constructor(props: Props) {
|
||||
super(props);
|
||||
|
||||
let selected;
|
||||
switch (props.field.type) {
|
||||
case AppFieldTypes.STATIC_SELECT:
|
||||
case AppFieldTypes.DYNAMIC_SELECT:
|
||||
case AppFieldTypes.USER:
|
||||
case AppFieldTypes.CHANNEL: {
|
||||
const value = props.value as AppSelectOption[] | AppSelectOption | null;
|
||||
if (value) {
|
||||
if (Array.isArray(value)) {
|
||||
selected = value.map((option) => {
|
||||
return {
|
||||
text: option.label,
|
||||
value: option.value,
|
||||
};
|
||||
});
|
||||
} else {
|
||||
selected = {
|
||||
text: value.label,
|
||||
value: value.value,
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.state = {
|
||||
selected,
|
||||
};
|
||||
this.state = {};
|
||||
}
|
||||
|
||||
handleAutocompleteSelect = (selected: DialogOption) => {
|
||||
@@ -100,15 +73,6 @@ export default class AppsFormField extends React.PureComponent<Props, State> {
|
||||
this.props.onChange(field.name, selectedOption);
|
||||
};
|
||||
|
||||
handleClear = () => {
|
||||
const {field, onChange} = this.props;
|
||||
|
||||
const selected = null;
|
||||
|
||||
this.setState({selected});
|
||||
onChange(field.name, selected);
|
||||
};
|
||||
|
||||
handleMultioptionAutocompleteSelect = (selected: DialogOption[]) => {
|
||||
if (!selected) {
|
||||
return;
|
||||
@@ -246,7 +210,6 @@ export default class AppsFormField extends React.PureComponent<Props, State> {
|
||||
dataSource={dataSource}
|
||||
options={options}
|
||||
optional={!field.is_required}
|
||||
onClear={this.handleClear}
|
||||
onSelected={field.multiselect ? this.handleMultioptionAutocompleteSelect : this.handleAutocompleteSelect}
|
||||
getDynamicOptions={this.getDynamicOptions}
|
||||
helpText={field.description}
|
||||
|
||||
@@ -54,13 +54,6 @@ export default class DialogElement extends PureComponent {
|
||||
onChange(name, newValue);
|
||||
};
|
||||
|
||||
handleClear = () => {
|
||||
const {name, onChange} = this.props;
|
||||
|
||||
this.setState({selected: null});
|
||||
onChange(name, null);
|
||||
};
|
||||
|
||||
handleAutocompleteSelect = (selected) => {
|
||||
if (!selected) {
|
||||
return;
|
||||
@@ -141,7 +134,6 @@ export default class DialogElement extends PureComponent {
|
||||
options={options}
|
||||
optional={optional}
|
||||
onSelected={this.handleAutocompleteSelect}
|
||||
onClear={this.handleClear}
|
||||
helpText={helpText}
|
||||
errorText={errorText}
|
||||
placeholder={placeholder}
|
||||
|
||||
@@ -41,7 +41,7 @@ class EphemeralStore {
|
||||
|
||||
addToNavigationComponentIdStack = (componentId) => {
|
||||
const index = this.navigationComponentIdStack.indexOf(componentId);
|
||||
if (index >= 0) {
|
||||
if (index > 0) {
|
||||
this.navigationComponentIdStack.slice(index, 1);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
import {Linking} from 'react-native';
|
||||
|
||||
import TestHelper from '@test/test_helper';
|
||||
import * as UrlUtils from '@utils/url';
|
||||
|
||||
/* eslint-disable max-nested-callbacks */
|
||||
@@ -153,8 +152,7 @@ describe('UrlUtils', () => {
|
||||
const onError = jest.fn();
|
||||
const onSuccess = jest.fn();
|
||||
|
||||
UrlUtils.tryOpenURL(url, onError, onSuccess);
|
||||
await TestHelper.wait(200);
|
||||
await UrlUtils.tryOpenURL(url, onError, onSuccess);
|
||||
expect(onError).toHaveBeenCalledTimes(1);
|
||||
expect(onSuccess).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
@@ -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": "(optional)",
|
||||
"channel_modal.optional": "(wahlweise)",
|
||||
"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 wurdest 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.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 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_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_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": "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.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.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: ",
|
||||
|
||||
@@ -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: {details}",
|
||||
"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_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": "{applicationName} desea acceder a tus fotos",
|
||||
"mobile.android.photos_permission_denied_title": "Acceso a la biblioteca de fotos es necesario",
|
||||
"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": "{applicationName} desea acceder a tu librería de fotos",
|
||||
"mobile.ios.photos_permission_denied_title": "Acceso a la biblioteca de fotos es necesario",
|
||||
"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} {timezones, 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} {zonas horarias, 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} {timezones, 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} {zonas horarias, 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": "Comentado en el mensaje de {name}{apostrophe}: ",
|
||||
"post_body.commentedOn": "Comento en el mensaje de {name}: ",
|
||||
"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 búsqueda",
|
||||
"search_header.title2": "Mencines recientes",
|
||||
"search_header.results": "Resultados de la Búsqueda",
|
||||
"search_header.title2": "Menciones Recientes",
|
||||
"search_header.title3": "Mensajes Guardados",
|
||||
"search_item.channelArchived": "Archivado",
|
||||
"sidebar.channels": "CANALES PÚBLICOS",
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
"apps.error.parser.missing_list_end": "Marqeur de fin de liste attendu.",
|
||||
"apps.error.parser.missing_quote": "Les doubles guillemets doivent être fermés avant la fin du champ de saisie.",
|
||||
"apps.error.parser.missing_source": "Le formulaire n'a ni `submit` ni `source`.",
|
||||
"apps.error.parser.missing_submit": "Aucun appel dans le lien ou le formulaire.",
|
||||
"apps.error.parser.missing_tick": "Une marqueur de citation correspondant est attendu avant la fin du champ de saisie.",
|
||||
"apps.error.parser.multiple_equal": "Les signes `=` multiples ne sont pas autorisés.",
|
||||
"apps.error.parser.no_argument_pos_x": "Impossible d'identifier l'argument.",
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
@@ -201,7 +201,7 @@
|
||||
"gallery.open_file": "File megnyitása",
|
||||
"gallery.unsuppored": "Az előnézet nem elérhető ennél a file típusnál",
|
||||
"get_post_link_modal.title": "Link másolása",
|
||||
"global_threads.allThreads": "Összes üzenetszál",
|
||||
"global_threads.allThreads": "Összes üzenetszálad",
|
||||
"global_threads.emptyThreads.message": "Minden olyan üzenetszál, amiben részt vettél vagy említésre kerültél fel lesz itt tüntetve azokkal együtt, amiket követsz.",
|
||||
"global_threads.emptyThreads.title": "Nincsen követett üzenetszál",
|
||||
"global_threads.emptyUnreads.message": "Úgy néz ki, mindent elolvastál.",
|
||||
|
||||
@@ -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} {apostrophe} のメッセージへのコメント: ",
|
||||
"post_body.commentedOn": "{name}のメッセージへのコメント: ",
|
||||
"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)",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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": "jou",
|
||||
"combined_system_message.you": "Jij",
|
||||
"create_comment.addComment": "Voeg commentaar toe...",
|
||||
"create_post.deactivated": "Je bekijkt een gearchiveerd kanaal met een gedeactiveerde gebruiker.",
|
||||
"create_post.write": "Schrijven naar {channelDisplayName}",
|
||||
|
||||
@@ -11,54 +11,35 @@
|
||||
"about.teamEditiont1": "Enterprise Edition",
|
||||
"about.title": "Sobre {appTitle}",
|
||||
"announcment_banner.dont_show_again": "Não mostrar novamente",
|
||||
"api.channel.add_guest.added": "{addedUsername} adicionado ao canal como convidado por {username}.",
|
||||
"api.channel.add_member.added": "{addedUsername} foi adicionado ao canal por {username}.",
|
||||
"api.channel.guest_join_channel.post_and_forget": "{username} entrou no canal como convidado.",
|
||||
"apps.error": "Erro: {error}",
|
||||
"apps.error.command.field_missing": "Campos obrigatórios ausentes: `{fieldName}`.",
|
||||
"apps.error.command.same_channel": "Canal repetido para o campo `{fieldName}`: `{option}`.",
|
||||
"apps.error.command.same_option": "Opção repetida para o campo `{fieldName}`: `{option}`.",
|
||||
"apps.error.command.same_user": "Usuário repetido para o campo `{fieldName}`: `{option}`.",
|
||||
"apps.error.command.unknown_channel": "Canal desconhecido para o campo `{fieldName}`: `{option}`.",
|
||||
"apps.error.command.unknown_option": "Opção desconhecida para o campo `{fieldName}`: `{option}`.",
|
||||
"apps.error.command.unknown_user": "Usuário desconhecido para o campo `{fieldName}`: `{opção}`.",
|
||||
"apps.error.form.no_form": "`form` não está definido.",
|
||||
"apps.error.form.no_lookup": "`procurar` não está definido.",
|
||||
"apps.error.form.no_source": "`fonte` não está definida.",
|
||||
"apps.error.form.no_submit": "`enviar ` não está definido",
|
||||
"apps.error.form.refresh": "Ocorreu um erro ao buscar os campos selecionados. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
||||
"apps.error.form.refresh_no_refresh": "Atualização chamada no campo sem atualização.",
|
||||
"apps.error.form.submit.pretext": "Ocorreu um erro ao enviar o modal. Entre em contato com o desenvolvedor do aplicativo. Detalhes: {details}",
|
||||
"apps.error.lookup.error_preparing_request": "Erro ao preparar solicitação de pesquisa: {errorMessage}",
|
||||
"apps.error.malformed_binding": "Esta ligação não está formada corretamente. Entre em contato com o desenvolvedor do aplicativo.",
|
||||
"apps.error.parser": "Erro de análise: {error}",
|
||||
"apps.error.parser.empty_value": "valores vazios não são permitidos",
|
||||
"apps.error.parser.execute_non_leaf": "Você deve selecionar um subcomando.",
|
||||
"apps.error.parser.missing_binding": "Ligações de comando ausentes.",
|
||||
"apps.error.parser.missing_field_value": "Falta o valor do campo.",
|
||||
"apps.error.parser.missing_list_end": "Token de fechamento de lista esperado.",
|
||||
"apps.error.parser.missing_quote": "Aspas duplas correspondentes são esperadas antes do final da entrada.",
|
||||
"apps.error.parser.missing_source": "O formulário não tem envio nem fonte.",
|
||||
"apps.error.parser.missing_submit": "Nenhuma chamada de envio em forma ou vinculação.",
|
||||
"apps.error.parser.missing_tick": "Crase correspondente é esperada antes do final de entrada.",
|
||||
"apps.error.parser.multiple_equal": "Vários sinais `=` não são permitidos.",
|
||||
"apps.error.parser.no_argument_pos_x": "Incapaz de identificar o argumento.",
|
||||
"apps.error.parser.no_bindings": "Sem ligações de comando.",
|
||||
"apps.error.parser.no_form": "Nenhum formulário encontrado.",
|
||||
"apps.error.parser.no_match": "`{command}`: Nenhum comando correspondente encontrado neste espaço de trabalho.",
|
||||
"apps.error.parser.no_slash_start": "O comando deve começar com `/`.",
|
||||
"apps.error.parser.unexpected_character": "Caracter inesperado.",
|
||||
"apps.error.parser.unexpected_comma": "Vírgula inesperada.",
|
||||
"apps.error.parser.unexpected_error": "Erro inesperado.",
|
||||
"apps.error.parser.unexpected_flag": "O comando não aceita o sinalizador `{flagName}`.",
|
||||
"apps.error.parser.unexpected_squared_bracket": "Abertura de lista inesperada.",
|
||||
"apps.error.parser.unexpected_state": "Inacessível: Estado inesperado em matchBinding: `{state}`.",
|
||||
"apps.error.parser.unexpected_whitespace": "Inacessível: espaço em branco inesperado.",
|
||||
"apps.error.responses.form.no_form": "O tipo de resposta é `form`, mas nenhum formulário foi incluído na resposta.",
|
||||
"apps.error.responses.navigate.no_url": "O tipo de resposta é `navigate`, mas nenhuma url foi incluído na resposta.",
|
||||
"apps.error.responses.unexpected_error": "Recebeu um erro inesperado.",
|
||||
"apps.error.responses.unexpected_type": "O tipo de resposta do aplicativo não era esperado. Tipo de resposta: {type}.",
|
||||
"apps.error.responses.unknown_field_error": "Recebeu um erro para um campo desconhecido. Nome do campo: `{field}`. Erro: `{error}`.",
|
||||
"apps.error.responses.unknown_type": "O tipo de resposta do aplicativo não é compatível. Tipo de resposta: {type}.",
|
||||
"apps.error.unknown": "Ocorreu um erro desconhecido.",
|
||||
"apps.suggestion.dynamic.error": "Erro de seleção dinâmica",
|
||||
@@ -67,9 +48,6 @@
|
||||
"apps.suggestion.no_static": "Sem opções correspondentes.",
|
||||
"apps.suggestion.no_suggestion": "Sem sugestões correspondentes.",
|
||||
"archivedChannelMessage": "Você está vendo um **canal arquivado**. Novas mensagens não podem ser publicadas.",
|
||||
"camera_type.photo.option": "Capturar foto",
|
||||
"camera_type.title": "Escolha uma ação",
|
||||
"camera_type.video.option": "Record Video",
|
||||
"center_panel.archived.closeChannel": "Fechar Canal",
|
||||
"channel.channelHasGuests": "Este canal tem convidados",
|
||||
"channel.hasGuests": "Este grupo de mensagem tem convidados",
|
||||
@@ -89,7 +67,6 @@
|
||||
"channel_loader.someone": "Alguém",
|
||||
"channel_members_modal.remove": "Remover",
|
||||
"channel_modal.cancel": "Cancelar",
|
||||
"channel_modal.channelType": "Modelo",
|
||||
"channel_modal.descriptionHelp": "Descreva como este canal deve ser utilizado.",
|
||||
"channel_modal.header": "Cabeçalho",
|
||||
"channel_modal.headerEx": "Ex.: \"[Título do Link](http://example.com)\"",
|
||||
@@ -99,8 +76,6 @@
|
||||
"channel_modal.optional": "(opcional)",
|
||||
"channel_modal.purpose": "Propósito",
|
||||
"channel_modal.purposeEx": "Ex.: \"Um canal para arquivar bugs e melhorias\"",
|
||||
"channel_modal.type.private": "Canal privado",
|
||||
"channel_modal.type.public": "Canal público",
|
||||
"channel_notifications.ignoreChannelMentions.settings": "Ignorar @channel, @here, @all",
|
||||
"channel_notifications.muteChannel.settings": "Silenciar o canal",
|
||||
"channel_notifications.preference.all_activity": "Para todas as atividades",
|
||||
@@ -145,76 +120,21 @@
|
||||
"create_comment.addComment": "Adicionar um comentário...",
|
||||
"create_post.deactivated": "Você está vendo um canal arquivado com um usuário inativo.",
|
||||
"create_post.write": "Escrever para {channelDisplayName}",
|
||||
"custom_status.expiry.at": "no",
|
||||
"custom_status.expiry.until": "Até",
|
||||
"custom_status.expiry_dropdown.custom": "Personalizado",
|
||||
"custom_status.expiry_dropdown.date_and_time": "Data e hora",
|
||||
"custom_status.expiry_dropdown.dont_clear": "Não limpe",
|
||||
"custom_status.expiry_dropdown.four_hours": "4 horas",
|
||||
"custom_status.expiry_dropdown.one_hour": "1 hora",
|
||||
"custom_status.expiry_dropdown.thirty_minutes": "30 minutos",
|
||||
"custom_status.expiry_dropdown.this_week": "Essa semana",
|
||||
"custom_status.expiry_dropdown.today": "Hoje",
|
||||
"custom_status.expiry_time.today": "Hoje",
|
||||
"custom_status.expiry_time.tomorrow": "Amanhã",
|
||||
"custom_status.failure_message": "Falha ao atualizar o status. Tente novamente",
|
||||
"custom_status.set_status": "Definir um status",
|
||||
"custom_status.suggestions.in_a_meeting": "Em uma reunião",
|
||||
"custom_status.suggestions.on_a_vacation": "De férias",
|
||||
"custom_status.suggestions.out_for_lunch": "Almoçando",
|
||||
"custom_status.suggestions.out_sick": "Doente",
|
||||
"custom_status.suggestions.recent_title": "RECENTE",
|
||||
"custom_status.suggestions.title": "SUGESTÕES",
|
||||
"custom_status.suggestions.working_from_home": "Trabalhando em casa",
|
||||
"date_separator.today": "Hoje",
|
||||
"date_separator.yesterday": "Ontem",
|
||||
"edit_post.editPost": "Editar o post...",
|
||||
"edit_post.save": "Salvar",
|
||||
"emoji_picker.activities": "Atividades",
|
||||
"emoji_picker.animals-nature": "Animais e Natureza",
|
||||
"emoji_picker.custom": "Personalizado",
|
||||
"emoji_picker.flags": "Bandeiras",
|
||||
"emoji_picker.food-drink": "Comida e bebida",
|
||||
"emoji_picker.objects": "Objetos",
|
||||
"emoji_picker.people-body": "Pessoas e Corpo",
|
||||
"emoji_picker.recent": "Recente",
|
||||
"emoji_picker.searchResults": "Resultados da Pesquisa",
|
||||
"emoji_picker.smileys-emotion": "Sorrisos e Emoções",
|
||||
"emoji_picker.symbols": "Símbolos",
|
||||
"emoji_picker.travel-places": "Viagens e lugares",
|
||||
"emoji_skin.dark_skin_tone": "tom de pele escuro",
|
||||
"emoji_skin.default": "tom de pele padrão",
|
||||
"emoji_skin.light_skin_tone": "tom de pele claro",
|
||||
"emoji_skin.medium_dark_skin_tone": "pele morena escura",
|
||||
"emoji_skin.medium_light_skin_tone": "tom de pele claro médio",
|
||||
"emoji_skin.medium_skin_tone": "tom de pele médio",
|
||||
"file_upload.fileAbove": "Arquivos devem ter menos de {max}",
|
||||
"friendly_date.daysAgo": "{count} {count, plural, one {day} other {days}} atrás",
|
||||
"friendly_date.hoursAgo": "{count} {count, plural, one {hour} other {hours}} atrás",
|
||||
"friendly_date.minsAgo": "{count} {count, plural, one {min} other {mins}} atrás",
|
||||
"friendly_date.monthsAgo": "{count} {count, plural, one {month} other {months}} atrás",
|
||||
"friendly_date.now": "Agora",
|
||||
"friendly_date.yearsAgo": "{count} {count, plural, one {year} other {years}} atrás",
|
||||
"friendly_date.yesterday": "Ontem",
|
||||
"gallery.download_file": "Baixar arquivo",
|
||||
"gallery.footer.channel_name": "Compartilhado em {channelName}",
|
||||
"gallery.open_file": "Abrir arquivo",
|
||||
"gallery.unsuppored": "A visualização não é compatível com este tipo de arquivo",
|
||||
"get_post_link_modal.title": "Copiar Link",
|
||||
"global_threads.allThreads": "Todos os seus tópicos",
|
||||
"global_threads.emptyThreads.message": "Todos os tópicos nos quais você é mencionado ou dos quais participou serão exibidos aqui junto com todos os tópicos que você seguiu.",
|
||||
"global_threads.emptyThreads.title": "Nenhum tópico seguido ainda",
|
||||
"global_threads.emptyUnreads.message": "Parece que você está todo preso.",
|
||||
"global_threads.emptyUnreads.title": "Nenhum tópico não lido",
|
||||
"global_threads.markAllRead.cancel": "Cancelar",
|
||||
"global_threads.markAllRead.markRead": "Marcar como lido",
|
||||
"global_threads.markAllRead.message": "Isso limpará qualquer status não lido de todos os seus tópicos mostrados aqui",
|
||||
"global_threads.markAllRead.title": "Tem certeza de que deseja marcar todos os tópicos como lidos?",
|
||||
"global_threads.options.mark_as_read": "Marcar como Lido",
|
||||
"global_threads.options.open_in_channel": "Abrir no canal",
|
||||
"global_threads.options.title": "AÇÕES DE TÓPICO",
|
||||
"global_threads.options.unfollow": "Deixar de seguir o tópico",
|
||||
"global_threads.unreads": "Não lidos",
|
||||
"integrations.add": "Adicionar",
|
||||
"intro_messages.anyMember": " Qualquer membro pode participar e ler este canal.",
|
||||
"intro_messages.beginning": "Início do {name}",
|
||||
@@ -288,7 +208,7 @@
|
||||
"mobile.camera_photo_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
||||
"mobile.camera_video_permission_denied_description": "Faça vídeos e envie-os para a sua instância do Mattermost ou salve-os no seu dispositivo. Abra Configurações para conceder ao Mattermost acesso de leitura e gravação à sua câmera.",
|
||||
"mobile.camera_video_permission_denied_title": "{applicationName} gostaria de acessar sua camera",
|
||||
"mobile.channel_drawer.search": "Encontrar canal",
|
||||
"mobile.channel_drawer.search": "Ir para...",
|
||||
"mobile.channel_info.alertMessageConvertChannel": "Quando você converte {displayName} em um canal privado, o histórico e os membros são preservados. Os arquivos compartilhados publicamente permanecem acessíveis a qualquer pessoa com o link. O ingresso a um canal privado é apenas por convite.\n\nA mudança é permanente e não pode ser desfeita.\n\nTem certeza de que deseja converter {displayName} em um canal privado?",
|
||||
"mobile.channel_info.alertMessageDeleteChannel": "Você tem certeza que quer arquivar o {term} {name}?",
|
||||
"mobile.channel_info.alertMessageLeaveChannel": "Você tem certeza que quer deixar o {term} {name}?",
|
||||
@@ -332,9 +252,6 @@
|
||||
"mobile.create_channel.public": "Novo Canal Público",
|
||||
"mobile.create_post.read_only": "Este canal é de apenas leitura",
|
||||
"mobile.custom_list.no_results": "Nenhum Resultado",
|
||||
"mobile.custom_status.choose_emoji": "Escolha um emoji",
|
||||
"mobile.custom_status.clear_after": "Limpar depois",
|
||||
"mobile.custom_status.modal_confirm": "Feito",
|
||||
"mobile.display_settings.sidebar": "Barra lateral",
|
||||
"mobile.display_settings.theme": "Tema",
|
||||
"mobile.document_preview.failed_description": "Um erro aconteceu durante a abertura do documento. Por favor verifique que você tem o visualizador para {fileType} instalado e tente novamente.\n",
|
||||
@@ -371,7 +288,7 @@
|
||||
"mobile.file_upload.disabled": "Os uploads de arquivos do celular estão desabilitados. Entre em contato com o Administrador do Sistema para obter mais detalhes.",
|
||||
"mobile.file_upload.disabled2": "Os envios de arquivos do celular estão desabilitados.",
|
||||
"mobile.file_upload.library": "Biblioteca de Fotos",
|
||||
"mobile.file_upload.max_warning": "Uploads limitados a {count} máximo de arquivos.",
|
||||
"mobile.file_upload.max_warning": "Upload limitado ao máximo de 5 arquivos.",
|
||||
"mobile.file_upload.unsupportedMimeType": "Somente imagens em BMP, JPG ou PNG podem ser usadas como imagem do perfil.",
|
||||
"mobile.file_upload.video": "Galeria de Videos",
|
||||
"mobile.files_paste.error_description": "Ocorreu um erro enquanto colava o arquivo. Por favor tente novamente.",
|
||||
@@ -379,11 +296,9 @@
|
||||
"mobile.files_paste.error_title": "Colar falhou",
|
||||
"mobile.flagged_posts.empty_description": "As mensagens salvas são visíveis apenas para você. Marque mensagens para acompanhamento ou salve algo para mais tarde mantendo uma mensagem pressionada e escolhendo Salvar no menu.",
|
||||
"mobile.flagged_posts.empty_title": "Nenhuma mensagem salva",
|
||||
"mobile.forms.select.done": "Feito",
|
||||
"mobile.gallery.title": "{index} de {total}",
|
||||
"mobile.general.error.title": "Erro",
|
||||
"mobile.help.title": "Ajuda",
|
||||
"mobile.interactive_dialog.defaultSubmit": "Enviar",
|
||||
"mobile.intro_messages.DM": "Este é o início do seu histórico de mensagens diretas com {teammate}. Mensagens diretas e arquivos compartilhados aqui não são mostrados para pessoas de fora desta área.",
|
||||
"mobile.intro_messages.default_message": "Este é o primeiro canal da equipe veja quando eles se registrarem - use para postar atualizações que todos devem saber.",
|
||||
"mobile.intro_messages.default_welcome": "Bem-vindo ao {name}!",
|
||||
@@ -415,8 +330,6 @@
|
||||
"mobile.message_length.message": "Sua mensagem atual é muito grande. Contagem corrente de caracters: {max}/{count}",
|
||||
"mobile.message_length.message_split_left": "Mensagem excede o limite de caracteres",
|
||||
"mobile.message_length.title": "Tamanho da Mensagem",
|
||||
"mobile.microphone_permission_denied_description": "Para participar desta chamada, abra Configurações para conceder ao Mattermost acesso ao seu microfone.",
|
||||
"mobile.microphone_permission_denied_title": "{applicationName} gostaria de acessar seu microfone",
|
||||
"mobile.more_dms.add_more": "Você pode adicionar mais {remaining, number} usuários",
|
||||
"mobile.more_dms.cannot_add_more": "Você não pode adicionar mais usuários",
|
||||
"mobile.more_dms.one_more": "Você não pode adicionar mais 1 usuário",
|
||||
@@ -436,7 +349,6 @@
|
||||
"mobile.notification_settings.email": "E-mail",
|
||||
"mobile.notification_settings.email.send": "ENVIAR NOTIFICAÇÕES POR EMAIL",
|
||||
"mobile.notification_settings.email_title": "Notificações por Email",
|
||||
"mobile.notification_settings.mentions": "Menções",
|
||||
"mobile.notification_settings.mentions.channelWide": "Menções de todo canal",
|
||||
"mobile.notification_settings.mentions.reply_title": "Enviar notificações de resposta para",
|
||||
"mobile.notification_settings.mentions.sensitiveName": "Seu primeiro nome em maiúsculas e minúsculas",
|
||||
@@ -447,10 +359,6 @@
|
||||
"mobile.notification_settings.modal_cancel": "CANCELAR",
|
||||
"mobile.notification_settings.modal_save": "SALVAR",
|
||||
"mobile.notification_settings.ooo_auto_responder": "Respostas Automáticas para Mensagens Diretas",
|
||||
"mobile.notification_settings.push_threads.description": "Notificar-me sobre todas as respostas aos tópicos que estou seguindo",
|
||||
"mobile.notification_settings.push_threads.info": "Quando ativado, qualquer resposta a um tópico que você está seguindo enviará uma notificação por push móvel.",
|
||||
"mobile.notification_settings.push_threads.title": "NOTIFICAÇÕES DE RESPOSTA DE TÓPICOS",
|
||||
"mobile.notification_settings.push_threads.title_android": "Notificações de resposta do tópico",
|
||||
"mobile.notification_settings.save_failed_description": "As configurações de notificação não conseguiram salvar devido a um problema de conexão. Por favor tente novamente.",
|
||||
"mobile.notification_settings.save_failed_title": "Problema de conexão",
|
||||
"mobile.notification_settings_mentions.keywords": "Palavras-chave",
|
||||
@@ -483,8 +391,6 @@
|
||||
"mobile.open_dm.error": "Não foi possível entrar nas mensagens diretas com {displayName}. Por favor verifique a sua conexão e tente novamente.",
|
||||
"mobile.open_gm.error": "Não foi possível abrir uma mensagem em grupo com esses usuários. Por favor verifique sua conexão e tente novamente.",
|
||||
"mobile.open_unknown_channel.error": "Não é possível entrar no canal. Por favor, limpe o cache e tente novamente.",
|
||||
"mobile.participants.header": "PARTICIPANTES DO TÓPICO",
|
||||
"mobile.participants.you": "(você)",
|
||||
"mobile.permission_denied_dismiss": "Não Permitir",
|
||||
"mobile.permission_denied_retry": "Configurações",
|
||||
"mobile.pinned_posts.empty_description": "Fixe mensagens importantes que sejam visíveis para todo o canal. Mantenha uma mensagem pressionada e escolha Fixar no canal para salvá-la aqui.",
|
||||
@@ -512,8 +418,6 @@
|
||||
"mobile.post_textbox.entire_channel.message": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}}. Você tem certeza que quer fazer isso?",
|
||||
"mobile.post_textbox.entire_channel.message.with_timezones": "Usando @all ou @channel você está enviando notificações para {totalMembers, number} {totalMembers, plural, one {pessoa} other {pessoas}} em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza que quer fazer isso?",
|
||||
"mobile.post_textbox.entire_channel.title": "Confirmar o envio de notificações para o canal todo",
|
||||
"mobile.post_textbox.entire_channel_here.message": "Ao usar @here você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}}. Você tem certeza de que quer fazer isso?",
|
||||
"mobile.post_textbox.entire_channel_here.message.with_timezones": "Ao usar @here, você está prestes a enviar notificações para {totalMembers, number} {totalMembers, plural, one {person} other {people}} em {timezones, number} {timezones, plural, one {timezone} other {timezones} }. Você tem certeza de que quer fazer isso?",
|
||||
"mobile.post_textbox.groups.title": "Confirmar envio de notificações para grupos",
|
||||
"mobile.post_textbox.multi_group.message.with_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas em {timezones, number} {timezones, plural, one {fuso horário} other {fusos horários}}. Você tem certeza de que quer fazer isso?",
|
||||
"mobile.post_textbox.multi_group.message.without_timezones": "Ao usar {mentions} e {finalMention}, você está prestes a enviar notificações para pelo menos {totalMembers} pessoas. Você tem certeza de que quer fazer isso?",
|
||||
@@ -544,7 +448,7 @@
|
||||
"mobile.reset_status.alert_cancel": "Cancelar",
|
||||
"mobile.reset_status.alert_ok": "Ok",
|
||||
"mobile.reset_status.title_ooo": "Desativar \"Fora Do Escritório\"?",
|
||||
"mobile.retry_message": "Falha ao buscar mensagens. Toque aqui para tentar novamente.",
|
||||
"mobile.retry_message": "Atualização de mensagens falharam. Puxe para tentar novamente.",
|
||||
"mobile.routes.channelInfo": "Informações",
|
||||
"mobile.routes.channelInfo.createdBy": "Criado por {creator} em ",
|
||||
"mobile.routes.channelInfo.delete_channel": "Arquivar Canal",
|
||||
@@ -556,7 +460,6 @@
|
||||
"mobile.routes.channel_members.action_message_confirm": "Você tem certeza que quer remover o membro selecionado do canal?",
|
||||
"mobile.routes.code": "{language} Código",
|
||||
"mobile.routes.code.noLanguage": "Código",
|
||||
"mobile.routes.custom_status": "Definir um status",
|
||||
"mobile.routes.edit_profile": "Editar Perfil",
|
||||
"mobile.routes.login": "Login",
|
||||
"mobile.routes.loginOptions": "Selecionador de Login",
|
||||
@@ -567,13 +470,10 @@
|
||||
"mobile.routes.sso": "Single Sign-On",
|
||||
"mobile.routes.table": "Tabela",
|
||||
"mobile.routes.thread": "Tópico {channelName}",
|
||||
"mobile.routes.thread_crt": "Tópico",
|
||||
"mobile.routes.thread_crt.in": "em {channelName}",
|
||||
"mobile.routes.thread_dm": "Tópico Mensagem Direta",
|
||||
"mobile.routes.user_profile": "Perfil",
|
||||
"mobile.routes.user_profile.edit": "Editar",
|
||||
"mobile.routes.user_profile.local_time": "HORA LOCAL",
|
||||
"mobile.routes.user_profile.organization": "ORGANIZAÇÃO",
|
||||
"mobile.routes.user_profile.send_message": "Enviar Mensagem",
|
||||
"mobile.search.after_modifier_description": "encontrar publicações após uma data específica",
|
||||
"mobile.search.before_modifier_description": "encontrar publicações antes de uma data específica",
|
||||
@@ -643,7 +543,6 @@
|
||||
"mobile.user_list.deactivated": "Desativado",
|
||||
"mobile.user_removed.message": "Você foi removido do canal.",
|
||||
"mobile.user_removed.title": "Removido de {channelName}",
|
||||
"mobile.video_playback.download": "Baixar video",
|
||||
"mobile.video_playback.failed_description": "Ocorreu um erro ao tentar reproduzir o video.\n",
|
||||
"mobile.video_playback.failed_title": "Erro ao realizar o playback do video",
|
||||
"mobile.youtube_playback_error.description": "Ocorreu um erro ao tentar executar um vídeo do YouTube.\nDetalhes: {details}",
|
||||
@@ -657,10 +556,8 @@
|
||||
"more_channels.dropdownTitle": "Exibir",
|
||||
"more_channels.noMore": "Não há mais canais para participar",
|
||||
"more_channels.publicChannels": "Canais Públicos",
|
||||
"more_channels.sharedChannels": "Canais compartilhados",
|
||||
"more_channels.showArchivedChannels": "Exibir: Canais Arquivados",
|
||||
"more_channels.showPublicChannels": "Exibir: Canais Públicos",
|
||||
"more_channels.showSharedChannels": "Mostrar: canais compartilhados",
|
||||
"more_channels.title": "Mais Canais",
|
||||
"msg_typing.areTyping": "{users} e {last} estão digitando...",
|
||||
"msg_typing.isTyping": "{user} está digitando...",
|
||||
@@ -709,7 +606,6 @@
|
||||
"sidebar.channels": "CANAIS PÚBLICOS",
|
||||
"sidebar.direct": "MENSAGENS DIRETAS",
|
||||
"sidebar.favorite": "CANAIS FAVORITOS",
|
||||
"sidebar.favorites": "Favoritos",
|
||||
"sidebar.pg": "CANAIS PRIVADOS",
|
||||
"sidebar.types.recent": "ATIVIDADE RECENTE",
|
||||
"sidebar.unreads": "Mais não lidos",
|
||||
@@ -732,22 +628,12 @@
|
||||
"suggestion.mention.morechannels": "Outros Canais",
|
||||
"suggestion.mention.nonmembers": "Não no Canal",
|
||||
"suggestion.mention.special": "Menções Especiais",
|
||||
"suggestion.mention.you": " (você)",
|
||||
"suggestion.mention.you": "(você)",
|
||||
"suggestion.search.direct": "Mensagens Diretas",
|
||||
"suggestion.search.private": "Canais Privados",
|
||||
"suggestion.search.public": "Canais Públicos",
|
||||
"terms_of_service.agreeButton": "Eu Concordo",
|
||||
"terms_of_service.api_error": "Não é possível concluir o pedido. Se esse problema persistir, entre em contato com o Administrador do Sistema.",
|
||||
"threads": "Tópicos",
|
||||
"threads.deleted": "Mensagem original excluída",
|
||||
"threads.follow": "Seguir",
|
||||
"threads.followMessage": "Seguir mensagem",
|
||||
"threads.followThread": "Seguir Tópico",
|
||||
"threads.following": "Seguindo",
|
||||
"threads.newReplies": "{count} novo {count, plural, one {reply} other {replies}}",
|
||||
"threads.replies": "{count} {count, plural, one {reply} other {replies}}",
|
||||
"threads.unfollowMessage": "Deixar de seguir a mensagem",
|
||||
"threads.unfollowThread": "Deixar de seguir o tópico",
|
||||
"user.settings.display.clockDisplay": "Exibição do Relógio",
|
||||
"user.settings.display.custom_theme": "Tema Personalizado",
|
||||
"user.settings.display.militaryClock": "Relógio de 24 horas (exemplo: 16:00)",
|
||||
@@ -766,7 +652,6 @@
|
||||
"user.settings.general.lastName": "Último Nome",
|
||||
"user.settings.general.nickname": "Apelido",
|
||||
"user.settings.general.position": "Cargo",
|
||||
"user.settings.general.status": "Status",
|
||||
"user.settings.general.username": "Usuário",
|
||||
"user.settings.modal.display": "Exibição",
|
||||
"user.settings.modal.notifications": "Notificações",
|
||||
@@ -778,10 +663,6 @@
|
||||
"user.settings.notifications.email.never": "Nunca",
|
||||
"user.settings.notifications.email.send": "Enviar notificações por email",
|
||||
"user.settings.notifications.emailInfo": "As notificações por email são enviadas para menções e mensagens diretas quando você estiver offline ou ausente por mais de 5 minutos.",
|
||||
"user.settings.notifications.email_threads.description": "Notifique-me sobre todas as respostas aos tópicos que estou seguindo.",
|
||||
"user.settings.notifications.email_threads.info": "Quando ativado, qualquer resposta a uma conversa que você está seguindo enviará uma notificação por e-mail.",
|
||||
"user.settings.notifications.email_threads.title": "NOTIFICAÇÕES DE RESPOSTA DE TÓPICOS",
|
||||
"user.settings.notifications.email_threads.title_android": "Notificações de resposta do tópico",
|
||||
"user.settings.notifications.never": "Nunca",
|
||||
"user.settings.notifications.onlyMentions": "Somente para menções e mensagens diretas",
|
||||
"user.settings.push_notification.away": "Ausente ou desconectado",
|
||||
|
||||
@@ -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": "dig",
|
||||
"combined_system_message.you": "Du",
|
||||
"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}",
|
||||
@@ -343,7 +343,7 @@
|
||||
"mobile.downloader.disabled_title": "Nedladdning inaktiverat",
|
||||
"mobile.downloader.failed_description": "Ett fel inträffade när filen skulle laddas ner. Kontrollera din anslutning till internet och försök igen.\n",
|
||||
"mobile.downloader.failed_title": "Nedladdning misslyckades",
|
||||
"mobile.drawer.teamsTitle": "Team",
|
||||
"mobile.drawer.teamsTitle": "Grupper",
|
||||
"mobile.edit_channel": "Spara",
|
||||
"mobile.edit_post.title": "Editerar meddelande",
|
||||
"mobile.edit_profile.remove_profile_photo": "Ta bort foto",
|
||||
@@ -561,8 +561,8 @@
|
||||
"mobile.routes.login": "Logga in",
|
||||
"mobile.routes.loginOptions": "Välj inloggningsmetod",
|
||||
"mobile.routes.mfa": "Flerfaktorsautentisering",
|
||||
"mobile.routes.selectChannel": "Välj kanal",
|
||||
"mobile.routes.selectTeam": "Välj team",
|
||||
"mobile.routes.selectChannel": "Ändra kanalnamn",
|
||||
"mobile.routes.selectTeam": "Välj grupp",
|
||||
"mobile.routes.settings": "Inställningar",
|
||||
"mobile.routes.sso": "Auto-inloggning",
|
||||
"mobile.routes.table": "Tabell",
|
||||
@@ -586,7 +586,7 @@
|
||||
"mobile.search.on_modifier_description": "för att hitta inlägg före ett visst datum",
|
||||
"mobile.search.recent_title": "Senaste sökningar",
|
||||
"mobile.select_team.guest_cant_join_team": "Ditt gästkonto finns inte i något team eller kanal. Kontakta en administratör.",
|
||||
"mobile.select_team.join_open": "Öppna team du kan gå med i",
|
||||
"mobile.select_team.join_open": "Öppna grupper du kan gå med i",
|
||||
"mobile.select_team.no_teams": "Det finns inget team tillgängligt för dig att ansluta till.",
|
||||
"mobile.server_link.error.text": "Länken kunde inte hittas på servern.",
|
||||
"mobile.server_link.error.title": "Länk-fel",
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{
|
||||
"about.date": "Yapım tarihi:",
|
||||
"about.enterpriseEditionLearn": "Enterprise paketi hakkında ayrıntılı bilgiyi şuradan alabilirsiniz ",
|
||||
"about.enterpriseEditionLearn": "Enterprise sürüm hakkında şuradan ayrıntılı bilgi alabilirsiniz ",
|
||||
"about.enterpriseEditionSt": "Güvenlik duvarının arkasından modern iletişim.",
|
||||
"about.enterpriseEditione1": "Enterprise paketi",
|
||||
"about.enterpriseEditione1": "Enterprise sürümü",
|
||||
"about.hash": "Yapım karması:",
|
||||
"about.hashee": "Enterprise tarifesi yapım karması:",
|
||||
"about.hashee": "Enterprise sürüm 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 paketi",
|
||||
"about.teamEditiont1": "Enterprise paketi",
|
||||
"about.teamEditiont0": "Team sürümü",
|
||||
"about.teamEditiont1": "Enterprise sürümü",
|
||||
"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.",
|
||||
@@ -107,7 +107,7 @@
|
||||
"channel_notifications.preference.global_default": "Genel varsayılan ({notifyLevel})",
|
||||
"channel_notifications.preference.header": "Bildirimler gönderimi",
|
||||
"channel_notifications.preference.never": "Asla",
|
||||
"channel_notifications.preference.only_mentions": "Yalnızca anmalar ve doğrudan iletiler",
|
||||
"channel_notifications.preference.only_mentions": "Yalnız anmalar ve doğrudan iletiler",
|
||||
"channel_notifications.preference.save_error": "Bildirim ayarı kaydedilemedi. Lütfen bağlantınızı denetleyip yeniden deneyin.",
|
||||
"combined_system_message.added_to_channel.many_expanded": "{users} ve {lastUser} {actor} tarafından **kanala eklendi**.",
|
||||
"combined_system_message.added_to_channel.one": "{firstUser} {actor} tarafından **kanala eklendi**.",
|
||||
@@ -202,8 +202,8 @@
|
||||
"gallery.unsuppored": "Bu dosya türü ön izlenemiyor",
|
||||
"get_post_link_modal.title": "Bağlantıyı kopyala",
|
||||
"global_threads.allThreads": "Tüm konularınız",
|
||||
"global_threads.emptyThreads.message": "Bahsettiğiniz veya katıldığınız tüm konular, izlediğiniz tüm konularla birlikte burada görüntülenir.",
|
||||
"global_threads.emptyThreads.title": "İzlenen bir konu yok",
|
||||
"global_threads.emptyThreads.message": "Bahsettiğiniz veya katıldığınız tüm konular, takip ettiğiniz tüm konularla birlikte burada görüntülenir.",
|
||||
"global_threads.emptyThreads.title": "Takip edilen bir konu yok",
|
||||
"global_threads.emptyUnreads.message": "Tüm konulara bakmışsınız gibi görünüyor.",
|
||||
"global_threads.emptyUnreads.title": "Okunmamış bir konu yok",
|
||||
"global_threads.markAllRead.cancel": "İptal",
|
||||
@@ -222,7 +222,7 @@
|
||||
"intro_messages.creatorPrivate": "{name} özel kanalı, {creator} tarafından {date} tarihinde başlatılmış.",
|
||||
"intro_messages.group_message": "Bu takım arkadaşlarınız ile doğrudan ileti geçmişinizin başlangıcı. Bu bölüm dışındaki kişiler burada paylaşılan doğrudan ileti ve dosyaları göremez.",
|
||||
"intro_messages.noCreator": "{date} tarihinde oluşturulmuş {name} kanalının başlangıcı.",
|
||||
"intro_messages.onlyInvited": " Bu özel kanalı yalnızca çağrılmış üyeler görüntüleyebilir.",
|
||||
"intro_messages.onlyInvited": " Bu özel kanalı yalnız çağrılmış üyeler görüntüleyebilir.",
|
||||
"last_users_message.added_to_channel.type": "{actor} tarafından **kanala eklendiniz**.",
|
||||
"last_users_message.added_to_team.type": "{actor} tarafından **takıma eklendiniz**.",
|
||||
"last_users_message.first": "{firstUser} ve ",
|
||||
@@ -289,7 +289,7 @@
|
||||
"mobile.camera_video_permission_denied_description": "Görüntü çekin ve Mattermost kopyanıza yükleyin ya da aygıtınıza kaydedin. Mattermost uygulamasına kameranızı okuma ve yazma izni vermek için ayarları açın.",
|
||||
"mobile.camera_video_permission_denied_title": "{applicationName} kameranıza erişmek istiyor",
|
||||
"mobile.channel_drawer.search": "Kanal ara",
|
||||
"mobile.channel_info.alertMessageConvertChannel": "{displayName} özel bir kanala dönüştürüldüğünde, geçmiş iletiler ve üyelikler korunur. Herkese açık olarak paylaşılmış dosyalara bağlantıya sahip olan herkes erişmeye devam edebilir. Özel kanallara yalnızca çağrı ile üye olunabilir. \n \nBu değişiklik kalıcıdır ve geri alınamaz.\n\n{displayName} kanalını özel kanala dönüştürmek istediğinize emin misiniz?",
|
||||
"mobile.channel_info.alertMessageConvertChannel": "{displayName} özel bir kanala dönüştürüldüğünde, geçmiş iletiler ve üyelikler korunur. Herkese açık olarak paylaşılmış dosyalara bağlantıya sahip olan herkes erişmeye devam edebilir. Özel kanallara yalnız çağrı ile üye olunabilir. \n \nBu değişiklik kalıcıdır ve geri alınamaz.\n\n{displayName} kanalını özel kanala dönüştürmek istediğinize emin misiniz?",
|
||||
"mobile.channel_info.alertMessageDeleteChannel": "{term} {name} kanalını arşivlemek istediğinize emin misiniz?",
|
||||
"mobile.channel_info.alertMessageLeaveChannel": "{term} {name} kanalından ayrılmak istediğinize emin misiniz?",
|
||||
"mobile.channel_info.alertMessageUnarchiveChannel": "{term} {name} kanalını arşivden çıkarmak istediğinize emin misiniz?",
|
||||
@@ -372,12 +372,12 @@
|
||||
"mobile.file_upload.disabled2": "Mobil uygulamadan dosya yüklemek devre dışı bırakılmış.",
|
||||
"mobile.file_upload.library": "Fotoğraf kitaplığı",
|
||||
"mobile.file_upload.max_warning": "En fazla {count} dosya yüklenebilir.",
|
||||
"mobile.file_upload.unsupportedMimeType": "Profil görseli olarak yalnızca BMP, JPG ya da PNG dosyaları kullanılabilir.",
|
||||
"mobile.file_upload.unsupportedMimeType": "Profil görseli olarak yalnız BMP, JPG ya da PNG dosyaları kullanılabilir.",
|
||||
"mobile.file_upload.video": "Görüntü kitaplığı",
|
||||
"mobile.files_paste.error_description": "Dosyalar yapıştırılırken bir sorun çıktı. Lütfen yeniden deneyin.",
|
||||
"mobile.files_paste.error_dismiss": "Yok say",
|
||||
"mobile.files_paste.error_title": "Yapıştırılamadı",
|
||||
"mobile.flagged_posts.empty_description": "Kaydedilmiş iletileri yalnızca siz görebilirsiniz. İletileri izlemek için işaretleyin ya da bir şeyi kaydetmek için ileti üzerine uzun basıp menüden Kaydet komutunu seçin.",
|
||||
"mobile.flagged_posts.empty_description": "Kaydedilmiş iletileri yalnız siz görebilirsiniz. İletileri takip etmek için işaretleyin ya da bir şeyi kaydetmek için ileti üzerine uzun basıp menüden Kaydet komutunu seçin.",
|
||||
"mobile.flagged_posts.empty_title": "Kaydedilmiş bir ileti yok",
|
||||
"mobile.forms.select.done": "Tamam",
|
||||
"mobile.gallery.title": "{index} / {total}",
|
||||
@@ -447,8 +447,8 @@
|
||||
"mobile.notification_settings.modal_cancel": "İPTAL",
|
||||
"mobile.notification_settings.modal_save": "KAYDET",
|
||||
"mobile.notification_settings.ooo_auto_responder": "Otomatik doğrudan ileti yanıtları",
|
||||
"mobile.notification_settings.push_threads.description": "İzlediğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin",
|
||||
"mobile.notification_settings.push_threads.info": "Bu seçenek etkinleştirildiğinde, izlediğiniz bir konuya yazılan yanıtlar mobil uygulamada anında bildirim olarak iletilir.",
|
||||
"mobile.notification_settings.push_threads.description": "Takip ettiğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin",
|
||||
"mobile.notification_settings.push_threads.info": "Bu seçenek etkinleştirildiğinde, takip ettiğiniz bir konuya yazılan yanıtlar mobil anında bildirim olarak iletilir.",
|
||||
"mobile.notification_settings.push_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
||||
"mobile.notification_settings.push_threads.title_android": "Konu yanıtı bildirimleri",
|
||||
"mobile.notification_settings.save_failed_description": "Bir bağlantı sorunu nedeniyle bildirim ayarları kaydedilemedi. Lütfen yeniden deneyin.",
|
||||
@@ -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. Sunucunun {serverVersion} ya da üzerindeki bir sürüme güncellenmesi 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. Sunucu sürümünün {serverVersion} ya da üzerindeki bir sürüme yükseltilmesi 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 sunucusunu güncellemesi 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 sürümünü yükseltmesi 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",
|
||||
@@ -740,10 +740,10 @@
|
||||
"terms_of_service.api_error": "İstek yerine getirilemedi. Sorun sürerse sistem yöneticiniz ile görüşün.",
|
||||
"threads": "Konular",
|
||||
"threads.deleted": "Özgün ileti silindi",
|
||||
"threads.follow": "İzle",
|
||||
"threads.followMessage": "İletiyi izle",
|
||||
"threads.followThread": "Konuyu izle",
|
||||
"threads.following": "İzleniyor",
|
||||
"threads.follow": "Takip et",
|
||||
"threads.followMessage": "İletiyi takip et",
|
||||
"threads.followThread": "Konuyu takip et",
|
||||
"threads.following": "Takip ediliyor",
|
||||
"threads.newReplies": "{count} yeni {count, plural, one {yanıt} other {yanıt}}",
|
||||
"threads.replies": "{count} {count, plural, one {yanıt} other {yanıt}}",
|
||||
"threads.unfollowMessage": "İletiyi takibi bırak",
|
||||
@@ -778,12 +778,12 @@
|
||||
"user.settings.notifications.email.never": "Asla",
|
||||
"user.settings.notifications.email.send": "E-posta bildirimleri gönderilsin",
|
||||
"user.settings.notifications.emailInfo": "5 dakikadan uzun süre uzak ya da çevrimdışı olduğunuzda anma ve doğrudan iletiler için e-posta bildirimi gönderilir.",
|
||||
"user.settings.notifications.email_threads.description": "İzlediğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin.",
|
||||
"user.settings.notifications.email_threads.info": "Bu seçenek etkinleştirildiğinde, izlediğiniz bir konuya yazılan yanıtlar e-posta bildirimi olarak iletilir.",
|
||||
"user.settings.notifications.email_threads.description": "Takip ettiğim konulara yazılan tüm yanıtlar ile ilgili bildirim gönderilsin.",
|
||||
"user.settings.notifications.email_threads.info": "Bu seçenek etkinleştirildiğinde, takip ettiğiniz bir konuya yazılan yanıtlar e-posta bildirimi olarak iletilir.",
|
||||
"user.settings.notifications.email_threads.title": "KONU YANITI BİLDİRİMLERİ",
|
||||
"user.settings.notifications.email_threads.title_android": "Konu yanıtı bildirimleri",
|
||||
"user.settings.notifications.never": "Asla",
|
||||
"user.settings.notifications.onlyMentions": "Yalnızca anmalar ve doğrudan iletiler için",
|
||||
"user.settings.notifications.onlyMentions": "Yalnız anmalar ve doğrudan iletiler için",
|
||||
"user.settings.push_notification.away": "Uzakta ya da çevrimdışı",
|
||||
"user.settings.push_notification.disabled": "Anında bildirimler devre dışı bırakılmış",
|
||||
"user.settings.push_notification.disabled_long": "Anında bildirimler sistem yöneticiniz tarafından devre dışı bırakılmış.",
|
||||
|
||||
@@ -11,15 +11,7 @@
|
||||
"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": "У цому каналі є гості",
|
||||
@@ -40,7 +32,6 @@
|
||||
"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)\"",
|
||||
@@ -79,7 +70,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} **видалені з каналу**.",
|
||||
@@ -94,26 +85,16 @@
|
||||
"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}",
|
||||
@@ -171,7 +152,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": "Щоб завантажити зображення з вашої бібліотеки, будь-ласка, змініть налаштування вашого дозволу.",
|
||||
@@ -230,7 +211,6 @@
|
||||
"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",
|
||||
@@ -275,24 +255,19 @@
|
||||
"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}, вийдіть з програми.",
|
||||
@@ -358,7 +333,6 @@
|
||||
"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": "Закріпіть важливі повідомлення, видимі для всього каналу. Довго натискайте повідомлення та виберіть Закріпити на каналі, щоб зберегти його тут.",
|
||||
@@ -388,7 +362,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",
|
||||
@@ -434,7 +408,6 @@
|
||||
"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": "Редагувати",
|
||||
@@ -537,7 +510,6 @@
|
||||
"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": "додайте їх до цього приватного каналу",
|
||||
@@ -606,10 +578,9 @@
|
||||
"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": "Сповіщення ",
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
# Notice.txt File Configuration
|
||||
|
||||
We are automatically generating Notice.txt by using first-level dependencies of the project. The related pipeline uses `config.yaml` stored in this folder.
|
||||
|
||||
|
||||
## Configuration
|
||||
|
||||
Notice.txt will be always generated from first-level dependencies scanned from package.json files. For some cases it may be useful to define
|
||||
the dependency to add its licence to the Notice.txt even if it is not a first-level dependency or development dependency.
|
||||
|
||||
For instance, at the desktop project we need to add `wix`'s licence to the Notice.txt even if it is not a first-level dependency. To do that define
|
||||
all dependencies at `dependencies` array at the configuration. For any dependency at `dependencies` section, pipeline code will add their
|
||||
licenses to the Notice.txt file.
|
||||
|
||||
At the webapp project, `webpack` is used in `devDependencies` and it is requested because we are using some files generated by `webpack`. If there is any dependency
|
||||
referenced at `devDependencies` section, pipeline will add those dependency licences when they are referenced at `package.json` files.
|
||||
|
||||
Sample:
|
||||
|
||||
```
|
||||
title: "Mattermost Mobile"
|
||||
copyright: "© 2016-present Mattermost, Inc. All Rights Reserved. See LICENSE.txt for license information."
|
||||
description: "This document includes a list of open source components used in Mattermost Mobile, including those that have been modified."
|
||||
reviewers:
|
||||
- mattermost/release-managers
|
||||
- enahum
|
||||
search:
|
||||
- "package.json"
|
||||
dependencies:
|
||||
- "wix"
|
||||
devDependencies:
|
||||
- "webpack"
|
||||
```
|
||||
|
||||
| Field | Type | Purpose |
|
||||
| :-- | :-- | :-- |
|
||||
| title | string | Field content will be used as a title of the application. See first line of `NOTICE.txt` file. |
|
||||
| copyright | string | Field content will be used as a copyright message. See second line of `NOTICE.txt` file. |
|
||||
| description | string | Field content will be used as notice file description. See third line of `NOTICE.txt` file. |
|
||||
| reviewers | array of GitHub user/teams | Those will be automatically assigned to the PRs as reviewers. |
|
||||
| dependencies | array | If any dependency name mentioned, it will be automatically added even if it is not a first-level dependency. |
|
||||
| devDependencies | array | If any dependency name mentioned, it will be added when it is referenced in devDependency section. |
|
||||
| search | array | Pipeline will search for package.json files mentioned here. Globstar format is supported ie. `packages/**/package.json`. |
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
---
|
||||
|
||||
title: "Mattermost Mobile"
|
||||
copyright: "© 2016-present Mattermost, Inc. All Rights Reserved. See LICENSE.txt for license information."
|
||||
description: "This document includes a list of open source components used in Mattermost Mobile, including those that have been modified."
|
||||
reviewers:
|
||||
- "mattermost/release-managers"
|
||||
- "enahum"
|
||||
search:
|
||||
- "package.json"
|
||||
dependencies: []
|
||||
devDependencies: []
|
||||
|
||||
...
|
||||
24
detox/package-lock.json
generated
24
detox/package-lock.json
generated
@@ -6765,9 +6765,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/moment": {
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
|
||||
"version": "2.29.2",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==",
|
||||
"dev": true,
|
||||
"optional": true,
|
||||
"engines": {
|
||||
@@ -7698,9 +7698,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/shell-quote": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
||||
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
|
||||
"integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/signal-exit": {
|
||||
@@ -13536,9 +13536,9 @@
|
||||
}
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
|
||||
"version": "2.29.2",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
@@ -14258,9 +14258,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"shell-quote": {
|
||||
"version": "1.7.3",
|
||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz",
|
||||
"integrity": "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==",
|
||||
"version": "1.7.2",
|
||||
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
|
||||
"integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
|
||||
"dev": true
|
||||
},
|
||||
"signal-exit": {
|
||||
|
||||
@@ -661,6 +661,14 @@ 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}"
|
||||
@@ -681,14 +689,6 @@ 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(
|
||||
|
||||
@@ -3,25 +3,25 @@ GEM
|
||||
specs:
|
||||
CFPropertyList (3.0.5)
|
||||
rexml
|
||||
addressable (2.8.1)
|
||||
public_suffix (>= 2.0.2, < 6.0)
|
||||
addressable (2.8.0)
|
||||
public_suffix (>= 2.0.2, < 5.0)
|
||||
artifactory (3.0.15)
|
||||
atomos (0.1.3)
|
||||
aws-eventstream (1.2.0)
|
||||
aws-partitions (1.656.0)
|
||||
aws-sdk-core (3.166.0)
|
||||
aws-partitions (1.590.0)
|
||||
aws-sdk-core (3.131.1)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
aws-partitions (~> 1, >= 1.651.0)
|
||||
aws-sigv4 (~> 1.5)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.59.0)
|
||||
aws-sdk-core (~> 3, >= 3.165.0)
|
||||
aws-partitions (~> 1, >= 1.525.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.117.1)
|
||||
aws-sdk-core (~> 3, >= 3.165.0)
|
||||
jmespath (~> 1, >= 1.6.1)
|
||||
aws-sdk-kms (1.57.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sigv4 (~> 1.1)
|
||||
aws-sdk-s3 (1.114.0)
|
||||
aws-sdk-core (~> 3, >= 3.127.0)
|
||||
aws-sdk-kms (~> 1)
|
||||
aws-sigv4 (~> 1.4)
|
||||
aws-sigv4 (1.5.2)
|
||||
aws-sigv4 (1.5.0)
|
||||
aws-eventstream (~> 1, >= 1.0.2)
|
||||
babosa (1.0.4)
|
||||
claide (1.1.0)
|
||||
@@ -34,10 +34,10 @@ GEM
|
||||
rake (>= 12.0.0, < 14.0.0)
|
||||
domain_name (0.5.20190701)
|
||||
unf (>= 0.0.5, < 1.0.0)
|
||||
dotenv (2.8.1)
|
||||
dotenv (2.7.6)
|
||||
emoji_regex (3.2.3)
|
||||
excon (0.93.1)
|
||||
faraday (1.10.2)
|
||||
excon (0.92.3)
|
||||
faraday (1.10.0)
|
||||
faraday-em_http (~> 1.0)
|
||||
faraday-em_synchrony (~> 1.0)
|
||||
faraday-excon (~> 1.1)
|
||||
@@ -56,8 +56,8 @@ GEM
|
||||
faraday-em_synchrony (1.0.0)
|
||||
faraday-excon (1.1.0)
|
||||
faraday-httpclient (1.0.1)
|
||||
faraday-multipart (1.0.4)
|
||||
multipart-post (~> 2)
|
||||
faraday-multipart (1.0.3)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
faraday-net_http (1.0.1)
|
||||
faraday-net_http_persistent (1.2.0)
|
||||
faraday-patron (1.0.0)
|
||||
@@ -66,7 +66,7 @@ GEM
|
||||
faraday_middleware (1.2.0)
|
||||
faraday (~> 1.0)
|
||||
fastimage (2.2.6)
|
||||
fastlane (2.210.1)
|
||||
fastlane (2.206.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.31.0)
|
||||
google-apis-core (>= 0.9.1, < 2.a)
|
||||
google-apis-core (0.9.1)
|
||||
google-apis-androidpublisher_v3 (0.21.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.5.0)
|
||||
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.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-apis-iamcredentials_v1 (0.10.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-playcustomapp_v1 (0.7.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-storage_v1 (0.14.0)
|
||||
google-apis-core (>= 0.4, < 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.3.0)
|
||||
google-cloud-storage (1.44.0)
|
||||
google-cloud-errors (1.2.0)
|
||||
google-cloud-storage (1.36.2)
|
||||
addressable (~> 2.8)
|
||||
digest-crc (~> 0.4)
|
||||
google-apis-iamcredentials_v1 (~> 0.1)
|
||||
google-apis-storage_v1 (~> 0.19.0)
|
||||
google-apis-storage_v1 (~> 0.1)
|
||||
google-cloud-core (~> 1.6)
|
||||
googleauth (>= 0.16.2, < 2.a)
|
||||
mini_mime (~> 1.0)
|
||||
googleauth (1.3.0)
|
||||
googleauth (1.1.3)
|
||||
faraday (>= 0.17.3, < 3.a)
|
||||
jwt (>= 1.4, < 3.0)
|
||||
memoist (~> 0.16)
|
||||
@@ -150,12 +150,12 @@ GEM
|
||||
os (>= 0.9, < 2.0)
|
||||
signet (>= 0.16, < 2.a)
|
||||
highline (2.0.3)
|
||||
http-cookie (1.0.5)
|
||||
http-cookie (1.0.4)
|
||||
domain_name (~> 0.5)
|
||||
httpclient (2.8.3)
|
||||
jmespath (1.6.1)
|
||||
json (2.6.2)
|
||||
jwt (2.5.0)
|
||||
jwt (2.3.0)
|
||||
memoist (0.16.2)
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.2)
|
||||
@@ -164,13 +164,13 @@ GEM
|
||||
multipart-post (2.0.0)
|
||||
nanaimo (0.3.0)
|
||||
naturally (2.2.1)
|
||||
nokogiri (1.13.9)
|
||||
nokogiri (1.13.6)
|
||||
mini_portile2 (~> 2.8.0)
|
||||
racc (~> 1.4)
|
||||
optparse (0.1.1)
|
||||
os (1.1.4)
|
||||
plist (3.6.0)
|
||||
public_suffix (5.0.0)
|
||||
public_suffix (4.0.7)
|
||||
racc (1.6.0)
|
||||
rake (13.0.6)
|
||||
representable (3.2.0)
|
||||
@@ -183,9 +183,9 @@ GEM
|
||||
ruby2_keywords (0.0.5)
|
||||
rubyzip (2.3.2)
|
||||
security (0.1.3)
|
||||
signet (0.17.0)
|
||||
signet (0.16.1)
|
||||
addressable (~> 2.8)
|
||||
faraday (>= 0.17.5, < 3.a)
|
||||
faraday (>= 0.17.5, < 3.0)
|
||||
jwt (>= 1.5, < 3.0)
|
||||
multi_json (~> 1.10)
|
||||
simctl (1.6.8)
|
||||
@@ -203,11 +203,11 @@ GEM
|
||||
uber (0.1.0)
|
||||
unf (0.1.4)
|
||||
unf_ext
|
||||
unf_ext (0.0.8.2)
|
||||
unf_ext (0.0.8.1)
|
||||
unicode-display_width (1.8.0)
|
||||
webrick (1.7.0)
|
||||
word_wrap (1.0.0)
|
||||
xcodeproj (1.22.0)
|
||||
xcodeproj (1.21.0)
|
||||
CFPropertyList (>= 2.3.3, < 4.0)
|
||||
atomos (~> 0.1.3)
|
||||
claide (>= 1.0.2, < 2.0)
|
||||
|
||||
4
index.js
4
index.js
@@ -3,14 +3,10 @@
|
||||
|
||||
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');
|
||||
}
|
||||
|
||||
@@ -911,8 +911,8 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 436;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
CURRENT_PROJECT_VERSION = 404;
|
||||
DEAD_CODE_STRIPPING = NO;
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
ENABLE_BITCODE = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
@@ -953,8 +953,8 @@
|
||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 436;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
CURRENT_PROJECT_VERSION = 404;
|
||||
DEAD_CODE_STRIPPING = NO;
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
ENABLE_BITCODE = NO;
|
||||
HEADER_SEARCH_PATHS = (
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.56.0</string>
|
||||
<string>1.53.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
@@ -37,7 +37,7 @@
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>436</string>
|
||||
<string>404</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.56.0</string>
|
||||
<string>1.53.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>436</string>
|
||||
<string>404</string>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>1.56.0</string>
|
||||
<string>1.53.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>436</string>
|
||||
<string>404</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
|
||||
@@ -38,11 +38,6 @@ 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
|
||||
|
||||
420
ios/Podfile.lock
420
ios/Podfile.lock
@@ -3,14 +3,14 @@ PODS:
|
||||
- BVLinearGradient (2.5.6):
|
||||
- React
|
||||
- DoubleConversion (1.1.6)
|
||||
- FBLazyVector (0.67.5)
|
||||
- FBReactNativeSpec (0.67.5):
|
||||
- FBLazyVector (0.67.2)
|
||||
- FBReactNativeSpec (0.67.2):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.67.5)
|
||||
- RCTTypeSafety (= 0.67.5)
|
||||
- React-Core (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- ReactCommon/turbomodule/core (= 0.67.5)
|
||||
- RCTRequired (= 0.67.2)
|
||||
- RCTTypeSafety (= 0.67.2)
|
||||
- React-Core (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- ReactCommon/turbomodule/core (= 0.67.2)
|
||||
- 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.5)
|
||||
- RCTTypeSafety (0.67.5):
|
||||
- FBLazyVector (= 0.67.5)
|
||||
- RCTRequired (0.67.2)
|
||||
- RCTTypeSafety (0.67.2):
|
||||
- FBLazyVector (= 0.67.2)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.67.5)
|
||||
- React-Core (= 0.67.5)
|
||||
- RCTRequired (= 0.67.2)
|
||||
- React-Core (= 0.67.2)
|
||||
- RCTYouTube (2.0.2):
|
||||
- React
|
||||
- YoutubePlayer-in-WKWebView (~> 0.3.1)
|
||||
- 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):
|
||||
- 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):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.67.5):
|
||||
- React-Core/CoreModulesHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/Default (0.67.5):
|
||||
- React-Core/Default (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.67.5):
|
||||
- React-Core/DevSupport (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.67.5):
|
||||
- React-Core/RCTActionSheetHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.67.5):
|
||||
- React-Core/RCTAnimationHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.67.5):
|
||||
- React-Core/RCTBlobHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.67.5):
|
||||
- React-Core/RCTImageHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.67.5):
|
||||
- React-Core/RCTLinkingHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.67.5):
|
||||
- React-Core/RCTNetworkHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.67.5):
|
||||
- React-Core/RCTSettingsHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.67.5):
|
||||
- React-Core/RCTTextHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.67.5):
|
||||
- React-Core/RCTVibrationHeaders (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.5)
|
||||
- React-jsi (= 0.67.5)
|
||||
- React-jsiexecutor (= 0.67.5)
|
||||
- React-perflogger (= 0.67.5)
|
||||
- React-cxxreact (= 0.67.2)
|
||||
- React-jsi (= 0.67.2)
|
||||
- React-jsiexecutor (= 0.67.2)
|
||||
- React-perflogger (= 0.67.2)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.67.5):
|
||||
- React-Core/RCTWebSocket (0.67.2):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- Yoga
|
||||
- React-CoreModules (0.67.5):
|
||||
- FBReactNativeSpec (= 0.67.5)
|
||||
- React-CoreModules (0.67.2):
|
||||
- FBReactNativeSpec (= 0.67.2)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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):
|
||||
- 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):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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):
|
||||
- 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):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsi/Default (= 0.67.5)
|
||||
- React-jsi/Default (0.67.5):
|
||||
- React-jsi/Default (= 0.67.2)
|
||||
- React-jsi/Default (0.67.2):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsiexecutor (0.67.5):
|
||||
- React-jsiexecutor (0.67.2):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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):
|
||||
- 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):
|
||||
- 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.3.1):
|
||||
- react-native-notifications (4.1.3):
|
||||
- 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.5)
|
||||
- React-RCTActionSheet (0.67.5):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.67.5)
|
||||
- React-RCTAnimation (0.67.5):
|
||||
- FBReactNativeSpec (= 0.67.5)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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):
|
||||
- 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):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- 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)
|
||||
- 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)
|
||||
- ReactNativeExceptionHandler (2.10.10):
|
||||
- React-Core
|
||||
- ReactNativeIncallManager (3.3.0):
|
||||
@@ -730,8 +730,8 @@ SPEC CHECKSUMS:
|
||||
boost: a7c83b31436843459a1961bfd74b96033dc77234
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
||||
FBLazyVector: d2db9d00883282819d03bbd401b2ad4360d47580
|
||||
FBReactNativeSpec: 94da4d84ba3b1acf459103320882daa481a2b62d
|
||||
FBLazyVector: 244195e30d63d7f564c55da4410b9a24e8fbceaa
|
||||
FBReactNativeSpec: c94002c1d93da3658f4d5119c6994d19961e3d52
|
||||
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
||||
glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85
|
||||
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
||||
@@ -747,18 +747,18 @@ SPEC CHECKSUMS:
|
||||
Permission-PhotoLibrary: 7bec836dcdd04a0bfb200c314f1aae06d4476357
|
||||
Permission-PhotoLibraryAddOnly: 06fb0cdb1d35683b235ad8c464ef0ecc88859ea3
|
||||
RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685
|
||||
RCTRequired: 412e994c1e570cf35378a32c18fd46e50634938b
|
||||
RCTTypeSafety: ef27340c728e6d673af345ed69e479a010c8a2d8
|
||||
RCTRequired: cd47794163052d2b8318c891a7a14fcfaccc75ab
|
||||
RCTTypeSafety: 393bb40b3e357b224cde53d3fec26813c52428b1
|
||||
RCTYouTube: a8bb45705622a6fc9decf64be04128d3658ed411
|
||||
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: 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-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: 33ec77006f7987bb22de8f1665889abc633b9196
|
||||
react-native-notifications: 805108822ceff3440644d5701944f0cda35f5b4b
|
||||
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: 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
|
||||
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
|
||||
ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60
|
||||
ReactNativeIncallManager: 642c22630caadff0a0619413aff4a9da08d63df9
|
||||
ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306
|
||||
@@ -819,9 +819,9 @@ SPEC CHECKSUMS:
|
||||
Sentry: 2f7e91f247cfb05b05bd01e0b5d0692557a7687b
|
||||
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
|
||||
XCDYouTubeKit: b120aced3d8638ffb570c5450cddb5a1dac448c7
|
||||
Yoga: 099a946cbf84c9b32ffdc4278d72db26710ecf92
|
||||
Yoga: 9b6696970c3289e8dea34b3eda93f23e61fb8121
|
||||
YoutubePlayer-in-WKWebView: 4fca3b4f6f09940077bfbae7bddb771f2b43aacd
|
||||
|
||||
PODFILE CHECKSUM: f291d3248a7b8e74342008fb662bad0b0e1b7589
|
||||
PODFILE CHECKSUM: 8214414d5676358401d8ad51dff19e7fd8c71b5c
|
||||
|
||||
COCOAPODS: 1.11.2
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
346
package-lock.json
generated
346
package-lock.json
generated
@@ -1,12 +1,11 @@
|
||||
{
|
||||
"name": "mattermost-mobile",
|
||||
"version": "1.56.0",
|
||||
"version": "1.53.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "mattermost-mobile",
|
||||
"version": "1.56.0",
|
||||
"version": "1.51.0",
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache 2.0",
|
||||
"dependencies": {
|
||||
@@ -43,7 +42,7 @@
|
||||
"prop-types": "15.8.1",
|
||||
"react": "17.0.2",
|
||||
"react-intl": "2.8.0",
|
||||
"react-native": "0.67.5",
|
||||
"react-native": "0.67.2",
|
||||
"react-native-android-open-settings": "1.3.0",
|
||||
"react-native-animatable": "1.3.3",
|
||||
"react-native-button": "3.0.1",
|
||||
@@ -68,7 +67,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.3.1",
|
||||
"react-native-notifications": "4.1.3",
|
||||
"react-native-passcode-status": "1.1.2",
|
||||
"react-native-permissions": "3.2.0",
|
||||
"react-native-reanimated": "2.3.1",
|
||||
@@ -2863,70 +2862,6 @@
|
||||
"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",
|
||||
@@ -17480,9 +17415,9 @@
|
||||
"integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ=="
|
||||
},
|
||||
"node_modules/moment": {
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==",
|
||||
"version": "2.29.2",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg==",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
@@ -19357,9 +19292,9 @@
|
||||
"integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ=="
|
||||
},
|
||||
"node_modules/react-native": {
|
||||
"version": "0.67.5",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.5.tgz",
|
||||
"integrity": "sha512-/xEksthqImZGDfcqzEmbOw0KRkp9/x+cC8T8uTHhSKLLa8pOFLGdF190UOjnLammGmAmFy0+ZcJf0Ujm53IGeA==",
|
||||
"version": "0.67.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz",
|
||||
"integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==",
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^27.0.1",
|
||||
"@react-native-community/cli": "^6.0.0",
|
||||
@@ -19691,12 +19626,12 @@
|
||||
"integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ=="
|
||||
},
|
||||
"node_modules/react-native-notifications": {
|
||||
"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==",
|
||||
"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==",
|
||||
"peerDependencies": {
|
||||
"react": "*",
|
||||
"react-native": "*"
|
||||
"react": ">=0.14.5",
|
||||
"react-native": ">=0.25.1"
|
||||
}
|
||||
},
|
||||
"node_modules/react-native-passcode-status": {
|
||||
@@ -22580,15 +22515,14 @@
|
||||
}
|
||||
},
|
||||
"node_modules/terser": {
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"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": {
|
||||
@@ -22596,6 +22530,14 @@
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"acorn": "^8.5.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"acorn": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/terser-webpack-plugin": {
|
||||
@@ -22703,6 +22645,16 @@
|
||||
"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",
|
||||
@@ -26065,66 +26017,12 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@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",
|
||||
@@ -26176,7 +26074,8 @@
|
||||
"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",
|
||||
@@ -26926,7 +26825,8 @@
|
||||
"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",
|
||||
@@ -27031,7 +26931,8 @@
|
||||
"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",
|
||||
@@ -27061,13 +26962,15 @@
|
||||
"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",
|
||||
@@ -27108,7 +27011,8 @@
|
||||
"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",
|
||||
@@ -28058,7 +27962,8 @@
|
||||
"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",
|
||||
@@ -28074,7 +27979,8 @@
|
||||
"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",
|
||||
@@ -28159,14 +28065,16 @@
|
||||
"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",
|
||||
@@ -28554,7 +28462,8 @@
|
||||
"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",
|
||||
@@ -30862,7 +30771,8 @@
|
||||
"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",
|
||||
@@ -30989,7 +30899,8 @@
|
||||
"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",
|
||||
@@ -34631,7 +34542,8 @@
|
||||
"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",
|
||||
@@ -35452,7 +35364,8 @@
|
||||
"integrity": "sha512-Kbk4Nxyq7/ZWqr/tarI9yIt/+iNNFOjBXEWgTb4ydaNHBNGgvf2QHbS9fdfsndfjFlFwEd4Al+mw83YkaD10ZA==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {}
|
||||
"requires": {
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -35461,7 +35374,8 @@
|
||||
"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",
|
||||
@@ -37464,9 +37378,9 @@
|
||||
"integrity": "sha512-iniQP4rj1FhBdBYS/+eQv7j1tadJ9lJtdzgOpvsOHng/GbcDh2Fhdeq+ZRldrPYdXvCyfFUmFeEwEGXZB5I/AQ=="
|
||||
},
|
||||
"moment": {
|
||||
"version": "2.29.4",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz",
|
||||
"integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w=="
|
||||
"version": "2.29.2",
|
||||
"resolved": "https://registry.npmjs.org/moment/-/moment-2.29.2.tgz",
|
||||
"integrity": "sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg=="
|
||||
},
|
||||
"moment-timezone": {
|
||||
"version": "0.5.34",
|
||||
@@ -38879,7 +38793,8 @@
|
||||
"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",
|
||||
@@ -38911,9 +38826,9 @@
|
||||
"integrity": "sha512-txfpPCQYiazVdcbMRhatqWKcAxJweUu2wDXvts5/7Wyp6+Y9cHojqXHsLPEckzutfHlxZhG8Oiundbmp8Fd6eQ=="
|
||||
},
|
||||
"react-native": {
|
||||
"version": "0.67.5",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.5.tgz",
|
||||
"integrity": "sha512-/xEksthqImZGDfcqzEmbOw0KRkp9/x+cC8T8uTHhSKLLa8pOFLGdF190UOjnLammGmAmFy0+ZcJf0Ujm53IGeA==",
|
||||
"version": "0.67.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.67.2.tgz",
|
||||
"integrity": "sha512-grEtpOLLvtSg8Bivg0ffVRCjTkresqMt7Jdog/geF6VAYhb4RnLaaUCWvyrfyB9buf135FKnqg5BIuve/XQNXA==",
|
||||
"requires": {
|
||||
"@jest/create-cache-key-function": "^27.0.1",
|
||||
"@react-native-community/cli": "^6.0.0",
|
||||
@@ -39087,7 +39002,8 @@
|
||||
"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",
|
||||
@@ -39125,19 +39041,22 @@
|
||||
"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",
|
||||
@@ -39155,36 +39074,42 @@
|
||||
"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",
|
||||
@@ -39195,19 +39120,22 @@
|
||||
"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",
|
||||
@@ -39224,7 +39152,8 @@
|
||||
"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",
|
||||
@@ -39246,10 +39175,11 @@
|
||||
}
|
||||
},
|
||||
"react-native-notifications": {
|
||||
"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": {}
|
||||
"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": {
|
||||
}
|
||||
},
|
||||
"react-native-passcode-status": {
|
||||
"version": "1.1.2",
|
||||
@@ -39260,7 +39190,8 @@
|
||||
"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",
|
||||
@@ -39318,7 +39249,8 @@
|
||||
"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",
|
||||
@@ -39343,7 +39275,8 @@
|
||||
"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",
|
||||
@@ -39357,7 +39290,8 @@
|
||||
"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",
|
||||
@@ -39722,7 +39656,8 @@
|
||||
"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",
|
||||
@@ -39737,7 +39672,8 @@
|
||||
"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",
|
||||
@@ -39766,7 +39702,8 @@
|
||||
"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",
|
||||
@@ -40109,7 +40046,8 @@
|
||||
"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",
|
||||
@@ -40425,7 +40363,8 @@
|
||||
"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",
|
||||
@@ -41432,15 +41371,14 @@
|
||||
}
|
||||
},
|
||||
"terser": {
|
||||
"version": "5.14.2",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz",
|
||||
"integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==",
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz",
|
||||
"integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==",
|
||||
"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": {
|
||||
@@ -41450,6 +41388,13 @@
|
||||
"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
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -41486,7 +41431,8 @@
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {}
|
||||
"requires": {
|
||||
}
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
@@ -42214,7 +42160,8 @@
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==",
|
||||
"dev": true,
|
||||
"peer": true,
|
||||
"requires": {}
|
||||
"requires": {
|
||||
}
|
||||
},
|
||||
"json-schema-traverse": {
|
||||
"version": "0.4.1",
|
||||
@@ -42488,7 +42435,8 @@
|
||||
"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",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "mattermost-mobile",
|
||||
"version": "1.56.0",
|
||||
"version": "1.53.0",
|
||||
"description": "Mattermost Mobile with React Native",
|
||||
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
||||
"author": "Mattermost, Inc.",
|
||||
@@ -40,7 +40,7 @@
|
||||
"prop-types": "15.8.1",
|
||||
"react": "17.0.2",
|
||||
"react-intl": "2.8.0",
|
||||
"react-native": "0.67.5",
|
||||
"react-native": "0.67.2",
|
||||
"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.3.1",
|
||||
"react-native-notifications": "4.1.3",
|
||||
"react-native-passcode-status": "1.1.2",
|
||||
"react-native-permissions": "3.2.0",
|
||||
"react-native-reanimated": "2.3.1",
|
||||
|
||||
@@ -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 24cd226..4bfacba 100644
|
||||
index abd988a..4ac4725 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 24cd226..4bfacba 100644
|
||||
<application>
|
||||
|
||||
<!--
|
||||
@@ -23,6 +24,9 @@
|
||||
@@ -22,6 +23,9 @@
|
||||
android:name=".fcm.FcmInstanceIdRefreshHandlerService"
|
||||
android:exported="false"
|
||||
android:permission="android.permission.BIND_JOB_SERVICE" />
|
||||
@@ -21,19 +21,10 @@ index 24cd226..4bfacba 100644
|
||||
|
||||
</manifest>
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
index 90969b2..36a9a84 100644
|
||||
index db9eaba..af65d0e 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
@@ -63,7 +63,7 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements
|
||||
@Override
|
||||
public void onNewIntent(Intent intent) {
|
||||
if (NotificationIntentAdapter.canHandleIntent(intent)) {
|
||||
- Bundle notificationData = intent.getExtras();
|
||||
+ Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent);
|
||||
final IPushNotification notification = PushNotification.get(getReactApplicationContext().getApplicationContext(), notificationData);
|
||||
if (notification != null) {
|
||||
notification.onOpened();
|
||||
@@ -102,7 +102,18 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements
|
||||
@@ -100,7 +100,12 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements
|
||||
if(BuildConfig.DEBUG) Log.d(LOGTAG, "Native method invocation: postLocalNotification");
|
||||
final Bundle notificationProps = Arguments.toBundle(notificationPropsMap);
|
||||
final IPushNotification pushNotification = PushNotification.get(getReactApplicationContext().getApplicationContext(), notificationProps);
|
||||
@@ -44,82 +35,28 @@ index 90969b2..36a9a84 100644
|
||||
+ } else {
|
||||
+ pushNotification.onScheduleRequest(notificationId);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
@@ -109,6 +114,12 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements
|
||||
notificationsDrawer.onNotificationClearRequest(notificationId);
|
||||
}
|
||||
|
||||
+ @ReactMethod
|
||||
+ public void cancelAllLocalNotifications() {
|
||||
+ IPushNotificationsDrawer notificationDrawer = PushNotificationsDrawer.get(getReactApplicationContext().getApplicationContext());
|
||||
+ notificationDrawer.onCancelAllLocalNotifications();
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
index eadf41e..3279431 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
@@ -15,6 +15,7 @@ import com.wix.reactnativenotifications.core.AppLifecycleFacade;
|
||||
import com.wix.reactnativenotifications.core.AppLifecycleFacadeHolder;
|
||||
import com.wix.reactnativenotifications.core.InitialNotificationHolder;
|
||||
import com.wix.reactnativenotifications.core.NotificationIntentAdapter;
|
||||
+import com.wix.reactnativenotifications.core.ReactAppLifecycleFacade;
|
||||
import com.wix.reactnativenotifications.core.notification.IPushNotification;
|
||||
import com.wix.reactnativenotifications.core.notification.PushNotification;
|
||||
import com.wix.reactnativenotifications.core.notification.PushNotificationProps;
|
||||
@@ -67,7 +68,12 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade.
|
||||
|
||||
@Override
|
||||
public void onActivityStarted(Activity activity) {
|
||||
- if (InitialNotificationHolder.getInstance().get() == null) {
|
||||
+ boolean isInitialized = false;
|
||||
+ if (AppLifecycleFacadeHolder.get() instanceof ReactAppLifecycleFacade) {
|
||||
+ isInitialized = AppLifecycleFacadeHolder.get().isReactInitialized();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (!isInitialized && InitialNotificationHolder.getInstance().get() == null) {
|
||||
callOnOpenedIfNeed(activity);
|
||||
}
|
||||
}
|
||||
@@ -96,8 +102,7 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade.
|
||||
Intent intent = activity.getIntent();
|
||||
if (NotificationIntentAdapter.canHandleIntent(intent)) {
|
||||
Context appContext = mApplication.getApplicationContext();
|
||||
- Bundle notificationData = NotificationIntentAdapter.cannotHandleTrampolineActivity(appContext) ?
|
||||
- NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent) : intent.getExtras();
|
||||
+ Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent);
|
||||
final IPushNotification pushNotification = PushNotification.get(appContext, notificationData);
|
||||
if (pushNotification != null) {
|
||||
pushNotification.onOpened();
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
index 41b4824..4285ac5 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
@@ -14,17 +14,9 @@ public class NotificationIntentAdapter {
|
||||
|
||||
@SuppressLint("UnspecifiedImmutableFlag")
|
||||
public static PendingIntent createPendingNotificationIntent(Context appContext, PushNotificationProps notification) {
|
||||
- if (cannotHandleTrampolineActivity(appContext)) {
|
||||
- Intent mainActivityIntent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName());
|
||||
- mainActivityIntent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
- TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(appContext);
|
||||
- taskStackBuilder.addNextIntentWithParentStack(mainActivityIntent);
|
||||
- return taskStackBuilder.getPendingIntent((int) System.currentTimeMillis(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
|
||||
- } else {
|
||||
- Intent intent = new Intent(appContext, ProxyService.class);
|
||||
- intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
- return PendingIntent.getService(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
|
||||
- }
|
||||
+ Intent intent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName());
|
||||
+ intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
+ return PendingIntent.getActivity(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
|
||||
}
|
||||
|
||||
public static boolean cannotHandleTrampolineActivity(Context appContext) {
|
||||
@ReactMethod
|
||||
public void setCategories(ReadableArray categories) {
|
||||
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java
|
||||
new file mode 100644
|
||||
index 0000000..433c754
|
||||
index 0000000..dde4a2c
|
||||
--- /dev/null
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/helpers/ScheduleNotificationHelper.java
|
||||
@@ -0,0 +1,91 @@
|
||||
@@ -0,0 +1,89 @@
|
||||
+package com.wix.reactnativenotifications.core.helpers;
|
||||
+
|
||||
+import android.app.AlarmManager;
|
||||
@@ -160,15 +97,13 @@ index 0000000..433c754
|
||||
+ Intent notificationIntent = new Intent(mContext, PushNotificationPublisher.class);
|
||||
+ notificationIntent.putExtra(ScheduleNotificationHelper.NOTIFICATION_ID, notificationId);
|
||||
+ notificationIntent.putExtras(bundle);
|
||||
+ return PendingIntent.getBroadcast(mContext, notificationId, notificationIntent, PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
+ return PendingIntent.getBroadcast(mContext, notificationId, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||
+ }
|
||||
+
|
||||
+ public void schedulePendingNotificationIntent(PendingIntent intent, long fireDate) {
|
||||
+ AlarmManager alarmManager = (AlarmManager) mContext.getSystemService(Context.ALARM_SERVICE);
|
||||
+
|
||||
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||
+ alarmManager.set(AlarmManager.RTC_WAKEUP, fireDate, intent);
|
||||
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
|
||||
+ alarmManager.setExact(AlarmManager.RTC_WAKEUP, fireDate, intent);
|
||||
+ } else {
|
||||
+ alarmManager.set(AlarmManager.RTC_WAKEUP, fireDate, intent);
|
||||
@@ -238,7 +173,7 @@ index 0d70024..b9e6c88 100644
|
||||
PushNotificationProps asProps();
|
||||
}
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
index 54a5fb8..f38881e 100644
|
||||
index fe1fb94..c9e0301 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
@@ -8,6 +8,10 @@ import android.content.Context;
|
||||
@@ -252,17 +187,17 @@ index 54a5fb8..f38881e 100644
|
||||
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.wix.reactnativenotifications.core.AppLaunchHelper;
|
||||
@@ -17,7 +21,9 @@ import com.wix.reactnativenotifications.core.AppLifecycleFacadeHolder;
|
||||
import com.wix.reactnativenotifications.core.InitialNotificationHolder;
|
||||
@@ -18,7 +22,9 @@ import com.wix.reactnativenotifications.core.InitialNotificationHolder;
|
||||
import com.wix.reactnativenotifications.core.JsIOHelper;
|
||||
import com.wix.reactnativenotifications.core.NotificationIntentAdapter;
|
||||
import com.wix.reactnativenotifications.core.ProxyService;
|
||||
+import com.wix.reactnativenotifications.core.helpers.ScheduleNotificationHelper;
|
||||
|
||||
+import static com.wix.reactnativenotifications.Defs.LOGTAG;
|
||||
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_OPENED_EVENT_NAME;
|
||||
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_EVENT_NAME;
|
||||
import static com.wix.reactnativenotifications.Defs.NOTIFICATION_RECEIVED_BACKGROUND_EVENT_NAME;
|
||||
@@ -28,7 +34,7 @@ public class PushNotification implements IPushNotification {
|
||||
@@ -29,7 +35,7 @@ public class PushNotification implements IPushNotification {
|
||||
final protected AppLifecycleFacade mAppLifecycleFacade;
|
||||
final protected AppLaunchHelper mAppLaunchHelper;
|
||||
final protected JsIOHelper mJsIOHelper;
|
||||
@@ -271,7 +206,7 @@ index 54a5fb8..f38881e 100644
|
||||
final protected AppVisibilityListener mAppVisibilityListener = new AppVisibilityListener() {
|
||||
@Override
|
||||
public void onAppVisible() {
|
||||
@@ -61,7 +67,7 @@ public class PushNotification implements IPushNotification {
|
||||
@@ -62,7 +68,7 @@ public class PushNotification implements IPushNotification {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -280,8 +215,8 @@ index 54a5fb8..f38881e 100644
|
||||
if (!mAppLifecycleFacade.isAppVisible()) {
|
||||
postNotification(null);
|
||||
notifyReceivedBackgroundToJS();
|
||||
@@ -70,6 +76,41 @@ public class PushNotification implements IPushNotification {
|
||||
}
|
||||
@@ -81,6 +87,41 @@ public class PushNotification implements IPushNotification {
|
||||
return postNotification(notificationId);
|
||||
}
|
||||
|
||||
+ @Override
|
||||
@@ -320,9 +255,9 @@ index 54a5fb8..f38881e 100644
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
public void onOpened() {
|
||||
digestNotification();
|
||||
@@ -140,15 +181,16 @@ public class PushNotification implements IPushNotification {
|
||||
public PushNotificationProps asProps() {
|
||||
return mNotificationProps.copy();
|
||||
@@ -143,15 +184,16 @@ public class PushNotification implements IPushNotification {
|
||||
}
|
||||
|
||||
protected Notification buildNotification(PendingIntent intent) {
|
||||
@@ -343,7 +278,7 @@ index 54a5fb8..f38881e 100644
|
||||
.setAutoCancel(true);
|
||||
|
||||
setUpIcon(notification);
|
||||
@@ -163,7 +205,7 @@ public class PushNotification implements IPushNotification {
|
||||
@@ -166,7 +208,7 @@ public class PushNotification implements IPushNotification {
|
||||
return notification;
|
||||
}
|
||||
|
||||
@@ -352,7 +287,7 @@ index 54a5fb8..f38881e 100644
|
||||
int iconResId = getAppResourceId("notification_icon", "drawable");
|
||||
if (iconResId != 0) {
|
||||
notification.setSmallIcon(iconResId);
|
||||
@@ -174,7 +216,7 @@ public class PushNotification implements IPushNotification {
|
||||
@@ -177,7 +219,7 @@ public class PushNotification implements IPushNotification {
|
||||
setUpIconColor(notification);
|
||||
}
|
||||
|
||||
@@ -361,7 +296,7 @@ index 54a5fb8..f38881e 100644
|
||||
int colorResID = getAppResourceId("colorAccent", "color");
|
||||
if (colorResID != 0 && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
int color = mContext.getResources().getColor(colorResID);
|
||||
@@ -189,7 +231,7 @@ public class PushNotification implements IPushNotification {
|
||||
@@ -192,7 +234,7 @@ public class PushNotification implements IPushNotification {
|
||||
}
|
||||
|
||||
protected void postNotification(int id, Notification notification) {
|
||||
@@ -372,7 +307,7 @@ index 54a5fb8..f38881e 100644
|
||||
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java
|
||||
new file mode 100644
|
||||
index 0000000..58ff887
|
||||
index 0000000..5b64593
|
||||
--- /dev/null
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotificationPublisher.java
|
||||
@@ -0,0 +1,27 @@
|
||||
@@ -403,6 +338,7 @@ index 0000000..58ff887
|
||||
+ pushNotification.onPostScheduledRequest(notificationId);
|
||||
+ }
|
||||
+}
|
||||
\ No newline at end of file
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java
|
||||
index e22cd62..48aa1cd 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/IPushNotificationsDrawer.java
|
||||
@@ -414,7 +350,7 @@ index e22cd62..48aa1cd 100644
|
||||
+ void onCancelAllLocalNotifications();
|
||||
}
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java
|
||||
index a14089f..7aedafc 100644
|
||||
index a14089f..1262e6d 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notificationdrawer/PushNotificationsDrawer.java
|
||||
@@ -2,9 +2,15 @@ package com.wix.reactnativenotifications.core.notificationdrawer;
|
||||
@@ -433,26 +369,10 @@ index a14089f..7aedafc 100644
|
||||
|
||||
public class PushNotificationsDrawer implements IPushNotificationsDrawer {
|
||||
|
||||
@@ -49,17 +55,56 @@ public class PushNotificationsDrawer implements IPushNotificationsDrawer {
|
||||
public void onNotificationClearRequest(int id) {
|
||||
final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.cancel(id);
|
||||
+ cancelScheduledNotification(String.valueOf(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotificationClearRequest(String tag, int id) {
|
||||
final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.cancel(tag, id);
|
||||
+ cancelScheduledNotification(String.valueOf(id));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAllNotificationsClearRequest() {
|
||||
@@ -62,4 +68,37 @@ public class PushNotificationsDrawer implements IPushNotificationsDrawer {
|
||||
final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
notificationManager.cancelAll();
|
||||
+ cancelAllScheduledNotifications();
|
||||
+ }
|
||||
}
|
||||
+
|
||||
+ @Override
|
||||
+ public void onCancelAllLocalNotifications() {
|
||||
@@ -473,9 +393,6 @@ index a14089f..7aedafc 100644
|
||||
+ Log.i(LOGTAG, "Cancelling scheduled notification: " + notificationId);
|
||||
+
|
||||
+ ScheduleNotificationHelper helper = ScheduleNotificationHelper.getInstance(mContext);
|
||||
+ if (!helper.getPreferencesKeys().contains(notificationId)) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // Remove it from the alarm manger schedule
|
||||
+ Bundle bundle = new Bundle();
|
||||
@@ -488,7 +405,7 @@ index a14089f..7aedafc 100644
|
||||
+ // Remove it from the notification center
|
||||
+ final NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
|
||||
+ notificationManager.cancel(Integer.parseInt(notificationId));
|
||||
}
|
||||
+ }
|
||||
}
|
||||
diff --git a/node_modules/react-native-notifications/lib/dist/DTO/Notification.d.ts b/node_modules/react-native-notifications/lib/dist/DTO/Notification.d.ts
|
||||
index 7b2b3b1..3a2f872 100644
|
||||
@@ -513,7 +430,7 @@ index ad7fc1a..a04ec6b 100644
|
||||
get title() {
|
||||
return this.payload.title;
|
||||
diff --git a/node_modules/react-native-notifications/lib/dist/Notifications.d.ts b/node_modules/react-native-notifications/lib/dist/Notifications.d.ts
|
||||
index 6e49fd4..7deeea8 100644
|
||||
index 6e49fd4..1d94217 100644
|
||||
--- a/node_modules/react-native-notifications/lib/dist/Notifications.d.ts
|
||||
+++ b/node_modules/react-native-notifications/lib/dist/Notifications.d.ts
|
||||
@@ -37,6 +37,10 @@ export declare class NotificationsRoot {
|
||||
@@ -522,13 +439,13 @@ index 6e49fd4..7deeea8 100644
|
||||
cancelLocalNotification(notificationId: number): void;
|
||||
+ /**
|
||||
+ * cancelAllLocalNotifications
|
||||
+ */
|
||||
+ cancelAllLocalNotifications(): void;
|
||||
+ */
|
||||
+ cancelAllLocalNotifications(): void;
|
||||
/**
|
||||
* removeAllDeliveredNotifications
|
||||
*/
|
||||
diff --git a/node_modules/react-native-notifications/lib/dist/Notifications.js b/node_modules/react-native-notifications/lib/dist/Notifications.js
|
||||
index 44ab53f..4ff06a1 100644
|
||||
index 44ab53f..8000701 100644
|
||||
--- a/node_modules/react-native-notifications/lib/dist/Notifications.js
|
||||
+++ b/node_modules/react-native-notifications/lib/dist/Notifications.js
|
||||
@@ -55,6 +55,12 @@ class NotificationsRoot {
|
||||
@@ -537,18 +454,29 @@ index 44ab53f..4ff06a1 100644
|
||||
}
|
||||
+ /**
|
||||
+ * cancelAllLocalNotifications
|
||||
+ */
|
||||
+ cancelAllLocalNotifications() {
|
||||
+ */
|
||||
+ cancelAllLocalNotifications() {
|
||||
+ this.commands.cancelAllLocalNotifications();
|
||||
+ }
|
||||
+ }
|
||||
/**
|
||||
* removeAllDeliveredNotifications
|
||||
*/
|
||||
diff --git a/node_modules/react-native-notifications/lib/dist/interfaces/NotificationCategory.d.ts b/node_modules/react-native-notifications/lib/dist/interfaces/NotificationCategory.d.ts
|
||||
index 0e78cb5..ae90bd1 100644
|
||||
--- a/node_modules/react-native-notifications/lib/dist/interfaces/NotificationCategory.d.ts
|
||||
+++ b/node_modules/react-native-notifications/lib/dist/interfaces/NotificationCategory.d.ts
|
||||
@@ -13,5 +13,5 @@ export declare class NotificationAction {
|
||||
title: string;
|
||||
authenticationRequired: boolean;
|
||||
textInput?: NotificationTextInput;
|
||||
- constructor(identifier: string, activationMode: 'foreground' | 'authenticationRequired' | 'destructive', title: string, authenticationRequired: boolean, textInput?: NotificationTextInput);
|
||||
+ constructor(identifier: string, activationMode: 'background' | 'foreground' | 'authenticationRequired' | 'destructive', title: string, authenticationRequired: boolean, textInput?: NotificationTextInput);
|
||||
}
|
||||
diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m
|
||||
index afd5c73..6036dda 100644
|
||||
index 7452523..a093262 100644
|
||||
--- a/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m
|
||||
+++ b/node_modules/react-native-notifications/lib/ios/RNNotificationCenter.m
|
||||
@@ -87,7 +87,7 @@
|
||||
@@ -83,7 +83,7 @@
|
||||
for (UNNotification *notification in notifications) {
|
||||
[formattedNotifications addObject:[RCTConvert UNNotificationPayload:notification]];
|
||||
}
|
||||
@@ -557,51 +485,8 @@ index afd5c73..6036dda 100644
|
||||
}];
|
||||
}
|
||||
|
||||
diff --git a/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.m b/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.m
|
||||
index 5c8dd0b..1c7e575 100644
|
||||
--- a/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.m
|
||||
+++ b/node_modules/react-native-notifications/lib/ios/RNNotificationEventHandler.m
|
||||
@@ -6,11 +6,13 @@
|
||||
|
||||
@implementation RNNotificationEventHandler {
|
||||
RNNotificationsStore* _store;
|
||||
+ NSDate* wakeTime;
|
||||
}
|
||||
|
||||
- (instancetype)initWithStore:(RNNotificationsStore *)store {
|
||||
self = [super init];
|
||||
_store = store;
|
||||
+ wakeTime = [[NSDate alloc] init];
|
||||
return self;
|
||||
}
|
||||
|
||||
@@ -31,6 +33,15 @@
|
||||
- (void)didReceiveNotificationResponse:(UNNotificationResponse *)response completionHandler:(void (^)(void))completionHandler {
|
||||
[_store setActionCompletionHandler:completionHandler withCompletionKey:response.notification.request.identifier];
|
||||
[RNEventEmitter sendEvent:RNNotificationOpened body:[RNNotificationParser parseNotificationResponse:response]];
|
||||
+ dispatch_async(dispatch_get_main_queue(), ^{
|
||||
+ NSDate* now = [[NSDate alloc] init];
|
||||
+ double interval = [now timeIntervalSinceDate:self->wakeTime];
|
||||
+ BOOL background = [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground;
|
||||
+ NSDictionary* userInfo = response.notification.request.content.userInfo;
|
||||
+ if (interval < 1.0 && !background) {
|
||||
+ [self->_store setInitialNotification:userInfo];
|
||||
+ }
|
||||
+ });
|
||||
}
|
||||
|
||||
- (void)didReceiveBackgroundNotification:(NSDictionary *)userInfo withCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
|
||||
@@ -38,7 +49,7 @@
|
||||
NSString *uuid = [[NSUUID UUID] UUIDString];
|
||||
__block BOOL completionHandlerCalled = NO;
|
||||
dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
|
||||
- [_store setBackgroundActionCompletionHandler:^(UIBackgroundFetchResult result) {
|
||||
+ [self->_store setBackgroundActionCompletionHandler:^(UIBackgroundFetchResult result) {
|
||||
dispatch_async(dispatch_get_main_queue(), ^{
|
||||
completionHandler(result);
|
||||
});
|
||||
diff --git a/node_modules/react-native-notifications/lib/src/Notifications.ts b/node_modules/react-native-notifications/lib/src/Notifications.ts
|
||||
index 0848f6d..1f945b7 100644
|
||||
index 0848f6d..ceb271d 100644
|
||||
--- a/node_modules/react-native-notifications/lib/src/Notifications.ts
|
||||
+++ b/node_modules/react-native-notifications/lib/src/Notifications.ts
|
||||
@@ -80,6 +80,13 @@ export class NotificationsRoot {
|
||||
@@ -610,10 +495,10 @@ index 0848f6d..1f945b7 100644
|
||||
|
||||
+ /**
|
||||
+ * cancelAllLocalNotifications
|
||||
+ */
|
||||
+ public cancelAllLocalNotifications() {
|
||||
+ */
|
||||
+ public cancelAllLocalNotifications() {
|
||||
+ this.commands.cancelAllLocalNotifications();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* removeAllDeliveredNotifications
|
||||
@@ -101,7 +101,9 @@ jest.doMock('react-native', () => {
|
||||
|
||||
const Linking = {
|
||||
...RNLinking,
|
||||
openURL: jest.fn(),
|
||||
openURL: jest.fn().mockImplementation(
|
||||
() => Promise.resolve(''),
|
||||
),
|
||||
};
|
||||
|
||||
return Object.setPrototypeOf({
|
||||
|
||||
2
types/modules/react-native-webrtc.d.ts
vendored
2
types/modules/react-native-webrtc.d.ts
vendored
@@ -168,7 +168,7 @@ declare module 'react-native-webrtc' {
|
||||
}
|
||||
|
||||
export interface RTCPeerConnectionConfiguration {
|
||||
iceServers: Array<ConfigurationParamWithUrls | ConfigurationParamWithUrl>;
|
||||
iceServers: ConfigurationParamWithUrls[] | ConfigurationParamWithUrl[];
|
||||
iceTransportPolicy?: 'all' | 'relay' | 'nohost' | 'none' | undefined;
|
||||
bundlePolicy?: 'balanced' | 'max-compat' | 'max-bundle' | undefined;
|
||||
rtcpMuxPolicy?: 'negotiate' | 'require' | undefined;
|
||||
|
||||
Reference in New Issue
Block a user