1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-01-11 18:24:43 +02:00

Mobile: Upgrading to RN 60

This commit is contained in:
Laurent Cozic 2020-02-09 14:51:12 +00:00
parent 7fd445173d
commit 4235288c55
45 changed files with 3379 additions and 3246 deletions

View File

@ -11,21 +11,54 @@
; Ignore duplicate module providers ; Ignore duplicate module providers
; For RN Apps installed via npm, "Libraries" folder is inside ; For RN Apps installed via npm, "Libraries" folder is inside
; "node_modules/react-native" but in the source repo it is in the root ; "node_modules/react-native" but in the source repo it is in the root
.*/Libraries/react-native/React.js node_modules/react-native/Libraries/react-native/React.js
.*/Libraries/react-native/ReactNative.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] [include]
[libs] [libs]
node_modules/react-native/Libraries/react-native/react-native-interface.js node_modules/react-native/Libraries/react-native/react-native-interface.js
node_modules/react-native/flow node_modules/react-native/flow/
[options] [options]
emoji=true 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 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=$FlowIssue
suppress_type=$FlowFixMe 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\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[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\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError 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] [version]
^0.92.0 ^0.98.0

View File

@ -41,6 +41,9 @@ buck-out/
\.buckd/ \.buckd/
*.keystore *.keystore
# CocoaPods
ios/Pods/
# fastlane # fastlane
# #
# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the

View File

