You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +02:00 
			
		
		
		
	Mobile: Upgrade to React Native 0.71
This commit is contained in:
		| @@ -1,6 +0,0 @@ | ||||
|  | ||||
| [android] | ||||
|   target = Google Inc.:Google APIs:23 | ||||
|  | ||||
| [maven_repositories] | ||||
|   central = https://repo1.maven.org/maven2 | ||||
| @@ -1,73 +0,0 @@ | ||||
| [ignore] | ||||
| ; We fork some components by platform | ||||
| .*/*[.]android.js | ||||
|  | ||||
| ; Ignore "BUCK" generated dirs | ||||
| <PROJECT_ROOT>/\.buckd/ | ||||
|  | ||||
| ; Ignore polyfills | ||||
| node_modules/react-native/Libraries/polyfills/.* | ||||
|  | ||||
| ; These should not be required directly | ||||
| ; require from fbjs/lib instead: require('fbjs/lib/warning') | ||||
| node_modules/warning/.* | ||||
|  | ||||
| ; Flow doesn't support platforms | ||||
| .*/Libraries/Utilities/LoadingView.js | ||||
|  | ||||
| [untyped] | ||||
| .*/node_modules/@react-native-community/cli/.*/.* | ||||
|  | ||||
| [include] | ||||
|  | ||||
| [libs] | ||||
| node_modules/react-native/interface.js | ||||
| node_modules/react-native/flow/ | ||||
|  | ||||
| [options] | ||||
| emoji=true | ||||
|  | ||||
| esproposal.optional_chaining=enable | ||||
| esproposal.nullish_coalescing=enable | ||||
|  | ||||
| module.file_ext=.js | ||||
| module.file_ext=.json | ||||
| module.file_ext=.ios.js | ||||
|  | ||||
| munge_underscores=true | ||||
|  | ||||
| module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1' | ||||
| module.name_mapper='^@?[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub' | ||||
|  | ||||
| suppress_type=$FlowIssue | ||||
| suppress_type=$FlowFixMe | ||||
| suppress_type=$FlowFixMeProps | ||||
| suppress_type=$FlowFixMeState | ||||
|  | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\) | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+ | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError | ||||
|  | ||||
| [lints] | ||||
| sketchy-null-number=warn | ||||
| sketchy-null-mixed=warn | ||||
| sketchy-number=warn | ||||
| untyped-type-import=warn | ||||
| nonstrict-import=warn | ||||
| deprecated-type=warn | ||||
| unsafe-getters-setters=warn | ||||
| unnecessary-invariant=warn | ||||
| signature-verification-failure=warn | ||||
| deprecated-utility=error | ||||
|  | ||||
| [strict] | ||||
| deprecated-type | ||||
| nonstrict-import | ||||
| sketchy-null | ||||
| unclear-type | ||||
| unsafe-getters-setters | ||||
| untyped-import | ||||
| untyped-type-import | ||||
|  | ||||
| [version] | ||||
| ^0.122.0 | ||||
							
								
								
									
										11
									
								
								packages/app-mobile/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								packages/app-mobile/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -31,6 +31,8 @@ local.properties | ||||
