chore: Upgrade React Native (#2893) [skip e2e]

This commit is contained in:
Aman Harwara
2025-04-21 21:27:09 +05:30
committed by GitHub
parent b6f2c06f30
commit 03bacd2169
259 changed files with 2368 additions and 1656 deletions

View File

@@ -62,7 +62,7 @@ public class CustomWebViewManager extends RNCWebViewManager {
@Override
public RNCWebViewWrapper createViewInstance(ThemedReactContext reactContext) {
return super.createViewInstance(reactContext, new CustomWebView(reactContext));
return super.createViewInstance(reactContext);
}
@Override

View File

@@ -1,142 +0,0 @@
package com.standardnotes;
import android.app.Application;
import android.app.Activity;
import android.webkit.WebView;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
import com.facebook.react.defaults.DefaultReactNativeHost;
import com.facebook.soloader.SoLoader;
import java.lang.reflect.Field;
import java.util.List;
import com.facebook.react.modules.network.OkHttpClientProvider;
import android.annotation.SuppressLint;
import android.database.CursorWindow;
import android.os.Bundle;
import android.view.WindowManager;
import com.kristiansorens.flagsecure.FlagSecure;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new DefaultReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
@SuppressWarnings("UnnecessaryLocalVariable")
List<ReactPackage> packages = new PackageList(this).getPackages();
packages.add(new Fido2ApiPackage());
packages.add(new CustomWebViewPackage());
packages.add(new ReceiveSharingIntentPackage());
return packages;
}
@Override
protected String getJSMainModuleName() {
return "index";
}
@Override
protected boolean isNewArchEnabled() {
return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
}
@Override
protected Boolean isHermesEnabled() {
return BuildConfig.IS_HERMES_ENABLED;
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@SuppressLint("NewApi")
@Override
public void onCreate() {
super.onCreate();
// Enable Remote debugging for WebViews
String packageName = getApplicationContext().getPackageName();
if (packageName.equals("com.standardnotes.dev")) {
WebView.setWebContentsDebuggingEnabled(true);
}
rebuildOkHtttp();
SoLoader.init(this, /* native exopackage */ false);
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
// If you opted-in for the New Architecture, we load the native entry point for this app.
DefaultNewArchitectureEntryPoint.load();
}
try {
/*
* This attempts to fix an error when loading big items fails so we try to change it to 10MB.
* This API is only available from API 28 so it might fail on older devices.
* Row too big to fit into CursorWindow requiredPos=0, totalRows=1
*/
Field field = CursorWindow.class.getDeclaredField("sCursorWindowSize");
field.setAccessible(true);
field.set(null, 10 * 1024 * 1024);
} catch (Exception e) {
e.printStackTrace();
}
registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
@Override
public void onActivityStarted(Activity activity) {
if(FlagSecure.instance != null && FlagSecure.instance.enabled) {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
});
}
private void rebuildOkHtttp() {
OkHttpClientProvider.setOkHttpClientFactory(new CustomClientFactory());
}
}

View File

@@ -0,0 +1,106 @@
package com.standardnotes
import android.annotation.SuppressLint
import android.app.Activity
import android.app.Application
import android.database.CursorWindow
import android.os.Bundle
import android.view.WindowManager
import android.webkit.WebView
import com.facebook.react.PackageList
import com.facebook.react.ReactApplication
import com.facebook.react.ReactHost
import com.facebook.react.ReactNativeHost
import com.facebook.react.ReactPackage
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
import com.facebook.react.defaults.DefaultReactNativeHost
import com.facebook.react.modules.network.OkHttpClientProvider
import com.facebook.react.soloader.OpenSourceMergedSoMapping
import com.facebook.soloader.SoLoader
import com.kristiansorens.flagsecure.FlagSecure
import java.io.IOException
import java.lang.reflect.Field
class MainApplication : Application(), ReactApplication {
override val reactNativeHost: ReactNativeHost = object : DefaultReactNativeHost(this) {
override fun getPackages(): List<ReactPackage> =
PackageList(this).packages.apply {
// Packages that cannot be autolinked yet can be added manually here, for example:
// add(MyReactNativePackage())
add(Fido2ApiPackage())
add(CustomWebViewPackage())
add(ReceiveSharingIntentPackage())
}
override fun getJSMainModuleName(): String = "index"
override fun getUseDeveloperSupport(): Boolean = BuildConfig.DEBUG
override val isNewArchEnabled: Boolean = BuildConfig.IS_NEW_ARCHITECTURE_ENABLED
override val isHermesEnabled: Boolean = BuildConfig.IS_HERMES_ENABLED
}
override val reactHost: ReactHost
get() = getDefaultReactHost(applicationContext, reactNativeHost)
@SuppressLint("NewApi")
override fun onCreate() {
super.onCreate()
// Enable Remote debugging for WebViews
val packageName = applicationContext.packageName
if (packageName == "com.standardnotes.dev") {
WebView.setWebContentsDebuggingEnabled(true)
}
rebuildOkHttp()
try {
SoLoader.init(this, OpenSourceMergedSoMapping)
} catch (e: IOException) {
throw RuntimeException(e)
}
if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
load()
}
try {
// Increase CursorWindow size to avoid "Row too big" issue
val field: Field = CursorWindow::class.java.getDeclaredField("sCursorWindowSize")
field.isAccessible = true
field.set(null, 10 * 1024 * 1024)
} catch (e: Exception) {
e.printStackTrace()
}
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
activity.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
}
override fun onActivityStarted(activity: Activity) {
if (FlagSecure.instance != null && FlagSecure.instance!!.enabled) {
activity.window.addFlags(WindowManager.LayoutParams.FLAG_SECURE)
}
}
override fun onActivityResumed(activity: Activity) {}
override fun onActivityPaused(activity: Activity) {}
override fun onActivityStopped(activity: Activity) {}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {}
})
}
private fun rebuildOkHttp() {
OkHttpClientProvider.setOkHttpClientFactory(CustomClientFactory())
}
}