@ -146,9 +146,7 @@ android {
} }
dependencies { dependencies {
implementation project(':@react-native-community_slider')
implementation "org.webkit:android-jsc:r241213" implementation "org.webkit:android-jsc:r241213"
implementation project(':react-native-webview')
compile project(':react-native-push-notification') compile project(':react-native-push-notification')
// implementation (project(':react-native-camera')) { // implementation (project(':react-native-camera')) {
// // This is required because com.google.firebase requires v16.0.x of com.google.android.gms // // 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(':rn-fetch-blob')
implementation project(':react-native-document-picker') implementation project(':react-native-document-picker')
implementation project(':react-native-image-resizer') 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-version-info')
implementation project(':react-native-camera') implementation project(':react-native-camera')
implementation "com.facebook.react:react-native:+" implementation "com.facebook.react:react-native:+"

View File

@ -8,10 +8,3 @@
# http://developer.android.com/guide/developing/tools/proguard.html # http://developer.android.com/guide/developing/tools/proguard.html
# Add any project specific keep options here: # 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 *;
#}

View File

@ -1,28 +1,19 @@
package net.cozic.joplin; package net.cozic.joplin;
import android.app.Application; 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.facebook.react.ReactApplication;
import com.reactnativecommunity.slider.ReactSliderPackage;
import com.reactnativecommunity.webview.RNCWebViewPackage;
import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; 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.ReactInstanceManager;
import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage; import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage; import com.facebook.react.shell.MainReactPackage;
import com.facebook.soloader.SoLoader; 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 java.lang.reflect.Field;
import com.alinz.parkerdan.shareextension.SharePackage; // import com.alinz.parkerdan.shareextension.SharePackage;
import cx.evermeet.versioninfo.RNVersionInfoPackage;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import android.database.CursorWindow; import android.database.CursorWindow;
@ -37,6 +28,15 @@ public class MainApplication extends Application implements ReactApplication {
@Override @Override
protected List<ReactPackage> getPackages() { 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( return Arrays.<ReactPackage>asList(
new MainReactPackage(), new MainReactPackage(),
new ReactSliderPackage(), new ReactSliderPackage(),
@ -51,7 +51,7 @@ public class MainApplication extends Application implements ReactApplication {
new RNFSPackage(), new RNFSPackage(),
new SQLitePluginPackage(), new SQLitePluginPackage(),
new VectorIconsPackage(), new VectorIconsPackage(),
new SharePackage(), // new SharePackage(),
new RNCameraPackage(), new RNCameraPackage(),
new RNVersionInfoPackage() new RNVersionInfoPackage()
); );

View File

@ -2,7 +2,7 @@ package net.cozic.joplin.share;
// import build config // import build config
import net.cozic.joplin.BuildConfig; import net.cozic.joplin.BuildConfig;
import com.alinz.parkerdan.shareextension.SharePackage; // import com.alinz.parkerdan.shareextension.SharePackage;
import android.app.Application; import android.app.Application;
@ -25,8 +25,8 @@ public class ShareApplication extends Application implements ReactApplication {
@Override @Override
protected List<ReactPackage> getPackages() { protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList( return Arrays.<ReactPackage>asList(
new MainReactPackage(), new MainReactPackage()
new SharePackage() // new SharePackage()
); );
} }
}; };

View File

@ -3,6 +3,7 @@
<!-- Base application theme. --> <!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. --> <!-- Customize your theme here. -->
<item name="android:textColor">#000000</item>
</style> </style>
</resources> </resources>

View File

@ -13,7 +13,7 @@ buildscript {
google() google()
} }
dependencies { 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 // NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files // in the individual module build.gradle files
@ -23,19 +23,20 @@ buildscript {
allprojects { allprojects {
repositories { repositories {
mavenLocal() mavenLocal()
google()
jcenter() // Was added by me - still needed?
maven { url "https://jitpack.io" } maven { url "https://jitpack.io" }
maven { maven {
url "https://maven.google.com" url "https://maven.google.com"
} }
maven { maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm // 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 { maven {
url "$rootDir/../node_modules/jsc-android/dist" // Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
} }
google()
jcenter()
} }
} }

View File

@ -1,8 +0,0 @@
keystore(
name = "debug",
properties = "debug.keystore.properties",
store = "debug.keystore",
visibility = [
"PUBLIC",
],
)

View File

@ -1,4 +0,0 @@
key.store=debug.keystore
key.alias=androiddebugkey
key.store.password=android
key.alias.password=android

View File

@ -1,38 +1,14 @@
rootProject.name = 'Joplin' rootProject.name = 'Joplin'
include ':@react-native-community_slider' apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
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')
include ':react-native-fs' include ':react-native-fs'
project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android') project(':react-native-fs').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-fs/android')
include ':app' 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' //include ':app', ':react-native-share-extension'
project(':react-native-document-picker').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-document-picker/android') //project(':react-native-share-extension').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-share-extension/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 ':react-native-push-notification' include ':react-native-push-notification'
project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android') project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android')

File diff suppressed because it is too large Load Diff

View 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>

View File

@ -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>

View File

@ -12,7 +12,7 @@
#import <React/RCTBridge.h> #import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h> #import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h> #import <React/RCTRootView.h>
#import <React/RCTPushNotificationManager.h> // #import <React/RCTPushNotificationManager.h>
@implementation AppDelegate @implementation AppDelegate
@ -34,11 +34,11 @@
} }
// Required to register for notifications // Required to register for notifications
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings { [RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings]; } // Required for the register event. // - (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 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 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 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 didReceiveLocalNotification:(UILocalNotification *)notification { [RCTPushNotificationManager didReceiveLocalNotification:notification]; }
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{ {

View File

@ -46,19 +46,7 @@
<key>NSPhotoLibraryUsageDescription</key> <key>NSPhotoLibraryUsageDescription</key>
<string>To allow attaching images to a note</string> <string>To allow attaching images to a note</string>
<key>UIAppFonts</key> <key>UIAppFonts</key>
<array> <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>
<key>UILaunchStoryboardName</key> <key>UILaunchStoryboardName</key>
<string>LaunchScreen</string> <string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key> <key>UIRequiredDeviceCapabilities</key>

View 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

View 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

View File

@ -10,6 +10,8 @@ const { _ } = require('lib/locale.js');
const { shim } = require('lib/shim'); const { shim } = require('lib/shim');
const Setting = require('lib/models/Setting'); const Setting = require('lib/models/Setting');
Icon.loadFont();
class CameraView extends Component { class CameraView extends Component {
constructor() { constructor() {
super(); super();

View File

@ -8,6 +8,8 @@ const ReactNativeActionButton = require('react-native-action-button').default;
const { connect } = require('react-redux'); const { connect } = require('react-redux');
const { _ } = require('lib/locale.js'); const { _ } = require('lib/locale.js');
Icon.loadFont();
const styles = StyleSheet.create({ const styles = StyleSheet.create({
actionButtonIcon: { actionButtonIcon: {
fontSize: 20, fontSize: 20,

View File

@ -4,6 +4,7 @@ const React = require('react');
const Component = React.Component; const Component = React.Component;
const { View, TouchableHighlight } = require('react-native'); const { View, TouchableHighlight } = require('react-native');
const Icon = require('react-native-vector-icons/Ionicons').default; const Icon = require('react-native-vector-icons/Ionicons').default;
Icon.loadFont();
const styles = { const styles = {
checkboxIcon: { checkboxIcon: {

View File

@ -3,7 +3,7 @@
const React = require('react'); const React = require('react');
const Component = React.Component; const Component = React.Component;
const { connect } = require('react-redux'); 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 { _ } = require('lib/locale.js');
const { NoteItem } = require('lib/components/note-item.js'); const { NoteItem } = require('lib/components/note-item.js');
const { time } = require('lib/time-utils.js'); const { time } = require('lib/time-utils.js');
@ -12,13 +12,8 @@ const { themeStyle } = require('lib/components/global-style.js');
class NoteListComponent extends Component { class NoteListComponent extends Component {
constructor() { constructor() {
super(); super();
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => {
return r1 !== r2;
},
});
this.state = { this.state = {
dataSource: ds,
items: [], items: [],
selectedItemIds: [], selectedItemIds: [],
}; };
@ -82,37 +77,23 @@ class NoteListComponent extends Component {
return output; return output;
} }
UNSAFE_componentWillMount() {
const newDataSource = this.state.dataSource.cloneWithRows(this.filterNotes(this.props.items));
this.setState({ dataSource: newDataSource });
}
UNSAFE_componentWillReceiveProps(newProps) { 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. // 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) { 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() { render() {
// `enableEmptySections` is to fix this warning: https://github.com/FaridSafi/react-native-gifted-listview/issues/39 // `enableEmptySections` is to fix this warning: https://github.com/FaridSafi/react-native-gifted-listview/issues/39
if (this.state.dataSource.getRowCount()) { if (this.props.items.length) {
return ( return <FlatList
<ListView ref={ref => (this.rootRef_ = ref)}
ref={ref => (this.rootRef_ = ref)} data={this.props.items}
dataSource={this.state.dataSource} renderItem={({ item }) => <NoteItem note={item} />}
renderRow={note => { keyExtractor={item => item.id}
return <NoteItem note={note} />; />;
}}
enableEmptySections={true}
/>
);
} else { } else {
if (!this.props.folders.length) { if (!this.props.folders.length) {
const noItemMessage = _('You currently have no notebooks.'); const noItemMessage = _('You currently have no notebooks.');

View File

@ -17,6 +17,8 @@ const { Dropdown } = require('lib/components/Dropdown.js');
const { dialogs } = require('lib/dialogs.js'); const { dialogs } = require('lib/dialogs.js');
const DialogBox = require('react-native-dialogbox').default; const DialogBox = require('react-native-dialogbox').default;
Icon.loadFont();
// Rather than applying a padding to the whole bar, it is applied to each // Rather than applying a padding to the whole bar, it is applied to each
// individual component (button, picker, etc.) so that the touchable areas // 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 // are widder and to give more room to the picker component which has a larger

View File

@ -11,6 +11,8 @@ const Icon = require('react-native-vector-icons/Ionicons').default;
const ModalDialog = require('lib/components/ModalDialog'); const ModalDialog = require('lib/components/ModalDialog');
const naturalCompare = require('string-natural-compare'); const naturalCompare = require('string-natural-compare');
Icon.loadFont();
class NoteTagsDialogComponent extends React.Component { class NoteTagsDialogComponent extends React.Component {
constructor() { constructor() {
super(); super();

View File

@ -2,7 +2,7 @@
const React = require('react'); 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 { connect } = require('react-redux');
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
const { ScreenHeader } = require('lib/components/screen-header.js'); const { ScreenHeader } = require('lib/components/screen-header.js');
@ -19,13 +19,9 @@ class LogScreenComponent extends BaseScreenComponent {
constructor() { constructor() {
super(); super();
const ds = new ListView.DataSource({
rowHasChanged: (r1, r2) => {
return r1 !== r2;
},
});
this.state = { this.state = {
dataSource: ds, logEntries: [],
showErrorsOnly: false, showErrorsOnly: false,
}; };
this.styles_ = {}; this.styles_ = {};
@ -70,29 +66,24 @@ class LogScreenComponent extends BaseScreenComponent {
this.resfreshLogEntries(); this.resfreshLogEntries();
} }
resfreshLogEntries(showErrorsOnly = null) { async resfreshLogEntries(showErrorsOnly = null) {
if (showErrorsOnly === null) showErrorsOnly = this.state.showErrorsOnly; if (showErrorsOnly === null) showErrorsOnly = this.state.showErrorsOnly;
let levels = [Logger.LEVEL_DEBUG, Logger.LEVEL_INFO, Logger.LEVEL_WARN, Logger.LEVEL_ERROR]; let levels = [Logger.LEVEL_DEBUG, Logger.LEVEL_INFO, Logger.LEVEL_WARN, Logger.LEVEL_ERROR];
if (showErrorsOnly) levels = [Logger.LEVEL_WARN, Logger.LEVEL_ERROR]; if (showErrorsOnly) levels = [Logger.LEVEL_WARN, Logger.LEVEL_ERROR];
reg this.setState({
.logger() logEntries: await reg.logger().lastEntries(1000, { levels: levels }),
.lastEntries(1000, { levels: levels }) showErrorsOnly: showErrorsOnly,
.then(entries => { });
const newDataSource = this.state.dataSource.cloneWithRows(entries);
this.setState({ dataSource: newDataSource });
});
} }
toggleErrorsOnly() { toggleErrorsOnly() {
const showErrorsOnly = !this.state.showErrorsOnly; this.resfreshLogEntries(!this.state.showErrorsOnly);
this.setState({ showErrorsOnly: showErrorsOnly });
this.resfreshLogEntries(showErrorsOnly);
} }
render() { render() {
let renderRow = item => { let renderRow = ({ item }) => {
let textStyle = this.styles().rowText; let textStyle = this.styles().rowText;
if (item.level == Logger.LEVEL_WARN) textStyle = this.styles().rowTextWarn; if (item.level == Logger.LEVEL_WARN) textStyle = this.styles().rowTextWarn;
if (item.level == Logger.LEVEL_ERROR) textStyle = this.styles().rowTextError; 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 // `enableEmptySections` is to fix this warning: https://github.com/FaridSafi/react-native-gifted-listview/issues/39
return ( return (
<View style={this.rootStyle(this.props.theme).root}> <View style={this.rootStyle(this.props.theme).root}>
<ScreenHeader title={_('Log')} /> <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={{ flexDirection: 'row' }}>
<View style={{ flex: 1, marginRight: 5 }}> <View style={{ flex: 1, marginRight: 5 }}>
<Button <Button

View File

@ -35,7 +35,7 @@ const ImageResizer = require('react-native-image-resizer').default;
const shared = require('lib/components/shared/note-screen-shared.js'); const shared = require('lib/components/shared/note-screen-shared.js');
const ImagePicker = require('react-native-image-picker'); const ImagePicker = require('react-native-image-picker');
const { SelectDateTimeDialog } = require('lib/components/select-date-time-dialog.js'); 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 CameraView = require('lib/components/CameraView');
const SearchEngine = require('lib/services/SearchEngine'); const SearchEngine = require('lib/services/SearchEngine');
const urlUtils = require('lib/urlUtils'); const urlUtils = require('lib/urlUtils');
@ -305,9 +305,9 @@ class NoteScreenComponent extends BaseScreenComponent {
shared.uninstallResourceHandling(this.refreshResource); shared.uninstallResourceHandling(this.refreshResource);
if (Platform.OS !== 'ios' && this.state.fromShare) { // if (Platform.OS !== 'ios' && this.state.fromShare) {
ShareExtension.close(); // ShareExtension.close();
} // }
} }
title_changeText(text) { title_changeText(text) {

View File

@ -14,6 +14,8 @@ const { themeStyle } = require('lib/components/global-style.js');
const SearchEngineUtils = require('lib/services/SearchEngineUtils'); const SearchEngineUtils = require('lib/services/SearchEngineUtils');
const DialogBox = require('react-native-dialogbox').default; const DialogBox = require('react-native-dialogbox').default;
Icon.loadFont();
class SearchScreenComponent extends BaseScreenComponent { class SearchScreenComponent extends BaseScreenComponent {
static navigationOptions() { static navigationOptions() {
return { header: null }; return { header: null };

View File

@ -7,6 +7,8 @@ const { connect } = require('react-redux');
const Icon = require('react-native-vector-icons/Ionicons').default; const Icon = require('react-native-vector-icons/Ionicons').default;
const { globalStyle, themeStyle } = require('lib/components/global-style.js'); const { globalStyle, themeStyle } = require('lib/components/global-style.js');
Icon.loadFont();
class SideMenuContentNoteComponent extends Component { class SideMenuContentNoteComponent extends Component {
constructor() { constructor() {
super(); super();

View File

@ -12,6 +12,8 @@ const { _ } = require('lib/locale.js');
const { globalStyle, themeStyle } = require('lib/components/global-style.js'); const { globalStyle, themeStyle } = require('lib/components/global-style.js');
const shared = require('lib/components/shared/side-menu-shared.js'); const shared = require('lib/components/shared/side-menu-shared.js');
Icon.loadFont();
class SideMenuContentComponent extends Component { class SideMenuContentComponent extends Component {
constructor() { constructor() {
super(); super();

View File

@ -1,21 +1,21 @@
const { PushNotificationIOS } = require('react-native'); // const { PushNotificationIOS } = require('react-native');
class AlarmServiceDriver { class AlarmServiceDriver {
constructor() { constructor() {
this.hasPermission_ = null; this.hasPermission_ = null;
this.inAppNotificationHandler_ = null; this.inAppNotificationHandler_ = null;
PushNotificationIOS.addEventListener('localNotification', instance => { // PushNotificationIOS.addEventListener('localNotification', instance => {
if (!this.inAppNotificationHandler_) return; // if (!this.inAppNotificationHandler_) return;
if (!instance || !instance._data || !instance._data.id) { // if (!instance || !instance._data || !instance._data.id) {
console.warn('PushNotificationIOS.addEventListener: Did not receive a proper notification instance'); // console.warn('PushNotificationIOS.addEventListener: Did not receive a proper notification instance');
return; // return;
} // }
const id = instance._data.id; // const id = instance._data.id;
this.inAppNotificationHandler_(id); // this.inAppNotificationHandler_(id);
}); // });
} }
hasPersistentNotifications() { hasPersistentNotifications() {
@ -36,26 +36,28 @@ class AlarmServiceDriver {
if (this.hasPermission_ !== null) return this.hasPermission_; if (this.hasPermission_ !== null) return this.hasPermission_;
return new Promise((resolve) => { return new Promise((resolve) => {
PushNotificationIOS.checkPermissions(async perm => { this.hasPermission_ = true;
const ok = await this.hasPermissions(perm); resolve(true);
this.hasPermission_ = ok; // PushNotificationIOS.checkPermissions(async perm => {
resolve(ok); // const ok = await this.hasPermissions(perm);
}); // this.hasPermission_ = ok;
// resolve(ok);
// });
}); });
} }
async requestPermissions() { async requestPermissions() {
const newPerm = await PushNotificationIOS.requestPermissions({ // const newPerm = await PushNotificationIOS.requestPermissions({
alert: 1, // alert: 1,
badge: 1, // badge: 1,
sound: 1, // sound: 1,
}); // });
this.hasPermission_ = null; // this.hasPermission_ = null;
return this.hasPermissions(newPerm); // return this.hasPermissions(newPerm);
} }
async clearNotification(id) { async clearNotification(/* id */) {
PushNotificationIOS.cancelLocalNotifications({ id: `${id}` }); // PushNotificationIOS.cancelLocalNotifications({ id: `${id}` });
} }
async scheduleNotification(notification) { async scheduleNotification(notification) {
@ -74,7 +76,7 @@ class AlarmServiceDriver {
if ('body' in notification) iosNotification.alertBody = notification.body; if ('body' in notification) iosNotification.alertBody = notification.body;
PushNotificationIOS.scheduleLocalNotification(iosNotification); // PushNotificationIOS.scheduleLocalNotification(iosNotification);
} }
} }

File diff suppressed because it is too large Load Diff

View File

@ -10,25 +10,41 @@
"encodeAssets": "node encodeAssets.js" "encodeAssets": "node encodeAssets.js"
}, },
"dependencies": { "dependencies": {
"@react-native-community/slider": "^1.1.3", "@react-native-community/slider": "^2.0.8",
"async-mutex": "^0.1.3", "async-mutex": "^0.1.3",
"base-64": "^0.1.0", "base-64": "^0.1.0",
"buffer": "^5.0.8", "buffer": "^5.0.8",
"diacritics": "^1.3.0", "diacritics": "^1.3.0",
"diff-match-patch": "^1.0.4", "diff-match-patch": "^1.0.4",
"events": "^1.1.1", "events": "^1.1.1",
"font-awesome-filetypes": "^2.1.0",
"form-data": "^2.1.4", "form-data": "^2.1.4",
"highlight.js": "^9.17.1",
"html-entities": "^1.2.1", "html-entities": "^1.2.1",
"jsc-android": "241213.1.0", "jsc-android": "241213.1.0",
"json-stringify-safe": "^5.0.1",
"katex": "^0.11.1",
"markdown-it": "^10.0.0", "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", "md5": "^2.2.1",
"moment": "^2.24.0", "moment": "^2.24.0",
"prop-types": "^15.6.0", "prop-types": "^15.6.0",
"punycode": "^2.1.1", "punycode": "^2.1.1",
"query-string": "4.3.4", "query-string": "4.3.4",
"react": "^16.8.3", "react": "16.8.6",
"react-async": "^10.0.0", "react-async": "^10.0.0",
"react-native": "0.59.10", "react-native": "0.60.6",
"react-native-action-button": "^2.6.9", "react-native-action-button": "^2.6.9",
"react-native-camera": "^2.10.2", "react-native-camera": "^2.10.2",
"react-native-datepicker": "^1.6.0", "react-native-datepicker": "^1.6.0",
@ -43,49 +59,32 @@
"react-native-popup-dialog": "^0.9.35", "react-native-popup-dialog": "^0.9.35",
"react-native-popup-menu": "^0.10.0", "react-native-popup-menu": "^0.10.0",
"react-native-push-notification": "git+https://github.com/laurent22/react-native-push-notification.git", "react-native-push-notification": "git+https://github.com/laurent22/react-native-push-notification.git",
"react-native-securerandom": "^0.1.1", "react-native-securerandom": "^1.0.0-rc.0",
"react-native-share-extension": "^1.2.1",
"react-native-side-menu": "^1.1.3", "react-native-side-menu": "^1.1.3",
"react-native-sqlite-storage": "^3.3.11", "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-version-info": "^0.5.1",
"react-native-webview": "^5.12.0", "react-native-webview": "^5.12.0",
"react-navigation": "^1.0.0-beta.21", "react-navigation": "^1.0.0-beta.21",
"react-redux": "5.0.7", "react-redux": "5.0.7",
"redux": "4.0.0", "redux": "4.0.0",
"reselect": "^4.0.0", "reselect": "^4.0.0",
"rn-fetch-blob": "^0.10.13", "rn-fetch-blob": "^0.12.0",
"stream": "0.0.2", "stream": "0.0.2",
"string-natural-compare": "^2.0.2", "string-natural-compare": "^2.0.2",
"string-padding": "^1.0.2", "string-padding": "^1.0.2",
"timers": "^0.1.1", "timers": "^0.1.1",
"url": "^0.11.0", "url": "^0.11.0",
"url-parse": "^1.4.7", "url-parse": "^1.4.7",
"uslug": "^1.0.4",
"uuid": "^3.0.1", "uuid": "^3.0.1",
"valid-url": "^1.0.9", "valid-url": "^1.0.9",
"word-wrap": "^1.2.3", "word-wrap": "^1.2.3",
"xml2js": "^0.4.19", "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"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.4.5", "@babel/core": "^7.6.2",
"@babel/runtime": "^7.4.5", "@babel/runtime": "^7.6.2",
"app-module-path": "^2.2.0", "app-module-path": "^2.2.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"jetifier": "^1.6.4", "jetifier": "^1.6.4",

View File

@ -56,7 +56,7 @@ const { PoorManIntervals } = require('lib/poor-man-intervals.js');
const { reducer, defaultState } = require('lib/reducer.js'); const { reducer, defaultState } = require('lib/reducer.js');
const { FileApiDriverLocal } = require('lib/file-api-driver-local.js'); const { FileApiDriverLocal } = require('lib/file-api-driver-local.js');
const DropdownAlert = require('react-native-dropdownalert').default; 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 ResourceFetcher = require('lib/services/ResourceFetcher');
const SearchEngine = require('lib/services/SearchEngine'); const SearchEngine = require('lib/services/SearchEngine');
const WelcomeUtils = require('lib/WelcomeUtils'); const WelcomeUtils = require('lib/WelcomeUtils');
@ -614,40 +614,40 @@ class AppComponent extends React.Component {
} }
if (Platform.OS !== 'ios') { if (Platform.OS !== 'ios') {
try { // try {
const { type, value } = await ShareExtension.data(); // 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) { // if (type != '' && this.props.selectedFolderId) {
const newNote = await Note.save({ // const newNote = await Note.save({
title: Note.defaultTitleFromBody(value), // title: Note.defaultTitleFromBody(value),
body: value, // body: value,
parent_id: this.props.selectedFolderId, // parent_id: this.props.selectedFolderId,
}); // });
// This is a bit hacky, but the surest way to go to // // This is a bit hacky, but the surest way to go to
// the needed note. We go back one screen in case there's // // the needed note. We go back one screen in case there's
// already a note open - if we don't do this, the dispatch // // already a note open - if we don't do this, the dispatch
// below will do nothing (because routeName wouldn't change) // // below will do nothing (because routeName wouldn't change)
// Then we wait a bit for the state to be set correctly, and // // Then we wait a bit for the state to be set correctly, and
// finally we go to the new note. // // finally we go to the new note.
this.props.dispatch({ // this.props.dispatch({
type: 'NAV_BACK', // type: 'NAV_BACK',
}); // });
setTimeout(() => { // setTimeout(() => {
this.props.dispatch({ // this.props.dispatch({
type: 'NAV_GO', // type: 'NAV_GO',
routeName: 'Note', // routeName: 'Note',
noteId: newNote.id, // noteId: newNote.id,
}); // });
}, 5); // }, 5);
} // }
} catch (e) { // } catch (e) {
reg.logger().error('Error in ShareExtension.data', e); // reg.logger().error('Error in ShareExtension.data', e);
} // }
} }
BackButtonService.initialize(this.backButtonHandler_); BackButtonService.initialize(this.backButtonHandler_);

View File

@ -27,7 +27,7 @@
"*.bundle.js", "*.bundle.js",
"yarn.lock", "yarn.lock",
"*.icns", "*.icns",
"*.base64", "*.base64"
], ],
"folder_exclude_patterns": "folder_exclude_patterns":
[ [
@ -65,6 +65,7 @@
"Clipper/joplin-webclipper/popup/build", "Clipper/joplin-webclipper/popup/build",
"Clipper/joplin-webclipper/dist", "Clipper/joplin-webclipper/dist",
"ReactNativeClient/lib/rnInjectedJs", "ReactNativeClient/lib/rnInjectedJs",
"ReactNativeClient/ios/Pods"
], ],
"path": "." "path": "."
} }