| *.iml | ||||
| *.hprof | ||||
| .cxx/ | ||||
| *.keystore | ||||
| !debug.keystore | ||||
|  | ||||
| # node.js | ||||
| # | ||||
| @@ -38,12 +40,6 @@ node_modules/ | ||||
| npm-debug.log | ||||
| yarn-error.log | ||||
|  | ||||
| # BUCK | ||||
| buck-out/ | ||||
| \.buckd/ | ||||
| *.keystore | ||||
| !debug.keystore | ||||
|  | ||||
| # fastlane | ||||
| # | ||||
| # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the | ||||
| @@ -63,6 +59,9 @@ buck-out/ | ||||
| /ios/Pods/ | ||||
| /vendor/bundle/ | ||||
|  | ||||
| # Temporary files created by Metro to check the health of the file watcher | ||||
| .metro-health-check* | ||||
|  | ||||
| # Custom | ||||
| lib/csstojs/ | ||||
| lib/rnInjectedJs/ | ||||
|   | ||||
							
								
								
									
										1
									
								
								packages/app-mobile/.node-version
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								packages/app-mobile/.node-version
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| 18 | ||||
| @@ -1 +0,0 @@ | ||||
| 2.7.5 | ||||
| @@ -1,4 +1,4 @@ | ||||
| source 'https://rubygems.org' | ||||
| # You may use http://rbenv.org/ or https://rvm.io/ to install and use this version | ||||
| ruby '2.7.5' | ||||
| gem 'cocoapods', '~> 1.11', '>= 1.11.2' | ||||
| ruby '>= 2.6.10' | ||||
| gem 'cocoapods', '>= 1.11.3' | ||||
|   | ||||
| @@ -1,119 +1,77 @@ | ||||
| apply plugin: "com.android.application" | ||||
| apply plugin: "com.facebook.react" | ||||
|  | ||||
| import com.android.build.OutputFile | ||||
| import org.apache.tools.ant.taskdefs.condition.Os | ||||
|  | ||||
| /** | ||||
|  * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets | ||||
|  * and bundleReleaseJsAndAssets). | ||||
|  * These basically call `react-native bundle` with the correct arguments during the Android build | ||||
|  * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the | ||||
|  * bundle directly from the development server. Below you can see all the possible configurations | ||||
|  * and their defaults. If you decide to add a configuration block, make sure to add it before the | ||||
|  * `apply from: "../../node_modules/react-native/react.gradle"` line. | ||||
|  * | ||||
|  * project.ext.react = [ | ||||
|  *   // the name of the generated asset file containing your JS bundle | ||||
|  *   bundleAssetName: "index.android.bundle", | ||||
|  * | ||||
|  *   // the entry file for bundle generation. If none specified and | ||||
|  *   // "index.android.js" exists, it will be used. Otherwise "index.js" is | ||||
|  *   // default. Can be overridden with ENTRY_FILE environment variable. | ||||
|  *   entryFile: "index.android.js", | ||||
|  * | ||||
|  *   // https://reactnative.dev/docs/performance#enable-the-ram-format | ||||
|  *   bundleCommand: "ram-bundle", | ||||
|  * | ||||
|  *   // whether to bundle JS and assets in debug mode | ||||
|  *   bundleInDebug: false, | ||||
|  * | ||||
|  *   // whether to bundle JS and assets in release mode | ||||
|  *   bundleInRelease: true, | ||||
|  * | ||||
|  *   // whether to bundle JS and assets in another build variant (if configured). | ||||
|  *   // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants | ||||
|  *   // The configuration property can be in the following formats | ||||
|  *   //         'bundleIn${productFlavor}${buildType}' | ||||
|  *   //         'bundleIn${buildType}' | ||||
|  *   // bundleInFreeDebug: true, | ||||
|  *   // bundleInPaidRelease: true, | ||||
|  *   // bundleInBeta: true, | ||||
|  * | ||||
|  *   // whether to disable dev mode in custom build variants (by default only disabled in release) | ||||
|  *   // for example: to disable dev mode in the staging build type (if configured) | ||||
|  *   devDisabledInStaging: true, | ||||
|  *   // The configuration property can be in the following formats | ||||
|  *   //         'devDisabledIn${productFlavor}${buildType}' | ||||
|  *   //         'devDisabledIn${buildType}' | ||||
|  * | ||||
|  *   // the root of your project, i.e. where "package.json" lives | ||||
|  *   root: "../../", | ||||
|  * | ||||
|  *   // where to put the JS bundle asset in debug mode | ||||
|  *   jsBundleDirDebug: "$buildDir/intermediates/assets/debug", | ||||
|  * | ||||
|  *   // where to put the JS bundle asset in release mode | ||||
|  *   jsBundleDirRelease: "$buildDir/intermediates/assets/release", | ||||
|  * | ||||
|  *   // where to put drawable resources / React Native assets, e.g. the ones you use via | ||||
|  *   // require('./image.png')), in debug mode | ||||
|  *   resourcesDirDebug: "$buildDir/intermediates/res/merged/debug", | ||||
|  * | ||||
|  *   // where to put drawable resources / React Native assets, e.g. the ones you use via | ||||
|  *   // require('./image.png')), in release mode | ||||
|  *   resourcesDirRelease: "$buildDir/intermediates/res/merged/release", | ||||
|  * | ||||
|  *   // by default the gradle tasks are skipped if none of the JS files or assets change; this means | ||||
|  *   // that we don't look at files in android/ or ios/ to determine whether the tasks are up to | ||||
|  *   // date; if you have any other folders that you want to ignore for performance reasons (gradle | ||||
|  *   // indexes the entire tree), add them here. Alternatively, if you have JS files in android/ | ||||
|  *   // for example, you might want to remove it from here. | ||||
|  *   inputExcludes: ["android/**", "ios/**"], | ||||
|  * | ||||
|  *   // override which node gets called and with what additional arguments | ||||
|  *   nodeExecutableAndArgs: ["node"], | ||||
|  * | ||||
|  *   // supply additional arguments to the packager | ||||
|  *   extraPackagerArgs: [] | ||||
|  * ] | ||||
| /* This is the configuration block to customize your React Native Android app. | ||||
|  * By default you don't need to apply any configuration, just uncomment the lines you need. | ||||
|  */ | ||||
|  | ||||
| project.ext.react = [ | ||||
|     // 2023-05-09: This seems to be optional, but it's not. Without it, the app | ||||
|     // will crash on certain devices with this error: | ||||
| react { | ||||
|     /* Folders */ | ||||
|     //   The root of your project, i.e. where "package.json" lives. Default is '..' | ||||
|     // root = file("../") | ||||
|     //   The folder where the react-native NPM package is. Default is ../node_modules/react-native | ||||
|     // reactNativeDir = file("../node_modules/react-native") | ||||
|     //   The folder where the react-native Codegen package is. Default is ../node_modules/react-native-codegen | ||||
|     // codegenDir = file("../node_modules/react-native-codegen") | ||||
|     //   The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js | ||||
|     // cliFile = file("../node_modules/react-native/cli.js") | ||||
|     /* Variants */ | ||||
|     //   The list of variants to that are debuggable. For those we're going to | ||||
|     //   skip the bundling of the JS bundle and the assets. By default is just 'debug'. | ||||
|     //   If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. | ||||
|     // debuggableVariants = ["liteDebug", "prodDebug"] | ||||
|     /* Bundling */ | ||||
|     //   A list containing the node command and its flags. Default is just 'node'. | ||||
|     // nodeExecutableAndArgs = ["node"] | ||||
|     // | ||||
|     // > java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libhermes.so" | ||||
|     //   The command to run when bundling. By default is 'bundle' | ||||
|     // bundleCommand = "ram-bundle" | ||||
|     // | ||||
|     // https://github.com/laurent22/joplin/issues/8144#issuecomment-1539629812 | ||||
|     enableHermes: true,  // clean and rebuild if changing | ||||
| ] | ||||
|  | ||||
| apply from: "../../node_modules/react-native/react.gradle" | ||||
|     //   The path to the CLI configuration file. Default is empty. | ||||
|     // bundleConfig = file(../rn-cli.config.js) | ||||
|     // | ||||
|     //   The name of the generated asset file containing your JS bundle | ||||
|     // bundleAssetName = "MyApplication.android.bundle" | ||||
|     // | ||||
|     //   The entry file for bundle generation. Default is 'index.android.js' or 'index.js' | ||||
|     // entryFile = file("../js/MyApplication.android.js") | ||||
|     // | ||||
|     //   A list of extra flags to pass to the 'bundle' commands. | ||||
|     //   See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle | ||||
|     // extraPackagerArgs = [] | ||||
|     /* Hermes Commands */ | ||||
|     //   The hermes compiler command to run. By default it is 'hermesc' | ||||
|     // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" | ||||
|     // | ||||
|     //   The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" | ||||
|     // hermesFlags = ["-O", "-output-source-map"] | ||||
| } | ||||
|  | ||||
| /** | ||||
|  * Set this to true to create two separate APKs instead of one: | ||||
|  *   - An APK that only works on ARM devices | ||||
|  *   - An APK that only works on x86 devices | ||||
|  * The advantage is the size of the APK is reduced by about 4MB. | ||||
|  * Upload all the APKs to the Play Store and people will download | ||||
|  * the correct one based on the CPU architecture of their device. | ||||
|  * Set this to true to create four separate APKs instead of one, | ||||
|  * one for each native architecture. This is useful if you don't | ||||
|  * use App Bundles (https://developer.android.com/guide/app-bundle/) | ||||
|  * and want to have separate APKs to upload to the Play Store. | ||||
|  */ | ||||
| def enableSeparateBuildPerCPUArchitecture = false | ||||
|  | ||||
| /** | ||||
|  * Run Proguard to shrink the Java bytecode in release builds. | ||||
|  * Set this to true to Run Proguard on Release builds to minify the Java bytecode. | ||||
|  */ | ||||
| def enableProguardInReleaseBuilds = false | ||||
|  | ||||
| /** | ||||
|  * The preferred build flavor of JavaScriptCore. | ||||
|  * The preferred build flavor of JavaScriptCore (JSC) | ||||
|  * | ||||
|  * For example, to use the international variant, you can use: | ||||
|  * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` | ||||
|  * | ||||
|  * The international variant includes ICU i18n library and necessary data | ||||
|  * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that | ||||
|  * give correct results when using with locales other than en-US.  Note that | ||||
|  * give correct results when using with locales other than en-US. Note that | ||||
|  * this variant is about 6MiB larger per architecture than default. | ||||
|  */ | ||||
|   | ||||
| @@ -122,16 +80,9 @@ def enableProguardInReleaseBuilds = false | ||||
| def jscFlavor = 'org.webkit:android-jsc-intl:+' | ||||
|  | ||||
| /** | ||||
|  * Whether to enable the Hermes VM. | ||||
|  * | ||||
|  * This should be set on project.ext.react and that value will be read here. If it is not set | ||||
|  * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode | ||||
|  * and the benefits of using Hermes will therefore be sharply reduced. | ||||
|  */ | ||||
| def enableHermes = project.ext.react.get("enableHermes", false); | ||||
|  | ||||
| /** | ||||
|  * Architectures to build native code for. | ||||
|  * Private function to get the list of Native Architectures you want to build. | ||||
|  * This reads the value from reactNativeArchitectures in your gradle.properties | ||||
|  * file and works together with the --active-arch-only flag of react-native run-android. | ||||
|  */ | ||||
| def reactNativeArchitectures() { | ||||
|     def value = project.getProperties().get("reactNativeArchitectures") | ||||
| @@ -139,6 +90,8 @@ def reactNativeArchitectures() { | ||||
| } | ||||
|  | ||||
| android { | ||||
|     ndkVersion rootProject.ext.ndkVersion | ||||
|  | ||||
|     compileSdkVersion rootProject.ext.compileSdkVersion | ||||
|  | ||||
|     compileOptions { | ||||
| @@ -146,18 +99,19 @@ android { | ||||
|         targetCompatibility JavaVersion.VERSION_1_8 | ||||
|     } | ||||
|  | ||||
|     dexOptions { | ||||
|         // To fix "GC overhead limit exceeded" | ||||
|         // https://stackoverflow.com/q/32133013/561309 | ||||
|         javaMaxHeapSize "4g" | ||||
|     } | ||||
|     // dexOptions { | ||||
|     //     // To fix "GC overhead limit exceeded" | ||||
|     //     // https://stackoverflow.com/q/32133013/561309 | ||||
|     //     javaMaxHeapSize "4g" | ||||
|     // } | ||||
|  | ||||
|     namespace "net.cozic.joplin" | ||||
|     defaultConfig { | ||||
|         applicationId "net.cozic.joplin" | ||||
|         minSdkVersion rootProject.ext.minSdkVersion | ||||
|         targetSdkVersion rootProject.ext.targetSdkVersion | ||||
| 		versionCode 2097711 | ||||
| 		versionName "2.11.26" | ||||
| 		versionCode 2097712 | ||||
| 		versionName "2.11.27" | ||||
| 		// ndk { | ||||
| 		// 	abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" | ||||
| 		// } | ||||
| @@ -166,67 +120,7 @@ android { | ||||
|         missingDimensionStrategy 'react-native-camera', 'general' | ||||
|  | ||||
|         // Needed to fix: The number of method references in a .dex file cannot exceed 64K | ||||
|         multiDexEnabled true | ||||
|          | ||||
|         buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString() | ||||
|  | ||||
|         if (isNewArchitectureEnabled()) { | ||||
|             // We configure the CMake build only if you decide to opt-in for the New Architecture. | ||||
|             externalNativeBuild { | ||||
|                 cmake { | ||||
|                     arguments "-DPROJECT_BUILD_DIR=$buildDir", | ||||
|                         "-DREACT_ANDROID_DIR=$rootDir/../node_modules/react-native/ReactAndroid", | ||||
|                         "-DREACT_ANDROID_BUILD_DIR=$rootDir/../node_modules/react-native/ReactAndroid/build", | ||||
|                         "-DNODE_MODULES_DIR=$rootDir/../node_modules", | ||||
|                         "-DANDROID_STL=c++_shared" | ||||
|                 } | ||||
|             } | ||||
|             if (!enableSeparateBuildPerCPUArchitecture) { | ||||
|                 ndk { | ||||
|                     abiFilters (*reactNativeArchitectures()) | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     if (isNewArchitectureEnabled()) { | ||||
|         // We configure the NDK build only if you decide to opt-in for the New Architecture. | ||||
|         externalNativeBuild { | ||||
|             cmake { | ||||
|                 path "$projectDir/src/main/jni/CMakeLists.txt" | ||||
|             } | ||||
|         } | ||||
|         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 configureCMakeDebug* tasks and the preBuild tasks. | ||||
|             // This can be removed once this is solved: https://issuetracker.google.com/issues/207403732 | ||||
|             configureCMakeRelWithDebInfo.dependsOn(preReleaseBuild) | ||||
|             configureCMakeDebug.dependsOn(preDebugBuild) | ||||
|             reactNativeArchitectures().each { architecture -> | ||||
|                 tasks.findByName("configureCMakeDebug[${architecture}]")?.configure { | ||||
|                     dependsOn("preDebugBuild") | ||||
|                 } | ||||
|                 tasks.findByName("configureCMakeRelWithDebInfo[${architecture}]")?.configure { | ||||
|                     dependsOn("preReleaseBuild") | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         multiDexEnabled true    | ||||
|     } | ||||
|  | ||||
|     splits { | ||||
| @@ -288,10 +182,10 @@ android { | ||||
|     // > Execution failed for task ':app:lintVitalRelease' | ||||
|     // | ||||
|     // https://stackoverflow.com/a/62603296/561309 | ||||
|     lintOptions { | ||||
|         disable 'InvalidPackage' | ||||
|         checkReleaseBuilds false | ||||
|     } | ||||
|     // lintOptions { | ||||
|     //     disable 'InvalidPackage' | ||||
|     //     checkReleaseBuilds false | ||||
|     // } | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
| @@ -301,72 +195,28 @@ dependencies { | ||||
|         exclude group: 'com.google.android.gms', module: 'play-services-vision' | ||||
|     } | ||||
|  | ||||
|     implementation fileTree(dir: "libs", include: ["*.jar"]) | ||||
|     // implementation fileTree(dir: "libs", include: ["*.jar"]) | ||||
|  | ||||
|     //noinspection GradleDynamicVersion | ||||
|     // implementation "com.facebook.react:react-native:+"  // From node_modules | ||||
|     implementation ("com.facebook.react:react-native") version { | ||||
|         strictly "0.70.6" // pass in your react-native version | ||||
|     } | ||||
|  | ||||
|     implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0" | ||||
|  | ||||
|     debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") { | ||||
|         exclude group:'com.facebook.fbjni' | ||||
|     } | ||||
|     // The version of react-native is set by the React Native Gradle Plugin | ||||
|     implementation("com.facebook.react:react-android") | ||||
|  | ||||
|     implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.0.0") | ||||
|      | ||||
|     debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") | ||||
|     debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { | ||||
|         exclude group:'com.facebook.flipper' | ||||
|         exclude group:'com.squareup.okhttp3', module:'okhttp' | ||||
|     } | ||||
|  | ||||
|     debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") { | ||||
|         exclude group:'com.facebook.flipper' | ||||
|     } | ||||
|  | ||||
|     if (enableHermes) { | ||||
|         //noinspection GradleDynamicVersion | ||||
|         implementation("com.facebook.react:hermes-engine:+") { // From node_modules | ||||
|             exclude group:'com.facebook.fbjni' | ||||
|         } | ||||
|     debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") | ||||
|     if (hermesEnabled.toBoolean()) { | ||||
|         implementation("com.facebook.react:hermes-android") | ||||
|     } else { | ||||
|         implementation jscFlavor | ||||
|     } | ||||
|  | ||||
|     // Needed to fix: The number of method references in a .dex file cannot exceed 64K | ||||
|     implementation 'com.android.support:multidex:2.0.1' | ||||
| } | ||||
|  | ||||
| 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. | ||||
|     configurations.all { | ||||
|         resolutionStrategy.dependencySubstitution { | ||||
|             substitute(module("com.facebook.react:react-native")) | ||||
|                     .using(project(":ReactAndroid")) | ||||
|                     .because("On New Architecture we're building React Native from source") | ||||
|             substitute(module("com.facebook.react:hermes-engine")) | ||||
|                     .using(project(":ReactAndroid:hermes-engine")) | ||||
|                     .because("On New Architecture we're building Hermes from source") | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| // 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) { | ||||
|     from configurations.implementation | ||||
|     into 'libs' | ||||
|     // implementation 'com.android.support:multidex:2.0.1' | ||||
| } | ||||
|  | ||||
| apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) | ||||
| apply from: "../../node_modules/react-native-vector-icons/fonts.gradle" | ||||
|  | ||||
| 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" | ||||
| } | ||||
|   | ||||
| @@ -1,19 +0,0 @@ | ||||
| """Helper definitions to glob .aar and .jar targets""" | ||||
|  | ||||
| def create_aar_targets(aarfiles): | ||||
|     for aarfile in aarfiles: | ||||
|         name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")] | ||||
|         lib_deps.append(":" + name) | ||||
|         android_prebuilt_aar( | ||||
|             name = name, | ||||
|             aar = aarfile, | ||||
|         ) | ||||
|  | ||||
| def create_jar_targets(jarfiles): | ||||
|     for jarfile in jarfiles: | ||||
|         name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")] | ||||
|         lib_deps.append(":" + name) | ||||
|         prebuilt_jar( | ||||
|             name = name, | ||||
|             binary_jar = jarfile, | ||||
|         ) | ||||
| @@ -17,7 +17,6 @@ import com.facebook.flipper.plugins.inspector.DescriptorMapping; | ||||
| import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; | ||||
| 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; | ||||
| @@ -25,13 +24,16 @@ import com.facebook.react.bridge.ReactContext; | ||||
| import com.facebook.react.modules.network.NetworkingModule; | ||||
| import okhttp3.OkHttpClient; | ||||
|  | ||||
| /** | ||||
|  * Class responsible of loading Flipper inside your React Native application. This is the debug | ||||
|  * flavor of it. Here you can add your own plugins and customize the Flipper setup. | ||||
|  */ | ||||
| public class ReactNativeFlipper { | ||||
|   public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { | ||||
|     if (FlipperUtils.shouldEnableFlipper(context)) { | ||||
|       final FlipperClient client = AndroidFlipperClient.getInstance(context); | ||||
|  | ||||
|       client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); | ||||
|       client.addPlugin(new ReactFlipperPlugin()); | ||||
|       client.addPlugin(new DatabasesFlipperPlugin(context)); | ||||
|       client.addPlugin(new SharedPreferencesFlipperPlugin(context)); | ||||
|       client.addPlugin(CrashReporterPlugin.getInstance()); | ||||
|   | ||||
| @@ -1,5 +1,4 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| 	package="net.cozic.joplin" | ||||
| 	android:installLocation="auto"> | ||||
|  | ||||
| 	<uses-permission android:name="android.permission.INTERNET" /> | ||||
| @@ -8,6 +7,7 @@ | ||||
| 	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> | ||||
| 	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> | ||||
| 	<uses-permission android:name="android.permission.USE_BIOMETRIC" /> | ||||
| 	<uses-permission android:name="android.permission.POST_NOTIFICATION" /> | ||||
|  | ||||
| 	<!-- Make these features optional to enable Chromebooks --> | ||||
| 	<!-- https://github.com/laurent22/joplin/issues/37 --> | ||||
|   | ||||
| @@ -2,7 +2,8 @@ package net.cozic.joplin; | ||||
|  | ||||
| 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 MainActivity extends ReactActivity { | ||||
|  | ||||
| @@ -16,31 +17,19 @@ public class MainActivity extends ReactActivity { | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Returns the instance of the {@link ReactActivityDelegate}. There the RootView is created and | ||||
|    * you can specify the renderer you wish to use - the new renderer (Fabric) or the old renderer | ||||
|    * (Paper). | ||||
|    * 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 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()); | ||||
|     return new DefaultReactActivityDelegate( | ||||
|       this, | ||||
|       getMainComponentName(), | ||||
|       // 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; | ||||
|     } | ||||
|       DefaultNewArchitectureEntryPoint.getFabricEnabled(), // fabricEnabled | ||||
|       // If you opted-in for the New Architecture, we enable Concurrent React (i.e. React 18). | ||||
|       DefaultNewArchitectureEntryPoint.getConcurrentReactEnabled() // concurrentRootEnabled | ||||
|       );     | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,41 +1,38 @@ | ||||
| package net.cozic.joplin; | ||||
|  | ||||
| import android.app.Application; | ||||
| import android.content.Context; | ||||
| import android.database.CursorWindow; | ||||
| import android.webkit.WebView; | ||||
|  | ||||
| import androidx.multidex.MultiDex; | ||||
| // import androidx.multidex.MultiDex; | ||||
|  | ||||
| import com.facebook.react.PackageList; | ||||
| import com.facebook.react.ReactApplication; | ||||
| import com.oblador.vectoricons.VectorIconsPackage; | ||||
| import com.facebook.react.ReactInstanceManager; | ||||
| import com.facebook.react.ReactNativeHost; | ||||
| import com.facebook.react.ReactPackage; | ||||
| import com.facebook.react.config.ReactFeatureFlags; | ||||
| import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; | ||||
| import com.facebook.react.defaults.DefaultReactNativeHost; | ||||
| import com.facebook.soloader.SoLoader; | ||||
| import net.cozic.joplin.newarchitecture.MainApplicationReactNativeHost; | ||||
|  | ||||
| import net.cozic.joplin.share.SharePackage; | ||||
| import net.cozic.joplin.ssl.SslPackage; | ||||
| import net.cozic.joplin.textinput.TextInputPackage; | ||||
|  | ||||
| import java.lang.reflect.Field; | ||||
| import java.lang.reflect.InvocationTargetException; | ||||
| import java.util.List; | ||||
|  | ||||
| public class MainApplication extends Application implements ReactApplication { | ||||
|  | ||||
|   // Needed to fix: The number of method references in a .dex file cannot exceed 64K | ||||
|   @Override | ||||
|   protected void attachBaseContext(Context base) { | ||||
|      super.attachBaseContext(base); | ||||
|      MultiDex.install(this); | ||||
|   } | ||||
|   // @Override | ||||
|   // protected void attachBaseContext(Context base) { | ||||
|   //    super.attachBaseContext(base); | ||||
|   //    MultiDex.install(this); | ||||
|   // } | ||||
|  | ||||
|   private final ReactNativeHost mReactNativeHost = | ||||
|       new ReactNativeHost(this) { | ||||
|       new DefaultReactNativeHost(this) { | ||||
|         @Override | ||||
|         public boolean getUseDeveloperSupport() { | ||||
|           return BuildConfig.DEBUG; | ||||
| @@ -56,27 +53,26 @@ public class MainApplication extends Application implements ReactApplication { | ||||
|         protected String getJSMainModuleName() { | ||||
|           return "index"; | ||||
|         } | ||||
|       }; | ||||
|  | ||||
|   private final ReactNativeHost mNewArchitectureNativeHost = | ||||
|     new MainApplicationReactNativeHost(this); | ||||
|         @Override | ||||
|         protected boolean isNewArchEnabled() { | ||||
|           return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; | ||||
|         } | ||||
|         @Override | ||||
|         protected Boolean isHermesEnabled() { | ||||
|           return BuildConfig.IS_HERMES_ENABLED; | ||||
|         } | ||||
|       }; | ||||
|  | ||||
|   @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; | ||||
|  | ||||
|     // To try to fix the error "Row too big to fit into CursorWindow" | ||||
| 		// https://github.com/andpor/react-native-sqlite-storage/issues/364#issuecomment-526423153 | ||||
| 		// https://github.com/laurent22/joplin/issues/1767#issuecomment-515617991 | ||||
| @@ -89,46 +85,10 @@ public class MainApplication extends Application implements ReactApplication { | ||||
|     } | ||||
|      | ||||
|     SoLoader.init(this, /* native exopackage */ false); | ||||
|     initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||||
|  | ||||
|     // To allow debugging the webview using the Chrome developer tools. | ||||
|     // Open chrome://inspect/#devices to view the device and connect to it | ||||
|     // IMPORTANT: USB debugging must be enabled on the device for it to work. | ||||
|     // https://github.com/react-native-webview/react-native-webview/blob/master/docs/Debugging.md | ||||
|  | ||||
|     if (BuildConfig.DEBUG) { | ||||
|       WebView.setWebContentsDebuggingEnabled(true); | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * 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("net.cozic.joplin.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(); | ||||
|       } | ||||
|     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(); | ||||
|     } | ||||
|     ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,117 +0,0 @@ | ||||
| package net.cozic.joplin.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.fabric.ReactNativeConfig; | ||||
| import com.facebook.react.uimanager.ViewManagerRegistry; | ||||
| import net.cozic.joplin.BuildConfig; | ||||
| import net.cozic.joplin.newarchitecture.components.MainComponentsRegistry; | ||||
| import net.cozic.joplin.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, | ||||
|                     ReactNativeConfig.DEFAULT_CONFIG, | ||||
|                     viewManagerRegistry); | ||||
|               } | ||||
|             }); | ||||
|         return specs; | ||||
|       } | ||||
|     }; | ||||
|   } | ||||
| } | ||||
| @@ -1,36 +0,0 @@ | ||||
| package net.cozic.joplin.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); | ||||
|   } | ||||
| } | ||||
| @@ -1,48 +0,0 @@ | ||||
| package net.cozic.joplin.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("joplin_appmodules"); | ||||
|       sIsSoLibraryLoaded = true; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| @@ -1,5 +0,0 @@ | ||||
| cmake_minimum_required(VERSION 3.13) | ||||
| # Define the library name here. | ||||
| project(joplin_appmodules) | ||||
| # This file includes all the necessary to let you build your application with the New Architecture. | ||||
| include(${REACT_ANDROID_DIR}/cmake-utils/ReactNative-application.cmake) | ||||
| @@ -1,31 +0,0 @@ | ||||
| #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); | ||||
|  | ||||
|   // Module providers autolinked by RN CLI | ||||
|   auto rncli_module = rncli_ModuleProvider(moduleName, params); | ||||
|   if (rncli_module != nullptr) { | ||||
|     return rncli_module; | ||||
|   } | ||||
|    | ||||
|   return rncore_ModuleProvider(moduleName, params); | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -1,16 +0,0 @@ | ||||
| #pragma once | ||||
|  | ||||
| #include <memory> | ||||
| #include <string> | ||||
|  | ||||
| #include <ReactCommon/JavaTurboModule.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| std::shared_ptr<TurboModule> MainApplicationModuleProvider( | ||||
|     const std::string &moduleName, | ||||
|     const JavaTurboModule::InitParams ¶ms); | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -1,45 +0,0 @@ | ||||
| #include "MainApplicationTurboModuleManagerDelegate.h" | ||||
| #include "MainApplicationModuleProvider.h" | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| jni::local_ref<MainApplicationTurboModuleManagerDelegate::jhybriddata> | ||||
| MainApplicationTurboModuleManagerDelegate::initHybrid( | ||||
|     jni::alias_ref<jhybridobject>) { | ||||
|   return makeCxxInstance(); | ||||
| } | ||||
|  | ||||
| void MainApplicationTurboModuleManagerDelegate::registerNatives() { | ||||
|   registerHybrid({ | ||||
|       makeNativeMethod( | ||||
|           "initHybrid", MainApplicationTurboModuleManagerDelegate::initHybrid), | ||||
|       makeNativeMethod( | ||||
|           "canCreateTurboModule", | ||||
|           MainApplicationTurboModuleManagerDelegate::canCreateTurboModule), | ||||
|   }); | ||||
| } | ||||
|  | ||||
| std::shared_ptr<TurboModule> | ||||
| MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||
|     const std::string &name, | ||||
|     const std::shared_ptr<CallInvoker> &jsInvoker) { | ||||
|   // Not implemented yet: provide pure-C++ NativeModules here. | ||||
|   return nullptr; | ||||
| } | ||||
|  | ||||
| std::shared_ptr<TurboModule> | ||||
| MainApplicationTurboModuleManagerDelegate::getTurboModule( | ||||
|     const std::string &name, | ||||
|     const JavaTurboModule::InitParams ¶ms) { | ||||
|   return MainApplicationModuleProvider(name, params); | ||||
| } | ||||
|  | ||||
| bool MainApplicationTurboModuleManagerDelegate::canCreateTurboModule( | ||||
|     const std::string &name) { | ||||
|   return getTurboModule(name, nullptr) != nullptr || | ||||
|       getTurboModule(name, {.moduleName = name}) != nullptr; | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -1,38 +0,0 @@ | ||||
| #include <memory> | ||||
| #include <string> | ||||
|  | ||||
| #include <ReactCommon/TurboModuleManagerDelegate.h> | ||||
| #include <fbjni/fbjni.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| class MainApplicationTurboModuleManagerDelegate | ||||
|     : public jni::HybridClass< | ||||
|           MainApplicationTurboModuleManagerDelegate, | ||||
|           TurboModuleManagerDelegate> { | ||||
|  public: | ||||
|   // Adapt it to the package you used for your Java class. | ||||
|   static constexpr auto kJavaDescriptor = | ||||
|       "Lnet/cozic/joplin/newarchitecture/modules/MainApplicationTurboModuleManagerDelegate;"; | ||||
|  | ||||
|   static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject>); | ||||
|  | ||||
|   static void registerNatives(); | ||||
|  | ||||
|   std::shared_ptr<TurboModule> getTurboModule( | ||||
|       const std::string &name, | ||||
|       const std::shared_ptr<CallInvoker> &jsInvoker) override; | ||||
|   std::shared_ptr<TurboModule> getTurboModule( | ||||
|       const std::string &name, | ||||
|       const JavaTurboModule::InitParams ¶ms) override; | ||||
|  | ||||
|   /** | ||||
|    * Test-only method. Allows user to verify whether a TurboModule can be | ||||
|    * created by instances of this class. | ||||
|    */ | ||||
|   bool canCreateTurboModule(const std::string &name); | ||||
| }; | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -1,65 +0,0 @@ | ||||
| #include "MainComponentsRegistry.h" | ||||
|  | ||||
| #include <CoreComponentsRegistry.h> | ||||
| #include <fbjni/fbjni.h> | ||||
| #include <react/renderer/componentregistry/ComponentDescriptorProviderRegistry.h> | ||||
| #include <react/renderer/components/rncore/ComponentDescriptors.h> | ||||
| #include <rncli.h> | ||||
|  | ||||
| namespace facebook { | ||||
| namespace react { | ||||
|  | ||||
| MainComponentsRegistry::MainComponentsRegistry(ComponentFactory *delegate) {} | ||||
|  | ||||
| std::shared_ptr<ComponentDescriptorProviderRegistry const> | ||||
| MainComponentsRegistry::sharedProviderRegistry() { | ||||
|   auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); | ||||
|  | ||||
|   // Autolinked providers registered by RN CLI | ||||
|   rncli_registerProviders(providerRegistry); | ||||
|  | ||||
|   // Custom Fabric Components go here. You can register custom | ||||
|   // components coming from your App or from 3rd party libraries here. | ||||
|   // | ||||
|   // providerRegistry->add(concreteComponentDescriptorProvider< | ||||
|   //        AocViewerComponentDescriptor>()); | ||||
|   return providerRegistry; | ||||
| } | ||||
|  | ||||
| jni::local_ref<MainComponentsRegistry::jhybriddata> | ||||
| MainComponentsRegistry::initHybrid( | ||||
|     jni::alias_ref<jclass>, | ||||
|     ComponentFactory *delegate) { | ||||
|   auto instance = makeCxxInstance(delegate); | ||||
|  | ||||
|   auto buildRegistryFunction = | ||||
|       [](EventDispatcher::Weak const &eventDispatcher, | ||||
|          ContextContainer::Shared const &contextContainer) | ||||
|       -> ComponentDescriptorRegistry::Shared { | ||||
|     auto registry = MainComponentsRegistry::sharedProviderRegistry() | ||||
|                         ->createComponentDescriptorRegistry( | ||||
|                             {eventDispatcher, contextContainer}); | ||||
|  | ||||
|     auto mutableRegistry = | ||||
|         std::const_pointer_cast<ComponentDescriptorRegistry>(registry); | ||||
|  | ||||
|     mutableRegistry->setFallbackComponentDescriptor( | ||||
|         std::make_shared<UnimplementedNativeViewComponentDescriptor>( | ||||
|             ComponentDescriptorParameters{ | ||||
|                 eventDispatcher, contextContainer, nullptr})); | ||||
|  | ||||
|     return registry; | ||||
|   }; | ||||
|  | ||||
|   delegate->buildRegistryFunction = buildRegistryFunction; | ||||
|   return instance; | ||||
| } | ||||
|  | ||||
| void MainComponentsRegistry::registerNatives() { | ||||
|   registerHybrid({ | ||||
|       makeNativeMethod("initHybrid", MainComponentsRegistry::initHybrid), | ||||
|   }); | ||||
| } | ||||
|  | ||||
| } // namespace react | ||||
| } // namespace facebook | ||||
| @@ -1,32 +0,0 @@ | ||||
| #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 = | ||||
|       "Lnet/cozic/joplin/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 | ||||
| @@ -1,11 +0,0 @@ | ||||
| #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(); | ||||
|   }); | ||||
| } | ||||
| @@ -0,0 +1,18 @@ | ||||
| /** | ||||
|  * 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. | ||||
|  */ | ||||
| package net.cozic.joplin; | ||||
| 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. | ||||
|   } | ||||
| } | ||||
| @@ -2,55 +2,55 @@ | ||||
|  | ||||
| buildscript { | ||||
|     ext { | ||||
|         buildToolsVersion = "31.0.0" | ||||
|         buildToolsVersion = "33.0.0" | ||||
|         minSdkVersion = 21 | ||||
|  | ||||
|         compileSdkVersion = 31 | ||||
|         targetSdkVersion = 31 | ||||
|         compileSdkVersion = 33 | ||||
|         targetSdkVersion = 33 | ||||
|  | ||||
|         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 { | ||||
|             // Otherwise we default to the side-by-side NDK version from AGP. | ||||
|             ndkVersion = "21.4.7075529" | ||||
|         } | ||||
|         // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. | ||||
|         ndkVersion = "23.1.7779620" | ||||
|     } | ||||
|     repositories { | ||||
|         google() | ||||
|         mavenCentral() | ||||
|     } | ||||
|     dependencies { | ||||
|         classpath("com.android.tools.build:gradle:7.2.1") | ||||
|         classpath("com.android.tools.build:gradle:7.3.1") | ||||
|         classpath("com.facebook.react:react-native-gradle-plugin") | ||||
|         classpath("de.undercouch:gradle-download-task:5.0.1") | ||||
|         // NOTE: Do not place your application dependencies here; they belong | ||||
|         // in the individual module build.gradle files | ||||
|     } | ||||
| } | ||||
|  | ||||
| allprojects { | ||||
|     repositories { | ||||
|         maven { | ||||
|             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||||
|             url("$rootDir/../node_modules/react-native/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" | ||||
|             } | ||||
|         } | ||||
|         jcenter() | ||||
|  | ||||
|         // Seems to be required for react-native-vosk, otherwise the lib looks for it at "https://maven.aliyun.com/repository/jcenter/com/alphacephei/vosk-android/0.3.46/vosk-android-0.3.46.aar" but it's not there. And we get this error: | ||||
|         // | ||||
|         // Execution failed for task ':app:checkDebugAarMetadata'. | ||||
|         // > Could not resolve all files for configuration ':app:debugRuntimeClasspath'. | ||||
|         //    > Failed to transform vosk-android-0.3.46.aar (com.alphacephei:vosk-android:0.3.46) to match attributes {artifactType=android-aar-metadata, org.gradle.status=release}. | ||||
|         //       > Could not find vosk-android-0.3.46.aar (com.alphacephei:vosk-android:0.3.46). | ||||
|         //         Searched in the following locations: | ||||
|         //             https://maven.aliyun.com/repository/jcenter/com/alphacephei/vosk-android/0.3.46/vosk-android-0.3.46.aar | ||||
|         // | ||||
|         // But according to this page, the lib is on the Apache repository: | ||||
|         // | ||||
|         // https://search.maven.org/artifact/com.alphacephei/vosk-android/0.3.46/aar | ||||
|         maven { url "https://maven.apache.org" } | ||||
|  | ||||
|         maven { | ||||
|             // Required by react-native-fingerprint-scanner | ||||
|             // https://github.com/hieuvp/react-native-fingerprint-scanner/issues/192 | ||||
|             url "https://maven.aliyun.com/repository/jcenter" | ||||
|         } | ||||
|  | ||||
|         // Also required for react-native-vosk? | ||||
|         maven { url "https://maven.google.com" } | ||||
|  | ||||
|         // Maybe still needed to fetch above package? | ||||
|          | ||||
|         google() | ||||
|         maven { url 'https://www.jitpack.io' } | ||||
|     } | ||||
|   | ||||
| @@ -39,6 +39,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 | ||||
|  | ||||
| # To fix this error: | ||||
| # | ||||
| # > Failed to transform bcprov-jdk15on-1.68.jar | ||||
|   | ||||
| @@ -3,10 +3,4 @@ include ':react-native-vector-icons' | ||||
| project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') | ||||
| apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | ||||
| 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(":ReactAndroid:hermes-engine") | ||||
|     project(":ReactAndroid:hermes-engine").projectDir = file('../node_modules/react-native/ReactAndroid/hermes-engine') | ||||
| } | ||||
| includeBuild('../node_modules/react-native-gradle-plugin') | ||||
| @@ -787,6 +787,12 @@ class NoteScreenComponent extends BaseScreenComponent { | ||||
| 	} | ||||
|  | ||||
| 	public async onAlarmDialogAccept(date: Date) { | ||||
| 		const response = await checkPermissions(PermissionsAndroid.PERMISSIONS.POST_NOTIFICATIONS); | ||||
| 		if (response !== PermissionsAndroid.RESULTS.GRANTED) { | ||||
| 			logger.warn('POST_NOTIFICATION permission was not granted'); | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		const newNote = { ...this.state.note }; | ||||
| 		newNote.todo_due = date ? date.getTime() : 0; | ||||
|  | ||||
|   | ||||
| @@ -384,12 +384,14 @@ | ||||
| 				"${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/Pre-built/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", | ||||
| 			); | ||||
| 			runOnlyForDeploymentPostprocessing = 0; | ||||
| 			shellPath = /bin/sh; | ||||
| @@ -596,7 +598,7 @@ | ||||
| 				COPY_PHASE_STRIP = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				ENABLE_TESTABILITY = YES; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_DYNAMIC_NO_PIC = NO; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| @@ -659,7 +661,7 @@ | ||||
| 				COPY_PHASE_STRIP = YES; | ||||
| 				ENABLE_NS_ASSERTIONS = NO; | ||||
| 				ENABLE_STRICT_OBJC_MSGSEND = YES; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; | ||||
| 				"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; | ||||
| 				GCC_C_LANGUAGE_STANDARD = gnu99; | ||||
| 				GCC_NO_COMMON_BLOCKS = YES; | ||||
| 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES; | ||||
|   | ||||
| @@ -1,9 +1,7 @@ | ||||
| #import <React/RCTBridgeDelegate.h> | ||||
| #import <RCTAppDelegate.h> | ||||
| #import <UIKit/UIKit.h> | ||||
| #import <UserNotifications/UNUserNotificationCenter.h> | ||||
|  | ||||
| @interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate, UNUserNotificationCenterDelegate> | ||||
|  | ||||
| @property (nonatomic, strong) UIWindow *window; | ||||
| @interface AppDelegate : RCTAppDelegate | ||||
|  | ||||
| @end | ||||
|   | ||||
| @@ -1,36 +1,12 @@ | ||||
| #import "AppDelegate.h" | ||||
|  | ||||
| #import <React/RCTBridge.h> | ||||
| #import <React/RCTBundleURLProvider.h> | ||||
| #import <React/RCTRootView.h> | ||||
|  | ||||
| #import <React/RCTAppSetupUtils.h> | ||||
| #import <React/RCTLinkingManager.h> | ||||
|  | ||||
| #import <RNCPushNotificationIOS.h> | ||||
| #import "RNQuickActionManager.h" | ||||
|  | ||||
| #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> | ||||
|  | ||||
| static NSString *const kRNConcurrentRoot = @"concurrentRoot"; | ||||
|  | ||||
| @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 | ||||
|  | ||||
| // =================================================== | ||||
| @@ -91,58 +67,17 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response | ||||
|  | ||||
| - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | ||||
| { | ||||
|   RCTAppSetupPrepareApp(application); | ||||
|  | ||||
|   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 | ||||
|  | ||||
|   NSDictionary *initProps = [self prepareInitialProps]; | ||||
|   UIView *rootView = RCTAppSetupDefaultRootView(bridge, @"Joplin", initProps); | ||||
|  | ||||
|   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]; | ||||
|   self.moduleName = @"Joplin"; | ||||
|   // You can add your custom initial props in the dictionary below. | ||||
|   // They will be passed down to the ViewController used by React Native. | ||||
|   self.initialProps = @{}; | ||||
|  | ||||
|   // BEGIN react-native-push-notification-ios | ||||
|   UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter]; | ||||
|   center.delegate = self; | ||||
|   // END react-native-push-notification-ios | ||||
|  | ||||
|   return YES; | ||||
| } | ||||
|  | ||||
| /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. | ||||
| /// | ||||
| /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html | ||||
| /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). | ||||
| /// @return: `true` if the `concurrentRoot` feture is enabled. Otherwise, it returns `false`. | ||||
| - (BOOL)concurrentRootEnabled | ||||
| { | ||||
|   // Switch this bool to turn on and off the concurrent root | ||||
|   return true; | ||||
| } | ||||
| - (NSDictionary *)prepareInitialProps | ||||
| { | ||||
|   NSMutableDictionary *initProps = [NSMutableDictionary new]; | ||||
| #ifdef RCT_NEW_ARCH_ENABLED | ||||
|   initProps[kRNConcurrentRoot] = @([self concurrentRootEnabled]); | ||||
| #endif | ||||
|   return initProps; | ||||
|   return [super application:application didFinishLaunchingWithOptions:launchOptions]; | ||||
| } | ||||
|  | ||||
| - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||||
| @@ -154,43 +89,14 @@ didReceiveNotificationResponse:(UNNotificationResponse *)response | ||||
| #endif | ||||
| } | ||||
|  | ||||
| #if RCT_NEW_ARCH_ENABLED | ||||
|  | ||||
| #pragma mark - RCTCxxBridgeDelegate | ||||
|  | ||||
| - (std::unique_ptr<facebook::react::JSExecutorFactory>)jsExecutorFactoryForBridge:(RCTBridge *)bridge | ||||
| /// This method controls whether the `concurrentRoot`feature of React18 is turned on or off. | ||||
| /// | ||||
| /// @see: https://reactjs.org/blog/2022/03/29/react-v18.html | ||||
| /// @note: This requires to be rendering on Fabric (i.e. on the New Architecture). | ||||
| /// @return: `true` if the `concurrentRoot` feature is enabled. Otherwise, it returns `false`. | ||||
| - (BOOL)concurrentRootEnabled | ||||
| { | ||||
|   _turboModuleManager = [[RCTTurboModuleManager alloc] initWithBridge:bridge | ||||
|                                                              delegate:self | ||||
|                                                             jsInvoker:bridge.jsCallInvoker]; | ||||
|   return RCTAppSetupDefaultJsExecutorFactory(bridge, _turboModuleManager); | ||||
|   return true; | ||||
| } | ||||
|  | ||||
| #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 | ||||
|   | ||||
| @@ -9,8 +9,23 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ | ||||
| # | ||||
| # 2021-12-17: Changed back to 11.0 because after the fix it works with at least | ||||
| # 12.x, and probably 11.0 too, which is the version supported by React Native. | ||||
| platform :ios, '12.4' | ||||
| install! 'cocoapods', :deterministic_uuids => false | ||||
| platform :ios, min_ios_version_supported | ||||
| prepare_react_native_project! | ||||
| # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. | ||||
| # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded | ||||
| # | ||||
| # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` | ||||
| # ```js | ||||
| # module.exports = { | ||||
| #   dependencies: { | ||||
| #     ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), | ||||
| # ``` | ||||
| flipper_config = ENV['NO_FLIPPER'] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled | ||||
| linkage = ENV['USE_FRAMEWORKS'] | ||||
| if linkage != nil | ||||
|   Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green | ||||
|   use_frameworks! :linkage => linkage.to_sym | ||||
| end | ||||
|  | ||||
| target 'Joplin' do | ||||
|   config = use_native_modules! | ||||
| @@ -26,13 +41,13 @@ target 'Joplin' do | ||||
|  | ||||
|     # 2023/05/07: Leave that to `false` for now because Hermes is rubbish at | ||||
|     # reporting errors, which it makes it impossible to investigate crashes. | ||||
|     :hermes_enabled => false, | ||||
|     :hermes_enabled => flags[:hermes_enabled], | ||||
|     :fabric_enabled => flags[:fabric_enabled], | ||||
|     # Enables Flipper. | ||||
|     # | ||||
|     # Note that if you have use_frameworks! enabled, Flipper will not work and | ||||
|     # you should disable the next line. | ||||
|     :flipper_configuration => FlipperConfiguration.enabled, | ||||
|     :flipper_configuration => flipper_config, | ||||
|     # An absolute path to your application root. | ||||
|     :app_path => "#{Pod::Config.instance.installation_root}/.." | ||||
|   ) | ||||
|   | ||||
| @@ -2,14 +2,14 @@ PODS: | ||||
|   - boost (1.76.0) | ||||
|   - CocoaAsyncSocket (7.6.5) | ||||
|   - DoubleConversion (1.1.6) | ||||
|   - FBLazyVector (0.70.6) | ||||
|   - FBReactNativeSpec (0.70.6): | ||||
|   - FBLazyVector (0.71.10) | ||||
|   - FBReactNativeSpec (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTRequired (= 0.70.6) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Core (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|     - RCTRequired (= 0.71.10) | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Core (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - Flipper (0.125.0): | ||||
|     - Flipper-Folly (~> 2.6) | ||||
|     - Flipper-RSocket (~> 1.4) | ||||
| @@ -73,6 +73,9 @@ PODS: | ||||
|     - FlipperKit/FlipperKitNetworkPlugin | ||||
|   - fmt (6.2.1) | ||||
|   - glog (0.3.5) | ||||
|   - hermes-engine (0.71.10): | ||||
|     - hermes-engine/Pre-built (= 0.71.10) | ||||
|   - hermes-engine/Pre-built (0.71.10) | ||||
|   - JoplinCommonShareExtension (1.0.0) | ||||
|   - JoplinRNShareExtension (1.0.0): | ||||
|     - JoplinCommonShareExtension | ||||
| @@ -90,203 +93,245 @@ PODS: | ||||
|     - DoubleConversion | ||||
|     - fmt (~> 6.2.1) | ||||
|     - glog | ||||
|   - RCTRequired (0.70.6) | ||||
|   - RCTTypeSafety (0.70.6): | ||||
|     - FBLazyVector (= 0.70.6) | ||||
|     - RCTRequired (= 0.70.6) | ||||
|     - React-Core (= 0.70.6) | ||||
|   - React (0.70.6): | ||||
|     - React-Core (= 0.70.6) | ||||
|     - React-Core/DevSupport (= 0.70.6) | ||||
|     - React-Core/RCTWebSocket (= 0.70.6) | ||||
|     - React-RCTActionSheet (= 0.70.6) | ||||
|     - React-RCTAnimation (= 0.70.6) | ||||
|     - React-RCTBlob (= 0.70.6) | ||||
|     - React-RCTImage (= 0.70.6) | ||||
|     - React-RCTLinking (= 0.70.6) | ||||
|     - React-RCTNetwork (= 0.70.6) | ||||
|     - React-RCTSettings (= 0.70.6) | ||||
|     - React-RCTText (= 0.70.6) | ||||
|     - React-RCTVibration (= 0.70.6) | ||||
|   - React-bridging (0.70.6): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-jsi (= 0.70.6) | ||||
|   - React-callinvoker (0.70.6) | ||||
|   - React-Codegen (0.70.6): | ||||
|     - FBReactNativeSpec (= 0.70.6) | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTRequired (= 0.70.6) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Core (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-Core (0.70.6): | ||||
|   - RCT-Folly/Futures (2021.07.22.00): | ||||
|     - boost | ||||
|     - DoubleConversion | ||||
|     - fmt (~> 6.2.1) | ||||
|     - glog | ||||
|     - libevent | ||||
|   - RCTRequired (0.71.10) | ||||
|   - RCTTypeSafety (0.71.10): | ||||
|     - FBLazyVector (= 0.71.10) | ||||
|     - RCTRequired (= 0.71.10) | ||||
|     - React-Core (= 0.71.10) | ||||
|   - React (0.71.10): | ||||
|     - React-Core (= 0.71.10) | ||||
|     - React-Core/DevSupport (= 0.71.10) | ||||
|     - React-Core/RCTWebSocket (= 0.71.10) | ||||
|     - React-RCTActionSheet (= 0.71.10) | ||||
|     - React-RCTAnimation (= 0.71.10) | ||||
|     - React-RCTBlob (= 0.71.10) | ||||
|     - React-RCTImage (= 0.71.10) | ||||
|     - React-RCTLinking (= 0.71.10) | ||||
|     - React-RCTNetwork (= 0.71.10) | ||||
|     - React-RCTSettings (= 0.71.10) | ||||
|     - React-RCTText (= 0.71.10) | ||||
|     - React-RCTVibration (= 0.71.10) | ||||
|   - React-callinvoker (0.71.10) | ||||
|   - React-Codegen (0.71.10): | ||||
|     - FBReactNativeSpec | ||||
|     - hermes-engine | ||||
|     - RCT-Folly | ||||
|     - RCTRequired | ||||
|     - RCTTypeSafety | ||||
|     - React-Core | ||||
|     - React-jsi | ||||
|     - React-jsiexecutor | ||||
|     - ReactCommon/turbomodule/bridging | ||||
|     - ReactCommon/turbomodule/core | ||||
|   - React-Core (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default (= 0.70.6) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-Core/Default (= 0.71.10) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/CoreModulesHeaders (0.70.6): | ||||
|   - React-Core/CoreModulesHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/Default (0.70.6): | ||||
|   - React-Core/Default (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/DevSupport (0.70.6): | ||||
|   - React-Core/DevSupport (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default (= 0.70.6) | ||||
|     - React-Core/RCTWebSocket (= 0.70.6) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-jsinspector (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-Core/Default (= 0.71.10) | ||||
|     - React-Core/RCTWebSocket (= 0.71.10) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-jsinspector (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTActionSheetHeaders (0.70.6): | ||||
|   - React-Core/RCTActionSheetHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTAnimationHeaders (0.70.6): | ||||
|   - React-Core/RCTAnimationHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTBlobHeaders (0.70.6): | ||||
|   - React-Core/RCTBlobHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTImageHeaders (0.70.6): | ||||
|   - React-Core/RCTImageHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTLinkingHeaders (0.70.6): | ||||
|   - React-Core/RCTLinkingHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTNetworkHeaders (0.70.6): | ||||
|   - React-Core/RCTNetworkHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTSettingsHeaders (0.70.6): | ||||
|   - React-Core/RCTSettingsHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTTextHeaders (0.70.6): | ||||
|   - React-Core/RCTTextHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTVibrationHeaders (0.70.6): | ||||
|   - React-Core/RCTVibrationHeaders (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-Core/RCTWebSocket (0.70.6): | ||||
|   - React-Core/RCTWebSocket (0.71.10): | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Core/Default (= 0.70.6) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsiexecutor (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-Core/Default (= 0.71.10) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-hermes | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - Yoga | ||||
|   - React-CoreModules (0.70.6): | ||||
|   - React-CoreModules (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/CoreModulesHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-RCTImage (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-cxxreact (0.70.6): | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/CoreModulesHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-RCTBlob | ||||
|     - React-RCTImage (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-cxxreact (0.71.10): | ||||
|     - boost (= 1.76.0) | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-callinvoker (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-jsinspector (= 0.70.6) | ||||
|     - React-logger (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-runtimeexecutor (= 0.70.6) | ||||
|   - React-jsi (0.70.6): | ||||
|     - React-callinvoker (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-jsinspector (= 0.71.10) | ||||
|     - React-logger (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|     - React-runtimeexecutor (= 0.71.10) | ||||
|   - React-hermes (0.71.10): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCT-Folly/Futures (= 2021.07.22.00) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-jsi | ||||
|     - React-jsiexecutor (= 0.71.10) | ||||
|     - React-jsinspector (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|   - React-jsi (0.71.10): | ||||
|     - boost (= 1.76.0) | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-jsi/Default (= 0.70.6) | ||||
|   - React-jsi/Default (0.70.6): | ||||
|     - boost (= 1.76.0) | ||||
|   - React-jsiexecutor (0.71.10): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|   - React-jsiexecutor (0.70.6): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|   - React-jsinspector (0.70.6) | ||||
|   - React-logger (0.70.6): | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|   - React-jsinspector (0.71.10) | ||||
|   - React-logger (0.71.10): | ||||
|     - glog | ||||
|   - react-native-alarm-notification (2.11.0): | ||||
|     - React | ||||
| @@ -330,72 +375,90 @@ PODS: | ||||
|     - React-Core | ||||
|   - react-native-webview (11.26.1): | ||||
|     - React-Core | ||||
|   - React-perflogger (0.70.6) | ||||
|   - React-RCTActionSheet (0.70.6): | ||||
|     - React-Core/RCTActionSheetHeaders (= 0.70.6) | ||||
|   - React-RCTAnimation (0.70.6): | ||||
|   - React-perflogger (0.71.10) | ||||
|   - React-RCTActionSheet (0.71.10): | ||||
|     - React-Core/RCTActionSheetHeaders (= 0.71.10) | ||||
|   - React-RCTAnimation (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTAnimationHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTBlob (0.70.6): | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTAnimationHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTAppDelegate (0.71.10): | ||||
|     - RCT-Folly | ||||
|     - RCTRequired | ||||
|     - RCTTypeSafety | ||||
|     - React-Core | ||||
|     - ReactCommon/turbomodule/core | ||||
|   - React-RCTBlob (0.71.10): | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTBlobHeaders (= 0.70.6) | ||||
|     - React-Core/RCTWebSocket (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-RCTNetwork (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTImage (0.70.6): | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTBlobHeaders (= 0.71.10) | ||||
|     - React-Core/RCTWebSocket (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-RCTNetwork (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTImage (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTImageHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-RCTNetwork (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTLinking (0.70.6): | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTLinkingHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTNetwork (0.70.6): | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTImageHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-RCTNetwork (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTLinking (0.71.10): | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTLinkingHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTNetwork (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTNetworkHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTSettings (0.70.6): | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTNetworkHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTSettings (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - RCTTypeSafety (= 0.70.6) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTSettingsHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-RCTText (0.70.6): | ||||
|     - React-Core/RCTTextHeaders (= 0.70.6) | ||||
|   - React-RCTVibration (0.70.6): | ||||
|     - RCTTypeSafety (= 0.71.10) | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTSettingsHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-RCTText (0.71.10): | ||||
|     - React-Core/RCTTextHeaders (= 0.71.10) | ||||
|   - React-RCTVibration (0.71.10): | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-Codegen (= 0.70.6) | ||||
|     - React-Core/RCTVibrationHeaders (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - ReactCommon/turbomodule/core (= 0.70.6) | ||||
|   - React-runtimeexecutor (0.70.6): | ||||
|     - React-jsi (= 0.70.6) | ||||
|   - ReactCommon/turbomodule/core (0.70.6): | ||||
|     - React-Codegen (= 0.71.10) | ||||
|     - React-Core/RCTVibrationHeaders (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - ReactCommon/turbomodule/core (= 0.71.10) | ||||
|   - React-runtimeexecutor (0.71.10): | ||||
|     - React-jsi (= 0.71.10) | ||||
|   - ReactCommon/turbomodule/bridging (0.71.10): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-bridging (= 0.70.6) | ||||
|     - React-callinvoker (= 0.70.6) | ||||
|     - React-Core (= 0.70.6) | ||||
|     - React-cxxreact (= 0.70.6) | ||||
|     - React-jsi (= 0.70.6) | ||||
|     - React-logger (= 0.70.6) | ||||
|     - React-perflogger (= 0.70.6) | ||||
|     - React-callinvoker (= 0.71.10) | ||||
|     - React-Core (= 0.71.10) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-logger (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|   - ReactCommon/turbomodule/core (0.71.10): | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|     - hermes-engine | ||||
|     - RCT-Folly (= 2021.07.22.00) | ||||
|     - React-callinvoker (= 0.71.10) | ||||
|     - React-Core (= 0.71.10) | ||||
|     - React-cxxreact (= 0.71.10) | ||||
|     - React-jsi (= 0.71.10) | ||||
|     - React-logger (= 0.71.10) | ||||
|     - React-perflogger (= 0.71.10) | ||||
|   - rn-fetch-blob (0.12.0): | ||||
|     - React-Core | ||||
|   - RNCClipboard (1.5.1): | ||||
| @@ -452,14 +515,15 @@ DEPENDENCIES: | ||||
|   - FlipperKit/FlipperKitUserDefaultsPlugin (= 0.125.0) | ||||
|   - FlipperKit/SKIOSNetworkPlugin (= 0.125.0) | ||||
|   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) | ||||
|   - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) | ||||
|   - JoplinCommonShareExtension (from `ShareExtension`) | ||||
|   - JoplinRNShareExtension (from `ShareExtension`) | ||||
|   - libevent (~> 2.1.12) | ||||
|   - OpenSSL-Universal (= 1.1.1100) | ||||
|   - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) | ||||
|   - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) | ||||
|   - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) | ||||
|   - React (from `../node_modules/react-native/`) | ||||
|   - React-bridging (from `../node_modules/react-native/ReactCommon`) | ||||
|   - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) | ||||
|   - React-Codegen (from `build/generated/ios`) | ||||
|   - React-Core (from `../node_modules/react-native/`) | ||||
| @@ -467,6 +531,7 @@ DEPENDENCIES: | ||||
|   - React-Core/RCTWebSocket (from `../node_modules/react-native/`) | ||||
|   - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) | ||||
|   - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) | ||||
|   - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) | ||||
|   - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) | ||||
|   - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) | ||||
|   - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) | ||||
| @@ -490,6 +555,7 @@ DEPENDENCIES: | ||||
|   - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) | ||||
|   - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) | ||||
|   - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) | ||||
|   - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) | ||||
|   - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) | ||||
|   - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) | ||||
|   - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) | ||||
| @@ -542,6 +608,8 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/React/FBReactNativeSpec" | ||||
|   glog: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" | ||||
|   hermes-engine: | ||||
|     :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" | ||||
|   JoplinCommonShareExtension: | ||||
|     :path: ShareExtension | ||||
|   JoplinRNShareExtension: | ||||
| @@ -554,8 +622,6 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/Libraries/TypeSafety" | ||||
|   React: | ||||
|     :path: "../node_modules/react-native/" | ||||
|   React-bridging: | ||||
|     :path: "../node_modules/react-native/ReactCommon" | ||||
|   React-callinvoker: | ||||
|     :path: "../node_modules/react-native/ReactCommon/callinvoker" | ||||
|   React-Codegen: | ||||
| @@ -566,6 +632,8 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/React/CoreModules" | ||||
|   React-cxxreact: | ||||
|     :path: "../node_modules/react-native/ReactCommon/cxxreact" | ||||
|   React-hermes: | ||||
|     :path: "../node_modules/react-native/ReactCommon/hermes" | ||||
|   React-jsi: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsi" | ||||
|   React-jsiexecutor: | ||||
| @@ -612,6 +680,8 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/Libraries/ActionSheetIOS" | ||||
|   React-RCTAnimation: | ||||
|     :path: "../node_modules/react-native/Libraries/NativeAnimation" | ||||
|   React-RCTAppDelegate: | ||||
|     :path: "../node_modules/react-native/Libraries/AppDelegate" | ||||
|   React-RCTBlob: | ||||
|     :path: "../node_modules/react-native/Libraries/Blob" | ||||
|   React-RCTImage: | ||||
| @@ -658,11 +728,11 @@ EXTERNAL SOURCES: | ||||
|     :path: "../node_modules/react-native/ReactCommon/yoga" | ||||
|  | ||||
| SPEC CHECKSUMS: | ||||
|   boost: a7c83b31436843459a1961bfd74b96033dc77234 | ||||
|   boost: 57d2868c099736d80fcd648bf211b4431e51a558 | ||||
|   CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99 | ||||
|   DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 | ||||
|   FBLazyVector: 48289402952f4f7a4e235de70a9a590aa0b79ef4 | ||||
|   FBReactNativeSpec: dd1186fd05255e3457baa2f4ca65e94c2cd1e3ac | ||||
|   FBLazyVector: ddb55c55295ea51ed98aa7e2e08add2f826309d5 | ||||
|   FBReactNativeSpec: 90fc1a90b4b7a171e0a7c20ea426c1bf6ce4399c | ||||
|   Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0 | ||||
|   Flipper-Boost-iOSX: fd1e2b8cbef7e662a122412d7ac5f5bea715403c | ||||
|   Flipper-DoubleConversion: 2dc99b02f658daf147069aad9dbd29d8feb06d30 | ||||
| @@ -674,24 +744,25 @@ SPEC CHECKSUMS: | ||||
|   FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86 | ||||
|   fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 | ||||
|   glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b | ||||
|   hermes-engine: d27603b55a48402501ad1928c05411dae9cd6b85 | ||||
|   JoplinCommonShareExtension: a8b60b02704d85a7305627912c0240e94af78db7 | ||||
|   JoplinRNShareExtension: 485f3e6dad83b7b77f1572eabc249f869ee55c02 | ||||
|   libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 | ||||
|   OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c | ||||
|   RCT-Folly: 0080d0a6ebf2577475bda044aa59e2ca1f909cda | ||||
|   RCTRequired: e1866f61af7049eb3d8e08e8b133abd38bc1ca7a | ||||
|   RCTTypeSafety: 27c2ac1b00609a432ced1ae701247593f07f901e | ||||
|   React: bb3e06418d2cc48a84f9666a576c7b38e89cd7db | ||||
|   React-bridging: 572502ec59c9de30309afdc4932e278214288913 | ||||
|   React-callinvoker: 6b708b79c69f3359d42f1abb4663f620dbd4dadf | ||||
|   React-Codegen: 74e1cd7cee692a8b983c18df3274b5e749de07c8 | ||||
|   React-Core: b587d0a624f9611b0e032505f3d6f25e8daa2bee | ||||
|   React-CoreModules: c6ff48b985e7aa622e82ca51c2c353c7803eb04e | ||||
|   React-cxxreact: ade3d9e63c599afdead3c35f8a8bd12b3da6730b | ||||
|   React-jsi: 5a3952e0c6d57460ad9ee2c905025b4c28f71087 | ||||
|   React-jsiexecutor: b4a65947391c658450151275aa406f2b8263178f | ||||
|   React-jsinspector: 60769e5a0a6d4b32294a2456077f59d0266f9a8b | ||||
|   React-logger: 1623c216abaa88974afce404dc8f479406bbc3a0 | ||||
|   RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 | ||||
|   RCTRequired: 8ef706f91e2b643cd32c26a57700b5f24fab0585 | ||||
|   RCTTypeSafety: 5fbddd8eb9242b91ac0d901c01da3673f358b1b7 | ||||
|   React: e5d2d559e89d256a1d6da64d51adaecda9c8ddae | ||||
|   React-callinvoker: 352ecbafbdccca5fdf4aed99c98ae5b7fc28e39b | ||||
|   React-Codegen: fa660a71e24078b2e52a62ecc2f3048c2f8ae6d7 | ||||
|   React-Core: 4ec45c2d537fe58e6d878bec6a13e3e2bed9c182 | ||||
|   React-CoreModules: 63f7f9fda3d4b214040a80e3f47ab4fb9a3e88e6 | ||||
|   React-cxxreact: 1a729807190ebf98ce5fb0c3d2ed211e8b5f2f87 | ||||
|   React-hermes: eb93eb6e7921ecd4abcc6e741b327f40763e850f | ||||
|   React-jsi: 1995961abdff0c9af9aae8a6b24468f21811000e | ||||
|   React-jsiexecutor: 4bb480a183a354e4dbfb1012936b1a2bb9357de7 | ||||
|   React-jsinspector: cdc854f8b13abd202afa54bc12578e5afb9cfae1 | ||||
|   React-logger: ef2269b3afa6ba868da90496c3e17a4ec4f4cee0 | ||||
|   react-native-alarm-notification: 26527410a6162d07a9dc57f4bbc62e94ff48e65d | ||||
|   react-native-camera: 3eae183c1d111103963f3dd913b65d01aef8110f | ||||
|   react-native-document-picker: 69ca2094d8780cfc1e7e613894d15290fdc54bba | ||||
| @@ -708,18 +779,19 @@ SPEC CHECKSUMS: | ||||
|   react-native-sqlite-storage: f6d515e1c446d1e6d026aa5352908a25d4de3261 | ||||
|   react-native-version-info: a106f23009ac0db4ee00de39574eb546682579b9 | ||||
|   react-native-webview: 9f111dfbcfc826084d6c507f569e5e03342ee1c1 | ||||
|   React-perflogger: 8c79399b0500a30ee8152d0f9f11beae7fc36595 | ||||
|   React-RCTActionSheet: 7316773acabb374642b926c19aef1c115df5c466 | ||||
|   React-RCTAnimation: 5341e288375451297057391227f691d9b2326c3d | ||||
|   React-RCTBlob: b0615fc2daf2b5684ade8fadcab659f16f6f0efa | ||||
|   React-RCTImage: 6487b9600f268ecedcaa86114d97954d31ad4750 | ||||
|   React-RCTLinking: c8018ae9ebfefcec3839d690d4725f8d15e4e4b3 | ||||
|   React-RCTNetwork: 8aa63578741e0fe1205c28d7d4b40dbfdabce8a8 | ||||
|   React-RCTSettings: d00c15ad369cd62242a4dfcc6f277912b4a84ed3 | ||||
|   React-RCTText: f532e5ca52681ecaecea452b3ad7a5b630f50d75 | ||||
|   React-RCTVibration: c75ceef7aa60a33b2d5731ebe5800ddde40cefc4 | ||||
|   React-runtimeexecutor: 15437b576139df27635400de0599d9844f1ab817 | ||||
|   ReactCommon: 349be31adeecffc7986a0de875d7fb0dcf4e251c | ||||
|   React-perflogger: 217095464d5c4bb70df0742fa86bf2a363693468 | ||||
|   React-RCTActionSheet: 8deae9b85a4cbc6a2243618ea62a374880a2c614 | ||||
|   React-RCTAnimation: 59c62353a8b59ce206044786c5d30e4754bffa64 | ||||
|   React-RCTAppDelegate: ef66a6904141fca96bffb00fac327a482b575f19 | ||||
|   React-RCTBlob: 8e518bae3d6ca97ffb7088da673fbbc53042d94d | ||||
|   React-RCTImage: 36c0324ff499802b9874d6803ca72026e90434f6 | ||||
|   React-RCTLinking: 401aec3a01b18c2c8ed93bf3a6758b87e617c58d | ||||
|   React-RCTNetwork: cb25b9f2737c3aa2cde0fe0bd7ff7fabf7bf9ad0 | ||||
|   React-RCTSettings: cb6ae9f656e1c880500c2ecbe8e72861c2262afa | ||||
|   React-RCTText: 7404fd01809244d79d456f92cfe6f9fbadf69209 | ||||
|   React-RCTVibration: d13cc2d63286c633393d3a7f6f607cc2a09ec011 | ||||
|   React-runtimeexecutor: a9a1cd79996c9a0846e3232ecb25c64e1cc0172e | ||||
|   ReactCommon: 65718685d4095d06b4b1af8042e12f1df2925c31 | ||||
|   rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba | ||||
|   RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495 | ||||
|   RNCPushNotificationIOS: 64218f3c776c03d7408284a819b2abfda1834bc8 | ||||
| @@ -733,9 +805,9 @@ SPEC CHECKSUMS: | ||||
|   RNShare: d82e10f6b7677f4b0048c23709bd04098d5aee6c | ||||
|   RNVectorIcons: fcc2f6cb32f5735b586e66d14103a74ce6ad61f8 | ||||
|   SocketRocket: fccef3f9c5cedea1353a9ef6ada904fde10d6608 | ||||
|   Yoga: 99caf8d5ab45e9d637ee6e0174ec16fbbb01bcfc | ||||
|   Yoga: e7ea9e590e27460d28911403b894722354d73479 | ||||
|   YogaKit: f782866e155069a2cca2517aafea43200b01fd5a | ||||
|  | ||||
| PODFILE CHECKSUM: 0235ffbfa2e655de806a80d996148182dd493d8d | ||||
| PODFILE CHECKSUM: 3b2cace838120977b5b54871752c9dddf5a11cea | ||||
|  | ||||
| COCOAPODS: 1.11.3 | ||||
|   | ||||
| @@ -40,7 +40,7 @@ | ||||
|     "prop-types": "15.8.1", | ||||
|     "punycode": "2.3.0", | ||||
|     "react": "18.2.0", | ||||
|     "react-native": "0.70.6", | ||||
|     "react-native": "0.71.10", | ||||
|     "react-native-action-button": "2.8.5", | ||||
|     "react-native-camera": "4.2.1", | ||||
|     "react-native-dialogbox": "0.6.10", | ||||
| @@ -79,8 +79,9 @@ | ||||
|     "url": "0.11.0" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@babel/core": "7.16.0", | ||||
|     "@babel/runtime": "7.16.3", | ||||
|     "@babel/core": "7.20.2", | ||||
|     "@babel/preset-env": "7.20.2", | ||||
|     "@babel/runtime": "7.20.0", | ||||
|     "@codemirror/commands": "6.2.2", | ||||
|     "@codemirror/lang-cpp": "6.0.2", | ||||
|     "@codemirror/lang-html": "6.4.3", | ||||
| @@ -96,10 +97,13 @@ | ||||
|     "@codemirror/view": "6.9.3", | ||||
|     "@joplin/tools": "~2.11", | ||||
|     "@lezer/highlight": "1.1.4", | ||||
|     "@tsconfig/react-native": "2.0.2", | ||||
|     "@types/fs-extra": "11.0.1", | ||||
|     "@types/jest": "29.5.1", | ||||
|     "@types/react": "18.0.24", | ||||
|     "@types/react-native": "0.70.6", | ||||
|     "@types/react-redux": "7.1.25", | ||||
|     "babel-jest": "29.2.1", | ||||
|     "babel-plugin-module-resolver": "4.1.0", | ||||
|     "execa": "4.1.0", | ||||
|     "fs-extra": "11.1.1", | ||||
| @@ -109,7 +113,7 @@ | ||||
|     "jetifier": "2.0.0", | ||||
|     "jsdom": "21.1.2", | ||||
|     "md5-file": "5.0.0", | ||||
|     "metro-react-native-babel-preset": "0.72.3", | ||||
|     "metro-react-native-babel-preset": "0.73.9", | ||||
|     "nodemon": "2.0.22", | ||||
|     "ts-jest": "29.1.0", | ||||
|     "ts-loader": "9.4.2", | ||||
|   | ||||
| @@ -26,7 +26,8 @@ export interface Recorder { | ||||
| export const getVosk = async () => { | ||||
| 	if (vosk_) return vosk_; | ||||
| 	vosk_ = new Vosk(); | ||||
| 	await vosk_.loadModel('model-fr-fr'); | ||||
| 	const result = await vosk_.loadModel('model-fr-fr'); | ||||
| 	logger.info('getVosk:', result); | ||||
| 	return vosk_; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -1,4 +1,7 @@ | ||||
| import Logger from '@joplin/lib/Logger'; | ||||
|  | ||||
| const { Platform, PermissionsAndroid } = require('react-native'); | ||||
| const logger = Logger.create('checkPermissions'); | ||||
|  | ||||
| type rationale = { | ||||
| 	title: string; | ||||
| @@ -9,11 +12,14 @@ type rationale = { | ||||
| }; | ||||
|  | ||||
| export default async (permissions: string, rationale?: rationale) => { | ||||
| 	if (Platform.OS !== 'android') return true; | ||||
| 	// On iOS, permissions are prompted for by the system, so here we assume it's granted. | ||||
| 	if (Platform.OS !== 'android') return PermissionsAndroid.RESULTS.GRANTED; | ||||
|  | ||||
| 	let result = await PermissionsAndroid.check(permissions); | ||||
| 	logger.info('Checked permission:', result); | ||||
| 	if (result !== PermissionsAndroid.RESULTS.GRANTED) { | ||||
| 		result = await PermissionsAndroid.request(permissions, rationale); | ||||
| 		logger.info('Requested permission:', result); | ||||
| 	} | ||||
| 	return result; | ||||
| }; | ||||
|   | ||||
| @@ -4,6 +4,7 @@ | ||||
|     <uses-permission android:name="android.permission.VIBRATE" /> | ||||
|     <uses-permission android:name="android.permission.WAKE_LOCK" /> | ||||
|     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> | ||||
| 	<uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> | ||||
|  | ||||
|     <application> | ||||
|         <receiver | ||||
|   | ||||
| @@ -1,5 +1,10 @@ | ||||
| # Joplin Android app changelog | ||||
|  | ||||
| ## [android-v2.11.27](https://github.com/laurent22/joplin/releases/tag/android-v2.11.27) (Pre-release) - 2023-06-10T15:58:58Z | ||||
|  | ||||
| - Upgraded to React Native 0.71 | ||||
| - Improved: Updated packages @react-native-community/datetimepicker (v7), buildTools, domutils (v3.1.0), react-native-document-picker (v8.2.1), react-native-safe-area-context (v4.5.3), tar (v6.1.15) | ||||
|  | ||||
| ## [android-v2.11.26](https://github.com/laurent22/joplin/releases/tag/android-v2.11.26) (Pre-release) - 2023-06-08T16:13:02Z | ||||
|  | ||||
| - Improved: Updated packages @react-native-community/datetimepicker (v7), buildTools, domutils (v3.1.0), react-native-document-picker (v8.2.1), react-native-safe-area-context (v4.5.3), tar (v6.1.15) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user