You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +02:00 
			
		
		
		
	Mobile: Upgrading to RN 60
This commit is contained in:
		| @@ -11,21 +11,54 @@ | ||||
| ; Ignore duplicate module providers | ||||
| ; For RN Apps installed via npm, "Libraries" folder is inside | ||||
| ; "node_modules/react-native" but in the source repo it is in the root | ||||
| .*/Libraries/react-native/React.js | ||||
| .*/Libraries/react-native/ReactNative.js | ||||
| node_modules/react-native/Libraries/react-native/React.js | ||||
|  | ||||
| ; 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/HMRLoadingView.js | ||||
|  | ||||
| [untyped] | ||||
| .*/node_modules/@react-native-community/cli/.*/.* | ||||
|  | ||||
| [include] | ||||
|  | ||||
| [libs] | ||||
| node_modules/react-native/Libraries/react-native/react-native-interface.js | ||||
| node_modules/react-native/flow | ||||
| node_modules/react-native/flow/ | ||||
|  | ||||
| [options] | ||||
| emoji=true | ||||
|  | ||||
| module.system=haste | ||||
| esproposal.optional_chaining=enable | ||||
| esproposal.nullish_coalescing=enable | ||||
|  | ||||
| experimental.strict_type_args=true | ||||
| module.file_ext=.js | ||||
| module.file_ext=.json | ||||
| module.file_ext=.ios.js | ||||
|  | ||||
| module.system=haste | ||||
| module.system.haste.use_name_reducers=true | ||||
| # get basename | ||||
| module.system.haste.name_reducers='^.*/\([a-zA-Z0-9$_.-]+\.js\(\.flow\)?\)$' -> '\1' | ||||
| # strip .js or .js.flow suffix | ||||
| module.system.haste.name_reducers='^\(.*\)\.js\(\.flow\)?$' -> '\1' | ||||
| # strip .ios suffix | ||||
| module.system.haste.name_reducers='^\(.*\)\.ios$' -> '\1' | ||||
| module.system.haste.name_reducers='^\(.*\)\.android$' -> '\1' | ||||
| module.system.haste.name_reducers='^\(.*\)\.native$' -> '\1' | ||||
| module.system.haste.paths.blacklist=.*/__tests__/.* | ||||
| module.system.haste.paths.blacklist=.*/__mocks__/.* | ||||
| module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/Libraries/.* | ||||
| module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/RNTester/.* | ||||
| module.system.haste.paths.whitelist=<PROJECT_ROOT>/node_modules/react-native/IntegrationTests/.* | ||||
| module.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation.js | ||||
| module.system.haste.paths.blacklist=<PROJECT_ROOT>/node_modules/react-native/Libraries/Animated/src/polyfills/.* | ||||
|  | ||||
| munge_underscores=true | ||||
|  | ||||
| @@ -33,14 +66,34 @@ module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|we | ||||
|  | ||||
| suppress_type=$FlowIssue | ||||
| suppress_type=$FlowFixMe | ||||
| suppress_type=$FixMe | ||||
| suppress_type=$FlowFixMeProps | ||||
| suppress_type=$FlowFixMeState | ||||
|  | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(4[0-2]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\) | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(4[0-2]\\|[1-3][0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+ | ||||
| suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy | ||||
| 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 | ||||
|  | ||||
| unsafe.enable_getters_and_setters=true | ||||
| [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 | ||||
| inexact-spread=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.92.0 | ||||
| ^0.98.0 | ||||
|   | ||||
							
								
								
									
										3
									
								
								ReactNativeClient/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								ReactNativeClient/.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -41,6 +41,9 @@ buck-out/ | ||||
| \.buckd/ | ||||
| *.keystore | ||||
|  | ||||
| # CocoaPods | ||||
| ios/Pods/ | ||||
|  | ||||
| # fastlane | ||||
| # | ||||
| # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the | ||||
|   | ||||
| @@ -146,9 +146,7 @@ android { | ||||
| } | ||||
|  | ||||
| dependencies { | ||||
|     implementation project(':@react-native-community_slider') | ||||
| 	implementation "org.webkit:android-jsc:r241213" | ||||
|     implementation project(':react-native-webview') | ||||
|     compile project(':react-native-push-notification') | ||||
|     // implementation (project(':react-native-camera')) { | ||||
|     // 	// This is required because com.google.firebase requires v16.0.x of com.google.android.gms | ||||
| @@ -174,7 +172,7 @@ dependencies { | ||||
| 	implementation project(':rn-fetch-blob') | ||||
| 	implementation project(':react-native-document-picker') | ||||
| 	implementation project(':react-native-image-resizer') | ||||
| 	implementation project(':react-native-share-extension') | ||||
| 	// implementation project(':react-native-share-extension') | ||||
| 	implementation project(':react-native-version-info') | ||||
| 	implementation project(':react-native-camera') | ||||
| 	implementation "com.facebook.react:react-native:+" | ||||
|   | ||||
| @@ -8,10 +8,3 @@ | ||||
| #   http://developer.android.com/guide/developing/tools/proguard.html | ||||
|  | ||||
| # Add any project specific keep options here: | ||||
|  | ||||
| # If your project uses WebView with JS, uncomment the following | ||||
| # and specify the fully qualified class name to the JavaScript interface | ||||
| # class: | ||||
| #-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||||
| #   public *; | ||||
| #} | ||||
|   | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							| @@ -1,28 +1,19 @@ | ||||
| package net.cozic.joplin; | ||||
|  | ||||
| import android.app.Application; | ||||
| import android.util.Log; | ||||
| import com.facebook.react.PackageList; | ||||
| import com.facebook.hermes.reactexecutor.HermesExecutorFactory; | ||||
| import com.facebook.react.bridge.JavaScriptExecutorFactory; | ||||
| import com.facebook.react.ReactApplication; | ||||
| import com.reactnativecommunity.slider.ReactSliderPackage; | ||||
| import com.reactnativecommunity.webview.RNCWebViewPackage; | ||||
| import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; | ||||
| import com.vinzscam.reactnativefileviewer.RNFileViewerPackage; | ||||
| import net.rhogan.rnsecurerandom.RNSecureRandomPackage; | ||||
| import com.imagepicker.ImagePickerPackage; | ||||
| import com.facebook.react.ReactInstanceManager; | ||||
| import com.facebook.react.ReactNativeHost; | ||||
| import com.facebook.react.ReactPackage; | ||||
| import com.facebook.react.shell.MainReactPackage; | ||||
| import com.facebook.soloader.SoLoader; | ||||
| import com.oblador.vectoricons.VectorIconsPackage; | ||||
| import com.reactnativedocumentpicker.ReactNativeDocumentPicker; | ||||
| import com.RNFetchBlob.RNFetchBlobPackage; | ||||
| import com.rnfs.RNFSPackage; | ||||
| import fr.bamlab.rnimageresizer.ImageResizerPackage; | ||||
| import org.pgsqlite.SQLitePluginPackage; | ||||
| import org.reactnative.camera.RNCameraPackage; | ||||
| import java.lang.reflect.Field; | ||||
| import com.alinz.parkerdan.shareextension.SharePackage; | ||||
| import cx.evermeet.versioninfo.RNVersionInfoPackage; | ||||
| // import com.alinz.parkerdan.shareextension.SharePackage; | ||||
| import java.util.Arrays; | ||||
| import java.util.List; | ||||
| import android.database.CursorWindow; | ||||
| @@ -37,6 +28,15 @@ public class MainApplication extends Application implements ReactApplication { | ||||
|  | ||||
| 		@Override | ||||
| 		protected List<ReactPackage> getPackages() { | ||||
|  | ||||
| 			// Was added in RN 60.x: | ||||
| 			// | ||||
| 			// @SuppressWarnings("UnnecessaryLocalVariable") | ||||
| 			// List<ReactPackage> packages = new PackageList(this).getPackages(); | ||||
| 			// // Packages that cannot be autolinked yet can be added manually here, for example: | ||||
| 			// // packages.add(new MyReactNativePackage()); | ||||
| 			// return packages; | ||||
|  | ||||
| 			return Arrays.<ReactPackage>asList( | ||||
| 				new MainReactPackage(), | ||||
| 				new ReactSliderPackage(), | ||||
| @@ -51,7 +51,7 @@ public class MainApplication extends Application implements ReactApplication { | ||||
| 				new RNFSPackage(), | ||||
| 				new SQLitePluginPackage(), | ||||
| 				new VectorIconsPackage(), | ||||
| 				new SharePackage(), | ||||
| 				// new SharePackage(), | ||||
| 				new RNCameraPackage(), | ||||
| 				new RNVersionInfoPackage() | ||||
| 			); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ package net.cozic.joplin.share; | ||||
| // import build config | ||||
| import net.cozic.joplin.BuildConfig; | ||||
|  | ||||
| import com.alinz.parkerdan.shareextension.SharePackage; | ||||
| // import com.alinz.parkerdan.shareextension.SharePackage; | ||||
|  | ||||
| import android.app.Application; | ||||
|  | ||||
| @@ -25,8 +25,8 @@ public class ShareApplication extends Application implements ReactApplication { | ||||
| 		@Override | ||||
| 		protected List<ReactPackage> getPackages() { | ||||
| 			return Arrays.<ReactPackage>asList( | ||||
| 				new MainReactPackage(), | ||||
| 				new SharePackage() | ||||
| 				new MainReactPackage() | ||||
| 				// new SharePackage() | ||||
| 			); | ||||
| 		} | ||||
| 	}; | ||||
|   | ||||
| @@ -3,6 +3,7 @@ | ||||
|     <!-- Base application theme. --> | ||||
|     <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> | ||||
|         <!-- Customize your theme here. --> | ||||
|         <item name="android:textColor">#000000</item> | ||||
|     </style> | ||||
|  | ||||
| </resources> | ||||
|   | ||||
| @@ -13,7 +13,7 @@ buildscript { | ||||
|         google() | ||||
|     } | ||||
|     dependencies { | ||||
|         classpath("com.android.tools.build:gradle:3.4.0") | ||||
|         classpath("com.android.tools.build:gradle:3.4.1") | ||||
|  | ||||
|         // NOTE: Do not place your application dependencies here; they belong | ||||
|         // in the individual module build.gradle files | ||||
| @@ -23,19 +23,20 @@ buildscript { | ||||
| allprojects { | ||||
|     repositories { | ||||
|         mavenLocal() | ||||
|         google() | ||||
|         jcenter() // Was added by me - still needed? | ||||
|         maven { url "https://jitpack.io" } | ||||
|         maven { | ||||
|             url "https://maven.google.com" | ||||
|         } | ||||
|         maven { | ||||
|             // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm | ||||
|             url "$rootDir/../node_modules/react-native/android" | ||||
|             url("$rootDir/../node_modules/react-native/android") | ||||
|         } | ||||
|         maven { | ||||
|             url "$rootDir/../node_modules/jsc-android/dist" | ||||
|             // Android JSC is installed from npm | ||||
|             url("$rootDir/../node_modules/jsc-android/dist") | ||||
|         } | ||||
|         google() | ||||
|         jcenter() | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,8 +0,0 @@ | ||||
| keystore( | ||||
|     name = "debug", | ||||
|     properties = "debug.keystore.properties", | ||||
|     store = "debug.keystore", | ||||
|     visibility = [ | ||||
|         "PUBLIC", | ||||
|     ], | ||||
| ) | ||||
| @@ -1,4 +0,0 @@ | ||||
| key.store=debug.keystore | ||||
| key.alias=androiddebugkey | ||||
| key.store.password=android | ||||
| key.alias.password=android | ||||
| @@ -1,38 +1,14 @@ | ||||
| rootProject.name = 'Joplin' | ||||
| include ':@react-native-community_slider' | ||||
| project(':@react-native-community_slider').projectDir = new File(rootProject.projectDir, '../node_modules/@react-native-community/slider/android') | ||||
| include ':react-native-webview' | ||||
| project(':react-native-webview').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-webview/android') | ||||
| include ':react-native-file-viewer' | ||||
| project(':react-native-file-viewer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-file-viewer/android') | ||||
| include ':react-native-securerandom' | ||||
| project(':react-native-securerandom').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-securerandom/android') | ||||
| include ':react-native-fs' | ||||
| project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android') | ||||
| include ':react-native-image-picker' | ||||
| project(':react-native-image-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-picker/android') | ||||
| include ':react-native-vector-icons' | ||||
| project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') | ||||
| include ':react-native-image-resizer' | ||||
| project(':react-native-image-resizer').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-image-resizer/android') | ||||
| apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | ||||
| include ':react-native-fs' | ||||
| project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android') | ||||
|  | ||||
| include ':app' | ||||
|  | ||||
| include ':react-native-sqlite-storage' | ||||
| project(':react-native-sqlite-storage').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-sqlite-storage/src/android') | ||||
|  | ||||
| include ':rn-fetch-blob' | ||||
| project(':rn-fetch-blob').projectDir = new File(rootProject.projectDir, '../node_modules/rn-fetch-blob/android') | ||||
|  | ||||
| include ':react-native-document-picker' | ||||
| project(':react-native-document-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-document-picker/android') | ||||
| include ':app', ':react-native-share-extension' | ||||
|  | ||||
| project(':react-native-share-extension').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share-extension/android') | ||||
| include ':react-native-version-info' | ||||
| project(':react-native-version-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-version-info/android') | ||||
| //include ':app', ':react-native-share-extension' | ||||
| //project(':react-native-share-extension').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share-extension/android') | ||||
|  | ||||
| include ':react-native-push-notification' | ||||
| project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android') | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								ReactNativeClient/ios/Joplin.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								ReactNativeClient/ios/Joplin.xcworkspace/contents.xcworkspacedata
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <Workspace | ||||
|    version = "1.0"> | ||||
|    <FileRef | ||||
|       location = "group:Joplin.xcodeproj"> | ||||
|    </FileRef> | ||||
|    <FileRef | ||||
|       location = "group:Pods/Pods.xcodeproj"> | ||||
|    </FileRef> | ||||
| </Workspace> | ||||
| @@ -0,0 +1,8 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||||
| <plist version="1.0"> | ||||
| <dict> | ||||
| 	<key>IDEDidComputeMac32BitWarning</key> | ||||
| 	<true/> | ||||
| </dict> | ||||
| </plist> | ||||
| @@ -12,7 +12,7 @@ | ||||
| #import <React/RCTBridge.h> | ||||
| #import <React/RCTBundleURLProvider.h> | ||||
| #import <React/RCTRootView.h> | ||||
| #import <React/RCTPushNotificationManager.h> | ||||
| // #import <React/RCTPushNotificationManager.h> | ||||
|  | ||||
| @implementation AppDelegate | ||||
|  | ||||
| @@ -34,11 +34,11 @@ | ||||
| } | ||||
|  | ||||
| // Required to register for notifications | ||||
| - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings]; }  // Required for the register event. | ||||
| - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; }  // Required for the notification event. You must call the completion handler after handling the remote notification. | ||||
| - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [RCTPushNotificationManager didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; }  // Required for the registrationError event. | ||||
| - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { [RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error]; }  // Required for the localNotification event. | ||||
| - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [RCTPushNotificationManager didReceiveLocalNotification:notification]; } | ||||
| // - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings]; }  // Required for the register event. | ||||
| // - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { [RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; }  // Required for the notification event. You must call the completion handler after handling the remote notification. | ||||
| // - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { [RCTPushNotificationManager didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; }  // Required for the registrationError event. | ||||
| // - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { [RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error]; }  // Required for the localNotification event. | ||||
| // - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { [RCTPushNotificationManager didReceiveLocalNotification:notification]; } | ||||
|  | ||||
| - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge | ||||
| { | ||||
|   | ||||
| @@ -46,19 +46,7 @@ | ||||
| 	<key>NSPhotoLibraryUsageDescription</key> | ||||
| 	<string>To allow attaching images to a note</string> | ||||
| 	<key>UIAppFonts</key> | ||||
| 	<array> | ||||
| 		<string>Entypo.ttf</string> | ||||
| 		<string>EvilIcons.ttf</string> | ||||
| 		<string>Feather.ttf</string> | ||||
| 		<string>FontAwesome.ttf</string> | ||||
| 		<string>Foundation.ttf</string> | ||||
| 		<string>Ionicons.ttf</string> | ||||
| 		<string>MaterialCommunityIcons.ttf</string> | ||||
| 		<string>MaterialIcons.ttf</string> | ||||
| 		<string>Octicons.ttf</string> | ||||
| 		<string>SimpleLineIcons.ttf</string> | ||||
| 		<string>Zocial.ttf</string> | ||||
| 	</array> | ||||
| 	<array/> | ||||
| 	<key>UILaunchStoryboardName</key> | ||||
| 	<string>LaunchScreen</string> | ||||
| 	<key>UIRequiredDeviceCapabilities</key> | ||||
|   | ||||
							
								
								
									
										36
									
								
								ReactNativeClient/ios/Podfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ReactNativeClient/ios/Podfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,36 @@ | ||||
| platform :ios, '9.0' | ||||
| require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | ||||
| target 'Joplin' do | ||||
|   # Pods for Joplin | ||||
|   pod 'React', :path => '../node_modules/react-native/' | ||||
|   pod 'React-Core', :path => '../node_modules/react-native/React' | ||||
|   pod 'React-DevSupport', :path => '../node_modules/react-native/React' | ||||
|   pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' | ||||
|   pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' | ||||
|   pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' | ||||
|   pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' | ||||
|   pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' | ||||
|   pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' | ||||
|   pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' | ||||
|   pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' | ||||
|   pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' | ||||
|   pod 'React-RCTWebSocket', :path => '../node_modules/react-native/Libraries/WebSocket' | ||||
|   pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' | ||||
|   pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' | ||||
|   pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' | ||||
|   pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' | ||||
|   pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga' | ||||
|   pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' | ||||
|   pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' | ||||
|   pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' | ||||
|   pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob' | ||||
|   use_native_modules! | ||||
| end | ||||
|  | ||||
| # target 'Joplin-tvOS' do | ||||
| #   # Pods for Joplin-tvOS | ||||
| #   target 'Joplin-tvOSTests' do | ||||
| #     inherit! :search_paths | ||||
| #     # Pods for testing | ||||
| #   end | ||||
| # end | ||||
							
								
								
									
										265
									
								
								ReactNativeClient/ios/Podfile.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										265
									
								
								ReactNativeClient/ios/Podfile.lock
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,265 @@ | ||||
| PODS: | ||||
|   - boost-for-react-native (1.63.0) | ||||
|   - DoubleConversion (1.1.6) | ||||
|   - Folly (2018.10.22.00): | ||||
|     - boost-for-react-native | ||||
|     - DoubleConversion | ||||
|     - Folly/Default (= 2018.10.22.00) | ||||
|     - glog | ||||
|   - Folly/Default (2018.10.22.00): | ||||
|     - boost-for-react-native | ||||
|     - DoubleConversion | ||||
|     - glog | ||||
|   - glog (0.3.5) | ||||
|   - React (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|     - React-DevSupport (= 0.60.6) | ||||
|     - React-RCTActionSheet (= 0.60.6) | ||||
|     - React-RCTAnimation (= 0.60.6) | ||||
|     - React-RCTBlob (= 0.60.6) | ||||
|     - React-RCTImage (= 0.60.6) | ||||
|     - React-RCTLinking (= 0.60.6) | ||||
|     - React-RCTNetwork (= 0.60.6) | ||||
|     - React-RCTSettings (= 0.60.6) | ||||
|     - React-RCTText (= 0.60.6) | ||||
|     - React-RCTVibration (= 0.60.6) | ||||
|     - React-RCTWebSocket (= 0.60.6) | ||||
|   - React-Core (0.60.6): | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - React-cxxreact (= 0.60.6) | ||||
|     - React-jsiexecutor (= 0.60.6) | ||||
|     - yoga (= 0.60.6.React) | ||||
|   - React-cxxreact (0.60.6): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-jsinspector (= 0.60.6) | ||||
|   - React-DevSupport (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|     - React-RCTWebSocket (= 0.60.6) | ||||
|   - React-jsi (0.60.6): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-jsi/Default (= 0.60.6) | ||||
|   - React-jsi/Default (0.60.6): | ||||
|     - boost-for-react-native (= 1.63.0) | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|   - React-jsiexecutor (0.60.6): | ||||
|     - DoubleConversion | ||||
|     - Folly (= 2018.10.22.00) | ||||
|     - glog | ||||
|     - React-cxxreact (= 0.60.6) | ||||
|     - React-jsi (= 0.60.6) | ||||
|   - React-jsinspector (0.60.6) | ||||
|   - react-native-camera (2.10.2): | ||||
|     - React | ||||
|     - react-native-camera/RCT (= 2.10.2) | ||||
|     - react-native-camera/RN (= 2.10.2) | ||||
|   - react-native-camera/RCT (2.10.2): | ||||
|     - React | ||||
|   - react-native-camera/RN (2.10.2): | ||||
|     - React | ||||
|   - react-native-document-picker (2.3.0): | ||||
|     - React | ||||
|   - react-native-image-picker (0.14.3): | ||||
|     - React | ||||
|   - react-native-image-resizer (1.0.0): | ||||
|     - React | ||||
|   - react-native-slider (2.0.8): | ||||
|     - React | ||||
|   - react-native-sqlite-storage (3.3.11): | ||||
|     - React | ||||
|   - react-native-version-info (0.5.1): | ||||
|     - React | ||||
|   - react-native-webview (5.12.0): | ||||
|     - React | ||||
|   - React-RCTActionSheet (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTAnimation (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTBlob (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|     - React-RCTNetwork (= 0.60.6) | ||||
|     - React-RCTWebSocket (= 0.60.6) | ||||
|   - React-RCTImage (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|     - React-RCTNetwork (= 0.60.6) | ||||
|   - React-RCTLinking (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTNetwork (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTSettings (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTText (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTVibration (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - React-RCTWebSocket (0.60.6): | ||||
|     - React-Core (= 0.60.6) | ||||
|   - rn-fetch-blob (0.12.0): | ||||
|     - React-Core | ||||
|   - RNFileViewer (1.0.1): | ||||
|     - React | ||||
|   - RNFS (2.11.17): | ||||
|     - React | ||||
|   - RNSecureRandom (1.0.0-rc.0): | ||||
|     - React | ||||
|   - RNVectorIcons (6.6.0): | ||||
|     - React | ||||
|   - yoga (0.60.6.React) | ||||
|  | ||||
| DEPENDENCIES: | ||||
|   - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) | ||||
|   - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) | ||||
|   - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) | ||||
|   - React (from `../node_modules/react-native/`) | ||||
|   - React-Core (from `../node_modules/react-native/React`) | ||||
|   - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) | ||||
|   - React-DevSupport (from `../node_modules/react-native/React`) | ||||
|   - 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`) | ||||
|   - react-native-camera (from `../node_modules/react-native-camera`) | ||||
|   - react-native-document-picker (from `../node_modules/react-native-document-picker`) | ||||
|   - react-native-image-picker (from `../node_modules/react-native-image-picker`) | ||||
|   - react-native-image-resizer (from `../node_modules/react-native-image-resizer`) | ||||
|   - "react-native-slider (from `../node_modules/@react-native-community/slider`)" | ||||
|   - react-native-sqlite-storage (from `../node_modules/react-native-sqlite-storage`) | ||||
|   - react-native-version-info (from `../node_modules/react-native-version-info`) | ||||
|   - react-native-webview (from `../node_modules/react-native-webview`) | ||||
|   - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) | ||||
|   - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) | ||||
|   - 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`) | ||||
|   - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) | ||||
|   - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) | ||||
|   - React-RCTText (from `../node_modules/react-native/Libraries/Text`) | ||||
|   - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) | ||||
|   - React-RCTWebSocket (from `../node_modules/react-native/Libraries/WebSocket`) | ||||
|   - rn-fetch-blob (from `../node_modules/rn-fetch-blob`) | ||||
|   - RNFileViewer (from `../node_modules/react-native-file-viewer/ios`) | ||||
|   - RNFS (from `../node_modules/react-native-fs`) | ||||
|   - RNSecureRandom (from `../node_modules/react-native-securerandom`) | ||||
|   - RNVectorIcons (from `../node_modules/react-native-vector-icons`) | ||||
|   - yoga (from `../node_modules/react-native/ReactCommon/yoga`) | ||||
|  | ||||
| SPEC REPOS: | ||||
|   trunk: | ||||
|     - boost-for-react-native | ||||
|  | ||||
| EXTERNAL SOURCES: | ||||
|   DoubleConversion: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" | ||||
|   Folly: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" | ||||
|   glog: | ||||
|     :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" | ||||
|   React: | ||||
|     :path: "../node_modules/react-native/" | ||||
|   React-Core: | ||||
|     :path: "../node_modules/react-native/React" | ||||
|   React-cxxreact: | ||||
|     :path: "../node_modules/react-native/ReactCommon/cxxreact" | ||||
|   React-DevSupport: | ||||
|     :path: "../node_modules/react-native/React" | ||||
|   React-jsi: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsi" | ||||
|   React-jsiexecutor: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsiexecutor" | ||||
|   React-jsinspector: | ||||
|     :path: "../node_modules/react-native/ReactCommon/jsinspector" | ||||
|   react-native-camera: | ||||
|     :path: "../node_modules/react-native-camera" | ||||
|   react-native-document-picker: | ||||
|     :path: "../node_modules/react-native-document-picker" | ||||
|   react-native-image-picker: | ||||
|     :path: "../node_modules/react-native-image-picker" | ||||
|   react-native-image-resizer: | ||||
|     :path: "../node_modules/react-native-image-resizer" | ||||
|   react-native-slider: | ||||
|     :path: "../node_modules/@react-native-community/slider" | ||||
|   react-native-sqlite-storage: | ||||
|     :path: "../node_modules/react-native-sqlite-storage" | ||||
|   react-native-version-info: | ||||
|     :path: "../node_modules/react-native-version-info" | ||||
|   react-native-webview: | ||||
|     :path: "../node_modules/react-native-webview" | ||||
|   React-RCTActionSheet: | ||||
|     :path: "../node_modules/react-native/Libraries/ActionSheetIOS" | ||||
|   React-RCTAnimation: | ||||
|     :path: "../node_modules/react-native/Libraries/NativeAnimation" | ||||
|   React-RCTBlob: | ||||
|     :path: "../node_modules/react-native/Libraries/Blob" | ||||
|   React-RCTImage: | ||||
|     :path: "../node_modules/react-native/Libraries/Image" | ||||
|   React-RCTLinking: | ||||
|     :path: "../node_modules/react-native/Libraries/LinkingIOS" | ||||
|   React-RCTNetwork: | ||||
|     :path: "../node_modules/react-native/Libraries/Network" | ||||
|   React-RCTSettings: | ||||
|     :path: "../node_modules/react-native/Libraries/Settings" | ||||
|   React-RCTText: | ||||
|     :path: "../node_modules/react-native/Libraries/Text" | ||||
|   React-RCTVibration: | ||||
|     :path: "../node_modules/react-native/Libraries/Vibration" | ||||
|   React-RCTWebSocket: | ||||
|     :path: "../node_modules/react-native/Libraries/WebSocket" | ||||
|   rn-fetch-blob: | ||||
|     :path: "../node_modules/rn-fetch-blob" | ||||
|   RNFileViewer: | ||||
|     :path: "../node_modules/react-native-file-viewer/ios" | ||||
|   RNFS: | ||||
|     :path: "../node_modules/react-native-fs" | ||||
|   RNSecureRandom: | ||||
|     :path: "../node_modules/react-native-securerandom" | ||||
|   RNVectorIcons: | ||||
|     :path: "../node_modules/react-native-vector-icons" | ||||
|   yoga: | ||||
|     :path: "../node_modules/react-native/ReactCommon/yoga" | ||||
|  | ||||
| SPEC CHECKSUMS: | ||||
|   boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c | ||||
|   DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 | ||||
|   Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 | ||||
|   glog: 1f3da668190260b06b429bb211bfbee5cd790c28 | ||||
|   React: 68e7f8dfc27729eade18423072a143120f2f32ab | ||||
|   React-Core: fc9dace551f6c8c1007dd2d3cb1bc10c90a01d3e | ||||
|   React-cxxreact: abe59014fce932d41a08bf1aa5dcad9ca8f0a2c5 | ||||
|   React-DevSupport: b0da2fd9ad4ffb25561bf2a328ab84f78f871bdd | ||||
|   React-jsi: 1a4248256b96fa453536a8dafe11b784e24e789d | ||||
|   React-jsiexecutor: 2279e559b921d02dfc6253ebef3dcb3a9dc6c07e | ||||
|   React-jsinspector: a58b86545a0185f69768e78ac96ca9fe43fa3694 | ||||
|   react-native-camera: ea85f74cf2e501d2a91a3da7092ecdac082f18df | ||||
|   react-native-document-picker: 8508bfda34be6c24a2cbecbe515b15108658c183 | ||||
|   react-native-image-picker: 3693786b3d5958c8f71deed66ec068b323565e0d | ||||
|   react-native-image-resizer: aa1600566fd336a044daf9273dcec5033c1d41ca | ||||
|   react-native-slider: b2f361499888302147205f17f6fffa921a7bda70 | ||||
|   react-native-sqlite-storage: 3cfa904d9750f7e846c9a14c47951583ee99dbf4 | ||||
|   react-native-version-info: 8905d01e64f8444ab6842b3fff89886b3191e732 | ||||
|   react-native-webview: 26d8993b090ca5d59eb9a9466dcb8291baa3223e | ||||
|   React-RCTActionSheet: 49f6a67a7efa6688f637296383d453b97ef13645 | ||||
|   React-RCTAnimation: e8047438b2927ebbe630bbf600c7309374075df3 | ||||
|   React-RCTBlob: 2c4b28daca5b3e6e356706d8e0c7436a0e8ef492 | ||||
|   React-RCTImage: 273501f0529775962551613259c20ccdf1a87cd2 | ||||
|   React-RCTLinking: 76c88b3cc98657915a2ba2f20d208e44d0530a43 | ||||
|   React-RCTNetwork: 77c11e672ccdcc33da5d047705f100b016497b15 | ||||
|   React-RCTSettings: f727c25ad26a8a9bd7272a8ba93781bd1f53952a | ||||
|   React-RCTText: d91537e29e38dc69cf09cbca0875cf5dc7402da6 | ||||
|   React-RCTVibration: 7655d72dfb919dd6d8e135ca108a5a2bd9fcd7b4 | ||||
|   React-RCTWebSocket: 7cd2c8d0f8ddd680dc76404defba7ab1f56b83af | ||||
|   rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba | ||||
|   RNFileViewer: 5047ecf40477339723cc08abd55b5ebcefcef4b5 | ||||
|   RNFS: 416676c3a9ae404454bade10e3d78147c7c33a40 | ||||
|   RNSecureRandom: 1f19ad1492f7ed416b8fc79e92216a1f73f13a4c | ||||
|   RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 | ||||
|   yoga: 5079887aa3e4c62142d6bcee493022643ee4d730 | ||||
|  | ||||
| PODFILE CHECKSUM: f181745e3dfb6ceb34ab39c6406155aa68a75c7c | ||||
|  | ||||
| COCOAPODS: 1.8.4 | ||||
| @@ -10,6 +10,8 @@ const { _ } = require('lib/locale.js'); | ||||
| const { shim } = require('lib/shim'); | ||||
| const Setting = require('lib/models/Setting'); | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| class CameraView extends Component { | ||||
| 	constructor() { | ||||
| 		super(); | ||||
|   | ||||
| @@ -8,6 +8,8 @@ const ReactNativeActionButton = require('react-native-action-button').default; | ||||
| const { connect } = require('react-redux'); | ||||
| const { _ } = require('lib/locale.js'); | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| const styles = StyleSheet.create({ | ||||
| 	actionButtonIcon: { | ||||
| 		fontSize: 20, | ||||
|   | ||||
| @@ -4,6 +4,7 @@ const React = require('react'); | ||||
| const Component = React.Component; | ||||
| const { View, TouchableHighlight } = require('react-native'); | ||||
| const Icon = require('react-native-vector-icons/Ionicons').default; | ||||
| Icon.loadFont(); | ||||
|  | ||||
| const styles = { | ||||
| 	checkboxIcon: { | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
| const React = require('react'); | ||||
| const Component = React.Component; | ||||
| const { connect } = require('react-redux'); | ||||
| const { ListView, Text, StyleSheet, Button, View } = require('react-native'); | ||||
| const { FlatList, Text, StyleSheet, Button, View } = require('react-native'); | ||||
| const { _ } = require('lib/locale.js'); | ||||
| const { NoteItem } = require('lib/components/note-item.js'); | ||||
| const { time } = require('lib/time-utils.js'); | ||||
| @@ -12,13 +12,8 @@ const { themeStyle } = require('lib/components/global-style.js'); | ||||
| class NoteListComponent extends Component { | ||||
| 	constructor() { | ||||
| 		super(); | ||||
| 		const ds = new ListView.DataSource({ | ||||
| 			rowHasChanged: (r1, r2) => { | ||||
| 				return r1 !== r2; | ||||
| 			}, | ||||
| 		}); | ||||
|  | ||||
| 		this.state = { | ||||
| 			dataSource: ds, | ||||
| 			items: [], | ||||
| 			selectedItemIds: [], | ||||
| 		}; | ||||
| @@ -82,37 +77,23 @@ class NoteListComponent extends Component { | ||||
| 		return output; | ||||
| 	} | ||||
|  | ||||
| 	UNSAFE_componentWillMount() { | ||||
| 		const newDataSource = this.state.dataSource.cloneWithRows(this.filterNotes(this.props.items)); | ||||
| 		this.setState({ dataSource: newDataSource }); | ||||
| 	} | ||||
|  | ||||
| 	UNSAFE_componentWillReceiveProps(newProps) { | ||||
| 		// https://stackoverflow.com/questions/38186114/react-native-redux-and-listview | ||||
| 		this.setState({ | ||||
| 			dataSource: this.state.dataSource.cloneWithRows(this.filterNotes(newProps.items)), | ||||
| 		}); | ||||
|  | ||||
| 		// Make sure scroll position is reset when switching from one folder to another or to a tag list. | ||||
| 		if (this.rootRef_ && newProps.notesSource != this.props.notesSource) { | ||||
| 			this.rootRef_.scrollTo({ x: 0, y: 0, animated: false }); | ||||
| 			this.rootRef_.scrollToOffset({ offset: 0, animated: false }); | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	render() { | ||||
| 		// `enableEmptySections` is to fix this warning: https://github.com/FaridSafi/react-native-gifted-listview/issues/39 | ||||
|  | ||||
| 		if (this.state.dataSource.getRowCount()) { | ||||
| 			return ( | ||||
| 				<ListView | ||||
| 					ref={ref => (this.rootRef_ = ref)} | ||||
| 					dataSource={this.state.dataSource} | ||||
| 					renderRow={note => { | ||||
| 						return <NoteItem note={note} />; | ||||
| 					}} | ||||
| 					enableEmptySections={true} | ||||
| 				/> | ||||
| 			); | ||||
| 		if (this.props.items.length) { | ||||
| 			return <FlatList | ||||
| 				ref={ref => (this.rootRef_ = ref)} | ||||
| 				data={this.props.items} | ||||
| 				renderItem={({ item }) => <NoteItem note={item} />} | ||||
| 				keyExtractor={item => item.id} | ||||
| 			/>; | ||||
| 		} else { | ||||
| 			if (!this.props.folders.length) { | ||||
| 				const noItemMessage = _('You currently have no notebooks.'); | ||||
|   | ||||
| @@ -17,6 +17,8 @@ const { Dropdown } = require('lib/components/Dropdown.js'); | ||||
| const { dialogs } = require('lib/dialogs.js'); | ||||
| const DialogBox = require('react-native-dialogbox').default; | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| // Rather than applying a padding to the whole bar, it is applied to each | ||||
| // individual component (button, picker, etc.) so that the touchable areas | ||||
| // are widder and to give more room to the picker component which has a larger | ||||
|   | ||||
| @@ -11,6 +11,8 @@ const Icon = require('react-native-vector-icons/Ionicons').default; | ||||
| const ModalDialog = require('lib/components/ModalDialog'); | ||||
| const naturalCompare = require('string-natural-compare'); | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| class NoteTagsDialogComponent extends React.Component { | ||||
| 	constructor() { | ||||
| 		super(); | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  | ||||
| const React = require('react'); | ||||
|  | ||||
| const { ListView, View, Text, Button, StyleSheet, Platform } = require('react-native'); | ||||
| const { FlatList, View, Text, Button, StyleSheet, Platform } = require('react-native'); | ||||
| const { connect } = require('react-redux'); | ||||
| const { reg } = require('lib/registry.js'); | ||||
| const { ScreenHeader } = require('lib/components/screen-header.js'); | ||||
| @@ -19,13 +19,9 @@ class LogScreenComponent extends BaseScreenComponent { | ||||
|  | ||||
| 	constructor() { | ||||
| 		super(); | ||||
| 		const ds = new ListView.DataSource({ | ||||
| 			rowHasChanged: (r1, r2) => { | ||||
| 				return r1 !== r2; | ||||
| 			}, | ||||
| 		}); | ||||
|  | ||||
| 		this.state = { | ||||
| 			dataSource: ds, | ||||
| 			logEntries: [], | ||||
| 			showErrorsOnly: false, | ||||
| 		}; | ||||
| 		this.styles_ = {}; | ||||
| @@ -70,29 +66,24 @@ class LogScreenComponent extends BaseScreenComponent { | ||||
| 		this.resfreshLogEntries(); | ||||
| 	} | ||||
|  | ||||
| 	resfreshLogEntries(showErrorsOnly = null) { | ||||
| 	async resfreshLogEntries(showErrorsOnly = null) { | ||||
| 		if (showErrorsOnly === null) showErrorsOnly = this.state.showErrorsOnly; | ||||
|  | ||||
| 		let levels = [Logger.LEVEL_DEBUG, Logger.LEVEL_INFO, Logger.LEVEL_WARN, Logger.LEVEL_ERROR]; | ||||
| 		if (showErrorsOnly) levels = [Logger.LEVEL_WARN, Logger.LEVEL_ERROR]; | ||||
|  | ||||
| 		reg | ||||
| 			.logger() | ||||
| 			.lastEntries(1000, { levels: levels }) | ||||
| 			.then(entries => { | ||||
| 				const newDataSource = this.state.dataSource.cloneWithRows(entries); | ||||
| 				this.setState({ dataSource: newDataSource }); | ||||
| 			}); | ||||
| 		this.setState({ | ||||
| 			logEntries: await reg.logger().lastEntries(1000, { levels: levels }), | ||||
| 			showErrorsOnly: showErrorsOnly, | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	toggleErrorsOnly() { | ||||
| 		const showErrorsOnly = !this.state.showErrorsOnly; | ||||
| 		this.setState({ showErrorsOnly: showErrorsOnly }); | ||||
| 		this.resfreshLogEntries(showErrorsOnly); | ||||
| 		this.resfreshLogEntries(!this.state.showErrorsOnly); | ||||
| 	} | ||||
|  | ||||
| 	render() { | ||||
| 		let renderRow = item => { | ||||
| 		let renderRow = ({ item }) => { | ||||
| 			let textStyle = this.styles().rowText; | ||||
| 			if (item.level == Logger.LEVEL_WARN) textStyle = this.styles().rowTextWarn; | ||||
| 			if (item.level == Logger.LEVEL_ERROR) textStyle = this.styles().rowTextError; | ||||
| @@ -105,10 +96,15 @@ class LogScreenComponent extends BaseScreenComponent { | ||||
| 		}; | ||||
|  | ||||
| 		// `enableEmptySections` is to fix this warning: https://github.com/FaridSafi/react-native-gifted-listview/issues/39 | ||||
|  | ||||
| 		return ( | ||||
| 			<View style={this.rootStyle(this.props.theme).root}> | ||||
| 				<ScreenHeader title={_('Log')} /> | ||||
| 				<ListView dataSource={this.state.dataSource} renderRow={renderRow} enableEmptySections={true} /> | ||||
| 				<FlatList | ||||
| 					data={this.state.logEntries} | ||||
| 					renderItem={renderRow} | ||||
| 					keyExtractor={item => { return `${item.id}`; }} | ||||
| 				/> | ||||
| 				<View style={{ flexDirection: 'row' }}> | ||||
| 					<View style={{ flex: 1, marginRight: 5 }}> | ||||
| 						<Button | ||||
|   | ||||
| @@ -35,7 +35,7 @@ const ImageResizer = require('react-native-image-resizer').default; | ||||
| const shared = require('lib/components/shared/note-screen-shared.js'); | ||||
| const ImagePicker = require('react-native-image-picker'); | ||||
| const { SelectDateTimeDialog } = require('lib/components/select-date-time-dialog.js'); | ||||
| const ShareExtension = require('react-native-share-extension').default; | ||||
| // const ShareExtension = require('react-native-share-extension').default; | ||||
| const CameraView = require('lib/components/CameraView'); | ||||
| const SearchEngine = require('lib/services/SearchEngine'); | ||||
| const urlUtils = require('lib/urlUtils'); | ||||
| @@ -305,9 +305,9 @@ class NoteScreenComponent extends BaseScreenComponent { | ||||
|  | ||||
| 		shared.uninstallResourceHandling(this.refreshResource); | ||||
|  | ||||
| 		if (Platform.OS !== 'ios' && this.state.fromShare) { | ||||
| 			ShareExtension.close(); | ||||
| 		} | ||||
| 		// if (Platform.OS !== 'ios' && this.state.fromShare) { | ||||
| 		// 	ShareExtension.close(); | ||||
| 		// } | ||||
| 	} | ||||
|  | ||||
| 	title_changeText(text) { | ||||
|   | ||||
| @@ -14,6 +14,8 @@ const { themeStyle } = require('lib/components/global-style.js'); | ||||
| const SearchEngineUtils = require('lib/services/SearchEngineUtils'); | ||||
| const DialogBox = require('react-native-dialogbox').default; | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| class SearchScreenComponent extends BaseScreenComponent { | ||||
| 	static navigationOptions() { | ||||
| 		return { header: null }; | ||||
|   | ||||
| @@ -7,6 +7,8 @@ const { connect } = require('react-redux'); | ||||
| const Icon = require('react-native-vector-icons/Ionicons').default; | ||||
| const { globalStyle, themeStyle } = require('lib/components/global-style.js'); | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| class SideMenuContentNoteComponent extends Component { | ||||
| 	constructor() { | ||||
| 		super(); | ||||
|   | ||||
| @@ -12,6 +12,8 @@ const { _ } = require('lib/locale.js'); | ||||
| const { globalStyle, themeStyle } = require('lib/components/global-style.js'); | ||||
| const shared = require('lib/components/shared/side-menu-shared.js'); | ||||
|  | ||||
| Icon.loadFont(); | ||||
|  | ||||
| class SideMenuContentComponent extends Component { | ||||
| 	constructor() { | ||||
| 		super(); | ||||
|   | ||||
| @@ -1,21 +1,21 @@ | ||||
| const { PushNotificationIOS } = require('react-native'); | ||||
| // const { PushNotificationIOS } = require('react-native'); | ||||
|  | ||||
| class AlarmServiceDriver { | ||||
| 	constructor() { | ||||
| 		this.hasPermission_ = null; | ||||
| 		this.inAppNotificationHandler_ = null; | ||||
|  | ||||
| 		PushNotificationIOS.addEventListener('localNotification', instance => { | ||||
| 			if (!this.inAppNotificationHandler_) return; | ||||
| 		// PushNotificationIOS.addEventListener('localNotification', instance => { | ||||
| 		// 	if (!this.inAppNotificationHandler_) return; | ||||
|  | ||||
| 			if (!instance || !instance._data || !instance._data.id) { | ||||
| 				console.warn('PushNotificationIOS.addEventListener: Did not receive a proper notification instance'); | ||||
| 				return; | ||||
| 			} | ||||
| 		// 	if (!instance || !instance._data || !instance._data.id) { | ||||
| 		// 		console.warn('PushNotificationIOS.addEventListener: Did not receive a proper notification instance'); | ||||
| 		// 		return; | ||||
| 		// 	} | ||||
|  | ||||
| 			const id = instance._data.id; | ||||
| 			this.inAppNotificationHandler_(id); | ||||
| 		}); | ||||
| 		// 	const id = instance._data.id; | ||||
| 		// 	this.inAppNotificationHandler_(id); | ||||
| 		// }); | ||||
| 	} | ||||
|  | ||||
| 	hasPersistentNotifications() { | ||||
| @@ -36,26 +36,28 @@ class AlarmServiceDriver { | ||||
| 		if (this.hasPermission_ !== null) return this.hasPermission_; | ||||
|  | ||||
| 		return new Promise((resolve) => { | ||||
| 			PushNotificationIOS.checkPermissions(async perm => { | ||||
| 				const ok = await this.hasPermissions(perm); | ||||
| 				this.hasPermission_ = ok; | ||||
| 				resolve(ok); | ||||
| 			}); | ||||
| 			this.hasPermission_ = true; | ||||
| 			resolve(true); | ||||
| 			// PushNotificationIOS.checkPermissions(async perm => { | ||||
| 			// 	const ok = await this.hasPermissions(perm); | ||||
| 			// 	this.hasPermission_ = ok; | ||||
| 			// 	resolve(ok); | ||||
| 			// }); | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	async requestPermissions() { | ||||
| 		const newPerm = await PushNotificationIOS.requestPermissions({ | ||||
| 			alert: 1, | ||||
| 			badge: 1, | ||||
| 			sound: 1, | ||||
| 		}); | ||||
| 		this.hasPermission_ = null; | ||||
| 		return this.hasPermissions(newPerm); | ||||
| 		// const newPerm = await PushNotificationIOS.requestPermissions({ | ||||
| 		// 	alert: 1, | ||||
| 		// 	badge: 1, | ||||
| 		// 	sound: 1, | ||||
| 		// }); | ||||
| 		// this.hasPermission_ = null; | ||||
| 		// return this.hasPermissions(newPerm); | ||||
| 	} | ||||
|  | ||||
| 	async clearNotification(id) { | ||||
| 		PushNotificationIOS.cancelLocalNotifications({ id: `${id}` }); | ||||
| 	async clearNotification(/* id */) { | ||||
| 		// PushNotificationIOS.cancelLocalNotifications({ id: `${id}` }); | ||||
| 	} | ||||
|  | ||||
| 	async scheduleNotification(notification) { | ||||
| @@ -74,7 +76,7 @@ class AlarmServiceDriver { | ||||
|  | ||||
| 		if ('body' in notification) iosNotification.alertBody = notification.body; | ||||
|  | ||||
| 		PushNotificationIOS.scheduleLocalNotification(iosNotification); | ||||
| 		// PushNotificationIOS.scheduleLocalNotification(iosNotification); | ||||
| 	} | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										4483
									
								
								ReactNativeClient/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4483
									
								
								ReactNativeClient/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -10,25 +10,41 @@ | ||||
|     "encodeAssets": "node encodeAssets.js" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "@react-native-community/slider": "^1.1.3", | ||||
|     "@react-native-community/slider": "^2.0.8", | ||||
|     "async-mutex": "^0.1.3", | ||||
|     "base-64": "^0.1.0", | ||||
|     "buffer": "^5.0.8", | ||||
|     "diacritics": "^1.3.0", | ||||
|     "diff-match-patch": "^1.0.4", | ||||
|     "events": "^1.1.1", | ||||
|     "font-awesome-filetypes": "^2.1.0", | ||||
|     "form-data": "^2.1.4", | ||||
|     "highlight.js": "^9.17.1", | ||||
|     "html-entities": "^1.2.1", | ||||
|     "jsc-android": "241213.1.0", | ||||
|     "json-stringify-safe": "^5.0.1", | ||||
|     "katex": "^0.11.1", | ||||
|     "markdown-it": "^10.0.0", | ||||
|     "markdown-it-abbr": "^1.0.4", | ||||
|     "markdown-it-anchor": "^5.2.5", | ||||
|     "markdown-it-deflist": "^2.0.3", | ||||
|     "markdown-it-emoji": "^1.4.0", | ||||
|     "markdown-it-expand-tabs": "^1.0.13", | ||||
|     "markdown-it-footnote": "^3.0.2", | ||||
|     "markdown-it-ins": "^3.0.0", | ||||
|     "markdown-it-mark": "^3.0.0", | ||||
|     "markdown-it-multimd-table": "^4.0.1", | ||||
|     "markdown-it-sub": "^1.0.0", | ||||
|     "markdown-it-sup": "^1.0.0", | ||||
|     "markdown-it-toc-done-right": "^4.1.0", | ||||
|     "md5": "^2.2.1", | ||||
|     "moment": "^2.24.0", | ||||
|     "prop-types": "^15.6.0", | ||||
|     "punycode": "^2.1.1", | ||||
|     "query-string": "4.3.4", | ||||
|     "react": "^16.8.3", | ||||
|     "react": "16.8.6", | ||||
|     "react-async": "^10.0.0", | ||||
|     "react-native": "0.59.10", | ||||
|     "react-native": "0.60.6", | ||||
|     "react-native-action-button": "^2.6.9", | ||||
|     "react-native-camera": "^2.10.2", | ||||
|     "react-native-datepicker": "^1.6.0", | ||||
| @@ -43,49 +59,32 @@ | ||||
|     "react-native-popup-dialog": "^0.9.35", | ||||
|     "react-native-popup-menu": "^0.10.0", | ||||
|     "react-native-push-notification": "git+https://github.com/laurent22/react-native-push-notification.git", | ||||
|     "react-native-securerandom": "^0.1.1", | ||||
|     "react-native-share-extension": "^1.2.1", | ||||
|     "react-native-securerandom": "^1.0.0-rc.0", | ||||
|     "react-native-side-menu": "^1.1.3", | ||||
|     "react-native-sqlite-storage": "^3.3.11", | ||||
|     "react-native-vector-icons": "^4.4.2", | ||||
|     "react-native-vector-icons": "^6.6.0", | ||||
|     "react-native-version-info": "^0.5.1", | ||||
|     "react-native-webview": "^5.12.0", | ||||
|     "react-navigation": "^1.0.0-beta.21", | ||||
|     "react-redux": "5.0.7", | ||||
|     "redux": "4.0.0", | ||||
|     "reselect": "^4.0.0", | ||||
|     "rn-fetch-blob": "^0.10.13", | ||||
|     "rn-fetch-blob": "^0.12.0", | ||||
|     "stream": "0.0.2", | ||||
|     "string-natural-compare": "^2.0.2", | ||||
|     "string-padding": "^1.0.2", | ||||
|     "timers": "^0.1.1", | ||||
|     "url": "^0.11.0", | ||||
|     "url-parse": "^1.4.7", | ||||
|     "uslug": "^1.0.4", | ||||
|     "uuid": "^3.0.1", | ||||
|     "valid-url": "^1.0.9", | ||||
|     "word-wrap": "^1.2.3", | ||||
|     "xml2js": "^0.4.19", | ||||
|     "font-awesome-filetypes": "^2.1.0", | ||||
|     "highlight.js": "^9.17.1", | ||||
|     "json-stringify-safe": "^5.0.1", | ||||
|     "katex": "^0.11.1", | ||||
|     "markdown-it-abbr": "^1.0.4", | ||||
|     "markdown-it-anchor": "^5.2.5", | ||||
|     "markdown-it-deflist": "^2.0.3", | ||||
|     "markdown-it-emoji": "^1.4.0", | ||||
|     "markdown-it-expand-tabs": "^1.0.13", | ||||
|     "markdown-it-footnote": "^3.0.2", | ||||
|     "markdown-it-ins": "^3.0.0", | ||||
|     "markdown-it-mark": "^3.0.0", | ||||
|     "markdown-it-multimd-table": "^4.0.1", | ||||
|     "markdown-it-sub": "^1.0.0", | ||||
|     "markdown-it-sup": "^1.0.0", | ||||
|     "markdown-it-toc-done-right": "^4.1.0", | ||||
|     "uslug": "^1.0.4" | ||||
|     "xml2js": "^0.4.19" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@babel/core": "^7.4.5", | ||||
|     "@babel/runtime": "^7.4.5", | ||||
|     "@babel/core": "^7.6.2", | ||||
|     "@babel/runtime": "^7.6.2", | ||||
|     "app-module-path": "^2.2.0", | ||||
|     "fs-extra": "^8.1.0", | ||||
|     "jetifier": "^1.6.4", | ||||
|   | ||||
| @@ -56,7 +56,7 @@ const { PoorManIntervals } = require('lib/poor-man-intervals.js'); | ||||
| const { reducer, defaultState } = require('lib/reducer.js'); | ||||
| const { FileApiDriverLocal } = require('lib/file-api-driver-local.js'); | ||||
| const DropdownAlert = require('react-native-dropdownalert').default; | ||||
| const ShareExtension = require('react-native-share-extension').default; | ||||
| // const ShareExtension = require('react-native-share-extension').default; | ||||
| const ResourceFetcher = require('lib/services/ResourceFetcher'); | ||||
| const SearchEngine = require('lib/services/SearchEngine'); | ||||
| const WelcomeUtils = require('lib/WelcomeUtils'); | ||||
| @@ -614,40 +614,40 @@ class AppComponent extends React.Component { | ||||
| 		} | ||||
|  | ||||
| 		if (Platform.OS !== 'ios') { | ||||
| 			try { | ||||
| 				const { type, value } = await ShareExtension.data(); | ||||
| 			// try { | ||||
| 			// 	const { type, value } = await ShareExtension.data(); | ||||
|  | ||||
| 				// reg.logger().info('Got share data:', type, value); | ||||
| 			// 	// reg.logger().info('Got share data:', type, value); | ||||
|  | ||||
| 				if (type != '' && this.props.selectedFolderId) { | ||||
| 					const newNote = await Note.save({ | ||||
| 						title: Note.defaultTitleFromBody(value), | ||||
| 						body: value, | ||||
| 						parent_id: this.props.selectedFolderId, | ||||
| 					}); | ||||
| 			// 	if (type != '' && this.props.selectedFolderId) { | ||||
| 			// 		const newNote = await Note.save({ | ||||
| 			// 			title: Note.defaultTitleFromBody(value), | ||||
| 			// 			body: value, | ||||
| 			// 			parent_id: this.props.selectedFolderId, | ||||
| 			// 		}); | ||||
|  | ||||
| 					// This is a bit hacky, but the surest way to go to | ||||
| 					// the needed note. We go back one screen in case there's | ||||
| 					// already a note open - if we don't do this, the dispatch | ||||
| 					// below will do nothing (because routeName wouldn't change) | ||||
| 					// Then we wait a bit for the state to be set correctly, and | ||||
| 					// finally we go to the new note. | ||||
| 					this.props.dispatch({ | ||||
| 						type: 'NAV_BACK', | ||||
| 					}); | ||||
| 			// 		// This is a bit hacky, but the surest way to go to | ||||
| 			// 		// the needed note. We go back one screen in case there's | ||||
| 			// 		// already a note open - if we don't do this, the dispatch | ||||
| 			// 		// below will do nothing (because routeName wouldn't change) | ||||
| 			// 		// Then we wait a bit for the state to be set correctly, and | ||||
| 			// 		// finally we go to the new note. | ||||
| 			// 		this.props.dispatch({ | ||||
| 			// 			type: 'NAV_BACK', | ||||
| 			// 		}); | ||||
|  | ||||
| 					setTimeout(() => { | ||||
| 						this.props.dispatch({ | ||||
| 							type: 'NAV_GO', | ||||
| 							routeName: 'Note', | ||||
| 							noteId: newNote.id, | ||||
| 						}); | ||||
| 					}, 5); | ||||
| 				} | ||||
| 			// 		setTimeout(() => { | ||||
| 			// 			this.props.dispatch({ | ||||
| 			// 				type: 'NAV_GO', | ||||
| 			// 				routeName: 'Note', | ||||
| 			// 				noteId: newNote.id, | ||||
| 			// 			}); | ||||
| 			// 		}, 5); | ||||
| 			// 	} | ||||
|  | ||||
| 			} catch (e) { | ||||
| 				reg.logger().error('Error in ShareExtension.data', e); | ||||
| 			} | ||||
| 			// } catch (e) { | ||||
| 			// 	reg.logger().error('Error in ShareExtension.data', e); | ||||
| 			// } | ||||
| 		} | ||||
|  | ||||
| 		BackButtonService.initialize(this.backButtonHandler_); | ||||
|   | ||||
| @@ -27,7 +27,7 @@ | ||||
| 				"*.bundle.js", | ||||
| 				"yarn.lock", | ||||
| 				"*.icns", | ||||
| 				"*.base64", | ||||
| 				"*.base64" | ||||
| 			], | ||||
| 			"folder_exclude_patterns": | ||||
| 			[ | ||||
| @@ -65,6 +65,7 @@ | ||||
| 				"Clipper/joplin-webclipper/popup/build", | ||||
| 				"Clipper/joplin-webclipper/dist", | ||||
| 				"ReactNativeClient/lib/rnInjectedJs", | ||||
| 				"ReactNativeClient/ios/Pods" | ||||
| 			], | ||||
| 			"path": "." | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user