forked from Ivasoft/mattermost-mobile
[Gekidou] upgrade to RN 68 (old arch) (#6138)
* upgrade to RN 68 (old arch) * remove test setup unused & commented mock * Android target set to 30 * Fix theme when opening app from push notification * upgrade common mark
This commit is contained in:
@@ -11,6 +11,8 @@ node_modules/react-native/Libraries/polyfills/.*
|
||||
; Flow doesn't support platforms
|
||||
.*/Libraries/Utilities/LoadingView.js
|
||||
|
||||
.*/node_modules/resolve/test/resolver/malformed_package_json/package\.json$
|
||||
|
||||
[untyped]
|
||||
.*/node_modules/@react-native-community/cli/.*/.*
|
||||
|
||||
@@ -66,4 +68,4 @@ untyped-import
|
||||
untyped-type-import
|
||||
|
||||
[version]
|
||||
^0.162.0
|
||||
^0.170.0
|
||||
|
||||
@@ -120,19 +120,17 @@ def jscFlavor = 'org.webkit:android-jsc-intl:+'
|
||||
def enableHermes = project.ext.react.get("enableHermes", false);
|
||||
|
||||
/**
|
||||
* Architectures to build native code for in debug.
|
||||
* Architectures to build native code for.
|
||||
*/
|
||||
def nativeArchitectures = project.getProperties().get("reactNativeDebugArchitectures")
|
||||
def reactNativeArchitectures() {
|
||||
def value = project.getProperties().get("reactNativeArchitectures")
|
||||
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
||||
}
|
||||
|
||||
android {
|
||||
ndkVersion rootProject.ext.ndkVersion
|
||||
compileSdkVersion rootProject.ext.compileSdkVersion
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
checkReleaseBuilds false
|
||||
abortOnError false
|
||||
@@ -150,7 +148,70 @@ android {
|
||||
versionName "2.0.0"
|
||||
testBuildType System.getProperty('testBuildType', 'debug')
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()
|
||||
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// We configure the NDK build only if you decide to opt-in for the New Architecture.
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
arguments "APP_PLATFORM=android-21",
|
||||
"APP_STL=c++_shared",
|
||||
"NDK_TOOLCHAIN_VERSION=clang",
|
||||
"GENERATED_SRC_DIR=$buildDir/generated/source",
|
||||
"PROJECT_BUILD_DIR=$buildDir",
|
||||
"REACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid",
|
||||
"REACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build"
|
||||
cFlags "-Wall", "-Werror", "-fexceptions", "-frtti", "-DWITH_INSPECTOR=1"
|
||||
cppFlags "-std=c++17"
|
||||
// Make sure this target name is the same you specify inside the
|
||||
// src/main/jni/Android.mk file for the `LOCAL_MODULE` variable.
|
||||
targets "rndiffapp_appmodules"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// We configure the NDK build only if you decide to opt-in for the New Architecture.
|
||||
externalNativeBuild {
|
||||
ndkBuild {
|
||||
path "$projectDir/src/main/jni/Android.mk"
|
||||
}
|
||||
}
|
||||
def reactAndroidProjectDir = project(':ReactAndroid').projectDir
|
||||
def packageReactNdkDebugLibs = tasks.register("packageReactNdkDebugLibs", Copy) {
|
||||
dependsOn(":ReactAndroid:packageReactNdkDebugLibsForBuck")
|
||||
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
|
||||
into("$buildDir/react-ndk/exported")
|
||||
}
|
||||
def packageReactNdkReleaseLibs = tasks.register("packageReactNdkReleaseLibs", Copy) {
|
||||
dependsOn(":ReactAndroid:packageReactNdkReleaseLibsForBuck")
|
||||
from("$reactAndroidProjectDir/src/main/jni/prebuilt/lib")
|
||||
into("$buildDir/react-ndk/exported")
|
||||
}
|
||||
afterEvaluate {
|
||||
// If you wish to add a custom TurboModule or component locally,
|
||||
// you should uncomment this line.
|
||||
// preBuild.dependsOn("generateCodegenArtifactsFromSchema")
|
||||
preDebugBuild.dependsOn(packageReactNdkDebugLibs)
|
||||
preReleaseBuild.dependsOn(packageReactNdkReleaseLibs)
|
||||
|
||||
// Due to a bug inside AGP, we have to explicitly set a dependency
|
||||
// between configureNdkBuild* tasks and the preBuild tasks.
|
||||
// This can be removed once this is solved: https://issuetracker.google.com/issues/207403732
|
||||
configureNdkBuildRelease.dependsOn(preReleaseBuild)
|
||||
configureNdkBuildDebug.dependsOn(preDebugBuild)
|
||||
reactNativeArchitectures().each { architecture ->
|
||||
tasks.findByName("configureNdkBuildDebug[${architecture}]")?.configure {
|
||||
dependsOn("preDebugBuild")
|
||||
}
|
||||
tasks.findByName("configureNdkBuildRelease[${architecture}]")?.configure {
|
||||
dependsOn("preReleaseBuild")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
release {
|
||||
if (project.hasProperty('MATTERMOST_RELEASE_STORE_FILE')) {
|
||||
@@ -160,28 +221,37 @@ android {
|
||||
keyPassword MATTERMOST_RELEASE_PASSWORD
|
||||
}
|
||||
}
|
||||
debug {
|
||||
storeFile file('debug.keystore')
|
||||
storePassword 'android'
|
||||
keyAlias 'androiddebugkey'
|
||||
keyPassword 'android'
|
||||
}
|
||||
}
|
||||
splits {
|
||||
abi {
|
||||
reset()
|
||||
enable enableSeparateBuildPerCPUArchitecture
|
||||
universalApk enableSeparateBuildPerCPUArchitecture // If true, also generate a universal APK
|
||||
include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
|
||||
include (*reactNativeArchitectures())
|
||||
}
|
||||
}
|
||||
buildTypes {
|
||||
def useReleaseKey = project.hasProperty('MATTERMOST_RELEASE_STORE_FILE')
|
||||
release {
|
||||
minifyEnabled enableProguardInReleaseBuilds
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
signingConfig signingConfigs.release
|
||||
if (useReleaseKey) {
|
||||
signingConfig signingConfigs.release
|
||||
} else {
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
debug {
|
||||
minifyEnabled enableProguardInReleaseBuilds
|
||||
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
|
||||
if (nativeArchitectures) {
|
||||
ndk {
|
||||
abiFilters nativeArchitectures.split(',')
|
||||
}
|
||||
if (useReleaseKey) {
|
||||
signingConfig signingConfigs.release
|
||||
} else {
|
||||
signingConfig signingConfigs.debug
|
||||
}
|
||||
}
|
||||
unsigned.initWith(buildTypes.release)
|
||||
@@ -211,43 +281,15 @@ repositories {
|
||||
}
|
||||
}
|
||||
|
||||
configurations.all {
|
||||
resolutionStrategy {
|
||||
force "com.facebook.soloader:soloader:0.10.1"
|
||||
eachDependency { DependencyResolveDetails details ->
|
||||
if (details.requested.name == 'play-services-base') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-tasks') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-stats') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-basement') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'okhttp') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
if (details.requested.name == 'okhttp-tls') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
if (details.requested.name == 'okhttp-urlconnection') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation fileTree(dir: "libs", include: ["*.jar"])
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
|
||||
implementation project(':lottie-react-native')
|
||||
|
||||
//noinspection GradleDynamicVersio
|
||||
implementation "com.facebook.react:react-native:+" // From node_modules
|
||||
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'
|
||||
implementation project(':lottie-react-native')
|
||||
|
||||
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
|
||||
|
||||
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
|
||||
@@ -289,6 +331,44 @@ dependencies {
|
||||
implementation project(':watermelondb-jsi')
|
||||
}
|
||||
|
||||
configurations.all {
|
||||
if (isNewArchitectureEnabled()) {
|
||||
// If new architecture is enabled, we let you build RN from source
|
||||
// Otherwise we fallback to a prebuilt .aar bundled in the NPM package.
|
||||
// This will be applied to all the imported transtitive dependency.
|
||||
resolutionStrategy.dependencySubstitution {
|
||||
substitute(module("com.facebook.react:react-native"))
|
||||
.using(project(":ReactAndroid")).because("On New Architecture we're building React Native from source")
|
||||
}
|
||||
}
|
||||
resolutionStrategy {
|
||||
force "com.facebook.soloader:soloader:0.10.1"
|
||||
eachDependency { DependencyResolveDetails details ->
|
||||
if (details.requested.name == 'play-services-base') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-tasks') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-stats') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'play-services-basement') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '15.0.1'
|
||||
}
|
||||
if (details.requested.name == 'okhttp') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
if (details.requested.name == 'okhttp-tls') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
if (details.requested.name == 'okhttp-urlconnection') {
|
||||
details.useTarget group: details.requested.group, name: details.requested.name, version: '4.9.2'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run this once to be able to run the application with BUCK
|
||||
// puts all compile dependencies into folder libs for BUCK to use
|
||||
task copyDownloadableDepsToLibs(type: Copy) {
|
||||
@@ -298,3 +378,11 @@ task copyDownloadableDepsToLibs(type: Copy) {
|
||||
|
||||
apply plugin: 'com.google.gms.google-services'
|
||||
apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
|
||||
|
||||
def isNewArchitectureEnabled() {
|
||||
// To opt-in for the New Architecture, you can either:
|
||||
// - Set `newArchEnabled` to true inside the `gradle.properties` file
|
||||
// - Invoke gradle with `-newArchEnabled=true`
|
||||
// - Set an environment variable `ORG_GRADLE_PROJECT_newArchEnabled=true`
|
||||
return project.hasProperty("newArchEnabled") && project.newArchEnabled == "true"
|
||||
}
|
||||
@@ -8,6 +8,9 @@
|
||||
android:usesCleartextTraffic="true"
|
||||
tools:targetApi="28"
|
||||
tools:ignore="GoogleAppIndexingWarning">
|
||||
<activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
|
||||
<activity
|
||||
android:name="com.facebook.react.devsupport.DevSettingsActivity"
|
||||
android:exported="false"
|
||||
/>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
|
||||
* directory of this source tree.
|
||||
@@ -19,6 +19,7 @@ import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
|
||||
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
|
||||
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
|
||||
import com.facebook.react.ReactInstanceEventListener;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.bridge.ReactContext;
|
||||
import com.facebook.react.modules.network.NetworkingModule;
|
||||
@@ -47,7 +48,7 @@ public class ReactNativeFlipper {
|
||||
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
|
||||
if (reactContext == null) {
|
||||
reactInstanceManager.addReactInstanceEventListener(
|
||||
new ReactInstanceManager.ReactInstanceEventListener() {
|
||||
new ReactInstanceEventListener() {
|
||||
@Override
|
||||
public void onReactContextInitialized(ReactContext reactContext) {
|
||||
reactInstanceManager.removeReactInstanceEventListener(this);
|
||||
|
||||
@@ -35,10 +35,12 @@
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:label="@string/app_name"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|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" />
|
||||
@@ -63,26 +65,29 @@
|
||||
<receiver android:name=".NotificationReplyBroadcastReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name="com.reactnativenavigation.controllers.NavigationActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||
android:resizeableActivity="true"/>
|
||||
<activity
|
||||
android:name="com.mattermost.share.ShareActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
|
||||
android:label="@string/app_name"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme"
|
||||
android:taskAffinity="com.mattermost.share"
|
||||
android:launchMode="singleInstance">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<!-- for sharing-->
|
||||
<data android:mimeType="*/*" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
|
||||
<activity
|
||||
android:name="com.reactnativenavigation.controllers.NavigationActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
|
||||
android:resizeableActivity="true"
|
||||
android:exported="true"
|
||||
/>
|
||||
<activity
|
||||
android:name="com.mattermost.share.ShareActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize"
|
||||
android:label="@string/app_name"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme"
|
||||
android:taskAffinity="com.mattermost.share"
|
||||
android:launchMode="singleInstance"
|
||||
android:exported="true"
|
||||
>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<!-- for sharing-->
|
||||
<data android:mimeType="*/*" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
</application>
|
||||
</manifest>
|
||||
|
||||
@@ -0,0 +1,116 @@
|
||||
package com.mattermost.newarchitecture;
|
||||
|
||||
import android.app.Application;
|
||||
import androidx.annotation.NonNull;
|
||||
import com.facebook.react.PackageList;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
|
||||
import com.facebook.react.bridge.JSIModulePackage;
|
||||
import com.facebook.react.bridge.JSIModuleProvider;
|
||||
import com.facebook.react.bridge.JSIModuleSpec;
|
||||
import com.facebook.react.bridge.JSIModuleType;
|
||||
import com.facebook.react.bridge.JavaScriptContextHolder;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.UIManager;
|
||||
import com.facebook.react.fabric.ComponentFactory;
|
||||
import com.facebook.react.fabric.CoreComponentsRegistry;
|
||||
import com.facebook.react.fabric.EmptyReactNativeConfig;
|
||||
import com.facebook.react.fabric.FabricJSIModuleProvider;
|
||||
import com.facebook.react.uimanager.ViewManagerRegistry;
|
||||
import com.mattermost.rnbeta.BuildConfig;
|
||||
import com.mattermost.newarchitecture.components.MainComponentsRegistry;
|
||||
import com.mattermost.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
|
||||
* TurboModule delegates and the Fabric Renderer.
|
||||
*
|
||||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
|
||||
* `newArchEnabled` property). Is ignored otherwise.
|
||||
*/
|
||||
public class MainApplicationReactNativeHost extends ReactNativeHost {
|
||||
public MainApplicationReactNativeHost(Application application) {
|
||||
super(application);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getUseDeveloperSupport() {
|
||||
return BuildConfig.DEBUG;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<ReactPackage> getPackages() {
|
||||
List<ReactPackage> packages = new PackageList(this).getPackages();
|
||||
// Packages that cannot be autolinked yet can be added manually here, for example:
|
||||
// packages.add(new MyReactNativePackage());
|
||||
// TurboModules must also be loaded here providing a valid TurboReactPackage implementation:
|
||||
// packages.add(new TurboReactPackage() { ... });
|
||||
// If you have custom Fabric Components, their ViewManagers should also be loaded here
|
||||
// inside a ReactPackage.
|
||||
return packages;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getJSMainModuleName() {
|
||||
return "index";
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected ReactPackageTurboModuleManagerDelegate.Builder
|
||||
getReactPackageTurboModuleManagerDelegateBuilder() {
|
||||
// Here we provide the ReactPackageTurboModuleManagerDelegate Builder. This is necessary
|
||||
// for the new architecture and to use TurboModules correctly.
|
||||
return new MainApplicationTurboModuleManagerDelegate.Builder();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JSIModulePackage getJSIModulePackage() {
|
||||
return new JSIModulePackage() {
|
||||
@Override
|
||||
public List<JSIModuleSpec> getJSIModules(
|
||||
final ReactApplicationContext reactApplicationContext,
|
||||
final JavaScriptContextHolder jsContext) {
|
||||
final List<JSIModuleSpec> specs = new ArrayList<>();
|
||||
|
||||
// Here we provide a new JSIModuleSpec that will be responsible of providing the
|
||||
// custom Fabric Components.
|
||||
specs.add(
|
||||
new JSIModuleSpec() {
|
||||
@Override
|
||||
public JSIModuleType getJSIModuleType() {
|
||||
return JSIModuleType.UIManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JSIModuleProvider<UIManager> getJSIModuleProvider() {
|
||||
final ComponentFactory componentFactory = new ComponentFactory();
|
||||
CoreComponentsRegistry.register(componentFactory);
|
||||
|
||||
// Here we register a Components Registry.
|
||||
// The one that is generated with the template contains no components
|
||||
// and just provides you the one from React Native core.
|
||||
MainComponentsRegistry.register(componentFactory);
|
||||
|
||||
final ReactInstanceManager reactInstanceManager = getReactInstanceManager();
|
||||
|
||||
ViewManagerRegistry viewManagerRegistry =
|
||||
new ViewManagerRegistry(
|
||||
reactInstanceManager.getOrCreateViewManagers(reactApplicationContext));
|
||||
|
||||
return new FabricJSIModuleProvider(
|
||||
reactApplicationContext,
|
||||
componentFactory,
|
||||
new EmptyReactNativeConfig(),
|
||||
viewManagerRegistry);
|
||||
}
|
||||
});
|
||||
return specs;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.mattermost.newarchitecture.components;
|
||||
|
||||
import com.facebook.jni.HybridData;
|
||||
import com.facebook.proguard.annotations.DoNotStrip;
|
||||
import com.facebook.react.fabric.ComponentFactory;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
/**
|
||||
* Class responsible to load the custom Fabric Components. This class has native methods and needs a
|
||||
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
|
||||
* folder for you).
|
||||
*
|
||||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
|
||||
* `newArchEnabled` property). Is ignored otherwise.
|
||||
*/
|
||||
@DoNotStrip
|
||||
public class MainComponentsRegistry {
|
||||
static {
|
||||
SoLoader.loadLibrary("fabricjni");
|
||||
}
|
||||
|
||||
@DoNotStrip private final HybridData mHybridData;
|
||||
|
||||
@DoNotStrip
|
||||
private native HybridData initHybrid(ComponentFactory componentFactory);
|
||||
|
||||
@DoNotStrip
|
||||
private MainComponentsRegistry(ComponentFactory componentFactory) {
|
||||
mHybridData = initHybrid(componentFactory);
|
||||
}
|
||||
|
||||
@DoNotStrip
|
||||
public static MainComponentsRegistry register(ComponentFactory componentFactory) {
|
||||
return new MainComponentsRegistry(componentFactory);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.mattermost.newarchitecture.modules;
|
||||
|
||||
import com.facebook.jni.HybridData;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.ReactPackageTurboModuleManagerDelegate;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Class responsible to load the TurboModules. This class has native methods and needs a
|
||||
* corresponding C++ implementation/header file to work correctly (already placed inside the jni/
|
||||
* folder for you).
|
||||
*
|
||||
* <p>Please note that this class is used ONLY if you opt-in for the New Architecture (see the
|
||||
* `newArchEnabled` property). Is ignored otherwise.
|
||||
*/
|
||||
public class MainApplicationTurboModuleManagerDelegate
|
||||
extends ReactPackageTurboModuleManagerDelegate {
|
||||
|
||||
private static volatile boolean sIsSoLibraryLoaded;
|
||||
|
||||
protected MainApplicationTurboModuleManagerDelegate(
|
||||
ReactApplicationContext reactApplicationContext, List<ReactPackage> packages) {
|
||||
super(reactApplicationContext, packages);
|
||||
}
|
||||
|
||||
protected native HybridData initHybrid();
|
||||
|
||||
native boolean canCreateTurboModule(String moduleName);
|
||||
|
||||
public static class Builder extends ReactPackageTurboModuleManagerDelegate.Builder {
|
||||
protected MainApplicationTurboModuleManagerDelegate build(
|
||||
ReactApplicationContext context, List<ReactPackage> packages) {
|
||||
return new MainApplicationTurboModuleManagerDelegate(context, packages);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected synchronized void maybeLoadOtherSoLibraries() {
|
||||
if (!sIsSoLibraryLoaded) {
|
||||
// If you change the name of your application .so file in the Android.mk file,
|
||||
// make sure you update the name here as well.
|
||||
SoLoader.loadLibrary("rndiffapp_appmodules");
|
||||
sIsSoLibraryLoaded = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,8 @@ import com.facebook.react.bridge.Arguments;
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.ReactMethod;
|
||||
import com.facebook.react.bridge.WritableMap;
|
||||
// import com.facebook.react.ReactActivityDelegate;
|
||||
// import com.facebook.react.ReactRootView;
|
||||
import com.reactnativenavigation.NavigationActivity;
|
||||
import com.github.emilioicai.hwkeyboardevent.HWKeyboardEventModule;
|
||||
|
||||
@@ -34,18 +36,6 @@ public class MainActivity extends NavigationActivity {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
// This can be removed once https://github.com/facebook/react-native/issues/32628 is solved
|
||||
public void onWindowFocusChanged(boolean hasFocus) {
|
||||
super.onWindowFocusChanged(hasFocus);
|
||||
MattermostManagedModule instance = MattermostManagedModule.getInstance();
|
||||
if (instance != null) {
|
||||
WritableMap data = Arguments.createMap();
|
||||
data.putString("appState", hasFocus ? "active" : "background");
|
||||
instance.sendEvent("windowFocusChanged", data);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
https://mattermost.atlassian.net/browse/MM-10601
|
||||
Required by react-native-hw-keyboard-event
|
||||
@@ -64,4 +54,25 @@ public class MainActivity extends NavigationActivity {
|
||||
private void setHWKeyboardConnected() {
|
||||
HWKeyboardConnected = getResources().getConfiguration().keyboard == Configuration.KEYBOARD_QWERTY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and
|
||||
* you can specify the rendered you wish to use (Fabric or the older renderer).
|
||||
*/
|
||||
// @Override
|
||||
// protected ReactActivityDelegate createReactActivityDelegate() {
|
||||
// return new MainActivityDelegate(this, getMainComponentName());
|
||||
// }
|
||||
// public static class MainActivityDelegate extends ReactActivityDelegate {
|
||||
// public MainActivityDelegate(ReactActivity activity, String mainComponentName) {
|
||||
// super(activity, mainComponentName);
|
||||
// }
|
||||
// @Override
|
||||
// protected ReactRootView createRootView() {
|
||||
// ReactRootView reactRootView = new ReactRootView(getContext());
|
||||
// // If you opted-in for the New Architecture, we enable the Fabric Renderer.
|
||||
// reactRootView.setIsFabric(BuildConfig.IS_NEW_ARCHITECTURE_ENABLED);
|
||||
// return reactRootView;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.wix.reactnativenotifications.core.JsIOHelper;
|
||||
import com.facebook.react.PackageList;
|
||||
import com.facebook.react.ReactInstanceManager;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.facebook.react.config.ReactFeatureFlags;
|
||||
import com.facebook.react.ReactNativeHost;
|
||||
import com.facebook.react.TurboReactPackage;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
@@ -40,6 +41,7 @@ import com.facebook.react.modules.network.OkHttpClientProvider;
|
||||
import com.facebook.soloader.SoLoader;
|
||||
|
||||
import com.mattermost.networkclient.RCTOkHttpClientFactory;
|
||||
import com.mattermost.newarchitecture.MainApplicationReactNativeHost;
|
||||
import com.swmansion.reanimated.ReanimatedJSIModulePackage;
|
||||
import com.nozbe.watermelondb.jsi.WatermelonDBJSIPackage;
|
||||
|
||||
@@ -118,10 +120,17 @@ public class MainApplication extends NavigationApplication implements INotificat
|
||||
return "index";
|
||||
}
|
||||
};
|
||||
|
||||
private final ReactNativeHost mNewArchitectureNativeHost =
|
||||
new MainApplicationReactNativeHost(this);
|
||||
|
||||
@Override
|
||||
public ReactNativeHost getReactNativeHost() {
|
||||
return mReactNativeHost;
|
||||
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
|
||||
return mNewArchitectureNativeHost;
|
||||
} else {
|
||||
return mReactNativeHost;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -129,6 +138,11 @@ public class MainApplication extends NavigationApplication implements INotificat
|
||||
super.onCreate();
|
||||
instance = this;
|
||||
|
||||
// If you opted-in for the New Architecture, we enable the TurboModule system
|
||||
ReactFeatureFlags.useTurboModules = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
|
||||
Context context = getApplicationContext();
|
||||
|
||||
// Delete any previous temp files created by the app
|
||||
@@ -136,9 +150,6 @@ public class MainApplication extends NavigationApplication implements INotificat
|
||||
RealPathUtil.deleteTempFiles(tempFolder);
|
||||
Log.i("ReactNative", "Cleaning temp cache " + tempFolder.getAbsolutePath());
|
||||
|
||||
SoLoader.init(this, /* native exopackage */ false);
|
||||
initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
|
||||
|
||||
// Tells React Native to use our RCTOkHttpClientFactory which builds an OKHttpClient
|
||||
// with a cookie jar defined in APIClientModule and an interceptor to intercept all
|
||||
// requests that originate from React Native's OKHttpClient
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
package com.mattermost.share;
|
||||
|
||||
import com.facebook.react.bridge.ReactApplicationContext;
|
||||
import com.facebook.react.bridge.JavaScriptModule;
|
||||
import com.facebook.react.bridge.NativeModule;
|
||||
import com.facebook.react.uimanager.ViewManager;
|
||||
import com.facebook.react.ReactPackage;
|
||||
import com.mattermost.rnbeta.MainApplication;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class SharePackage implements ReactPackage {
|
||||
MainApplication mApplication;
|
||||
|
||||
public SharePackage(MainApplication application) {
|
||||
mApplication = application;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
|
||||
return Arrays.<NativeModule>asList(new ShareModule(mApplication, reactContext));
|
||||
}
|
||||
|
||||
public List<Class<? extends JavaScriptModule>> createJSModules() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
49
android/app/src/main/jni/Android.mk
Normal file
49
android/app/src/main/jni/Android.mk
Normal file
@@ -0,0 +1,49 @@
|
||||
THIS_DIR := $(call my-dir)
|
||||
|
||||
include $(REACT_ANDROID_DIR)/Android-prebuilt.mk
|
||||
|
||||
# If you wish to add a custom TurboModule or Fabric component in your app you
|
||||
# will have to include the following autogenerated makefile.
|
||||
# include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_PATH := $(THIS_DIR)
|
||||
|
||||
# You can customize the name of your application .so file here.
|
||||
LOCAL_MODULE := mattermost_appmodules
|
||||
|
||||
LOCAL_C_INCLUDES := $(LOCAL_PATH)
|
||||
LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp)
|
||||
LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)
|
||||
|
||||
# If you wish to add a custom TurboModule or Fabric component in your app you
|
||||
# will have to uncomment those lines to include the generated source
|
||||
# files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni)
|
||||
#
|
||||
# LOCAL_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
|
||||
# LOCAL_SRC_FILES += $(wildcard $(GENERATED_SRC_DIR)/codegen/jni/*.cpp)
|
||||
# LOCAL_EXPORT_C_INCLUDES += $(GENERATED_SRC_DIR)/codegen/jni
|
||||
|
||||
# Here you should add any native library you wish to depend on.
|
||||
LOCAL_SHARED_LIBRARIES := \
|
||||
libfabricjni \
|
||||
libfbjni \
|
||||
libfolly_futures \
|
||||
libfolly_json \
|
||||
libglog \
|
||||
libjsi \
|
||||
libreact_codegen_rncore \
|
||||
libreact_debug \
|
||||
libreact_nativemodule_core \
|
||||
libreact_render_componentregistry \
|
||||
libreact_render_core \
|
||||
libreact_render_debug \
|
||||
libreact_render_graphics \
|
||||
librrc_view \
|
||||
libruntimeexecutor \
|
||||
libturbomodulejsijni \
|
||||
libyoga
|
||||
|
||||
LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall
|
||||
|
||||
include $(BUILD_SHARED_LIBRARY)
|
||||
24
android/app/src/main/jni/MainApplicationModuleProvider.cpp
Normal file
24
android/app/src/main/jni/MainApplicationModuleProvider.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#include "MainApplicationModuleProvider.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);
|
||||
return rncore_ModuleProvider(moduleName, params);
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
16
android/app/src/main/jni/MainApplicationModuleProvider.h
Normal file
16
android/app/src/main/jni/MainApplicationModuleProvider.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#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
|
||||
@@ -0,0 +1,45 @@
|
||||
#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(
|
||||
std::string name) {
|
||||
return getTurboModule(name, nullptr) != nullptr ||
|
||||
getTurboModule(name, {.moduleName = name}) != nullptr;
|
||||
}
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
@@ -0,0 +1,38 @@
|
||||
#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/mattermost/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(std::string name);
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
61
android/app/src/main/jni/MainComponentsRegistry.cpp
Normal file
61
android/app/src/main/jni/MainComponentsRegistry.cpp
Normal file
@@ -0,0 +1,61 @@
|
||||
#include "MainComponentsRegistry.h"
|
||||
|
||||
#include <CoreComponentsRegistry.h>
|
||||
#include <fbjni/fbjni.h>
|
||||
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
||||
#include <react/renderer/components/rncore/ComponentDescriptors.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
|
||||
|
||||
std::shared_ptr<ComponentDescriptorProviderRegistry const>
|
||||
MainComponentsRegistry::sharedProviderRegistry() {
|
||||
auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry();
|
||||
|
||||
// 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
|
||||
32
android/app/src/main/jni/MainComponentsRegistry.h
Normal file
32
android/app/src/main/jni/MainComponentsRegistry.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
|
||||
#include <ComponentFactory.h>
|
||||
#include <fbjni/fbjni.h>
|
||||
#include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h>
|
||||
#include <react/renderer/componentregistry/ComponentDescriptorRegistry.h>
|
||||
|
||||
namespace facebook {
|
||||
namespace react {
|
||||
|
||||
class MainComponentsRegistry
|
||||
: public facebook::jni::HybridClass<MainComponentsRegistry> {
|
||||
public:
|
||||
// Adapt it to the package you used for your Java class.
|
||||
constexpr static auto kJavaDescriptor =
|
||||
"Lcom/mattermost/newarchitecture/components/MainComponentsRegistry;";
|
||||
|
||||
static void registerNatives();
|
||||
|
||||
MainComponentsRegistry(ComponentFactory *delegate);
|
||||
|
||||
private:
|
||||
static std::shared_ptr<ComponentDescriptorProviderRegistry const>
|
||||
sharedProviderRegistry();
|
||||
|
||||
static jni::local_ref<jhybriddata> initHybrid(
|
||||
jni::alias_ref<jclass>,
|
||||
ComponentFactory *delegate);
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
} // namespace facebook
|
||||
11
android/app/src/main/jni/OnLoad.cpp
Normal file
11
android/app/src/main/jni/OnLoad.cpp
Normal file
@@ -0,0 +1,11 @@
|
||||
#include <fbjni/fbjni.h>
|
||||
#include "MainApplicationTurboModuleManagerDelegate.h"
|
||||
#include "MainComponentsRegistry.h"
|
||||
|
||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
|
||||
return facebook::jni::initialize(vm, [] {
|
||||
facebook::react::MainApplicationTurboModuleManagerDelegate::
|
||||
registerNatives();
|
||||
facebook::react::MainComponentsRegistry::registerNatives();
|
||||
});
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
buildscript {
|
||||
ext {
|
||||
buildToolsVersion = "30.0.2"
|
||||
buildToolsVersion = "31.0.0"
|
||||
minSdkVersion = 24
|
||||
compileSdkVersion = 30
|
||||
targetSdkVersion = 30
|
||||
@@ -20,9 +20,11 @@ buildscript {
|
||||
google()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||
classpath 'com.google.gms:google-services:4.3.10'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
|
||||
classpath("com.android.tools.build:gradle:7.0.4")
|
||||
classpath("com.facebook.react:react-native-gradle-plugin")
|
||||
classpath("de.undercouch:gradle-download-task:4.1.2")
|
||||
classpath('com.google.gms:google-services:4.3.10')
|
||||
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
||||
@@ -9,9 +9,8 @@
|
||||
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
org.gradle.jvmargs=-Xmx2048M
|
||||
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
|
||||
org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m
|
||||
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
@@ -31,3 +30,14 @@ android.enableJetifier=true
|
||||
|
||||
# Version of flipper SDK to use with React Native
|
||||
FLIPPER_VERSION=0.125.0
|
||||
|
||||
# Use this property to specify which architecture you want to build.
|
||||
# You can also override it from the CLI using
|
||||
# ./gradlew <task> -PreactNativeArchitectures=x86_64
|
||||
reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
|
||||
# Use this property to enable support to the new architecture.
|
||||
# This will allow you to use TurboModules and the Fabric render in
|
||||
# your application. You should enable this flag either if you want
|
||||
# to write custom TurboModules/Fabric components OR use libraries that
|
||||
# are providing them.
|
||||
newArchEnabled=false
|
||||
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.2-all.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip
|
||||
|
||||
269
android/gradlew
vendored
269
android/gradlew
vendored
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env sh
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright 2015 the original author or authors.
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
@@ -17,78 +17,113 @@
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
APP_BASE_NAME=${0##*/}
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
@@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
JAVACMD=java
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
@@ -105,79 +140,95 @@ location of your Java installation."
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=`expr $i + 1`
|
||||
done
|
||||
case $i in
|
||||
0) set -- ;;
|
||||
1) set -- "$args0" ;;
|
||||
2) set -- "$args0" "$args1" ;;
|
||||
3) set -- "$args0" "$args1" "$args2" ;;
|
||||
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Escape application args
|
||||
save () {
|
||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
||||
echo " "
|
||||
}
|
||||
APP_ARGS=`save "$@"`
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
# Collect all arguments for the java command, following the shell quoting and substitution rules
|
||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
@@ -1,4 +1,11 @@
|
||||
rootProject.name = 'Mattermost'
|
||||
include ':app'
|
||||
includeBuild('../node_modules/react-native-gradle-plugin')
|
||||
if (settings.hasProperty("newArchEnabled") && settings.newArchEnabled == "true") {
|
||||
include(":ReactAndroid")
|
||||
project(":ReactAndroid").projectDir = file('../node_modules/react-native/ReactAndroid')
|
||||
}
|
||||
|
||||
include ':lottie-react-native'
|
||||
project(':lottie-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/lottie-react-native/src/android')
|
||||
include ':reactnativenotifications'
|
||||
@@ -8,7 +15,3 @@ include ':react-native-video'
|
||||
project(':react-native-video').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-video/android-exoplayer')
|
||||
include ':watermelondb-jsi'
|
||||
project(':watermelondb-jsi').projectDir = new File(rootProject.projectDir, '../node_modules/@nozbe/watermelondb/native/android-jsi')
|
||||
include ':app'
|
||||
|
||||
apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute().text.trim(), "../scripts/autolinking.gradle")
|
||||
useExpoModules()
|
||||
@@ -15,9 +15,11 @@ import {prepareCommonSystemValues, PrepareCommonSystemValuesArgs, getCommonSyste
|
||||
import {addChannelToTeamHistory, addTeamToTeamHistory, getTeamById, queryMyTeams, removeChannelFromTeamHistory} from '@queries/servers/team';
|
||||
import {getCurrentUser} from '@queries/servers/user';
|
||||
import {dismissAllModalsAndPopToRoot, dismissAllModalsAndPopToScreen} from '@screens/navigation';
|
||||
import EphemeralStore from '@store/ephemeral_store';
|
||||
import {makeCategoryChannelId, makeCategoryId} from '@utils/categories';
|
||||
import {isDMorGM} from '@utils/channel';
|
||||
import {isTablet} from '@utils/helpers';
|
||||
import {setThemeDefaults, updateThemeIfNeeded} from '@utils/theme';
|
||||
import {displayGroupMessageName, displayUsername, getUserIdFromChannelName} from '@utils/user';
|
||||
|
||||
import type ChannelModel from '@typings/database/models/servers/channel';
|
||||
@@ -84,6 +86,18 @@ export const switchToChannel = async (serverUrl: string, channelId: string, team
|
||||
await operator.batchRecords(models);
|
||||
}
|
||||
|
||||
if (!EphemeralStore.theme) {
|
||||
// When opening the app from a push notification the theme may not be set in the EphemeralStore
|
||||
// causing the goToScreen to use the Appearance theme instead and that causes the screen background color to potentially
|
||||
// not match the theme
|
||||
const themes = await queryPreferencesByCategoryAndName(database, Preferences.CATEGORY_THEME, toTeamId).fetch();
|
||||
let theme = Preferences.THEMES.denim;
|
||||
if (themes.length) {
|
||||
theme = setThemeDefaults(JSON.parse(themes[0].value) as Theme);
|
||||
}
|
||||
updateThemeIfNeeded(theme, true);
|
||||
}
|
||||
|
||||
if (isTabletDevice) {
|
||||
dismissAllModalsAndPopToRoot();
|
||||
DeviceEventEmitter.emit(NavigationConstants.NAVIGATION_HOME);
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {ClientResponse, ProgressPromise} from '@mattermost/react-native-network-client';
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import React, {forwardRef, useImperativeHandle, useRef, useState} from 'react';
|
||||
import {useIntl} from 'react-intl';
|
||||
import {Platform, StatusBar, StatusBarStyle, StyleSheet, TouchableOpacity, View} from 'react-native';
|
||||
import FileViewer from 'react-native-file-viewer';
|
||||
import FileSystem from 'react-native-fs';
|
||||
import tinyColor from 'tinycolor2';
|
||||
|
||||
import ProgressBar from '@components/progress_bar';
|
||||
@@ -15,6 +15,7 @@ import {useServerUrl} from '@context/server';
|
||||
import NetworkManager from '@init/network_manager';
|
||||
import {alertDownloadDocumentDisabled, alertDownloadFailed, alertFailedToOpenDocument} from '@utils/document';
|
||||
import {fileExists, getLocalFilePathFromFile} from '@utils/file';
|
||||
import {emptyFunction} from '@utils/general';
|
||||
|
||||
import FileIcon from './file_icon';
|
||||
|
||||
@@ -83,7 +84,7 @@ const DocumentFile = forwardRef<DocumentFileRef, DocumentFileProps>(({background
|
||||
}
|
||||
} catch (error) {
|
||||
if (path) {
|
||||
FileSystem.deleteAsync(path, {idempotent: true});
|
||||
FileSystem.unlink(path).catch(emptyFunction);
|
||||
}
|
||||
setDownloading(false);
|
||||
setProgress(0);
|
||||
@@ -136,7 +137,7 @@ const DocumentFile = forwardRef<DocumentFileRef, DocumentFileProps>(({background
|
||||
onDonePreviewingFile();
|
||||
|
||||
if (path) {
|
||||
FileSystem.deleteAsync(path, {idempotent: true});
|
||||
FileSystem.unlink(path).catch(emptyFunction);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import {getThumbnailAsync} from 'expo-video-thumbnails';
|
||||
import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react';
|
||||
import {StyleSheet, useWindowDimensions, View} from 'react-native';
|
||||
import {createThumbnail} from 'react-native-create-thumbnail';
|
||||
|
||||
import {updateLocalFile} from '@actions/local/file';
|
||||
import {buildFilePreviewUrl, fetchPublicLink} from '@actions/remote/file';
|
||||
@@ -89,7 +89,7 @@ const VideoFile = ({
|
||||
// library
|
||||
const publicUri = await fetchPublicLink(serverUrl, data.id!);
|
||||
if (('link') in publicUri) {
|
||||
const {uri, height, width} = await getThumbnailAsync(data.localPath || publicUri.link, {time: 2000});
|
||||
const {path: uri, height, width} = await createThumbnail({url: data.localPath || publicUri.link, timeStamp: 2000});
|
||||
data.mini_preview = uri;
|
||||
data.height = height;
|
||||
data.width = width;
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import DeviceInfo from 'react-native-device-info';
|
||||
import FileSystem from 'react-native-fs';
|
||||
|
||||
export default {
|
||||
DOCUMENTS_PATH: `${FileSystem.cacheDirectory}/Documents`,
|
||||
DOCUMENTS_PATH: `${FileSystem.CachesDirectoryPath}/Documents`,
|
||||
IS_TABLET: DeviceInfo.isTablet(),
|
||||
PUSH_NOTIFY_ANDROID_REACT_NATIVE: 'android_rn',
|
||||
PUSH_NOTIFY_APPLE_REACT_NATIVE: 'apple_rn',
|
||||
|
||||
@@ -8,8 +8,7 @@ import {Appearance, EventSubscription} from 'react-native';
|
||||
import {Preferences} from '@constants';
|
||||
import {queryPreferencesByCategoryAndName} from '@queries/servers/preference';
|
||||
import {observeCurrentTeamId} from '@queries/servers/system';
|
||||
import EphemeralStore from '@store/ephemeral_store';
|
||||
import {setNavigationStackStyles, setThemeDefaults} from '@utils/theme';
|
||||
import {setThemeDefaults, updateThemeIfNeeded} from '@utils/theme';
|
||||
|
||||
import type {PreferenceModel} from '@database/models/server';
|
||||
import type Database from '@nozbe/watermelondb/Database';
|
||||
@@ -34,15 +33,6 @@ export function getDefaultThemeByAppearance(): Theme {
|
||||
export const ThemeContext = createContext(getDefaultThemeByAppearance());
|
||||
const {Consumer, Provider} = ThemeContext;
|
||||
|
||||
const updateThemeIfNeeded = (theme: Theme) => {
|
||||
if (theme !== EphemeralStore.theme) {
|
||||
EphemeralStore.theme = theme;
|
||||
requestAnimationFrame(() => {
|
||||
setNavigationStackStyles(theme);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const ThemeProvider = ({currentTeamId, children, themes}: Props) => {
|
||||
const getTheme = (): Theme => {
|
||||
if (currentTeamId) {
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
import {Database, Q} from '@nozbe/watermelondb';
|
||||
import LokiJSAdapter from '@nozbe/watermelondb/adapters/lokijs';
|
||||
import logger from '@nozbe/watermelondb/utils/common/logger';
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import {DeviceEventEmitter, Platform} from 'react-native';
|
||||
import FileSystem from 'react-native-fs';
|
||||
|
||||
import {MIGRATION_EVENTS, MM_TABLES} from '@constants/database';
|
||||
import AppDatabaseMigrations from '@database/migration/app';
|
||||
@@ -301,8 +301,17 @@ class DatabaseManager {
|
||||
const databaseFile = `${androidFilesDir}${databaseName}.db`;
|
||||
const databaseJournal = `${androidFilesDir}${databaseName}.db-journal`;
|
||||
|
||||
await FileSystem.deleteAsync(databaseFile);
|
||||
await FileSystem.deleteAsync(databaseJournal);
|
||||
try {
|
||||
await FileSystem.unlink(databaseFile);
|
||||
} catch {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
try {
|
||||
await FileSystem.unlink(databaseJournal);
|
||||
} catch {
|
||||
// do nothing
|
||||
}
|
||||
};
|
||||
|
||||
factoryReset = async (shouldRemoveDirectory: boolean): Promise<boolean> => {
|
||||
@@ -315,7 +324,7 @@ class DatabaseManager {
|
||||
|
||||
// On Android, we'll remove the databases folder under the Document Directory
|
||||
const androidFilesDir = `${this.databaseDirectory}databases/`;
|
||||
await FileSystem.deleteAsync(androidFilesDir);
|
||||
await FileSystem.unlink(androidFilesDir);
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
import {Database, Q} from '@nozbe/watermelondb';
|
||||
import SQLiteAdapter from '@nozbe/watermelondb/adapters/sqlite';
|
||||
import logger from '@nozbe/watermelondb/utils/common/logger';
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import {DeviceEventEmitter, Platform} from 'react-native';
|
||||
import DeviceInfo from 'react-native-device-info';
|
||||
import FileSystem from 'react-native-fs';
|
||||
|
||||
import {MIGRATION_EVENTS, MM_TABLES} from '@constants/database';
|
||||
import AppDatabaseMigrations from '@database/migration/app';
|
||||
@@ -24,6 +24,7 @@ import {schema as appSchema} from '@database/schema/app';
|
||||
import {serverSchema} from '@database/schema/server';
|
||||
import {queryActiveServer, queryServer, queryServerByIdentifier} from '@queries/app/servers';
|
||||
import {DatabaseType} from '@typings/database/enums';
|
||||
import {emptyFunction} from '@utils/general';
|
||||
import {deleteIOSDatabase, getIOSAppGroupDetails} from '@utils/mattermost_managed';
|
||||
import {hashCode} from '@utils/security';
|
||||
|
||||
@@ -49,7 +50,7 @@ class DatabaseManager {
|
||||
ThreadModel, ThreadParticipantModel, ThreadInTeamModel, UserModel,
|
||||
];
|
||||
|
||||
this.databaseDirectory = Platform.OS === 'ios' ? getIOSAppGroupDetails().appGroupDatabase : `${FileSystem.documentDirectory}databases/`;
|
||||
this.databaseDirectory = Platform.OS === 'ios' ? getIOSAppGroupDetails().appGroupDatabase : `${FileSystem.DocumentDirectoryPath}/databases/`;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,7 +83,7 @@ class DatabaseManager {
|
||||
const databaseName = APP_DATABASE;
|
||||
|
||||
if (Platform.OS === 'android') {
|
||||
await FileSystem.makeDirectoryAsync(this.databaseDirectory!, {intermediates: true});
|
||||
await FileSystem.mkdir(this.databaseDirectory!);
|
||||
}
|
||||
const databaseFilePath = this.getDatabaseFilePath(databaseName);
|
||||
const modelClasses = this.appModels;
|
||||
@@ -390,9 +391,9 @@ class DatabaseManager {
|
||||
const databaseShm = `${androidFilesDir}${databaseName}.db-shm`;
|
||||
const databaseWal = `${androidFilesDir}${databaseName}.db-wal`;
|
||||
|
||||
FileSystem.deleteAsync(databaseFile, {idempotent: true});
|
||||
FileSystem.deleteAsync(databaseShm, {idempotent: true});
|
||||
FileSystem.deleteAsync(databaseWal, {idempotent: true});
|
||||
FileSystem.unlink(databaseFile).catch(emptyFunction);
|
||||
FileSystem.unlink(databaseShm).catch(emptyFunction);
|
||||
FileSystem.unlink(databaseWal).catch(emptyFunction);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -410,7 +411,7 @@ class DatabaseManager {
|
||||
|
||||
// On Android, we'll remove the databases folder under the Document Directory
|
||||
const androidFilesDir = `${this.databaseDirectory}databases/`;
|
||||
await FileSystem.deleteAsync(androidFilesDir);
|
||||
await FileSystem.unlink(androidFilesDir);
|
||||
return true;
|
||||
} catch (e) {
|
||||
return false;
|
||||
@@ -458,7 +459,7 @@ class DatabaseManager {
|
||||
* @returns {string}
|
||||
*/
|
||||
private getDatabaseFilePath = (dbName: string): string => {
|
||||
return Platform.OS === 'ios' ? `${this.databaseDirectory}/${dbName}.db` : `${this.databaseDirectory}${dbName}.db`;
|
||||
return Platform.OS === 'ios' ? `${this.databaseDirectory}/${dbName}.db` : `${this.databaseDirectory}/${dbName}.db`;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
import CameraRoll from '@react-native-community/cameraroll';
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import React, {useEffect, useRef, useState} from 'react';
|
||||
import {useIntl} from 'react-intl';
|
||||
import {NativeModules, Platform, StyleSheet, Text, View} from 'react-native';
|
||||
import DeviceInfo from 'react-native-device-info';
|
||||
import FileViewer from 'react-native-file-viewer';
|
||||
import FileSystem from 'react-native-fs';
|
||||
import {TouchableOpacity} from 'react-native-gesture-handler';
|
||||
import {useAnimatedStyle, withTiming} from 'react-native-reanimated';
|
||||
import Share from 'react-native-share';
|
||||
@@ -116,11 +116,10 @@ const DownloadWithAction = ({action, item, onDownloadSuccess, setAction}: Props)
|
||||
|
||||
const cancel = async () => {
|
||||
try {
|
||||
await downloadPromise.current?.cancel?.();
|
||||
downloadPromise.current?.cancel?.();
|
||||
const path = getLocalFilePathFromFile(serverUrl, galleryItemToFileInfo(item));
|
||||
await FileSystem.deleteAsync(path, {idempotent: true});
|
||||
|
||||
downloadPromise.current = undefined;
|
||||
await FileSystem.unlink(path);
|
||||
} catch {
|
||||
// do nothing
|
||||
} finally {
|
||||
@@ -159,7 +158,7 @@ const DownloadWithAction = ({action, item, onDownloadSuccess, setAction}: Props)
|
||||
if (mounted.current) {
|
||||
if (Platform.OS === 'android') {
|
||||
try {
|
||||
await NativeModules.MattermostManaged.saveFile(path.replace('file://', '/'));
|
||||
await NativeModules.MattermostManaged.saveFile(path);
|
||||
} catch {
|
||||
// do nothing in case the user decides not to save the file
|
||||
}
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
|
||||
import {PastedFile} from '@mattermost/react-native-paste-input';
|
||||
import Model from '@nozbe/watermelondb/Model';
|
||||
import * as FileSystem from 'expo-file-system';
|
||||
import mimeDB from 'mime-db';
|
||||
import {IntlShape} from 'react-intl';
|
||||
import {Alert, Platform} from 'react-native';
|
||||
import AndroidOpenSettings from 'react-native-android-open-settings';
|
||||
import DeviceInfo from 'react-native-device-info';
|
||||
import {DocumentPickerResponse} from 'react-native-document-picker';
|
||||
import FileSystem from 'react-native-fs';
|
||||
import {Asset} from 'react-native-image-picker';
|
||||
import Permissions, {PERMISSIONS} from 'react-native-permissions';
|
||||
|
||||
@@ -95,61 +95,22 @@ function populateMaps() {
|
||||
});
|
||||
}
|
||||
|
||||
const vectorIconsDir = 'vectorIcons';
|
||||
const dirsToExclude = ['Cache.db', 'WebKit', 'WebView', vectorIconsDir];
|
||||
async function getDirectorySize(fileStats: FileSystem.FileInfo) {
|
||||
if (fileStats?.exists) {
|
||||
let total = 0;
|
||||
if (fileStats.isDirectory) {
|
||||
const exclude = dirsToExclude.find((f) => fileStats.uri.includes(f));
|
||||
if (!exclude) {
|
||||
const paths = await FileSystem.readDirectoryAsync(fileStats.uri);
|
||||
for await (const path of paths) {
|
||||
const info = await FileSystem.getInfoAsync(`${fileStats.uri}/${path}`, {size: true});
|
||||
if (info.isDirectory) {
|
||||
const dirSize = await getDirectorySize(info);
|
||||
total += dirSize;
|
||||
} else {
|
||||
total += (info.size || 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
total = fileStats.size;
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
export async function getFileCacheSize() {
|
||||
if (FileSystem.cacheDirectory) {
|
||||
const cacheStats = await FileSystem.getInfoAsync(FileSystem.cacheDirectory);
|
||||
const size = await getDirectorySize(cacheStats);
|
||||
|
||||
return size;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
export async function deleteV1Data() {
|
||||
const dir = Platform.OS === 'ios' ? getIOSAppGroupDetails().appGroupSharedDirectory : FileSystem.documentDirectory;
|
||||
const dir = Platform.OS === 'ios' ? getIOSAppGroupDetails().appGroupSharedDirectory : FileSystem.DocumentDirectoryPath;
|
||||
|
||||
try {
|
||||
const mmkvDirInfo = await FileSystem.getInfoAsync(`${dir}/mmkv`);
|
||||
if (mmkvDirInfo.exists) {
|
||||
await FileSystem.deleteAsync(mmkvDirInfo.uri, {idempotent: true});
|
||||
const directory = `${dir}/mmkv`;
|
||||
const mmkvDirInfo = await FileSystem.exists(directory);
|
||||
if (mmkvDirInfo) {
|
||||
await FileSystem.unlink(directory);
|
||||
}
|
||||
} catch {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
try {
|
||||
const entitiesInfo = await FileSystem.getInfoAsync(`${dir}/entities`);
|
||||
if (entitiesInfo.exists) {
|
||||
const entitiesInfo = await FileSystem.exists(`${dir}/entities`);
|
||||
if (entitiesInfo) {
|
||||
deleteEntititesFile();
|
||||
}
|
||||
} catch (e) {
|
||||
@@ -159,17 +120,17 @@ export async function deleteV1Data() {
|
||||
|
||||
export async function deleteFileCache(serverUrl: string) {
|
||||
const serverDir = hashCode(serverUrl);
|
||||
const cacheDir = `${FileSystem.cacheDirectory}/${serverDir}`;
|
||||
const cacheDir = `${FileSystem.CachesDirectoryPath}/${serverDir}`;
|
||||
if (cacheDir) {
|
||||
const cacheDirInfo = await FileSystem.getInfoAsync(cacheDir);
|
||||
if (cacheDirInfo.exists) {
|
||||
const cacheDirInfo = await FileSystem.exists(cacheDir);
|
||||
if (cacheDirInfo) {
|
||||
if (Platform.OS === 'ios') {
|
||||
await FileSystem.deleteAsync(cacheDir, {idempotent: true});
|
||||
await FileSystem.makeDirectoryAsync(cacheDir, {intermediates: true});
|
||||
await FileSystem.unlink(cacheDir);
|
||||
await FileSystem.mkdir(cacheDir);
|
||||
} else {
|
||||
const lstat = await FileSystem.readDirectoryAsync(cacheDir);
|
||||
lstat.forEach((stat: string) => {
|
||||
FileSystem.deleteAsync(stat, {idempotent: true});
|
||||
const lstat = await FileSystem.readDir(cacheDir);
|
||||
lstat.forEach((stat: FileSystem.ReadDirItem) => {
|
||||
FileSystem.unlink(stat.path);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -363,9 +324,9 @@ export function getLocalFilePathFromFile(serverUrl: string, file: FileInfo | Fil
|
||||
}
|
||||
}
|
||||
|
||||
return `${FileSystem.cacheDirectory}${server}/${filename}-${hashCode(file.id!)}.${extension}`;
|
||||
return `${FileSystem.CachesDirectoryPath}/${server}/${filename}-${hashCode(file.id!)}.${extension}`;
|
||||
} else if (file?.id && file?.extension) {
|
||||
return `${FileSystem.cacheDirectory}${server}/${file.id}.${file.extension}`;
|
||||
return `${FileSystem.CachesDirectoryPath}/${server}/${file.id}.${file.extension}`;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -397,10 +358,9 @@ export async function extractFileInfo(files: Array<Asset | DocumentPickerRespons
|
||||
});
|
||||
let fileInfo;
|
||||
try {
|
||||
fileInfo = await FileSystem.getInfoAsync(path);
|
||||
const uri = fileInfo.uri;
|
||||
fileInfo = await FileSystem.stat(path);
|
||||
outFile.size = fileInfo.size || 0;
|
||||
outFile.name = uri.substring(uri.lastIndexOf('/') + 1);
|
||||
outFile.name = path.substring(path.lastIndexOf('/') + 1);
|
||||
} catch (e) {
|
||||
return;
|
||||
}
|
||||
@@ -446,8 +406,7 @@ export function uploadDisabledWarning(intl: IntlShape) {
|
||||
export const fileExists = async (path: string) => {
|
||||
try {
|
||||
const filePath = Platform.select({ios: path.replace('file://', ''), default: path});
|
||||
const info = await FileSystem.getInfoAsync(filePath);
|
||||
return info.exists;
|
||||
return FileSystem.exists(filePath);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -256,3 +256,12 @@ export function setThemeDefaults(theme: Theme): Theme {
|
||||
|
||||
return processedTheme as Theme;
|
||||
}
|
||||
|
||||
export const updateThemeIfNeeded = (theme: Theme, force = false) => {
|
||||
if (theme !== EphemeralStore.theme || force) {
|
||||
EphemeralStore.theme = theme;
|
||||
requestAnimationFrame(() => {
|
||||
setNavigationStackStyles(theme);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
83
detox/package-lock.json
generated
83
detox/package-lock.json
generated
@@ -7,7 +7,7 @@
|
||||
"name": "mattermost-mobile-e2e",
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "7.16.7",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.17.7",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.17.9",
|
||||
"@babel/plugin-transform-runtime": "7.17.0",
|
||||
"@babel/preset-env": "7.16.11",
|
||||
"@types/jest": "27.4.1",
|
||||
@@ -19,19 +19,19 @@
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"client-oauth2": "4.3.3",
|
||||
"deepmerge": "4.2.2",
|
||||
"detox": "19.5.7",
|
||||
"detox": "19.6.0",
|
||||
"form-data": "4.0.0",
|
||||
"jest": "27.5.1",
|
||||
"jest-circus": "27.5.1",
|
||||
"jest-cli": "27.5.1",
|
||||
"jest-html-reporters": "3.0.6",
|
||||
"jest-junit": "13.0.0",
|
||||
"jest-junit": "13.1.0",
|
||||
"moment-timezone": "0.5.34",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"tough-cookie": "4.0.0",
|
||||
"ts-jest": "27.1.3",
|
||||
"ts-jest": "27.1.4",
|
||||
"tslib": "2.3.1",
|
||||
"typescript": "4.6.2",
|
||||
"typescript": "4.6.3",
|
||||
"uuid": "8.3.2"
|
||||
}
|
||||
},
|
||||
@@ -1213,9 +1213,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz",
|
||||
"integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==",
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
|
||||
"integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@babel/helper-module-transforms": "^7.17.7",
|
||||
@@ -3441,9 +3441,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/detox": {
|
||||
"version": "19.5.7",
|
||||
"resolved": "https://registry.npmjs.org/detox/-/detox-19.5.7.tgz",
|
||||
"integrity": "sha512-vLd5eySM/zjaWLJGgbtx4g7qA3JZLCZHVz4n/AphNFFW3T3qiyh7HfIYeoBoZanjjyC1k3iuw2UshpBRlHZuGA==",
|
||||
"version": "19.6.0",
|
||||
"resolved": "https://registry.npmjs.org/detox/-/detox-19.6.0.tgz",
|
||||
"integrity": "sha512-TEoi19rJQIValWrvHf6ensOxw1smykj3qemvqOGF+KJT5pf5WcPgEpNI/Z6/9AipGqEhgbTDt7GpOnA7WS+VNQ==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
@@ -5250,9 +5250,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/jest-junit": {
|
||||
"version": "13.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz",
|
||||
"integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==",
|
||||
"version": "13.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.1.0.tgz",
|
||||
"integrity": "sha512-ECbhzEG3Oe2IH3Mnwcv2vAXM4qTbcObN/gTUzwKPlpaNsf2G/zlj/teEUqRGV17YQiQ4AqzTf3pCO7W59DKVIw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"mkdirp": "^1.0.4",
|
||||
@@ -6660,9 +6660,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/mkdirp": {
|
||||
@@ -8222,9 +8222,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/ts-jest": {
|
||||
"version": "27.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
|
||||
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
|
||||
"version": "27.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
|
||||
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"bs-logger": "0.x",
|
||||
@@ -8246,7 +8246,6 @@
|
||||
"@babel/core": ">=7.0.0-beta.0 <8",
|
||||
"@types/jest": "^27.0.0",
|
||||
"babel-jest": ">=27.0.0 <28",
|
||||
"esbuild": "~0.14.0",
|
||||
"jest": "^27.0.0",
|
||||
"typescript": ">=3.8 <5.0"
|
||||
},
|
||||
@@ -8347,9 +8346,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz",
|
||||
"integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==",
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
|
||||
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
@@ -9553,9 +9552,9 @@
|
||||
}
|
||||
},
|
||||
"@babel/plugin-transform-modules-commonjs": {
|
||||
"version": "7.17.7",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz",
|
||||
"integrity": "sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA==",
|
||||
"version": "7.17.9",
|
||||
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz",
|
||||
"integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@babel/helper-module-transforms": "^7.17.7",
|
||||
@@ -11279,9 +11278,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"detox": {
|
||||
"version": "19.5.7",
|
||||
"resolved": "https://registry.npmjs.org/detox/-/detox-19.5.7.tgz",
|
||||
"integrity": "sha512-vLd5eySM/zjaWLJGgbtx4g7qA3JZLCZHVz4n/AphNFFW3T3qiyh7HfIYeoBoZanjjyC1k3iuw2UshpBRlHZuGA==",
|
||||
"version": "19.6.0",
|
||||
"resolved": "https://registry.npmjs.org/detox/-/detox-19.6.0.tgz",
|
||||
"integrity": "sha512-TEoi19rJQIValWrvHf6ensOxw1smykj3qemvqOGF+KJT5pf5WcPgEpNI/Z6/9AipGqEhgbTDt7GpOnA7WS+VNQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ajv": "^8.6.3",
|
||||
@@ -12614,9 +12613,9 @@
|
||||
}
|
||||
},
|
||||
"jest-junit": {
|
||||
"version": "13.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.0.0.tgz",
|
||||
"integrity": "sha512-JSHR+Dhb32FGJaiKkqsB7AR3OqWKtldLd6ZH2+FJ8D4tsweb8Id8zEVReU4+OlrRO1ZluqJLQEETm+Q6/KilBg==",
|
||||
"version": "13.1.0",
|
||||
"resolved": "https://registry.npmjs.org/jest-junit/-/jest-junit-13.1.0.tgz",
|
||||
"integrity": "sha512-ECbhzEG3Oe2IH3Mnwcv2vAXM4qTbcObN/gTUzwKPlpaNsf2G/zlj/teEUqRGV17YQiQ4AqzTf3pCO7W59DKVIw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mkdirp": "^1.0.4",
|
||||
@@ -13688,9 +13687,9 @@
|
||||
}
|
||||
},
|
||||
"minimist": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
|
||||
"integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
|
||||
"version": "1.2.6",
|
||||
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
|
||||
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
|
||||
"dev": true
|
||||
},
|
||||
"mkdirp": {
|
||||
@@ -14880,9 +14879,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"ts-jest": {
|
||||
"version": "27.1.3",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.3.tgz",
|
||||
"integrity": "sha512-6Nlura7s6uM9BVUAoqLH7JHyMXjz8gluryjpPXxr3IxZdAXnU6FhjvVLHFtfd1vsE1p8zD1OJfskkc0jhTSnkA==",
|
||||
"version": "27.1.4",
|
||||
"resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz",
|
||||
"integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"bs-logger": "0.x",
|
||||
@@ -14958,9 +14957,9 @@
|
||||
}
|
||||
},
|
||||
"typescript": {
|
||||
"version": "4.6.2",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.2.tgz",
|
||||
"integrity": "sha512-HM/hFigTBHZhLXshn9sN37H085+hQGeJHJ/X7LpBWLID/fbc2acUMfU+lGD98X81sKP+pFa9f0DZmCwB9GnbAg==",
|
||||
"version": "4.6.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz",
|
||||
"integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==",
|
||||
"dev": true
|
||||
},
|
||||
"unicode-canonical-property-names-ecmascript": {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
"author": "Mattermost, Inc.",
|
||||
"devDependencies": {
|
||||
"@babel/plugin-proposal-class-properties": "7.16.7",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.17.7",
|
||||
"@babel/plugin-transform-modules-commonjs": "7.17.9",
|
||||
"@babel/plugin-transform-runtime": "7.17.0",
|
||||
"@babel/preset-env": "7.16.11",
|
||||
"@types/jest": "27.4.1",
|
||||
@@ -17,19 +17,19 @@
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"client-oauth2": "4.3.3",
|
||||
"deepmerge": "4.2.2",
|
||||
"detox": "19.5.7",
|
||||
"detox": "19.6.0",
|
||||
"form-data": "4.0.0",
|
||||
"jest": "27.5.1",
|
||||
"jest-circus": "27.5.1",
|
||||
"jest-cli": "27.5.1",
|
||||
"jest-html-reporters": "3.0.6",
|
||||
"jest-junit": "13.0.0",
|
||||
"jest-junit": "13.1.0",
|
||||
"moment-timezone": "0.5.34",
|
||||
"sanitize-filename": "1.6.3",
|
||||
"tough-cookie": "4.0.0",
|
||||
"ts-jest": "27.1.3",
|
||||
"ts-jest": "27.1.4",
|
||||
"tslib": "2.3.1",
|
||||
"typescript": "4.6.2",
|
||||
"typescript": "4.6.3",
|
||||
"uuid": "8.3.2"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -656,14 +656,6 @@ platform :android do
|
||||
helpers_dir = './android/app/src/main/java/com/mattermost/helpers/'
|
||||
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}"
|
||||
@@ -701,6 +693,14 @@ platform :android do
|
||||
)
|
||||
end
|
||||
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
|
||||
end
|
||||
|
||||
lane :replace_assets do
|
||||
|
||||
@@ -111,7 +111,7 @@ 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.17.0)
|
||||
google-apis-androidpublisher_v3 (0.18.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-apis-core (0.4.2)
|
||||
addressable (~> 2.5, >= 2.5.1)
|
||||
@@ -126,7 +126,7 @@ GEM
|
||||
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.11.0)
|
||||
google-apis-storage_v1 (0.12.0)
|
||||
google-apis-core (>= 0.4, < 2.a)
|
||||
google-cloud-core (1.6.0)
|
||||
google-cloud-env (~> 1.0)
|
||||
|
||||
1
index.ts
1
index.ts
@@ -27,6 +27,7 @@ if (__DEV__) {
|
||||
'scaleY',
|
||||
"[react-native-gesture-handler] Seems like you're using an old API with gesture components, check out new Gestures system!",
|
||||
'new NativeEventEmitter',
|
||||
'ViewPropTypes will be removed from React Native',
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
18
ios/GekidouWrapper.swift
Normal file
18
ios/GekidouWrapper.swift
Normal file
@@ -0,0 +1,18 @@
|
||||
//
|
||||
// GekidouWrapper.swift
|
||||
// Mattermost
|
||||
//
|
||||
// Created by Elias Nahum on 06-04-22.
|
||||
// Copyright © 2022 Facebook. All rights reserved.
|
||||
//
|
||||
|
||||
import Foundation
|
||||
import Gekidou
|
||||
|
||||
@objc class GekidouWrapper: NSObject {
|
||||
@objc public static let `default` = GekidouWrapper()
|
||||
|
||||
@objc func postNotificationReceipt(_ userInfo: [AnyHashable:Any]) {
|
||||
Network.default.postNotificationReceipt(userInfo)
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,7 @@ GEM
|
||||
public_suffix (~> 4.0)
|
||||
typhoeus (~> 1.0)
|
||||
cocoapods-deintegrate (1.0.5)
|
||||
cocoapods-downloader (1.6.1)
|
||||
cocoapods-downloader (1.6.3)
|
||||
cocoapods-plugins (1.0.0)
|
||||
nap
|
||||
cocoapods-search (1.0.1)
|
||||
|
||||
@@ -8,13 +8,12 @@
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
02860A1AC3334896837E96B7 /* OpenSans-SemiBoldItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 0DB14DFDF6E04FA69FE769DC /* OpenSans-SemiBoldItalic.ttf */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
4953BF602368AE8600593328 /* SwimeProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4953BF5F2368AE8600593328 /* SwimeProxy.swift */; };
|
||||
49AE36FF26D4455800EF4E52 /* Gekidou in Frameworks */ = {isa = PBXBuildFile; productRef = 49AE36FE26D4455800EF4E52 /* Gekidou */; };
|
||||
49AE370126D4455D00EF4E52 /* Gekidou in Frameworks */ = {isa = PBXBuildFile; productRef = 49AE370026D4455D00EF4E52 /* Gekidou */; };
|
||||
49AE370526D5CD7800EF4E52 /* Gekidou in Frameworks */ = {isa = PBXBuildFile; productRef = 49AE370426D5CD7800EF4E52 /* Gekidou */; };
|
||||
49B4C050230C981C006E919E /* libUploadAttachments.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FABE04522137F2A00D0F595 /* libUploadAttachments.a */; };
|
||||
531BEBC72513E93C00BC05B1 /* compass-icons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 531BEBC52513E93C00BC05B1 /* compass-icons.ttf */; };
|
||||
536CC6C323E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m in Sources */ = {isa = PBXBuildFile; fileRef = 536CC6C123E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m */; };
|
||||
@@ -22,6 +21,7 @@
|
||||
6C9B1EFD6561083917AF06CF /* libPods-Mattermost.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8DEEFB3ED6175724A2653247 /* libPods-Mattermost.a */; };
|
||||
7F0F4B0A24BA173900E14C60 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F0F4B0924BA173900E14C60 /* LaunchScreen.storyboard */; };
|
||||
7F151D3E221B062700FAD8F3 /* RuntimeUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F151D3D221B062700FAD8F3 /* RuntimeUtils.swift */; };
|
||||
7F1EB88527FDE361002E7EEC /* GekidouWrapper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F1EB88427FDE361002E7EEC /* GekidouWrapper.swift */; };
|
||||
7F240A1C220D3A2300637665 /* ShareViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F240A1B220D3A2300637665 /* ShareViewController.swift */; };
|
||||
7F240A1F220D3A2300637665 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7F240A1D220D3A2300637665 /* MainInterface.storyboard */; };
|
||||
7F240A23220D3A2300637665 /* MattermostShare.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 7F240A19220D3A2300637665 /* MattermostShare.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
@@ -34,6 +34,7 @@
|
||||
7F72F2EE2211220500F98FFF /* GenericPreview.xib in Resources */ = {isa = PBXBuildFile; fileRef = 7F72F2ED2211220500F98FFF /* GenericPreview.xib */; };
|
||||
7F72F2F0221123E200F98FFF /* GenericPreview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F72F2EF221123E200F98FFF /* GenericPreview.swift */; };
|
||||
7F72F2F322112EC700F98FFF /* generic.png in Resources */ = {isa = PBXBuildFile; fileRef = 7F72F2F222112EC700F98FFF /* generic.png */; };
|
||||
7F98836227FD46A9001C9BFC /* Gekidou in Frameworks */ = {isa = PBXBuildFile; productRef = 7F98836127FD46A9001C9BFC /* Gekidou */; };
|
||||
7FABDFC22211A39000D0F595 /* Section.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FABDFC12211A39000D0F595 /* Section.swift */; };
|
||||
7FABE00A2212650600D0F595 /* ChannelsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FABE0092212650600D0F595 /* ChannelsViewController.swift */; };
|
||||
7FABE0562213884700D0F595 /* libUploadAttachments.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7FABE04522137F2A00D0F595 /* libUploadAttachments.a */; };
|
||||
@@ -51,7 +52,6 @@
|
||||
7FCEFB9326B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FCEFB9226B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.m */; };
|
||||
7FEB109D1F61019C0039A015 /* MattermostManaged.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FEB109A1F61019C0039A015 /* MattermostManaged.m */; };
|
||||
84E3264B229834C30055068A /* Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84E325FF229834C30055068A /* Config.swift */; };
|
||||
88F091443F8214E333C1742C /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 491398A1DE9F082851AB1A77 /* ExpoModulesProvider.swift */; };
|
||||
A94508A396424B2DB778AFE9 /* OpenSans-SemiBold.ttf in Resources */ = {isa = PBXBuildFile; fileRef = E5C16B14E1CE4868886A1A00 /* OpenSans-SemiBold.ttf */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
0DB14DFDF6E04FA69FE769DC /* OpenSans-SemiBoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-SemiBoldItalic.ttf"; path = "../assets/fonts/OpenSans-SemiBoldItalic.ttf"; sourceTree = "<group>"; };
|
||||
13B07F961A680F5B00A75B9A /* Mattermost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Mattermost.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Mattermost/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = Mattermost/AppDelegate.m; sourceTree = "<group>"; };
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Mattermost/AppDelegate.mm; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Mattermost/Images.xcassets; sourceTree = "<group>"; };
|
||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Mattermost/Info.plist; sourceTree = "<group>"; };
|
||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Mattermost/main.m; sourceTree = "<group>"; };
|
||||
@@ -141,7 +141,6 @@
|
||||
32AC3D4EA79E44738A6E9766 /* OpenSans-BoldItalic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-BoldItalic.ttf"; path = "../assets/fonts/OpenSans-BoldItalic.ttf"; sourceTree = "<group>"; };
|
||||
3647DF63D6764CF093375861 /* OpenSans-ExtraBold.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-ExtraBold.ttf"; path = "../assets/fonts/OpenSans-ExtraBold.ttf"; sourceTree = "<group>"; };
|
||||
41F3AFE83AAF4B74878AB78A /* OpenSans-Italic.ttf */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = unknown; name = "OpenSans-Italic.ttf"; path = "../assets/fonts/OpenSans-Italic.ttf"; sourceTree = "<group>"; };
|
||||
491398A1DE9F082851AB1A77 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-Mattermost/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
4953BF5F2368AE8600593328 /* SwimeProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SwimeProxy.swift; path = Mattermost/SwimeProxy.swift; sourceTree = "<group>"; };
|
||||
495BC95F23565ABF00C40C83 /* libXCDYouTubeKit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libXCDYouTubeKit.a; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
495BC96123565ADD00C40C83 /* libYoutubePlayer-in-WKWebView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libYoutubePlayer-in-WKWebView.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
@@ -160,6 +159,7 @@
|
||||
7F151D3D221B062700FAD8F3 /* RuntimeUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RuntimeUtils.swift; path = Mattermost/RuntimeUtils.swift; sourceTree = "<group>"; };
|
||||
7F151D42221B07F700FAD8F3 /* MattermostShare-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MattermostShare-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
7F151D43221B082A00FAD8F3 /* Mattermost-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "Mattermost-Bridging-Header.h"; path = "Mattermost/Mattermost-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||
7F1EB88427FDE361002E7EEC /* GekidouWrapper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GekidouWrapper.swift; sourceTree = "<group>"; };
|
||||
7F240A19220D3A2300637665 /* MattermostShare.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = MattermostShare.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7F240A1B220D3A2300637665 /* ShareViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareViewController.swift; sourceTree = "<group>"; };
|
||||
7F240A1E220D3A2300637665 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = "<group>"; };
|
||||
@@ -215,7 +215,7 @@
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
49AE370526D5CD7800EF4E52 /* Gekidou in Frameworks */,
|
||||
7F98836227FD46A9001C9BFC /* Gekidou in Frameworks */,
|
||||
49B4C050230C981C006E919E /* libUploadAttachments.a in Frameworks */,
|
||||
6C9B1EFD6561083917AF06CF /* libPods-Mattermost.a in Frameworks */,
|
||||
);
|
||||
@@ -280,29 +280,13 @@
|
||||
name = Resources;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
02FBDA8752CE364ABE5D4340 /* Mattermost */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
491398A1DE9F082851AB1A77 /* ExpoModulesProvider.swift */,
|
||||
);
|
||||
name = Mattermost;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
11AC929CFF00961DF6A31412 /* ExpoModulesProviders */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
02FBDA8752CE364ABE5D4340 /* Mattermost */,
|
||||
);
|
||||
name = ExpoModulesProviders;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
13B07FAE1A68108700A75B9A /* Mattermost */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
536CC6C223E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.h */,
|
||||
536CC6C123E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m */,
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */,
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.m */,
|
||||
13B07FB01A68108700A75B9A /* AppDelegate.mm */,
|
||||
7F151D3D221B062700FAD8F3 /* RuntimeUtils.swift */,
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */,
|
||||
13B07FB61A68108700A75B9A /* Info.plist */,
|
||||
@@ -314,6 +298,7 @@
|
||||
7F0F4B0924BA173900E14C60 /* LaunchScreen.storyboard */,
|
||||
7FCEFB9126B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.h */,
|
||||
7FCEFB9226B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.m */,
|
||||
7F1EB88427FDE361002E7EEC /* GekidouWrapper.swift */,
|
||||
);
|
||||
name = Mattermost;
|
||||
sourceTree = "<group>";
|
||||
@@ -436,7 +421,6 @@
|
||||
37DF8AC51F5F0D410079BF89 /* Recovered References */,
|
||||
4B992D7BAAEDF8759DB525B5 /* Frameworks */,
|
||||
33E107B4DC21A5C48B09F800 /* Pods */,
|
||||
11AC929CFF00961DF6A31412 /* ExpoModulesProviders */,
|
||||
);
|
||||
indentWidth = 2;
|
||||
sourceTree = "<group>";
|
||||
@@ -479,7 +463,7 @@
|
||||
);
|
||||
name = Mattermost;
|
||||
packageProductDependencies = (
|
||||
49AE370426D5CD7800EF4E52 /* Gekidou */,
|
||||
7F98836127FD46A9001C9BFC /* Gekidou */,
|
||||
);
|
||||
productName = "Hello World";
|
||||
productReference = 13B07F961A680F5B00A75B9A /* Mattermost.app */;
|
||||
@@ -708,12 +692,14 @@
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-Mattermost/Pods-Mattermost-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-DoubleConversion/double-conversion.framework/double-conversion",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/Flipper-Glog/glog.framework/glog",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/double-conversion.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/glog.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||
);
|
||||
@@ -795,14 +781,14 @@
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
7F1EB88527FDE361002E7EEC /* GekidouWrapper.swift in Sources */,
|
||||
7FCEFB9326B7934F006DC1DE /* SDWebImageDownloaderOperation+Swizzle.m in Sources */,
|
||||
4953BF602368AE8600593328 /* SwimeProxy.swift in Sources */,
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
|
||||
13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */,
|
||||
7F151D3E221B062700FAD8F3 /* RuntimeUtils.swift in Sources */,
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */,
|
||||
7FEB109D1F61019C0039A015 /* MattermostManaged.m in Sources */,
|
||||
536CC6C323E79287002C478C /* RNNotificationEventHandler+HandleReplyAction.m in Sources */,
|
||||
88F091443F8214E333C1742C /* ExpoModulesProvider.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@@ -1276,7 +1262,7 @@
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = Gekidou;
|
||||
};
|
||||
49AE370426D5CD7800EF4E52 /* Gekidou */ = {
|
||||
7F98836127FD46A9001C9BFC /* Gekidou */ = {
|
||||
isa = XCSwiftPackageProductDependency;
|
||||
productName = Gekidou;
|
||||
};
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#import <React/RCTBridgeDelegate.h>
|
||||
#import <Expo/Expo.h>
|
||||
#import <UIKit/UIKit.h>
|
||||
#import "RNNotifications.h"
|
||||
|
||||
@interface AppDelegate : EXAppDelegateWrapper <UIApplicationDelegate, RCTBridgeDelegate>
|
||||
@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
|
||||
|
||||
@property (nonatomic, strong) UIWindow *window;
|
||||
@property(nonatomic,assign)BOOL allowRotation;
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
#import "AppDelegate.h"
|
||||
|
||||
#import <AVFoundation/AVFoundation.h>
|
||||
|
||||
#import <React/RCTBundleURLProvider.h>
|
||||
#import <React/RCTRootView.h>
|
||||
#import <React/RCTLinkingManager.h>
|
||||
#import <RNKeychain/RNKeychainManager.h>
|
||||
#import <React/RCTAppSetupUtils.h>
|
||||
|
||||
#import <RNKeychain/RNKeychainManager.h>
|
||||
#import <ReactNativeNavigation/ReactNativeNavigation.h>
|
||||
#import <UploadAttachments/UploadAttachments-Swift.h>
|
||||
#import <UploadAttachments/MattermostBucket.h>
|
||||
@@ -14,11 +17,22 @@
|
||||
#import "Mattermost-Swift.h"
|
||||
#import <os/log.h>
|
||||
|
||||
@import Gekidou;
|
||||
|
||||
@interface AppDelegate () <RCTBridgeDelegate>
|
||||
|
||||
#if RCT_NEW_ARCH_ENABLED
|
||||
#import <React/CoreModulesPlugins.h>
|
||||
#import <React/RCTCxxBridgeDelegate.h>
|
||||
#import <React/RCTFabricSurfaceHostingProxyRootView.h>
|
||||
#import <React/RCTSurfacePresenter.h>
|
||||
#import <React/RCTSurfacePresenterBridgeAdapter.h>
|
||||
#import <ReactCommon/RCTTurboModuleManager.h>
|
||||
#import <react/config/ReactNativeConfig.h>
|
||||
@interface AppDelegate () <RCTCxxBridgeDelegate, RCTTurboModuleManagerDelegate> {
|
||||
RCTTurboModuleManager *_turboModuleManager;
|
||||
RCTSurfacePresenterBridgeAdapter *_bridgeAdapter;
|
||||
std::shared_ptr<const facebook::react::ReactNativeConfig> _reactNativeConfig;
|
||||
facebook::react::ContextContainer::Shared _contextContainer;
|
||||
}
|
||||
@end
|
||||
#endif
|
||||
|
||||
@implementation AppDelegate
|
||||
|
||||
@@ -37,7 +51,7 @@ MattermostBucket* bucket = nil;
|
||||
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
||||
{
|
||||
#if DEBUG
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
|
||||
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
|
||||
#else
|
||||
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
||||
#endif
|
||||
@@ -45,6 +59,8 @@ MattermostBucket* bucket = nil;
|
||||
|
||||
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
|
||||
{
|
||||
RCTAppSetupPrepareApp(application);
|
||||
|
||||
if (bucket == nil) {
|
||||
bucket = [[MattermostBucket alloc] init];
|
||||
}
|
||||
@@ -76,6 +92,28 @@ MattermostBucket* bucket = nil;
|
||||
|
||||
os_log(OS_LOG_DEFAULT, "Mattermost started!!");
|
||||
|
||||
// New Architecture
|
||||
// RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
||||
// #if RCT_NEW_ARCH_ENABLED
|
||||
// _contextContainer = std::make_shared<facebook::react::ContextContainer const>();
|
||||
// _reactNativeConfig = std::make_shared<facebook::react::EmptyReactNativeConfig const>();
|
||||
// _contextContainer->insert("ReactNativeConfig", _reactNativeConfig);
|
||||
// _bridgeAdapter = [[RCTSurfacePresenterBridgeAdapter alloc] initWithBridge:bridge contextContainer:_contextContainer];
|
||||
// bridge.surfacePresenter = _bridgeAdapter.surfacePresenter;
|
||||
// #endif
|
||||
//
|
||||
// UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Mattermost", nil);
|
||||
// if (@available(iOS 13.0, *)) {
|
||||
// rootView.backgroundColor = [UIColor systemBackgroundColor];
|
||||
// } else {
|
||||
// rootView.backgroundColor = [UIColor whiteColor];
|
||||
// }
|
||||
// self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
||||
// UIViewController *rootViewController = [UIViewController new];
|
||||
// rootViewController.view = rootView;
|
||||
// self.window.rootViewController = rootViewController;
|
||||
// [self.window makeKeyAndVisible];
|
||||
|
||||
|
||||
return YES;
|
||||
}
|
||||
@@ -106,7 +144,7 @@ MattermostBucket* bucket = nil;
|
||||
if (isClearAction) {
|
||||
// If received a notification that a channel was read, remove all notifications from that channel (only with app in foreground/background)
|
||||
[self cleanNotificationsFromChannel:channelId];
|
||||
[[Network default] postNotificationReceipt:userInfo];
|
||||
[[GekidouWrapper default] postNotificationReceipt:userInfo];
|
||||
}
|
||||
|
||||
if (state != UIApplicationStateActive || isClearAction) {
|
||||
@@ -229,4 +267,35 @@ RNHWKeyboardEvent *hwKeyEvent = nil;
|
||||
[hwKeyEvent sendHWKeyEvent:@"shift-enter"];
|
||||
}
|
||||
|
||||
#if RCT_NEW_ARCH_ENABLED
|
||||
#pragma mark - RCTCxxBridgeDelegate
|
||||
- (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge
|
||||
{
|
||||
_turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge
|
||||
delegate:self
|
||||
jsInvoker:bridge.jsCallInvoker];
|
||||
return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager);
|
||||
}
|
||||
#pragma mark RCTTurboModuleManagerDelegate
|
||||
- (Class)getModuleClassFromName:(const char *)name
|
||||
{
|
||||
return RCTCoreModulesClassProvider(name);
|
||||
}
|
||||
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
|
||||
jsInvoker:(std::shared_ptr<facebook::react::CallInvoker>)jsInvoker
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:(const std::string &)name
|
||||
initParams:
|
||||
(const facebook::react::ObjCTurboModule::InitParams &)params
|
||||
{
|
||||
return nullptr;
|
||||
}
|
||||
- (id<RCTTurboModule>)getModuleInstanceFromClass:(Class)moduleClass
|
||||
{
|
||||
return RCTAppSetupDefaultModuleFromClass(moduleClass);
|
||||
}
|
||||
#endif
|
||||
|
||||
@end
|
||||
@@ -1,4 +1,3 @@
|
||||
//
|
||||
// Use this file to import your target's public headers that you would like to expose to Swift.
|
||||
//
|
||||
#import <Expo/Expo.h>
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
|
||||
#import "AppDelegate.h"
|
||||
|
||||
int main(int argc, char * argv[]) {
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
@autoreleasepool {
|
||||
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
|
||||
}
|
||||
|
||||
21
ios/Podfile
21
ios/Podfile
@@ -1,17 +1,24 @@
|
||||
require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
|
||||
require_relative '../node_modules/react-native/scripts/react_native_pods'
|
||||
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
|
||||
|
||||
platform :ios, '12.1'
|
||||
install! 'cocoapods', :deterministic_uuids => false
|
||||
|
||||
target 'Mattermost' do
|
||||
use_expo_modules!
|
||||
# Pods for Mattermost
|
||||
|
||||
config = use_native_modules!
|
||||
|
||||
# Flags change depending on the env values.
|
||||
# flags = get_default_flags()
|
||||
|
||||
use_react_native!(
|
||||
:path => config[:reactNativePath],
|
||||
# to enable hermes on iOS, change `false` to `true` and then install pods
|
||||
:hermes_enabled => true
|
||||
:hermes_enabled => true,
|
||||
:fabric_enabled => false,
|
||||
# An absolute path to your application root.
|
||||
:app_path => "#{Pod::Config.instance.installation_root}/.."
|
||||
)
|
||||
|
||||
permissions_path = '../node_modules/react-native-permissions/ios'
|
||||
@@ -52,12 +59,4 @@ end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
post_integrate do |installer|
|
||||
begin
|
||||
expo_patch_react_imports!(installer)
|
||||
rescue => e
|
||||
Pod::UI.warn e
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
539
ios/Podfile.lock
539
ios/Podfile.lock
@@ -5,37 +5,28 @@ PODS:
|
||||
- React
|
||||
- CocoaAsyncSocket (7.6.5)
|
||||
- DoubleConversion (1.1.6)
|
||||
- EXFileSystem (13.1.4):
|
||||
- ExpoModulesCore
|
||||
- Expo (44.0.6):
|
||||
- ExpoModulesCore
|
||||
- ExpoModulesCore (0.6.5):
|
||||
- React-Core
|
||||
- ReactCommon/turbomodule/core
|
||||
- EXVideoThumbnails (6.2.0):
|
||||
- ExpoModulesCore
|
||||
- FBLazyVector (0.67.4)
|
||||
- FBReactNativeSpec (0.67.4):
|
||||
- FBLazyVector (0.68.0)
|
||||
- FBReactNativeSpec (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- RCTRequired (= 0.68.0)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Core (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- Flipper (0.125.0):
|
||||
- Flipper-Folly (~> 2.6)
|
||||
- Flipper-RSocket (~> 1.4)
|
||||
- Flipper-Boost-iOSX (1.76.0.1.11)
|
||||
- Flipper-DoubleConversion (3.1.7)
|
||||
- Flipper-DoubleConversion (3.2.0)
|
||||
- Flipper-Fmt (7.1.7)
|
||||
- Flipper-Folly (2.6.7):
|
||||
- Flipper-Folly (2.6.10):
|
||||
- Flipper-Boost-iOSX
|
||||
- Flipper-DoubleConversion
|
||||
- Flipper-Fmt (= 7.1.7)
|
||||
- Flipper-Glog
|
||||
- libevent (~> 2.1.12)
|
||||
- OpenSSL-Universal (= 1.1.180)
|
||||
- Flipper-Glog (0.3.6)
|
||||
- OpenSSL-Universal (= 1.1.1100)
|
||||
- Flipper-Glog (0.5.0.4)
|
||||
- Flipper-PeerTalk (0.0.4)
|
||||
- Flipper-RSocket (1.4.3):
|
||||
- Flipper-Folly (~> 2.6)
|
||||
@@ -85,7 +76,7 @@ PODS:
|
||||
- FlipperKit/FlipperKitNetworkPlugin
|
||||
- fmt (6.2.1)
|
||||
- glog (0.3.5)
|
||||
- hermes-engine (0.9.0)
|
||||
- hermes-engine (0.11.0)
|
||||
- HMSegmentedControl (1.5.6)
|
||||
- jail-monkey (2.6.0):
|
||||
- React-Core
|
||||
@@ -103,7 +94,7 @@ PODS:
|
||||
- lottie-react-native (5.0.1):
|
||||
- lottie-ios (~> 3.2.3)
|
||||
- React-Core
|
||||
- OpenSSL-Universal (1.1.180)
|
||||
- OpenSSL-Universal (1.1.1100)
|
||||
- Permission-Camera (3.3.1):
|
||||
- RNPermissions
|
||||
- Permission-PhotoLibrary (3.3.1):
|
||||
@@ -125,206 +116,215 @@ PODS:
|
||||
- fmt (~> 6.2.1)
|
||||
- glog
|
||||
- libevent
|
||||
- RCTRequired (0.67.4)
|
||||
- RCTTypeSafety (0.67.4):
|
||||
- FBLazyVector (= 0.67.4)
|
||||
- RCTRequired (0.68.0)
|
||||
- RCTTypeSafety (0.68.0):
|
||||
- FBLazyVector (= 0.68.0)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- RCTRequired (= 0.68.0)
|
||||
- React-Core (= 0.68.0)
|
||||
- RCTYouTube (2.0.2):
|
||||
- React
|
||||
- YoutubePlayer-in-WKWebView (~> 0.3.1)
|
||||
- React (0.67.4):
|
||||
- React-Core (= 0.67.4)
|
||||
- React-Core/DevSupport (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-RCTActionSheet (= 0.67.4)
|
||||
- React-RCTAnimation (= 0.67.4)
|
||||
- React-RCTBlob (= 0.67.4)
|
||||
- React-RCTImage (= 0.67.4)
|
||||
- React-RCTLinking (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- React-RCTSettings (= 0.67.4)
|
||||
- React-RCTText (= 0.67.4)
|
||||
- React-RCTVibration (= 0.67.4)
|
||||
- React-callinvoker (0.67.4)
|
||||
- React-Core (0.67.4):
|
||||
- React (0.68.0):
|
||||
- React-Core (= 0.68.0)
|
||||
- React-Core/DevSupport (= 0.68.0)
|
||||
- React-Core/RCTWebSocket (= 0.68.0)
|
||||
- React-RCTActionSheet (= 0.68.0)
|
||||
- React-RCTAnimation (= 0.68.0)
|
||||
- React-RCTBlob (= 0.68.0)
|
||||
- React-RCTImage (= 0.68.0)
|
||||
- React-RCTLinking (= 0.68.0)
|
||||
- React-RCTNetwork (= 0.68.0)
|
||||
- React-RCTSettings (= 0.68.0)
|
||||
- React-RCTText (= 0.68.0)
|
||||
- React-RCTVibration (= 0.68.0)
|
||||
- React-callinvoker (0.68.0)
|
||||
- React-Codegen (0.68.0):
|
||||
- FBReactNativeSpec (= 0.68.0)
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTRequired (= 0.68.0)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Core (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-Core (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-Core/Default (= 0.68.0)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/CoreModulesHeaders (0.67.4):
|
||||
- React-Core/CoreModulesHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/Default (0.67.4):
|
||||
- React-Core/Default (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/DevSupport (0.67.4):
|
||||
- React-Core/DevSupport (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-jsinspector (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-Core/Default (= 0.68.0)
|
||||
- React-Core/RCTWebSocket (= 0.68.0)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-jsinspector (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTActionSheetHeaders (0.67.4):
|
||||
- React-Core/RCTActionSheetHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTAnimationHeaders (0.67.4):
|
||||
- React-Core/RCTAnimationHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTBlobHeaders (0.67.4):
|
||||
- React-Core/RCTBlobHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTImageHeaders (0.67.4):
|
||||
- React-Core/RCTImageHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTLinkingHeaders (0.67.4):
|
||||
- React-Core/RCTLinkingHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTNetworkHeaders (0.67.4):
|
||||
- React-Core/RCTNetworkHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTSettingsHeaders (0.67.4):
|
||||
- React-Core/RCTSettingsHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTTextHeaders (0.67.4):
|
||||
- React-Core/RCTTextHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTVibrationHeaders (0.67.4):
|
||||
- React-Core/RCTVibrationHeaders (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-Core/RCTWebSocket (0.67.4):
|
||||
- React-Core/RCTWebSocket (0.68.0):
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/Default (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-Core/Default (= 0.68.0)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- Yoga
|
||||
- React-CoreModules (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- React-CoreModules (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/CoreModulesHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTImage (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-cxxreact (0.67.4):
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/CoreModulesHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-RCTImage (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-cxxreact (0.68.0):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-callinvoker (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsinspector (= 0.67.4)
|
||||
- React-logger (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-runtimeexecutor (= 0.67.4)
|
||||
- React-hermes (0.67.4):
|
||||
- React-callinvoker (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsinspector (= 0.68.0)
|
||||
- React-logger (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- React-runtimeexecutor (= 0.68.0)
|
||||
- React-hermes (0.68.0):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- hermes-engine
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCT-Folly/Futures (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-jsiexecutor (= 0.67.4)
|
||||
- React-jsinspector (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-jsi (0.67.4):
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-jsiexecutor (= 0.68.0)
|
||||
- React-jsinspector (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- React-jsi (0.68.0):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsi/Default (= 0.67.4)
|
||||
- React-jsi/Default (0.67.4):
|
||||
- React-jsi/Default (= 0.68.0)
|
||||
- React-jsi/Default (0.68.0):
|
||||
- boost (= 1.76.0)
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-jsiexecutor (0.67.4):
|
||||
- React-jsiexecutor (0.68.0):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-jsinspector (0.67.4)
|
||||
- React-logger (0.67.4):
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- React-jsinspector (0.68.0)
|
||||
- React-logger (0.68.0):
|
||||
- glog
|
||||
- react-native-background-timer (2.4.1):
|
||||
- React-Core
|
||||
@@ -332,7 +332,9 @@ PODS:
|
||||
- React-Core
|
||||
- react-native-cookies (6.1.0):
|
||||
- React-Core
|
||||
- react-native-document-picker (8.0.0):
|
||||
- react-native-create-thumbnail (1.5.1):
|
||||
- React-Core
|
||||
- react-native-document-picker (8.1.0):
|
||||
- React-Core
|
||||
- react-native-emm (1.2.1):
|
||||
- React-Core
|
||||
@@ -363,73 +365,73 @@ PODS:
|
||||
- react-native-video/Video (= 5.2.0)
|
||||
- react-native-video/Video (5.2.0):
|
||||
- React-Core
|
||||
- react-native-webview (11.17.2):
|
||||
- react-native-webview (11.18.1):
|
||||
- React-Core
|
||||
- React-perflogger (0.67.4)
|
||||
- React-RCTActionSheet (0.67.4):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.67.4)
|
||||
- React-RCTAnimation (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- React-perflogger (0.68.0)
|
||||
- React-RCTActionSheet (0.68.0):
|
||||
- React-Core/RCTActionSheetHeaders (= 0.68.0)
|
||||
- React-RCTAnimation (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTAnimationHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTBlob (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTAnimationHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTBlob (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/RCTBlobHeaders (= 0.67.4)
|
||||
- React-Core/RCTWebSocket (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTImage (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTBlobHeaders (= 0.68.0)
|
||||
- React-Core/RCTWebSocket (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-RCTNetwork (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTImage (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTImageHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-RCTNetwork (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTLinking (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- React-Core/RCTLinkingHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTNetwork (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTImageHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-RCTNetwork (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTLinking (0.68.0):
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTLinkingHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTNetwork (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTNetworkHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTSettings (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTNetworkHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTSettings (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- RCTTypeSafety (= 0.67.4)
|
||||
- React-Core/RCTSettingsHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-RCTText (0.67.4):
|
||||
- React-Core/RCTTextHeaders (= 0.67.4)
|
||||
- React-RCTVibration (0.67.4):
|
||||
- FBReactNativeSpec (= 0.67.4)
|
||||
- RCTTypeSafety (= 0.68.0)
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTSettingsHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-RCTText (0.68.0):
|
||||
- React-Core/RCTTextHeaders (= 0.68.0)
|
||||
- React-RCTVibration (0.68.0):
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-Core/RCTVibrationHeaders (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (= 0.67.4)
|
||||
- React-runtimeexecutor (0.67.4):
|
||||
- React-jsi (= 0.67.4)
|
||||
- ReactCommon/turbomodule/core (0.67.4):
|
||||
- React-Codegen (= 0.68.0)
|
||||
- React-Core/RCTVibrationHeaders (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (= 0.68.0)
|
||||
- React-runtimeexecutor (0.68.0):
|
||||
- React-jsi (= 0.68.0)
|
||||
- ReactCommon/turbomodule/core (0.68.0):
|
||||
- DoubleConversion
|
||||
- glog
|
||||
- RCT-Folly (= 2021.06.28.00-v2)
|
||||
- React-callinvoker (= 0.67.4)
|
||||
- React-Core (= 0.67.4)
|
||||
- React-cxxreact (= 0.67.4)
|
||||
- React-jsi (= 0.67.4)
|
||||
- React-logger (= 0.67.4)
|
||||
- React-perflogger (= 0.67.4)
|
||||
- React-callinvoker (= 0.68.0)
|
||||
- React-Core (= 0.68.0)
|
||||
- React-cxxreact (= 0.68.0)
|
||||
- React-jsi (= 0.68.0)
|
||||
- React-logger (= 0.68.0)
|
||||
- React-perflogger (= 0.68.0)
|
||||
- ReactNativeART (1.2.0):
|
||||
- React
|
||||
- ReactNativeExceptionHandler (2.10.10):
|
||||
@@ -449,9 +451,9 @@ PODS:
|
||||
- React-RCTText
|
||||
- RNCClipboard (1.5.1):
|
||||
- React-Core
|
||||
- RNDateTimePicker (6.1.0):
|
||||
- RNDateTimePicker (6.1.2):
|
||||
- React-Core
|
||||
- RNDeviceInfo (8.5.1):
|
||||
- RNDeviceInfo (8.7.0):
|
||||
- React-Core
|
||||
- RNFastImage (8.5.11):
|
||||
- React-Core
|
||||
@@ -459,6 +461,8 @@ PODS:
|
||||
- SDWebImageWebPCoder (~> 0.8.4)
|
||||
- RNFileViewer (2.1.5):
|
||||
- React-Core
|
||||
- RNFS (2.19.0):
|
||||
- React-Core
|
||||
- RNGestureHandler (2.3.2):
|
||||
- React-Core
|
||||
- RNKeychain (8.0.0):
|
||||
@@ -469,7 +473,7 @@ PODS:
|
||||
- React-Core
|
||||
- RNReactNativeHapticFeedback (1.13.1):
|
||||
- React-Core
|
||||
- RNReanimated (2.5.0):
|
||||
- RNReanimated (2.6.0):
|
||||
- DoubleConversion
|
||||
- FBLazyVector
|
||||
- FBReactNativeSpec
|
||||
@@ -477,7 +481,6 @@ PODS:
|
||||
- RCT-Folly
|
||||
- RCTRequired
|
||||
- RCTTypeSafety
|
||||
- React
|
||||
- React-callinvoker
|
||||
- React-Core
|
||||
- React-Core/DevSupport
|
||||
@@ -503,7 +506,7 @@ PODS:
|
||||
- RNScreens (3.13.1):
|
||||
- React-Core
|
||||
- React-RCTImage
|
||||
- RNSentry (3.3.5):
|
||||
- RNSentry (3.4.0):
|
||||
- React-Core
|
||||
- Sentry (= 7.11.0)
|
||||
- RNShare (7.3.7):
|
||||
@@ -540,18 +543,14 @@ DEPENDENCIES:
|
||||
- boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`)
|
||||
- BVLinearGradient (from `../node_modules/react-native-linear-gradient`)
|
||||
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
|
||||
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
|
||||
- Expo (from `../node_modules/expo/ios`)
|
||||
- ExpoModulesCore (from `../node_modules/expo-modules-core/ios`)
|
||||
- EXVideoThumbnails (from `../node_modules/expo-video-thumbnails/ios`)
|
||||
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
|
||||
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
|
||||
- Flipper (= 0.125.0)
|
||||
- Flipper-Boost-iOSX (= 1.76.0.1.11)
|
||||
- Flipper-DoubleConversion (= 3.1.7)
|
||||
- Flipper-DoubleConversion (= 3.2.0)
|
||||
- Flipper-Fmt (= 7.1.7)
|
||||
- Flipper-Folly (= 2.6.7)
|
||||
- Flipper-Glog (= 0.3.6)
|
||||
- Flipper-Folly (= 2.6.10)
|
||||
- Flipper-Glog (= 0.5.0.4)
|
||||
- Flipper-PeerTalk (= 0.0.4)
|
||||
- Flipper-RSocket (= 1.4.3)
|
||||
- FlipperKit (= 0.125.0)
|
||||
@@ -568,12 +567,12 @@ DEPENDENCIES:
|
||||
- FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0)
|
||||
- FlipperKit/SKIOSNetworkPlugin (= 0.125.0)
|
||||
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
|
||||
- hermes-engine (~> 0.9.0)
|
||||
- hermes-engine (~> 0.11.0)
|
||||
- jail-monkey (from `../node_modules/jail-monkey`)
|
||||
- libevent (~> 2.1.12)
|
||||
- lottie-ios (from `../node_modules/lottie-ios`)
|
||||
- lottie-react-native (from `../node_modules/lottie-react-native`)
|
||||
- OpenSSL-Universal (= 1.1.180)
|
||||
- OpenSSL-Universal (= 1.1.1100)
|
||||
- Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera`)
|
||||
- Permission-PhotoLibrary (from `../node_modules/react-native-permissions/ios/PhotoLibrary`)
|
||||
- RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
|
||||
@@ -582,6 +581,7 @@ DEPENDENCIES:
|
||||
- RCTYouTube (from `../node_modules/react-native-youtube`)
|
||||
- React (from `../node_modules/react-native/`)
|
||||
- React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`)
|
||||
- React-Codegen (from `build/generated/ios`)
|
||||
- React-Core (from `../node_modules/react-native/`)
|
||||
- React-Core/DevSupport (from `../node_modules/react-native/`)
|
||||
- React-Core/RCTWebSocket (from `../node_modules/react-native/`)
|
||||
@@ -595,6 +595,7 @@ DEPENDENCIES:
|
||||
- react-native-background-timer (from `../node_modules/react-native-background-timer`)
|
||||
- "react-native-cameraroll (from `../node_modules/@react-native-community/cameraroll`)"
|
||||
- "react-native-cookies (from `../node_modules/@react-native-cookies/cookies`)"
|
||||
- react-native-create-thumbnail (from `../node_modules/react-native-create-thumbnail`)
|
||||
- react-native-document-picker (from `../node_modules/react-native-document-picker`)
|
||||
- "react-native-emm (from `../node_modules/@mattermost/react-native-emm`)"
|
||||
- react-native-hw-keyboard-event (from `../node_modules/react-native-hw-keyboard-event`)
|
||||
@@ -627,6 +628,7 @@ DEPENDENCIES:
|
||||
- RNDeviceInfo (from `../node_modules/react-native-device-info`)
|
||||
- RNFastImage (from `../node_modules/react-native-fast-image`)
|
||||
- RNFileViewer (from `../node_modules/react-native-file-viewer`)
|
||||
- RNFS (from `../node_modules/react-native-fs`)
|
||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||
- RNKeychain (from `../node_modules/react-native-keychain`)
|
||||
- RNLocalize (from `../node_modules/react-native-localize`)
|
||||
@@ -683,14 +685,6 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-linear-gradient"
|
||||
DoubleConversion:
|
||||
:podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec"
|
||||
EXFileSystem:
|
||||
:path: "../node_modules/expo-file-system/ios"
|
||||
Expo:
|
||||
:path: "../node_modules/expo/ios"
|
||||
ExpoModulesCore:
|
||||
:path: "../node_modules/expo-modules-core/ios"
|
||||
EXVideoThumbnails:
|
||||
:path: "../node_modules/expo-video-thumbnails/ios"
|
||||
FBLazyVector:
|
||||
:path: "../node_modules/react-native/Libraries/FBLazyVector"
|
||||
FBReactNativeSpec:
|
||||
@@ -719,6 +713,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/"
|
||||
React-callinvoker:
|
||||
:path: "../node_modules/react-native/ReactCommon/callinvoker"
|
||||
React-Codegen:
|
||||
:path: build/generated/ios
|
||||
React-Core:
|
||||
:path: "../node_modules/react-native/"
|
||||
React-CoreModules:
|
||||
@@ -741,6 +737,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/@react-native-community/cameraroll"
|
||||
react-native-cookies:
|
||||
:path: "../node_modules/@react-native-cookies/cookies"
|
||||
react-native-create-thumbnail:
|
||||
:path: "../node_modules/react-native-create-thumbnail"
|
||||
react-native-document-picker:
|
||||
:path: "../node_modules/react-native-document-picker"
|
||||
react-native-emm:
|
||||
@@ -805,6 +803,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native-fast-image"
|
||||
RNFileViewer:
|
||||
:path: "../node_modules/react-native-file-viewer"
|
||||
RNFS:
|
||||
:path: "../node_modules/react-native-fs"
|
||||
RNGestureHandler:
|
||||
:path: "../node_modules/react-native-gesture-handler"
|
||||
RNKeychain:
|
||||
@@ -850,51 +850,49 @@ SPEC CHECKSUMS:
|
||||
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
|
||||
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
|
||||
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
|
||||
EXFileSystem: 08a3033ac372b6346becf07839e1ccef26fb1058
|
||||
Expo: 534e51e607aba8229293297da5585f4b26f50fa1
|
||||
ExpoModulesCore: 32c0ccb47f477d330ee93db72505380adf0de09a
|
||||
EXVideoThumbnails: 847d648d6f4bc0c1afad05caa56a487dc543445e
|
||||
FBLazyVector: f7b0632c6437e312acf6349288d9aa4cb6d59030
|
||||
FBReactNativeSpec: 0f4e1f4cfeace095694436e7c7fcc5bf4b03a0ff
|
||||
FBLazyVector: d2fd875e2b24bbc350722df0df9d383cb891b9f2
|
||||
FBReactNativeSpec: 7493e074a31512df3253160059295264a84b8149
|
||||
Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
|
||||
Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c
|
||||
Flipper-DoubleConversion: 57ffbe81ef95306cc9e69c4aa3aeeeeb58a6a28c
|
||||
Flipper-DoubleConversion: 3d3d04a078d4f3a1b6c6916587f159dc11f232c4
|
||||
Flipper-Fmt: 60cbdd92fc254826e61d669a5d87ef7015396a9b
|
||||
Flipper-Folly: 83af37379faa69497529e414bd43fbfc7cae259a
|
||||
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
|
||||
Flipper-Folly: 584845625005ff068a6ebf41f857f468decd26b3
|
||||
Flipper-Glog: 87bc98ff48de90cb5b0b5114ed3da79d85ee2dd4
|
||||
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
|
||||
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
|
||||
FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
|
||||
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
|
||||
glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85
|
||||
hermes-engine: bf7577d12ac6ccf53ab8b5af3c6ccf0dd8458c5c
|
||||
glog: 476ee3e89abb49e07f822b48323c51c57124b572
|
||||
hermes-engine: 84e3af1ea01dd7351ac5d8689cbbea1f9903ffc3
|
||||
HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352
|
||||
jail-monkey: 07b83767601a373db876e939b8dbf3f5eb15f073
|
||||
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
|
||||
libwebp: 98a37e597e40bfdb4c911fc98f2c53d0b12d05fc
|
||||
lottie-ios: c058aeafa76daa4cf64d773554bccc8385d0150e
|
||||
lottie-react-native: a029a86e1689c86a07169c520ae770e84348cd20
|
||||
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
|
||||
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
|
||||
Permission-Camera: bae27a8503530770c35aadfecbb97ec71823382a
|
||||
Permission-PhotoLibrary: ddb5a158725b29cb12e9e477e8a5f5151c66cc3c
|
||||
RCT-Folly: 803a9cfd78114b2ec0f140cfa6fa2a6bafb2d685
|
||||
RCTRequired: 0aa6c1c27e1d65920df35ceea5341a5fe76bdb79
|
||||
RCTTypeSafety: d76a59d00632891e11ed7522dba3fd1a995e573a
|
||||
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8
|
||||
RCTRequired: bab4a7c3d7eb9553b13773ee190f279712efd1fc
|
||||
RCTTypeSafety: efbeb6e450ff6cef8e19c2cb5314c6d8bfeeef77
|
||||
RCTYouTube: a8bb45705622a6fc9decf64be04128d3658ed411
|
||||
React: ab8c09da2e7704f4b3ebad4baa6cfdfcc852dcb5
|
||||
React-callinvoker: 216fb96b482da516b8aba4142b145938f6ea92f0
|
||||
React-Core: af99b93aff83599485e0e0879879aafa35ceae32
|
||||
React-CoreModules: 137a054ce8c547e81dc3502933b1bc0fd08df05d
|
||||
React-cxxreact: ec5ee6b08664f5b8ac71d8ad912f54d540c4f817
|
||||
React-hermes: 644e034cf9eb99c2f867c325c589c85b5c918ef7
|
||||
React-jsi: 3e084c80fd364cee64668d5df46d40c39f7973e1
|
||||
React-jsiexecutor: cbdf37cebdc4f5d8b3d0bf5ccaa6147fd9de9f3d
|
||||
React-jsinspector: f4775ea9118cbe1f72b834f0f842baa7a99508d8
|
||||
React-logger: a1f028f6d8639a3f364ef80419e5e862e1115250
|
||||
React: 28e4d45839b7d0fd9512af899e0379a17a5172ec
|
||||
React-callinvoker: 5585d1ef6795786f288690b19e08bed253c33155
|
||||
React-Codegen: 80ce98fda08a8ddb6f47116375ae2c1670bf8cda
|
||||
React-Core: 122639d111d791eb00c2bc8d678cfeec46671744
|
||||
React-CoreModules: 4dee89a87599055ca172e73924e27531eb4dd570
|
||||
React-cxxreact: 15728f254c7e3b94ac9d53c626bff554a7c42b10
|
||||
React-hermes: 1fd19958c7dc6cda8eb897b6316aa9cadfc81afc
|
||||
React-jsi: 4d135a7813ea815981b434ec37c6cfd8280b127b
|
||||
React-jsiexecutor: 010a66edf644339f6da72b34208b070089680415
|
||||
React-jsinspector: 90f0bfd5d04e0b066c29216a110ffb9a6c34f23f
|
||||
React-logger: 8474fefa09d05f573a13c044cb0dfd751d4e52e3
|
||||
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
|
||||
react-native-cameraroll: 2957f2bce63ae896a848fbe0d5352c1bd4d20866
|
||||
react-native-cookies: 7e14e823f32bd7c868134c7e207c89a46fa28f98
|
||||
react-native-document-picker: 429972f7ece4463aa5bcdd789622b3a674a3c5d1
|
||||
react-native-create-thumbnail: dedcb7cd3d14a4b6cc2026563197242081edb52b
|
||||
react-native-document-picker: 5663fe4bcdb646200683a41790464d2793307ac8
|
||||
react-native-emm: 3dec2bc8e93eff704f52db3bfbd6ec2adfd49b0f
|
||||
react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53
|
||||
react-native-image-picker: 4e6008ad8c2321622affa2c85432a5ebd02d480c
|
||||
@@ -904,37 +902,38 @@ SPEC CHECKSUMS:
|
||||
react-native-paste-input: fcfb6fd35df51c3d3f58e80ca3baf4ffe0c3e4fa
|
||||
react-native-safe-area-context: f98b0b16d1546d208fc293b4661e3f81a895afd9
|
||||
react-native-video: a4c2635d0802f983594b7057e1bce8f442f0ad28
|
||||
react-native-webview: 380c1a03ec94b7ed764dac8db1e7c9952d08c93a
|
||||
React-perflogger: 0afaf2f01a47fd0fc368a93bfbb5bd3b26db6e7f
|
||||
React-RCTActionSheet: 59f35c4029e0b532fc42114241a06e170b7431a2
|
||||
React-RCTAnimation: aae4f4bed122e78bdab72f7118d291d70a932ce2
|
||||
React-RCTBlob: f6fb23394b4f28cd86fa7e9f5f6ae45c23669fda
|
||||
React-RCTImage: 638815cf96124386dd296067246d91441932ae3f
|
||||
React-RCTLinking: 254dd06283dd6fdb784285f95e7cec8053c3270f
|
||||
React-RCTNetwork: 8a4c2d4f357268e520b060572d02bc69a9b991fb
|
||||
React-RCTSettings: 35d44cbb9972ab933bd0a59ea3e6646dcb030ba3
|
||||
React-RCTText: cc5315df8458cfa7b537e621271ef43273955a97
|
||||
React-RCTVibration: 3b52a7dced19cdb025b4f88ab26ceb2d85f30ba2
|
||||
React-runtimeexecutor: a9d3c82ddf7ffdad9fbe6a81c6d6f8c06385464d
|
||||
ReactCommon: 07d0c460b9ba9af3eaf1b8f5abe7daaad28c9c4e
|
||||
react-native-webview: 0b7bd2bffced115aefd393e1841babd9b9a557b1
|
||||
React-perflogger: 15cb741d6c2379f4d3fc8f9e4d4e1110ef3020cb
|
||||
React-RCTActionSheet: ea9099db0597bd769430db1e2d011fd5fdb7fc5e
|
||||
React-RCTAnimation: 252df4749866f2654f37612f839522cac91c1165
|
||||
React-RCTBlob: ae9ea73c6f84685ad9cd8ba2275cce6eaa26699d
|
||||
React-RCTImage: 99ae69c73d31e7937cb250a4f470ae6a3f5d16e4
|
||||
React-RCTLinking: cff4ca5547612607ae29a5859b466410a58a920d
|
||||
React-RCTNetwork: 2783868d750a000d33a63bc3c3a140e6f812a735
|
||||
React-RCTSettings: 12fc409d5e337cda891058fe2fd1427fa23ab5e1
|
||||
React-RCTText: 6db924036c02a9fd98f30d9038756fafac17201c
|
||||
React-RCTVibration: 82fc52d3d96549b8c59a6c8c017d5a1a11457049
|
||||
React-runtimeexecutor: 9b1304f48e344c55bb3c36e13bf11461cb4da5d8
|
||||
ReactCommon: fab89a13b52f1ac42b59a0e4b4f76f21aea9eebe
|
||||
ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
|
||||
ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60
|
||||
ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306
|
||||
ReactNativeNavigation: b3344828dfe4a696425cbc00d61e05c4c0150f98
|
||||
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
|
||||
RNDateTimePicker: 064f3a609fbebc6896f7e5a2f48dcee5d9a6fd51
|
||||
RNDeviceInfo: 8d4177859b062334835962799460528869a487fb
|
||||
RNDateTimePicker: 6f1f0b4cf7c71b6e2aea7a3aa62969111084bbd1
|
||||
RNDeviceInfo: 36286df381fcaf1933ff9d2d3c34ba2abeb2d8d8
|
||||
RNFastImage: cced864a4a2eac27c5c10ac16bd5e8b9d2be4504
|
||||
RNFileViewer: ce7ca3ac370e18554d35d6355cffd7c30437c592
|
||||
RNFS: fc610f78fdf8bfc89a9e5cc2f898519f4dba1002
|
||||
RNGestureHandler: 6e757e487a4834e7280e98e9bac66d2d9c575e9c
|
||||
RNKeychain: 4f63aada75ebafd26f4bc2c670199461eab85d94
|
||||
RNLocalize: cbcb55d0e19c78086ea4eea20e03fe8000bbbced
|
||||
RNPermissions: 34d678157c800b25b22a488e4d8babb57456e796
|
||||
RNReactNativeHapticFeedback: 4085973f5a38b40d3c6793a3ee5724773eae045e
|
||||
RNReanimated: 190b6930d5d94832061278e1070bbe313e50c830
|
||||
RNReanimated: 89a32ebf01d2dac2eb35b3b1628952f626db93d7
|
||||
RNRudderSdk: 006efe311ea3d2dd2dcd200521d33715f7144d1e
|
||||
RNScreens: 40a2cb40a02a609938137a1e0acfbf8fc9eebf19
|
||||
RNSentry: 3e7f2504006c19fa07027a7c4fbe83d88e69125a
|
||||
RNSentry: ec3c033c13bcb65c79f19d54ca54c514d1832bb5
|
||||
RNShare: f116bbb04f310c665ca483d0bd1e88cf59b3b334
|
||||
RNSVG: 302bfc9905bd8122f08966dc2ce2d07b7b52b9f8
|
||||
RNVectorIcons: 7923e585eaeb139b9f4531d25a125a1500162a0b
|
||||
@@ -949,10 +948,10 @@ SPEC CHECKSUMS:
|
||||
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
|
||||
WatermelonDB: baec390a1039dcebeee959218900c978af3407c9
|
||||
XCDYouTubeKit: 79baadb0560673a67c771eba45f83e353fd12c1f
|
||||
Yoga: d6b6a80659aa3e91aaba01d0012e7edcbedcbecd
|
||||
Yoga: 6671cf077f614314c22fd09ddf87d7abeee64e96
|
||||
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
|
||||
YoutubePlayer-in-WKWebView: 4fca3b4f6f09940077bfbae7bddb771f2b43aacd
|
||||
|
||||
PODFILE CHECKSUM: 2dac36b627d7cf56690e1cc4c25949ab795f2966
|
||||
PODFILE CHECKSUM: 9b7206e144619146e3d5456de646e7d0c34b25ec
|
||||
|
||||
COCOAPODS: 1.11.3
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.3;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
@@ -323,7 +323,7 @@
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 10.3;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.1;
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
MTL_FAST_MATH = YES;
|
||||
SDKROOT = iphoneos;
|
||||
|
||||
7033
package-lock.json
generated
7033
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
67
package.json
67
package.json
@@ -22,22 +22,20 @@
|
||||
"@react-native-community/art": "1.2.0",
|
||||
"@react-native-community/cameraroll": "4.1.2",
|
||||
"@react-native-community/clipboard": "1.5.1",
|
||||
"@react-native-community/datetimepicker": "6.1.0",
|
||||
"@react-native-community/datetimepicker": "6.1.2",
|
||||
"@react-native-community/netinfo": "8.2.0",
|
||||
"@react-native-cookies/cookies": "6.1.0",
|
||||
"@react-navigation/bottom-tabs": "6.2.0",
|
||||
"@react-navigation/native": "6.0.8",
|
||||
"@rudderstack/rudder-sdk-react-native": "1.2.1",
|
||||
"@sentry/react-native": "3.3.5",
|
||||
"@react-navigation/bottom-tabs": "6.3.1",
|
||||
"@react-navigation/native": "6.0.10",
|
||||
"@rudderstack/rudder-sdk-react-native": "1.3.0",
|
||||
"@sentry/react-native": "3.4.0",
|
||||
"@stream-io/flat-list-mvcp": "0.10.1",
|
||||
"base-64": "1.0.0",
|
||||
"commonmark": "github:mattermost/commonmark.js#90a62d97ed2dbd2d4711a5adda327128f5827983",
|
||||
"commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#4e52e1725c0ef5b1e2ecfe9883220ec36c2eb67d",
|
||||
"deep-equal": "2.0.5",
|
||||
"deepmerge": "4.2.2",
|
||||
"emoji-regex": "10.0.1",
|
||||
"expo": "44.0.6",
|
||||
"expo-video-thumbnails": "6.2.0",
|
||||
"emoji-regex": "10.1.0",
|
||||
"fuse.js": "6.5.3",
|
||||
"jail-monkey": "2.6.0",
|
||||
"lottie-ios": "3.2.3",
|
||||
@@ -47,18 +45,20 @@
|
||||
"react": "17.0.2",
|
||||
"react-freeze": "1.0.0",
|
||||
"react-intl": "5.24.8",
|
||||
"react-native": "0.67.4",
|
||||
"react-native": "0.68.0",
|
||||
"react-native-android-open-settings": "1.3.0",
|
||||
"react-native-animated-numbers": "0.4.1",
|
||||
"react-native-background-timer": "2.4.1",
|
||||
"react-native-button": "3.0.1",
|
||||
"react-native-calendars": "1.1280.0",
|
||||
"react-native-device-info": "8.5.1",
|
||||
"react-native-document-picker": "8.0.0",
|
||||
"react-native-create-thumbnail": "1.5.1",
|
||||
"react-native-device-info": "8.7.0",
|
||||
"react-native-document-picker": "8.1.0",
|
||||
"react-native-elements": "3.4.2",
|
||||
"react-native-exception-handler": "2.10.10",
|
||||
"react-native-fast-image": "8.5.11",
|
||||
"react-native-file-viewer": "2.1.5",
|
||||
"react-native-fs": "2.19.0",
|
||||
"react-native-gesture-handler": "2.3.2",
|
||||
"react-native-haptic-feedback": "1.13.1",
|
||||
"react-native-hw-keyboard-event": "0.0.4",
|
||||
@@ -72,7 +72,7 @@
|
||||
"react-native-neomorph-shadows": "1.1.2",
|
||||
"react-native-notifications": "4.2.4",
|
||||
"react-native-permissions": "3.3.1",
|
||||
"react-native-reanimated": "2.5.0",
|
||||
"react-native-reanimated": "2.6.0",
|
||||
"react-native-safe-area-context": "4.2.4",
|
||||
"react-native-screens": "3.13.1",
|
||||
"react-native-section-list-get-item-layout": "2.2.3",
|
||||
@@ -80,11 +80,11 @@
|
||||
"react-native-svg": "12.3.0",
|
||||
"react-native-vector-icons": "9.1.0",
|
||||
"react-native-video": "5.2.0",
|
||||
"react-native-webview": "11.17.2",
|
||||
"react-native-webview": "11.18.1",
|
||||
"react-native-youtube": "2.0.2",
|
||||
"reanimated-bottom-sheet": "1.0.0-alpha.22",
|
||||
"rn-placeholder": "3.0.3",
|
||||
"semver": "7.3.5",
|
||||
"semver": "7.3.6",
|
||||
"serialize-error": "9.1.1",
|
||||
"shallow-equals": "1.0.0",
|
||||
"tinycolor2": "1.4.2",
|
||||
@@ -92,16 +92,16 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.17.6",
|
||||
"@babel/core": "7.17.8",
|
||||
"@babel/core": "7.17.9",
|
||||
"@babel/eslint-parser": "7.17.0",
|
||||
"@babel/plugin-proposal-class-properties": "7.16.7",
|
||||
"@babel/plugin-proposal-decorators": "7.17.8",
|
||||
"@babel/plugin-proposal-decorators": "7.17.9",
|
||||
"@babel/plugin-transform-flow-strip-types": "7.16.7",
|
||||
"@babel/plugin-transform-runtime": "7.17.0",
|
||||
"@babel/preset-env": "7.16.11",
|
||||
"@babel/preset-typescript": "7.16.7",
|
||||
"@babel/register": "7.17.7",
|
||||
"@babel/runtime": "7.17.8",
|
||||
"@babel/runtime": "7.17.9",
|
||||
"@react-native-community/eslint-config": "3.0.1",
|
||||
"@testing-library/react-native": "9.1.0",
|
||||
"@types/base-64": "1.0.0",
|
||||
@@ -109,14 +109,14 @@
|
||||
"@types/commonmark-react-renderer": "4.3.1",
|
||||
"@types/deep-equal": "1.0.1",
|
||||
"@types/jest": "27.4.1",
|
||||
"@types/lodash": "4.14.180",
|
||||
"@types/lodash": "4.14.181",
|
||||
"@types/mime-db": "1.43.1",
|
||||
"@types/react": "17.0.43",
|
||||
"@types/react-native": "0.67.3",
|
||||
"@types/react-native-background-timer": "2.0.0",
|
||||
"@types/react-native-button": "3.0.1",
|
||||
"@types/react-native-share": "3.3.3",
|
||||
"@types/react-native-video": "5.0.12",
|
||||
"@types/react-native-video": "5.0.13",
|
||||
"@types/react-test-renderer": "17.0.1",
|
||||
"@types/semver": "7.3.9",
|
||||
"@types/shallow-equals": "1.0.0",
|
||||
@@ -124,8 +124,8 @@
|
||||
"@types/tough-cookie": "4.0.1",
|
||||
"@types/url-parse": "1.4.8",
|
||||
"@types/uuid": "8.3.4",
|
||||
"@typescript-eslint/eslint-plugin": "5.16.0",
|
||||
"@typescript-eslint/parser": "5.16.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.18.0",
|
||||
"@typescript-eslint/parser": "5.18.0",
|
||||
"axios": "0.26.1",
|
||||
"axios-cookiejar-support": "2.0.4",
|
||||
"babel-jest": "27.5.1",
|
||||
@@ -133,20 +133,20 @@
|
||||
"babel-plugin-module-resolver": "4.1.0",
|
||||
"babel-plugin-transform-remove-console": "6.9.4",
|
||||
"deep-freeze": "0.0.1",
|
||||
"detox": "19.5.7",
|
||||
"detox": "19.6.0",
|
||||
"eslint": "8.12.0",
|
||||
"eslint-plugin-header": "3.1.1",
|
||||
"eslint-plugin-import": "2.25.4",
|
||||
"eslint-plugin-import": "2.26.0",
|
||||
"eslint-plugin-jest": "26.1.3",
|
||||
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#23abcf9988f7fa00d26929f11841aab7ccb16b2b",
|
||||
"eslint-plugin-react": "7.29.4",
|
||||
"eslint-plugin-react-hooks": "4.3.0",
|
||||
"eslint-plugin-react-hooks": "4.4.0",
|
||||
"husky": "7.0.4",
|
||||
"isomorphic-fetch": "3.0.0",
|
||||
"jest": "27.5.1",
|
||||
"jest-cli": "27.5.1",
|
||||
"jetifier": "2.0.0",
|
||||
"metro-react-native-babel-preset": "0.69.1",
|
||||
"metro-react-native-babel-preset": "0.70.0",
|
||||
"mmjstool": "github:mattermost/mattermost-utilities#010f456ea8be5beebafdb8776177cba515c1969e",
|
||||
"mock-async-storage": "2.2.0",
|
||||
"nock": "13.2.4",
|
||||
@@ -200,22 +200,5 @@
|
||||
"pattern": "**/*.stories.@(js|jsx|ts|tsx)",
|
||||
"outputFile": "./storybook/storyLoader.js"
|
||||
}
|
||||
},
|
||||
"expo": {
|
||||
"autolinking": {
|
||||
"exclude": [
|
||||
"expo-keep-awake",
|
||||
"expo-font",
|
||||
"expo-constants",
|
||||
"expo-application",
|
||||
"expo-assets",
|
||||
"expo-error-recovery"
|
||||
],
|
||||
"android": {
|
||||
"exclude": [
|
||||
"react-native-reanimated"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
diff --git a/node_modules/expo-video-thumbnails/android/build.gradle b/node_modules/expo-video-thumbnails/android/build.gradle
|
||||
index 0342e3c..4c6c39c 100644
|
||||
--- a/node_modules/expo-video-thumbnails/android/build.gradle
|
||||
+++ b/node_modules/expo-video-thumbnails/android/build.gradle
|
||||
@@ -1,6 +1,6 @@
|
||||
apply plugin: 'com.android.library'
|
||||
apply plugin: 'kotlin-android'
|
||||
-apply plugin: 'maven'
|
||||
+apply plugin: 'maven-publish'
|
||||
|
||||
group = 'host.exp.exponent'
|
||||
version = '6.2.0'
|
||||
@@ -36,15 +36,6 @@ artifacts {
|
||||
archives androidSourcesJar
|
||||
}
|
||||
|
||||
-uploadArchives {
|
||||
- repositories {
|
||||
- mavenDeployer {
|
||||
- configuration = configurations.deployerJars
|
||||
- repository(url: mavenLocal().url)
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
android {
|
||||
compileSdkVersion safeExtGet("compileSdkVersion", 30)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
|
||||
index b121da3..82c1c24 100644
|
||||
index 7cee521..e490d09 100644
|
||||
--- a/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
|
||||
+++ b/node_modules/react-native/Libraries/Components/ScrollView/ScrollView.js
|
||||
@@ -1777,9 +1777,15 @@ class ScrollView extends React.Component<Props, State> {
|
||||
@@ -1784,9 +1784,15 @@ class ScrollView extends React.Component<Props, State> {
|
||||
// Note: we should split props.style on the inner and outer props
|
||||
// however, the ScrollView still needs the baseStyle to be scrollable
|
||||
const {outer, inner} = splitLayoutProps(flattenStyle(props.style));
|
||||
@@ -20,7 +20,7 @@ index b121da3..82c1c24 100644
|
||||
{...props}
|
||||
style={StyleSheet.compose(baseStyle, inner)}
|
||||
diff --git a/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js b/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js
|
||||
index ea21ce2..05e0def 100644
|
||||
index a6826f3..a7b904b 100644
|
||||
--- a/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js
|
||||
+++ b/node_modules/react-native/Libraries/Components/ScrollView/ScrollViewStickyHeader.js
|
||||
@@ -170,7 +170,9 @@ class ScrollViewStickyHeader extends React.Component<Props, State> {
|
||||
@@ -35,7 +35,7 @@ index ea21ce2..05e0def 100644
|
||||
}
|
||||
};
|
||||
diff --git a/node_modules/react-native/Libraries/Lists/FlatList.js b/node_modules/react-native/Libraries/Lists/FlatList.js
|
||||
index 5e49715..88f8896 100644
|
||||
index f78ca22..8e81037 100644
|
||||
--- a/node_modules/react-native/Libraries/Lists/FlatList.js
|
||||
+++ b/node_modules/react-native/Libraries/Lists/FlatList.js
|
||||
@@ -26,6 +26,7 @@ import type {
|
||||
@@ -57,7 +57,7 @@ index 5e49715..88f8896 100644
|
||||
|};
|
||||
|
||||
/**
|
||||
@@ -579,9 +584,14 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
@@ -578,9 +583,14 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
};
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ index 5e49715..88f8896 100644
|
||||
|
||||
let virtualizedListRenderKey = ListItemComponent
|
||||
? 'ListItemComponent'
|
||||
@@ -606,7 +616,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
@@ -605,7 +615,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
* This comment suppresses an error found when Flow v0.111 was deployed.
|
||||
* To see the error, delete this comment and run Flow. */
|
||||
[virtualizedListRenderKey]: (info: RenderItemProps<ItemT>) => {
|
||||
@@ -84,7 +84,7 @@ index 5e49715..88f8896 100644
|
||||
const {item, index} = info;
|
||||
invariant(
|
||||
Array.isArray(item),
|
||||
@@ -617,7 +627,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
@@ -616,7 +626,7 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
{item.map((it, kk) => {
|
||||
const element = renderer({
|
||||
item: it,
|
||||
@@ -93,7 +93,7 @@ index 5e49715..88f8896 100644
|
||||
separators: info.separators,
|
||||
});
|
||||
return element != null ? (
|
||||
@@ -633,14 +643,19 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
@@ -632,14 +642,19 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
};
|
||||
};
|
||||
|
||||
@@ -113,7 +113,7 @@ index 5e49715..88f8896 100644
|
||||
return (
|
||||
<VirtualizedList
|
||||
{...restProps}
|
||||
@@ -652,7 +667,13 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
@@ -651,7 +666,13 @@ class FlatList<ItemT> extends React.PureComponent<Props<ItemT>, void> {
|
||||
removeClippedSubviews={removeClippedSubviewsOrDefault(
|
||||
_removeClippedSubviews,
|
||||
)}
|
||||
@@ -129,7 +129,7 @@ index 5e49715..88f8896 100644
|
||||
);
|
||||
}
|
||||
diff --git a/node_modules/react-native/Libraries/Lists/VirtualizedList.js b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
index 2648cc3..fa2511d 100644
|
||||
index 6de43b7..2c18c92 100644
|
||||
--- a/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
+++ b/node_modules/react-native/Libraries/Lists/VirtualizedList.js
|
||||
@@ -16,6 +16,7 @@ const ScrollView = require('../Components/ScrollView/ScrollView');
|
||||
@@ -148,7 +148,7 @@ index 2648cc3..fa2511d 100644
|
||||
import {
|
||||
VirtualizedListCellContextProvider,
|
||||
VirtualizedListContext,
|
||||
@@ -794,12 +796,17 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -796,12 +798,17 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
const {
|
||||
CellRendererComponent,
|
||||
ItemSeparatorComponent,
|
||||
@@ -167,7 +167,7 @@ index 2648cc3..fa2511d 100644
|
||||
const end = getItemCount(data) - 1;
|
||||
let prevCellKey;
|
||||
last = Math.min(end, last);
|
||||
@@ -814,27 +821,30 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -816,27 +823,30 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
<CellRenderer
|
||||
CellRendererComponent={CellRendererComponent}
|
||||
ItemSeparatorComponent={ii < end ? ItemSeparatorComponent : undefined}
|
||||
@@ -201,7 +201,7 @@ index 2648cc3..fa2511d 100644
|
||||
_onUpdateSeparators = (keys: Array<?string>, newProps: Object) => {
|
||||
keys.forEach(key => {
|
||||
const ref = key != null && this._cellRefs[key];
|
||||
@@ -1269,7 +1279,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -1268,7 +1278,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
}
|
||||
};
|
||||
|
||||
@@ -210,7 +210,7 @@ index 2648cc3..fa2511d 100644
|
||||
const layout = e.nativeEvent.layout;
|
||||
const next = {
|
||||
offset: this._selectOffset(layout),
|
||||
@@ -1302,7 +1312,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -1301,7 +1311,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
|
||||
this._computeBlankness();
|
||||
this._updateViewableItems(this.props.data);
|
||||
@@ -219,7 +219,7 @@ index 2648cc3..fa2511d 100644
|
||||
|
||||
_onCellUnmount = (cellKey: string) => {
|
||||
const curr = this._frames[cellKey];
|
||||
@@ -1381,7 +1391,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -1380,7 +1390,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -228,7 +228,7 @@ index 2648cc3..fa2511d 100644
|
||||
if (this._isNestedWithSameOrientation()) {
|
||||
// Need to adjust our scroll metrics to be relative to our containing
|
||||
// VirtualizedList before we can make claims about list item viewability
|
||||
@@ -1396,7 +1406,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -1395,7 +1405,7 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
this._maybeCallOnEndReached();
|
||||
};
|
||||
|
||||
@@ -237,7 +237,7 @@ index 2648cc3..fa2511d 100644
|
||||
this.props.onLayout && this.props.onLayout(e);
|
||||
};
|
||||
|
||||
@@ -1404,12 +1414,12 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
@@ -1403,12 +1413,12 @@ class VirtualizedList extends React.PureComponent<Props, State> {
|
||||
return this._getCellKey() + '-footer';
|
||||
}
|
||||
|
||||
@@ -252,7 +252,7 @@ index 2648cc3..fa2511d 100644
|
||||
this._headerLength = this._selectLength(e.nativeEvent.layout);
|
||||
};
|
||||
|
||||
@@ -1898,32 +1908,29 @@ type CellRendererProps = {
|
||||
@@ -1888,32 +1898,29 @@ type CellRendererProps = {
|
||||
ItemSeparatorComponent: ?React.ComponentType<
|
||||
any | {highlighted: boolean, leadingItem: ?Item},
|
||||
>,
|
||||
@@ -298,7 +298,7 @@ index 2648cc3..fa2511d 100644
|
||||
...
|
||||
};
|
||||
|
||||
@@ -1935,7 +1942,7 @@ type CellRendererState = {
|
||||
@@ -1925,7 +1932,7 @@ type CellRendererState = {
|
||||
...
|
||||
};
|
||||
|
||||
@@ -307,7 +307,7 @@ index 2648cc3..fa2511d 100644
|
||||
CellRendererProps,
|
||||
CellRendererState,
|
||||
> {
|
||||
@@ -1950,12 +1957,16 @@ class CellRenderer extends React.Component<
|
||||
@@ -1940,12 +1947,16 @@ class CellRenderer extends React.Component<
|
||||
props: CellRendererProps,
|
||||
prevState: CellRendererState,
|
||||
): ?CellRendererState {
|
||||
@@ -330,7 +330,7 @@ index 2648cc3..fa2511d 100644
|
||||
}
|
||||
|
||||
// TODO: consider factoring separator stuff out of VirtualizedList into FlatList since it's not
|
||||
@@ -1992,6 +2003,15 @@ class CellRenderer extends React.Component<
|
||||
@@ -1982,6 +1993,15 @@ class CellRenderer extends React.Component<
|
||||
this.props.onUnmount(this.props.cellKey);
|
||||
}
|
||||
|
||||
@@ -346,7 +346,7 @@ index 2648cc3..fa2511d 100644
|
||||
_renderElement(renderItem, ListItemComponent, item, index) {
|
||||
if (renderItem && ListItemComponent) {
|
||||
console.warn(
|
||||
@@ -2032,14 +2052,16 @@ class CellRenderer extends React.Component<
|
||||
@@ -2022,14 +2042,16 @@ class CellRenderer extends React.Component<
|
||||
const {
|
||||
CellRendererComponent,
|
||||
ItemSeparatorComponent,
|
||||
@@ -365,7 +365,7 @@ index 2648cc3..fa2511d 100644
|
||||
const element = this._renderElement(
|
||||
renderItem,
|
||||
ListItemComponent,
|
||||
@@ -2048,12 +2070,10 @@ class CellRenderer extends React.Component<
|
||||
@@ -2038,12 +2060,10 @@ class CellRenderer extends React.Component<
|
||||
);
|
||||
|
||||
const onLayout =
|
||||
@@ -381,7 +381,7 @@ index 2648cc3..fa2511d 100644
|
||||
// NOTE: that when this is a sticky header, `onLayout` will get automatically extracted and
|
||||
// called explicitly by `ScrollViewStickyHeader`.
|
||||
const itemSeparator = ItemSeparatorComponent && (
|
||||
@@ -2119,7 +2139,14 @@ function describeNestedLists(childList: {
|
||||
@@ -2109,7 +2129,14 @@ function describeNestedLists(childList: {
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
verticallyInverted: {
|
||||
@@ -398,10 +398,10 @@ index 2648cc3..fa2511d 100644
|
||||
horizontallyInverted: {
|
||||
transform: [{scaleX: -1}],
|
||||
diff --git a/node_modules/react-native/react.gradle b/node_modules/react-native/react.gradle
|
||||
index 2aefa12..dea1771 100644
|
||||
index d876b13..142c59b 100644
|
||||
--- a/node_modules/react-native/react.gradle
|
||||
+++ b/node_modules/react-native/react.gradle
|
||||
@@ -88,7 +88,7 @@ def enableHermesForVariant = config.enableHermesForVariant ?: {
|
||||
@@ -112,7 +112,7 @@ def enableHermesForVariant = config.enableHermesForVariant ?: {
|
||||
def hermesFlagsForVariant = config.hermesFlagsForVariant ?: {
|
||||
def variant ->
|
||||
def hermesFlags;
|
||||
@@ -410,30 +410,28 @@ index 2aefa12..dea1771 100644
|
||||
// Can't use ?: since that will also substitute valid empty lists
|
||||
hermesFlags = config.hermesFlagsRelease
|
||||
if (hermesFlags == null) hermesFlags = ["-O", "-output-source-map"]
|
||||
@@ -102,7 +102,7 @@ def hermesFlagsForVariant = config.hermesFlagsForVariant ?: {
|
||||
@@ -128,7 +128,7 @@ def hermesFlagsForVariant = config.hermesFlagsForVariant ?: {
|
||||
def disableDevForVariant = config.disableDevForVariant ?: {
|
||||
def variant ->
|
||||
config."devDisabledIn${variant.name.capitalize()}" ||
|
||||
- variant.name.toLowerCase().contains("release")
|
||||
+ variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("unsigned")
|
||||
}
|
||||
|
||||
// Set bundleForVariant to a function to configure per variant,
|
||||
@@ -137,13 +137,13 @@ def bundleForVariant = config.bundleForVariant ?: {
|
||||
def variant ->
|
||||
config."bundleIn${variant.name.capitalize()}" ||
|
||||
config."bundleIn${variant.buildType.name.capitalize()}" ||
|
||||
- variant.name.toLowerCase().contains("release")
|
||||
+ variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("unsigned")
|
||||
}
|
||||
|
||||
// Set deleteDebugFilesForVariant to a function to configure per variant,
|
||||
// defaults to True for Release variants and False for debug variants
|
||||
def deleteDebugFilesForVariant = config.deleteDebugFilesForVariant ?: {
|
||||
- def variant -> variant.name.toLowerCase().contains("release")
|
||||
+ def variant -> (variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("unsigned"))
|
||||
+ def variant -> variant.name.toLowerCase().contains("release") || variant.name.toLowerCase().contains("unsigned")
|
||||
}
|
||||
|
||||
android {
|
||||
@@ -173,7 +173,7 @@ afterEvaluate {
|
||||
|
||||
// Set up dev mode
|
||||
def devEnabled = !(config."devDisabledIn${targetName}"
|
||||
- || targetName.toLowerCase().contains("release"))
|
||||
+ || targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
|
||||
def extraArgs = []
|
||||
|
||||
@@ -237,7 +237,7 @@ afterEvaluate {
|
||||
? config."bundleIn${targetName}"
|
||||
: config."bundleIn${variant.buildType.name.capitalize()}" != null
|
||||
? config."bundleIn${variant.buildType.name.capitalize()}"
|
||||
- : targetName.toLowerCase().contains("release")
|
||||
+ : (targetName.toLowerCase().contains("release") || targetName.toLowerCase().contains("unsigned"))
|
||||
}
|
||||
|
||||
// Expose a minimal interface on the application variant and the task itself:
|
||||
@@ -1,141 +0,0 @@
|
||||
diff --git a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
index 5ae42ec..aae478e 100644
|
||||
--- a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
+++ b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
@@ -154,6 +154,9 @@ export const setUpTests = (userConfig = {}) => {
|
||||
return compareStyle(received, expectedStyle, config);
|
||||
},
|
||||
});
|
||||
+ global.ReanimatedDataMock = {
|
||||
+ now: () => currentTimestamp,
|
||||
+ };
|
||||
};
|
||||
export const getAnimatedStyle = (received) => {
|
||||
return getCurrentStyle(received);
|
||||
diff --git a/node_modules/react-native-reanimated/react-native-reanimated.d.ts b/node_modules/react-native-reanimated/react-native-reanimated.d.ts
|
||||
index a3aafb2..141f0cd 100644
|
||||
--- a/node_modules/react-native-reanimated/react-native-reanimated.d.ts
|
||||
+++ b/node_modules/react-native-reanimated/react-native-reanimated.d.ts
|
||||
@@ -7,8 +7,6 @@ declare module 'react-native-reanimated' {
|
||||
ReactNode,
|
||||
Component,
|
||||
RefObject,
|
||||
- ComponentType,
|
||||
- ComponentProps,
|
||||
FunctionComponent,
|
||||
} from 'react';
|
||||
import {
|
||||
@@ -31,7 +29,6 @@ declare module 'react-native-reanimated' {
|
||||
NativeScrollEvent,
|
||||
NativeSyntheticEvent,
|
||||
ColorValue,
|
||||
- OpaqueColorValue,
|
||||
EasingFunction,
|
||||
} from 'react-native';
|
||||
import {
|
||||
@@ -39,24 +36,24 @@ declare module 'react-native-reanimated' {
|
||||
PanGestureHandlerGestureEvent,
|
||||
} from 'react-native-gesture-handler';
|
||||
|
||||
- import('./src/reanimated2/globals');
|
||||
+ import('./lib/reanimated2/globals');
|
||||
|
||||
export type TimingAnimation =
|
||||
- import('./src/reanimated2/animation/index').TimingAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').TimingAnimation;
|
||||
export type SpringAnimation =
|
||||
- import('./src/reanimated2/animation/index').SpringAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').SpringAnimation;
|
||||
export type DecayAnimation =
|
||||
- import('./src/reanimated2/animation/index').DecayAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').DecayAnimation;
|
||||
export type DelayAnimation =
|
||||
- import('./src/reanimated2/animation/commonTypes').DelayAnimation;
|
||||
+ import('./lib/reanimated2/animation/commonTypes').DelayAnimation;
|
||||
export type RepeatAnimation =
|
||||
- import('./src/reanimated2/animation/index').RepeatAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').RepeatAnimation;
|
||||
export type SequenceAnimation =
|
||||
- import('./src/reanimated2/animation/index').SequenceAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').SequenceAnimation;
|
||||
export type StyleLayoutAnimation =
|
||||
- import('./src/reanimated2/animation/index').StyleLayoutAnimation;
|
||||
+ import('./lib/reanimated2/animation/index').StyleLayoutAnimation;
|
||||
export type Animation<T> =
|
||||
- import('./src/reanimated2/commonTypes').Animation<T>;
|
||||
+ import('./lib/reanimated2/commonTypes').Animation<T>;
|
||||
|
||||
namespace Animated {
|
||||
type Nullable<T> = T | null | undefined;
|
||||
diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
index 6bead55..7ae12ba 100644
|
||||
--- a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
+++ b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
@@ -161,7 +161,7 @@ interface ComponentRef extends Component {
|
||||
getScrollableNode?: () => ComponentRef;
|
||||
}
|
||||
|
||||
-interface InitialComponentProps extends Record<string, unknown> {
|
||||
+export interface InitialComponentProps extends Record<string, unknown> {
|
||||
ref?: Ref<Component>;
|
||||
collapsable?: boolean;
|
||||
}
|
||||
@@ -195,6 +195,7 @@ export default function createAnimatedComponent(
|
||||
_isFirstRender = true;
|
||||
animatedStyle: { value: StyleProps } = { value: {} };
|
||||
initialStyle = {};
|
||||
+ _lastSentStyle?: StyleProps;
|
||||
sv: SharedValue<null | Record<string, unknown>> | null;
|
||||
_propsAnimated?: PropsAnimated;
|
||||
_component: ComponentRef | null = null;
|
||||
@@ -580,17 +581,24 @@ export default function createAnimatedComponent(
|
||||
|
||||
_filterNonAnimatedStyle(inputStyle: StyleProps) {
|
||||
const style: StyleProps = {};
|
||||
+ let changed = false;
|
||||
for (const key in inputStyle) {
|
||||
const value = inputStyle[key];
|
||||
if (!hasAnimatedNodes(value)) {
|
||||
style[key] = value;
|
||||
+ changed = changed || style[key] !== this._lastSentStyle?.[key];
|
||||
} else if (value instanceof AnimatedValue) {
|
||||
// if any style in animated component is set directly to the `Value` we set those styles to the first value of `Value` node in order
|
||||
// to avoid flash of default styles when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
||||
style[key] = value._startingValue;
|
||||
+ changed = changed || style[key] !== this._lastSentStyle?.[key]
|
||||
}
|
||||
}
|
||||
- return style;
|
||||
+ if (changed) {
|
||||
+ return style;
|
||||
+ } else {
|
||||
+ return this._lastSentStyle;
|
||||
+ }
|
||||
}
|
||||
|
||||
_filterNonAnimatedProps(
|
||||
@@ -617,9 +625,11 @@ export default function createAnimatedComponent(
|
||||
return style;
|
||||
}
|
||||
});
|
||||
+
|
||||
props[key] = this._filterNonAnimatedStyle(
|
||||
StyleSheet.flatten(processedStyle)
|
||||
);
|
||||
+ this._lastSentStyle = props[key]
|
||||
} else if (key === 'animatedProps') {
|
||||
const animatedProp = inputProps.animatedProps as Partial<
|
||||
AnimatedComponentProps<AnimatedProps>
|
||||
diff --git a/node_modules/react-native-reanimated/src/reanimated2/component/FlatList.tsx b/node_modules/react-native-reanimated/src/reanimated2/component/FlatList.tsx
|
||||
index f02fc16..32bf952 100644
|
||||
--- a/node_modules/react-native-reanimated/src/reanimated2/component/FlatList.tsx
|
||||
+++ b/node_modules/react-native-reanimated/src/reanimated2/component/FlatList.tsx
|
||||
@@ -23,7 +23,7 @@ const createCellRenderer = (itemLayoutAnimation?: ILayoutAnimationBuilder) => {
|
||||
return cellRenderer;
|
||||
};
|
||||
|
||||
-interface ReanimatedFlatlistProps<ItemT> extends FlatListProps<ItemT> {
|
||||
+export interface ReanimatedFlatlistProps<ItemT> extends FlatListProps<ItemT> {
|
||||
itemLayoutAnimation?: ILayoutAnimationBuilder;
|
||||
}
|
||||
|
||||
60
patches/react-native-reanimated+2.6.0.patch
Normal file
60
patches/react-native-reanimated+2.6.0.patch
Normal file
@@ -0,0 +1,60 @@
|
||||
diff --git a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
index 5ae42ec..aae478e 100644
|
||||
--- a/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
+++ b/node_modules/react-native-reanimated/lib/reanimated2/jestUtils.js
|
||||
@@ -154,6 +154,9 @@ export const setUpTests = (userConfig = {}) => {
|
||||
return compareStyle(received, expectedStyle, config);
|
||||
},
|
||||
});
|
||||
+ global.ReanimatedDataMock = {
|
||||
+ now: () => currentTimestamp,
|
||||
+ };
|
||||
};
|
||||
export const getAnimatedStyle = (received) => {
|
||||
return getCurrentStyle(received);
|
||||
diff --git a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
index 1cf0c3f..a334889 100644
|
||||
--- a/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
+++ b/node_modules/react-native-reanimated/src/createAnimatedComponent.tsx
|
||||
@@ -195,6 +195,7 @@ export default function createAnimatedComponent(
|
||||
_isFirstRender = true;
|
||||
animatedStyle: { value: StyleProps } = { value: {} };
|
||||
initialStyle = {};
|
||||
+ _lastSentStyle?: StyleProps;
|
||||
sv: SharedValue<null | Record<string, unknown>> | null;
|
||||
_propsAnimated?: PropsAnimated;
|
||||
_component: ComponentRef | null = null;
|
||||
@@ -580,17 +581,24 @@ export default function createAnimatedComponent(
|
||||
|
||||
_filterNonAnimatedStyle(inputStyle: StyleProps) {
|
||||
const style: StyleProps = {};
|
||||
+ let changed = false;
|
||||
for (const key in inputStyle) {
|
||||
const value = inputStyle[key];
|
||||
if (!hasAnimatedNodes(value)) {
|
||||
style[key] = value;
|
||||
+ changed = changed || style[key] !== this._lastSentStyle?.[key];
|
||||
} else if (value instanceof AnimatedValue) {
|
||||
// if any style in animated component is set directly to the `Value` we set those styles to the first value of `Value` node in order
|
||||
// to avoid flash of default styles when `Value` is being asynchrounously sent via bridge and initialized in the native side.
|
||||
style[key] = value._startingValue;
|
||||
+ changed = changed || style[key] !== this._lastSentStyle?.[key];
|
||||
}
|
||||
}
|
||||
- return style;
|
||||
+ if (changed) {
|
||||
+ return style;
|
||||
+ } else {
|
||||
+ return this._lastSentStyle;
|
||||
+ }
|
||||
}
|
||||
|
||||
_filterNonAnimatedProps(
|
||||
@@ -620,6 +628,7 @@ export default function createAnimatedComponent(
|
||||
props[key] = this._filterNonAnimatedStyle(
|
||||
StyleSheet.flatten(processedStyle)
|
||||
);
|
||||
+ this._lastSentStyle = props[key]
|
||||
} else if (key === 'animatedProps') {
|
||||
const animatedProp = inputProps.animatedProps as Partial<
|
||||
AnimatedComponentProps<AnimatedProps>
|
||||
@@ -4,11 +4,12 @@
|
||||
/* eslint-disable react/no-multi-comp */
|
||||
|
||||
import * as ReactNative from 'react-native';
|
||||
import 'react-native-gesture-handler/jestSetup';
|
||||
import mockSafeAreaContext from 'react-native-safe-area-context/jest/mock';
|
||||
|
||||
import 'react-native-gesture-handler/jestSetup';
|
||||
require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests();
|
||||
import type {ReadDirItem, StatResult} from 'react-native-fs';
|
||||
|
||||
require('react-native-reanimated/lib/reanimated2/jestUtils').setUpTests();
|
||||
require('isomorphic-fetch');
|
||||
|
||||
/* eslint-disable no-console */
|
||||
@@ -173,14 +174,45 @@ jest.mock('react-native-vector-icons', () => {
|
||||
};
|
||||
});
|
||||
|
||||
jest.mock('expo-file-system', () => ({
|
||||
cacheDirectory: 'root/cache',
|
||||
documentDirectory: 'root/documents',
|
||||
deleteAsync: jest.fn().mockResolvedValue(true),
|
||||
getInfoAsync: jest.fn().mockResolvedValue({exists: false}),
|
||||
makeDirectoryAsync: jest.fn().mockResolvedValue(true),
|
||||
readDirectoryAsync: jest.fn().mockResolvedValue([]),
|
||||
}));
|
||||
jest.mock('react-native-fs', () => {
|
||||
const RNFS = {
|
||||
CachesDirectoryPath: 'root/cache',
|
||||
DocumentDirectoryPath: 'root/files',
|
||||
exists: async () => {
|
||||
return true;
|
||||
},
|
||||
unlink: async () => {
|
||||
return true;
|
||||
},
|
||||
mkdir: async () => {
|
||||
return true;
|
||||
},
|
||||
readDir: async (path: string): Promise<ReadDirItem[]> => {
|
||||
return [{
|
||||
ctime: undefined,
|
||||
mtime: undefined,
|
||||
name: 'testfile.test',
|
||||
path,
|
||||
size: 123,
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
}];
|
||||
},
|
||||
stat: async (path: string): Promise<StatResult> => ({
|
||||
name: 'test name',
|
||||
path,
|
||||
size: 123,
|
||||
mode: 600,
|
||||
ctime: 0,
|
||||
mtime: 0,
|
||||
originalFilepath: path,
|
||||
isFile: () => true,
|
||||
isDirectory: () => false,
|
||||
}),
|
||||
};
|
||||
|
||||
return RNFS;
|
||||
});
|
||||
|
||||
jest.mock('react-native/Libraries/Animated/NativeAnimatedHelper');
|
||||
jest.mock('../node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter');
|
||||
|
||||
Reference in New Issue
Block a user