();
- map.put("NNativeModule", getModuleInfo("NNativeModule", "com.streetwriters.notesnook.NNativeModule"));
- map.put("RNTooltips", getModuleInfo("RNTooltips", "px.tooltips.RNTooltipsModule"));
- map.put("RNHTMLtoPDF", getModuleInfo("RNHTMLtoPDF", "com.onibenjo.htmltopdf.RNHTMLtoPDFModule"));
- map.put("RNFileViewer", getModuleInfo("RNFileViewer", "com.vinzscam.reactnativefileviewer.RNFileViewerModule"));
- map.put("RNDocumentPicker", getModuleInfo("RNDocumentPicker", "io.github.elyx0.reactnativedocumentpicker.DocumentPickerModule"));
- map.put("RNShare", getModuleInfo("RNShare", "cl.json.RNShareModule"));
- return map;
- }
- };
-
- }
- });
+ packages.add(new NNativeModulePackage());
return packages;
}
@@ -119,60 +34,32 @@ public class MainApplication extends MultiDexApplication implements ReactApplica
protected String getJSMainModuleName() {
return "index";
}
+
+ @Override
+ protected boolean isNewArchEnabled() {
+ return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
+ }
+
+ @Override
+ protected Boolean isHermesEnabled() {
+ return BuildConfig.IS_HERMES_ENABLED;
+ }
};
- /**
- * Loads Flipper in React Native templates. Call this in the onCreate method with something like
- * initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
- *
- * @param context
- * @param reactInstanceManager
- */
- private static void initializeFlipper(
- Context context, ReactInstanceManager reactInstanceManager) {
- if (BuildConfig.DEBUG) {
- try {
- /*
- We use reflection here to pick up the class that initializes Flipper,
- since Flipper library is not available in release mode
- */
- Class> aClass = Class.forName("com.streetwriters.notesnook.ReactNativeFlipper");
- aClass
- .getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
- .invoke(null, context, reactInstanceManager);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- }
- }
- }
-
- public ReactModuleInfo getModuleInfo(String reactClass, String className) {
-
- return new ReactModuleInfo(reactClass, className, true, false, false, false, true);
-
- }
-
@Override
public ReactNativeHost getReactNativeHost() {
- if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) {
- return mNewArchitectureNativeHost;
- } else {
- return mReactNativeHost;
- }
+ return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
- // 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());
+
+ 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();
+ }
+ com.streetwriters.notesnook.ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
}
}
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/OnClearFromRecentService.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/OnClearFromRecentService.java
index 4b0465fce..1e0032568 100644
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/OnClearFromRecentService.java
+++ b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/OnClearFromRecentService.java
@@ -3,7 +3,8 @@ import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
-import com.tencent.mmkv.MMKV;
+
+import com.ammarahmed.mmkv.MMKV;
public class OnClearFromRecentService extends Service {
@@ -33,7 +34,6 @@ public class OnClearFromRecentService extends Service {
} catch (Exception e) {
}
-
//System.exit(0);
}
}
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/RCTNNativeModule.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/RCTNNativeModule.java
index 16709386d..8d5803981 100644
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/RCTNNativeModule.java
+++ b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/RCTNNativeModule.java
@@ -9,7 +9,6 @@ import com.facebook.react.bridge.ReactContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
-;
public class RCTNNativeModule extends ReactContextBaseJavaModule {
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/ShareActivity.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/ShareActivity.java
index c8bab9946..f85a7b9e9 100644
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/ShareActivity.java
+++ b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/ShareActivity.java
@@ -1,38 +1,29 @@
package com.streetwriters.notesnook;
+
import android.os.Bundle;
import com.facebook.react.ReactActivity;
import com.facebook.react.ReactActivityDelegate;
-import com.facebook.react.ReactRootView;
+import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint;
+import com.facebook.react.defaults.DefaultReactActivityDelegate;
public class ShareActivity extends ReactActivity {
- public static class ShareActivityDelegate extends ReactActivityDelegate {
- public ShareActivityDelegate(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;
- }
-
- @Override
- protected boolean isConcurrentRootEnabled() {
- // If you opted-in for the New Architecture, we enable Concurrent Root (i.e. React 18).
- // More on this on https://reactjs.org/blog/2022/03/29/react-v18.html
- return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED;
- }
- }
/**
- * 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).
+ * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link
+ * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React
+ * (aka React 18) with two boolean flags.
*/
@Override
protected ReactActivityDelegate createReactActivityDelegate() {
- return new ShareActivity.ShareActivityDelegate(this, getMainComponentName());
+ return new DefaultReactActivityDelegate(
+ this,
+ getMainComponentName(),
+ // If you opted-in for the New Architecture, we enable the Fabric Renderer.
+ DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled
+ // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18).
+ DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled
+ );
}
@Override
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/MainApplicationReactNativeHost.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/MainApplicationReactNativeHost.java
deleted file mode 100644
index a355979b6..000000000
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/MainApplicationReactNativeHost.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.streetwriters.notesnook.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.FabricJSIModuleProvider;
-import com.facebook.react.uimanager.ViewManagerRegistry;
-import com.streetwriters.notesnook.BuildConfig;
-import com.streetwriters.notesnook.newarchitecture.components.MainComponentsRegistry;
-import com.streetwriters.notesnook.newarchitecture.modules.MainApplicationTurboModuleManagerDelegate;
-import java.util.ArrayList;
-import java.util.List;
-import com.facebook.react.fabric.ReactNativeConfig;
-
-/**
- * A {@link ReactNativeHost} that helps you load everything needed for the New Architecture, both
- * TurboModule delegates and the Fabric Renderer.
- *
- * 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 getPackages() {
- List 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 getJSIModules(
- final ReactApplicationContext reactApplicationContext,
- final JavaScriptContextHolder jsContext) {
- final List 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 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,
- ReactNativeConfig.DEFAULT_CONFIG,
- viewManagerRegistry);
- }
- });
- return specs;
- }
- };
- }
-}
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/components/MainComponentsRegistry.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/components/MainComponentsRegistry.java
deleted file mode 100644
index 9cc6c7f44..000000000
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/components/MainComponentsRegistry.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.streetwriters.notesnook.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).
- *
- * 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);
- }
-}
diff --git a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java b/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
deleted file mode 100644
index 02e9bea62..000000000
--- a/apps/mobile/native/android/app/src/main/java/com/streetwriters/notesnook/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.streetwriters.notesnook.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).
- *
- *
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 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 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;
- }
- }
-}
diff --git a/apps/mobile/native/android/app/src/main/jni/Android.mk b/apps/mobile/native/android/app/src/main/jni/Android.mk
deleted file mode 100644
index 7a12e587f..000000000
--- a/apps/mobile/native/android/app/src/main/jni/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-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 := notesnook_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_runtime \
- 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)
diff --git a/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp
deleted file mode 100644
index 0ac23cc62..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "MainApplicationModuleProvider.h"
-
-#include
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr MainApplicationModuleProvider(
- const std::string moduleName,
- const JavaTurboModule::InitParams ¶ms) {
- // Here you can provide your own module provider for TurboModules coming from
- // either your application or from external libraries. The approach to follow
- // is similar to the following (for a library called `samplelibrary`:
- //
- // auto module = samplelibrary_ModuleProvider(moduleName, params);
- // if (module != nullptr) {
- // return module;
- // }
- // return rncore_ModuleProvider(moduleName, params);
- return rncore_ModuleProvider(moduleName, params);
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.h b/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.h
deleted file mode 100644
index 0fa43fa69..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainApplicationModuleProvider.h
+++ /dev/null
@@ -1,16 +0,0 @@
-#pragma once
-
-#include
-#include
-
-#include
-
-namespace facebook {
-namespace react {
-
-std::shared_ptr MainApplicationModuleProvider(
- const std::string moduleName,
- const JavaTurboModule::InitParams ¶ms);
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp b/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
deleted file mode 100644
index dbbdc3d13..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-#include "MainApplicationTurboModuleManagerDelegate.h"
-#include "MainApplicationModuleProvider.h"
-
-namespace facebook {
-namespace react {
-
-jni::local_ref
-MainApplicationTurboModuleManagerDelegate::initHybrid(
- jni::alias_ref) {
- return makeCxxInstance();
-}
-
-void MainApplicationTurboModuleManagerDelegate::registerNatives() {
- registerHybrid({
- makeNativeMethod(
- "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid),
- makeNativeMethod(
- "canCreateTurboModule",
- MainApplicationTurboModuleManagerDelegate::canCreateTurboModule),
- });
-}
-
-std::shared_ptr
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string name,
- const std::shared_ptr jsInvoker) {
- // Not implemented yet: provide pure-C++ NativeModules here.
- return nullptr;
-}
-
-std::shared_ptr
-MainApplicationTurboModuleManagerDelegate::getTurboModule(
- const std::string name,
- const JavaTurboModule::InitParams ¶ms) {
- return MainApplicationModuleProvider(name, params);
-}
-
-bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule(
- std::string name) {
- return getTurboModule(name, nullptr) != nullptr ||
- getTurboModule(name, {.moduleName = name}) != nullptr;
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h b/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
deleted file mode 100644
index aabec53aa..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainApplicationTurboModuleManagerDelegate.h
+++ /dev/null
@@ -1,38 +0,0 @@
-#include
-#include
-
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-class MainApplicationTurboModuleManagerDelegate
- : public jni::HybridClass<
- MainApplicationTurboModuleManagerDelegate,
- TurboModuleManagerDelegate> {
- public:
- // Adapt it to the package you used for your Java class.
- static constexpr auto kJavaDescriptor =
- "Lcom/rndiffapp/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;";
-
- static jni::local_ref initHybrid(jni::alias_ref);
-
- static void registerNatives();
-
- std::shared_ptr getTurboModule(
- const std::string name,
- const std::shared_ptr jsInvoker) override;
- std::shared_ptr getTurboModule(
- const std::string name,
- const JavaTurboModule::InitParams ¶ms) override;
-
- /**
- * Test-only method. Allows user to verify whether a TurboModule can be
- * created by instances of this class.
- */
- bool canCreateTurboModule(std::string name);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.cpp b/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.cpp
deleted file mode 100644
index 8f7edffd6..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.cpp
+++ /dev/null
@@ -1,61 +0,0 @@
-#include "MainComponentsRegistry.h"
-
-#include
-#include
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {}
-
-std::shared_ptr
-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::initHybrid(
- jni::alias_ref,
- ComponentFactory *delegate) {
- auto instance = makeCxxInstance(delegate);
-
- auto buildRegistryFunction =
- [](EventDispatcher::Weak const &eventDispatcher,
- ContextContainer::Shared const &contextContainer)
- -> ComponentDescriptorRegistry::Shared {
- auto registry = MainComponentsRegistry::sharedProviderRegistry()
- ->createComponentDescriptorRegistry(
- {eventDispatcher, contextContainer});
-
- auto mutableRegistry =
- std::const_pointer_cast(registry);
-
- mutableRegistry->setFallbackComponentDescriptor(
- std::make_shared(
- ComponentDescriptorParameters{
- eventDispatcher, contextContainer, nullptr}));
-
- return registry;
- };
-
- delegate->buildRegistryFunction = buildRegistryFunction;
- return instance;
-}
-
-void MainComponentsRegistry::registerNatives() {
- registerHybrid({
- makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid),
- });
-}
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.h b/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.h
deleted file mode 100644
index 04e3d5786..000000000
--- a/apps/mobile/native/android/app/src/main/jni/MainComponentsRegistry.h
+++ /dev/null
@@ -1,32 +0,0 @@
-#pragma once
-
-#include
-#include
-#include
-#include
-
-namespace facebook {
-namespace react {
-
-class MainComponentsRegistry
- : public facebook::jni::HybridClass {
- public:
- // Adapt it to the package you used for your Java class.
- constexpr static auto kJavaDescriptor =
- "Lcom/rndiffapp/newarchitecture/components/MainComponentsRegistry;";
-
- static void registerNatives();
-
- MainComponentsRegistry(ComponentFactory *delegate);
-
- private:
- static std::shared_ptr
- sharedProviderRegistry();
-
- static jni::local_ref initHybrid(
- jni::alias_ref,
- ComponentFactory *delegate);
-};
-
-} // namespace react
-} // namespace facebook
diff --git a/apps/mobile/native/android/app/src/main/jni/OnLoad.cpp b/apps/mobile/native/android/app/src/main/jni/OnLoad.cpp
deleted file mode 100644
index c569b6e86..000000000
--- a/apps/mobile/native/android/app/src/main/jni/OnLoad.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include
-#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();
- });
-}
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-anydpi-v26/logo_dark.xml b/apps/mobile/native/android/app/src/main/res/mipmap-anydpi-v26/logo_dark.xml
deleted file mode 100644
index 1130d2378..000000000
--- a/apps/mobile/native/android/app/src/main/res/mipmap-anydpi-v26/logo_dark.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-hdpi/logo_dark_foreground.png b/apps/mobile/native/android/app/src/main/res/mipmap-hdpi/bootsplash_logo_dark.png
similarity index 100%
rename from apps/mobile/native/android/app/src/main/res/mipmap-hdpi/logo_dark_foreground.png
rename to apps/mobile/native/android/app/src/main/res/mipmap-hdpi/bootsplash_logo_dark.png
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-hdpi/logo_dark.png b/apps/mobile/native/android/app/src/main/res/mipmap-hdpi/logo_dark.png
deleted file mode 100644
index c0a4bd55619d3122b334cac0a140d03b2187c23b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1218
zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@Zgyv2VCnR9aSW-5dpmQdmyV-ITP^$d
z+WX&m%kP-;m|SoXO#UirVq|C_aR0yo4;L0?)}sfmI2>dZ`RaM@ss6jnQ$=a3BzNz+
zUG4wDaPO6p>p!1eS@~*S&!tO2LX##Z$_eaKYSQUY;8r@(#IZ>Mg?Yp)ps>(z>Xa!O
zXNm&_r5z_snm^y4m6bIlB4S0#MuW|{GmZoaXlQ8#x#+&U&e7#H3B>>bYeyYVagnDX
z^3jeFI$a99f+>zHkphll3JUuA{w%7_ERi3SHMl&%77NT=aO{|yl$_kRZ>5e6tge4|
z2<}?2Zk^t(d-s-o{#yhh<9aW1kD3KX2aNyYSkrTdQvU6l_UkRs8$+uZfwNTX1l&*Nr1bTB4*%
z%FBbDotZ;JLoLOhxm-AYoc-n!98hGK$r?G~=DmCCj5sA*zuC-bKCn_jCO#@^(eK~Yr7|~5ii;-)2^brOEUOaf9uuvgKxk4my-Xp~`GEpb|IGoEIXWd+`z~L&;&~f)}
ztd)&Th_PgvMr~Bvlsk7~R6YKei#C2^L_D_XJ2zOreP$c;&_^JhtH~+X
zvB9zN^~;&5_pCjbL|e`+x~#Wk3DfsSsg4&8)v0hq9tyhP*zxdaT*!;{In67gGdUm4
zIu!JXCw-b^bNnSCmNRdDcIy1Ii+8^7&;CVo#jh#b6okdv;=QMfvFW({XFu{Leiw_H
zN4xdOLoq@wb3I#y9Xk^e?WZ1dit)P0={tdseTDaC!D#}MJy=wmTU%!;nkA`f^kFXy
dz@mrbO(Pbcel%}s1+Z*l@O1TaS?83{1OOn-B1QlJ
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-mdpi/logo_dark_foreground.png b/apps/mobile/native/android/app/src/main/res/mipmap-mdpi/bootsplash_logo_dark.png
similarity index 100%
rename from apps/mobile/native/android/app/src/main/res/mipmap-mdpi/logo_dark_foreground.png
rename to apps/mobile/native/android/app/src/main/res/mipmap-mdpi/bootsplash_logo_dark.png
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-mdpi/logo_dark.png b/apps/mobile/native/android/app/src/main/res/mipmap-mdpi/logo_dark.png
deleted file mode 100644
index 8acc9cbc99cbb6fa517ad571f02c85cee58a67fc..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 797
zcmV+&1LFLNP)2zFKoJE&1QjF#@}mW)82PyZs5BIC1<=tzW2E;AXsJl3pe81?T9GJM@|pKb
z=48(To?Uj=m6I)=EX?T6`^TrP6E
z-Hg0n4-6I9+uI|j)5#L}3?cd7XywNR^j?V{5!l_`wFFjS34DiKz=+ex68H{;M)?0m
zU?cay#tUrZDRgvn#Mg}zs8lL691iLE`I*1}T7iRu1G>1lpklE|kx1lE`_t1C&F6FK
zcDwxjR|@$3erhxtG#-!X{r#Ofoem43Zug5{b+uIwJN+s@FB@m59
zDVxnwB9Wle(^K;Kd<*wo7fk}Mudnp^`ALJpfWqPMN&$R6J3FIvI!)Kt*K~JxN1059
zVzC&VoSe|%;o-tKO3@_HZntSP8nHyP+2r6-0sIbtKqwUARX9FA=KsekAUq^)Zf;oW
z>gtNy<>UPeO#=0LogN<_SztPyQor9{Du7@pp+ccRx3{+(_Wb;uk6VD%NhXtAVq!lj
zMUz0SR^v_m^76tGVqeGwQ1gL6fUhXER4T=@p3mngm&;K+9$y$oDVhb)c6oV8lgWhJ
zX0sW!S}krD0+?Y0M!6t7j$W(^>K`kCa*~gu6kP-W$_Xp+@bJK)&?W?M#YV+mfB?z}
zGmkxh(m^}=)s_!fTj1m4gR0f)LcbItfCm{qOP>QMDTreAAas9!&kskn5~>9-Q{{4*
zXHdNJNI^hxeA?}HayT5cv$Mkz%N}G1?DcwC2xVosz%oQ=gxucV=HND)?Jv-VzEvXY
zqDcTj5C}7jnO1{X74e!Ozqe9U2}oxe0WhO_fP0B|Cbg@hNI)7K0~v|f@Jb~V2?)d+
zB?b^b74>ADa#AHAM+jlybr9vEHnbE?0&+wc1Y3pHz;bjISccw#HCtIL`-wzpAVS&AuqPmAj6oE-kn_QRW)-ynWE={<4dn;2M#}a5n^Lt^Jt)XH;sYY^SP!H<1`d9
z&6Byt^5KD5%VOK7TmAw294jbaDA1FAs4nCZ_huleo&t%Hqyy
zF4)$C2`me%IXJntwl9uOpOE(E{{HM)UPEJJf|7E9Hn85zEx*C4ykj|Hzf8IYZu1PM(nt|k$lu%lt
zo|cH=-?>wlBJHW@9#E^*b=9F?acx~!#Cd;x2sa6vu3ssl}i2m!iA|c
z-?fe9%aV<4TtSCWSoLk#8><_+dJ>lI(wCZ8z$xC#=_(yNetRFT
z#{IWne_ga&6y^JZ7&^Vas;WvP`G^4G457l+E7N^0_7R0X?UTp->E>4(>n%`Y@SH)>(940aoEAS`yau`SJw#v2Nv+2^hfU+g@(;JbV~3
zCzUoXE-s2zY-2%&uYA+!d>V21RkF%`FO)aB=8Ka&+4@jMSm~a~3jo-MW{QA6Q86o|aXMb>N>=EnyU_g@X@qWU((TKc@
zbRDE~jpCJ?Ch7h>9U9+&Z`89)mLqpv-OV;!G}a4D+cnl%MG9O(E|j*r}V0e_Tv0^oP-ps9I%<6gtmU#sd{0O
z0%bN_d?QEu84Hs|Dyv<2n7hB|Ct3=xF}`|y?D&V|#ycJQfu^et12383KN6UbqIM-j
zM>D!W`+B@`%5M${o;s5UlQ_w_UKLBCdnQ}N$*l(x3o$;C7{>C;&N
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/logo_dark_foreground.png b/apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo_dark.png
similarity index 100%
rename from apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/logo_dark_foreground.png
rename to apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo_dark.png
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/logo_dark.png b/apps/mobile/native/android/app/src/main/res/mipmap-xxhdpi/logo_dark.png
deleted file mode 100644
index ba9b966abe58dedc25692702c5d32e202a455812..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2551
zcmb_e`#Y3t7uIXoV{93dGcm@57^iXCLS8e&o*9Q`YU~i{giw4cNeQpUG4vW4rD9CV
zph!g}N$Q&%(x%cBhLrOmDukH*&F;GP_ZRFRp0$2h>sj}Guk~EdwK5q#zbm1%Q8F?z
zN;E2EyVS#fAEdn0j(L2%FC(MSM5DN|PVAn!Osi6LQB7M@dil-yoG89{EEShxapgas
zl2KV7gsI4nbTkD`d6qLyic8_&XEEJ^GVVw?35^Rey(dhA3MyHHmnu(cD1Wyppo?al
zPapAl^ZnnPbK(@ABd$yiSZ}vu~x7j)l7VBmj
zqWen0^%QI#H8EGqCXKY&1U^H6C^$C?X5P;`9dI-;g>$KgF`0lPQblk$F9UGoff5Gx
z7u8mM)NnGeOontB*d!BJ7B#FaccjZ3D@|ET1suD8_e;pK=aEF!)^&1UrG>hHWsAMI
zJiVGW>FogQAd&)6Q_NwmG+j~d2&@4e$~1wm*3MY{tU0Xk3^}jy55j!}r$o%P>L)`~
zk`|;1QPZ8F+ju@$b{-6Dq5kp{8Vls;I&y#!5YlBCFm_S+;QC6mz+4LE55$^{Y(`Ij
z(5h6c3GDh0rDO!04vhR?fyLgxg>3;8`~d~k3xNcis}TbLW>}xWpL9mqvn>8j>1kUc^Sz4gSY-Ytc=deD{5x;M2d?RmS)y^7wsUUls
zu$Nw6i9szpcvKS{+FssrcjE
z{2=X3==0o-6)~VMFf{!_o!UGVHP|FR)O)w>hF@)qv|p|&C>76hVq0xPG-l?<_gP~m
z>6~u?hz7#KGn`?Mvj-GY$Aa%gUGZ-?R&miL%!f1Xz!U_a<`!ES;r=sY1v2uLmN|
z)S5#0OkwGCWBfPH!82oTfCujySfzyJum9C`O>DIJ
z!xwO)S2S3)jVs1XKf<0Ot2ioi!tp)#l{+*!ht2cU>6UTUV?K3i$kU6ngVBkS)r$@5
z2OcMtOpAEIzCh;{CkMOk?Xhlx#?#mg8HF!_zZJU;cLU*bTLhosqZ4Di|Ib|WU0l{7f06-i!g?R?EwC5#p$owfzQ@
zARWcR1VhcW`=7tK7d^OrP3CKv+0N>+-VP)JZ3mCzUhPrn$fvP6jq){x8dqf4Ey8Pr
zxN0d=4DxJTOELP!x~iX+SK76?6mvl-_Ei
zLZzzGoRpIQWr1-dA&lY(mkVHX3s`URO{!tvDo!>fU^uuP&f!
z)jTm?ZAn!eU7YC~9q+zMTfqOqi@%S++yxiIop*0gQA+uk{VOJH<2LFslKwDAtyXbS
zDGmHf1Z!pn@L(i@alCN(K%pA7MA*>;>uzfeZ>(B*)vXXbn>^o|Id|$=!?0Zd?>1`_
ztfzsYN?5}kVSegN$<&v9JT5TPTW8kun0_09$!wRl?^@&ROFP^JJwy2j1GG<1jMtYB
zPh^jN?tf66qaT_f{N|b1eVJ|P
zx=+)TY{+T9(h^C09FXbkF8Au4lW0lI9GTc^jlKykQMk0^v&l5!Fd5ZKJTbS&IN-Vj
zEwG@NF>27^w`|?AO3CR)DN8AmdauRcFa|FzrR^EztZhIR8vAB$=&2L2pc9&;@0V*q
z?5l7qgQ>6eKh$9>&GQrMjk+}orsLjZ-TRnn4eKq8b%8L0p`^oW2Bo_vA#b4JR+7O6j_B=7QL*2ThT;=qQF)2jp&p@4F@Qs{sabNX1F{cnmoe8sdtAObD?iU<
z!yQ}uZpE@Zhn?&Q024Ba%kiE;94WoZnr^-GmZ|A&h`60;N3x@7UlJ;m)n479cF^z{sReQdAoO-ySlw_Os)oPT$iw*b6u
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/logo_dark_foreground.png b/apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo_dark.png
similarity index 100%
rename from apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/logo_dark_foreground.png
rename to apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo_dark.png
diff --git a/apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/logo_dark.png b/apps/mobile/native/android/app/src/main/res/mipmap-xxxhdpi/logo_dark.png
deleted file mode 100644
index a210377c413ec7028c2ecc923d058cb0206de9aa..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3522
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
Dc18!n
diff --git a/apps/mobile/native/android/app/src/main/res/values-night/colors.xml b/apps/mobile/native/android/app/src/main/res/values-night/colors.xml
new file mode 100644
index 000000000..e07d4cd5f
--- /dev/null
+++ b/apps/mobile/native/android/app/src/main/res/values-night/colors.xml
@@ -0,0 +1,8 @@
+
+
+ #FFE1F5FE
+ #FF81D4FA
+ #FF039BE5
+ #FF01579B
+ #1f1f1f
+
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/res/values-night/styles.xml b/apps/mobile/native/android/app/src/main/res/values-night/styles.xml
index 7e653e613..3ec36cbe9 100644
--- a/apps/mobile/native/android/app/src/main/res/values-night/styles.xml
+++ b/apps/mobile/native/android/app/src/main/res/values-night/styles.xml
@@ -1,8 +1,39 @@
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/mobile/native/android/app/src/main/res/values-night/themes.xml b/apps/mobile/native/android/app/src/main/res/values-night/themes.xml
deleted file mode 100644
index b37dd7b02..000000000
--- a/apps/mobile/native/android/app/src/main/res/values-night/themes.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/res/values/colors.xml b/apps/mobile/native/android/app/src/main/res/values/colors.xml
index e08485171..eeefb4b76 100644
--- a/apps/mobile/native/android/app/src/main/res/values/colors.xml
+++ b/apps/mobile/native/android/app/src/main/res/values/colors.xml
@@ -5,5 +5,4 @@
#FF039BE5
#FF01579B
#FFFFFF
- #1f1f1f
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/res/values/logo_dark_background.xml b/apps/mobile/native/android/app/src/main/res/values/logo_dark_background.xml
deleted file mode 100644
index 11caa3f4e..000000000
--- a/apps/mobile/native/android/app/src/main/res/values/logo_dark_background.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #1F1F1F
-
\ No newline at end of file
diff --git a/apps/mobile/native/android/app/src/main/res/values/strings.xml b/apps/mobile/native/android/app/src/main/res/values/strings.xml
index af33e9651..88a7d1a34 100644
--- a/apps/mobile/native/android/app/src/main/res/values/strings.xml
+++ b/apps/mobile/native/android/app/src/main/res/values/strings.xml
@@ -3,5 +3,4 @@
NotesnookShare
EXAMPLE
Add widget
-
diff --git a/apps/mobile/native/android/app/src/main/res/values/styles.xml b/apps/mobile/native/android/app/src/main/res/values/styles.xml
index 7abaa4c76..109154a7c 100644
--- a/apps/mobile/native/android/app/src/main/res/values/styles.xml
+++ b/apps/mobile/native/android/app/src/main/res/values/styles.xml
@@ -17,11 +17,11 @@
-
+
diff --git a/apps/mobile/native/android/app/src/release/java/com/streetwriters/notesnook/ReactNativeFlipper.java b/apps/mobile/native/android/app/src/release/java/com/streetwriters/notesnook/ReactNativeFlipper.java
new file mode 100644
index 000000000..2c3edaf88
--- /dev/null
+++ b/apps/mobile/native/android/app/src/release/java/com/streetwriters/notesnook/ReactNativeFlipper.java
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
+ *
+ * This source code is licensed under the MIT license found in the LICENSE file in the root
+ * directory of this source tree.
+ */
+package com.streetwriters.notesnook;
+
+import android.content.Context;
+import com.facebook.react.ReactInstanceManager;
+/**
+ * Class responsible of loading Flipper inside your React Native application. This is the release
+ * flavor of it so it's empty as we don't want to load Flipper.
+ */
+public class ReactNativeFlipper {
+ public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
+ // Do nothing as we don't want to initialize Flipper on Release.
+ }
+}
\ No newline at end of file
diff --git a/apps/mobile/native/android/build.gradle b/apps/mobile/native/android/build.gradle
index 078ad1a70..3135d46c1 100644
--- a/apps/mobile/native/android/build.gradle
+++ b/apps/mobile/native/android/build.gradle
@@ -12,67 +12,18 @@ buildscript {
androidXCoreVersion = "1.7.0"
androidXCore = "1.7.0"
androidXBrowser = "1.0.0"
- if (System.properties['os.arch'] == "aarch64") {
- // For M1 Users we need to use the NDK 24 which added support for aarch64
- ndkVersion = "24.0.8215888"
- } else if (Os.isFamily(Os.FAMILY_WINDOWS)) {
- // For Android Users, we need to use NDK 23, otherwise the build will
- // fail due to paths longer than the OS limit
- ndkVersion = "23.1.7779620"
- } else {
- // Otherwise we default to the side-by-side NDK version from AGP.
- ndkVersion = "21.4.7075529"
- }
+ ndkVersion = "23.1.7779620"
}
+
repositories {
google()
- jcenter()
mavenCentral()
}
+
dependencies {
- classpath("com.android.tools.build:gradle:7.1.1")
- classpath("com.facebook.react:react-native-gradle-plugin")
- classpath("de.undercouch:gradle-download-task:5.0.1")
- 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
+ classpath("com.android.tools.build:gradle")
+ classpath("com.facebook.react:react-native-gradle-plugin")
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
-allprojects {
- repositories {
- google()
- jcenter()
- maven {
- // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
- url("$rootDir/../../node_modules/react-native/android")
-
- }
-
- maven {
- // All of Detox' artifacts are provided via the npm module
- url "$rootDir/../../node_modules/detox/Detox-android"
- }
-
- maven {
- // Android JSC is installed from npm
- url("$rootDir/../../node_modules/jsc-android/dist")
- }
-
- mavenCentral {
- // We don't want to fetch react-native from Maven Central as there are
- // older versions over there.
- content {
- excludeGroup "com.facebook.react"
- }
- }
-
-
- maven { url 'https://www.jitpack.io' }
- // maven {
- // url("${project(':react-native-background-fetch').projectDir}/libs")
- // }
- }
-
-}
-
diff --git a/apps/mobile/native/android/gradle.properties b/apps/mobile/native/android/gradle.properties
index fc1dd323c..ea11ae028 100644
--- a/apps/mobile/native/android/gradle.properties
+++ b/apps/mobile/native/android/gradle.properties
@@ -12,8 +12,6 @@
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
-
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
@@ -27,7 +25,7 @@ android.useAndroidX=true
android.enableJetifier=true
# Version of flipper SDK to use with React Native
-FLIPPER_VERSION=0.125.0
+FLIPPER_VERSION=0.182.0
# Use this property to specify which architecture you want to build.
# You can also override it from the CLI using
@@ -40,6 +38,10 @@ reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64
# are providing them.
newArchEnabled=false
+# Use this property to enable or disable the Hermes JS engine.
+# If set to false, you will be using JSC instead.
+hermesEnabled=true
+
# V8 Cache Mode Config
# v8.cacheMode=none
# v8.android.tools.dir=/home/ammarahm-ed/Repos/notesnook-mobile/node_modules/v8-android-jit-nointl/dist/tools/android
diff --git a/apps/mobile/native/android/gradle/wrapper/gradle-wrapper.jar b/apps/mobile/native/android/gradle/wrapper/gradle-wrapper.jar
index e708b1c023ec8b20f512888fe07c5bd3ff77bb8f..943f0cbfa754578e88a3dae77fce6e3dea56edbf 100644
GIT binary patch
delta 39316
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