1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-08-24 20:19:10 +02:00

Compare commits

...

6 Commits

Author SHA1 Message Date
Laurent Cozic
8e22ee22da Android release v1.3.2 2020-10-12 18:20:13 +01:00
Laurent Cozic
b8feeefd60 git pull 2020-10-12 18:15:10 +01:00
Laurent Cozic
5001111c14 Merge branch 'rn_62' of github.com:laurent22/joplin into rn_62 2020-10-12 18:13:49 +01:00
Laurent Cozic
5b1f9d37fa Fixed podfile 2020-10-12 18:07:32 +01:00
Laurent Cozic
f9bf7550c6 Android release v1.3.1 2020-10-12 18:07:24 +01:00
Laurent Cozic
108ba55939 Upgrading to RN 62 2020-10-12 17:53:18 +01:00
26 changed files with 2390 additions and 2294 deletions

View File

@@ -200,6 +200,7 @@ ReactNativeClient/lib/commands/historyBackward.js
ReactNativeClient/lib/commands/historyForward.js ReactNativeClient/lib/commands/historyForward.js
ReactNativeClient/lib/commands/synchronize.js ReactNativeClient/lib/commands/synchronize.js
ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js
ReactNativeClient/lib/components/SelectDateTimeDialog.js
ReactNativeClient/lib/errorUtils.js ReactNativeClient/lib/errorUtils.js
ReactNativeClient/lib/eventManager.js ReactNativeClient/lib/eventManager.js
ReactNativeClient/lib/hooks/useEffectDebugger.js ReactNativeClient/lib/hooks/useEffectDebugger.js
@@ -217,6 +218,7 @@ ReactNativeClient/lib/markdownUtils.js
ReactNativeClient/lib/models/Alarm.js ReactNativeClient/lib/models/Alarm.js
ReactNativeClient/lib/models/Setting.js ReactNativeClient/lib/models/Setting.js
ReactNativeClient/lib/ntpDate.js ReactNativeClient/lib/ntpDate.js
ReactNativeClient/lib/PoorManIntervals.js
ReactNativeClient/lib/reducer.js ReactNativeClient/lib/reducer.js
ReactNativeClient/lib/services/AlarmService.js ReactNativeClient/lib/services/AlarmService.js
ReactNativeClient/lib/services/AlarmServiceDriver.android.js ReactNativeClient/lib/services/AlarmServiceDriver.android.js

2
.gitignore vendored
View File

@@ -194,6 +194,7 @@ ReactNativeClient/lib/commands/historyBackward.js
ReactNativeClient/lib/commands/historyForward.js ReactNativeClient/lib/commands/historyForward.js
ReactNativeClient/lib/commands/synchronize.js ReactNativeClient/lib/commands/synchronize.js
ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js
ReactNativeClient/lib/components/SelectDateTimeDialog.js
ReactNativeClient/lib/errorUtils.js ReactNativeClient/lib/errorUtils.js
ReactNativeClient/lib/eventManager.js ReactNativeClient/lib/eventManager.js
ReactNativeClient/lib/hooks/useEffectDebugger.js ReactNativeClient/lib/hooks/useEffectDebugger.js
@@ -211,6 +212,7 @@ ReactNativeClient/lib/markdownUtils.js
ReactNativeClient/lib/models/Alarm.js ReactNativeClient/lib/models/Alarm.js
ReactNativeClient/lib/models/Setting.js ReactNativeClient/lib/models/Setting.js
ReactNativeClient/lib/ntpDate.js ReactNativeClient/lib/ntpDate.js
ReactNativeClient/lib/PoorManIntervals.js
ReactNativeClient/lib/reducer.js ReactNativeClient/lib/reducer.js
ReactNativeClient/lib/services/AlarmService.js ReactNativeClient/lib/services/AlarmService.js
ReactNativeClient/lib/services/AlarmServiceDriver.android.js ReactNativeClient/lib/services/AlarmServiceDriver.android.js

View File

@@ -1 +1,4 @@
*.pbxproj -text *.pbxproj -text
# specific for windows script files
*.bat text eol=crlf

View File

@@ -15,7 +15,9 @@ import com.android.build.OutputFile
* // the name of the generated asset file containing your JS bundle * // the name of the generated asset file containing your JS bundle
* bundleAssetName: "index.android.bundle", * bundleAssetName: "index.android.bundle",
* *
* // the entry file for bundle generation * // the entry file for bundle generation. If none specified and
* // "index.android.js" exists, it will be used. Otherwise "index.js" is
* // default. Can be overridden with ENTRY_FILE environment variable.
* entryFile: "index.android.js", * entryFile: "index.android.js",
* *
* // whether to bundle JS and assets in debug mode * // whether to bundle JS and assets in debug mode
@@ -66,7 +68,6 @@ import com.android.build.OutputFile
*/ */
project.ext.react = [ project.ext.react = [
entryFile: "index.android.js",
enableHermes: false, // clean and rebuild if changing enableHermes: false, // clean and rebuild if changing
] ]
@@ -125,12 +126,13 @@ android {
applicationId "net.cozic.joplin" applicationId "net.cozic.joplin"
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2097583 versionCode 2097585
versionName "1.3.0" versionName "1.3.2"
ndk { ndk {
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
} }
missingDimensionStrategy 'react-native-camera', 'general' missingDimensionStrategy 'react-native-camera', 'general'
multiDexEnabled true
} }
splits { splits {
abi { abi {
@@ -168,6 +170,14 @@ android {
proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
} }
} }
packagingOptions {
pickFirst "lib/armeabi-v7a/libc++_shared.so"
pickFirst "lib/arm64-v8a/libc++_shared.so"
pickFirst "lib/x86/libc++_shared.so"
pickFirst "lib/x86_64/libc++_shared.so"
}
// applicationVariants are e.g. debug, release // applicationVariants are e.g. debug, release
applicationVariants.all { variant -> applicationVariants.all { variant ->
variant.outputs.each { output -> variant.outputs.each { output ->
@@ -206,8 +216,20 @@ dependencies {
implementation project(':react-native-fs') implementation project(':react-native-fs')
implementation fileTree(dir: "libs", include: ["*.jar"]) implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.android.support:appcompat-v7:28.0.0" implementation "com.android.support:appcompat-v7:28.0.0"
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+" // From node_modules implementation "com.facebook.react:react-native:+" // From node_modules
implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.0.0"
debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") {
exclude group:'com.facebook.fbjni'
}
debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") {
exclude group:'com.facebook.flipper'
}
if (enableHermes) { if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/"; def hermesPath = "../../node_modules/hermes-engine/android/";
debugImplementation files(hermesPath + "hermes-debug.aar") debugImplementation files(hermesPath + "hermes-debug.aar")

View File

@@ -0,0 +1,67 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* <p>This source code is licensed under the MIT license found in the LICENSE file in the root
* directory of this source tree.
*/
package net.cozic.joplin;
import android.content.Context;
import com.facebook.flipper.android.AndroidFlipperClient;
import com.facebook.flipper.android.utils.FlipperUtils;
import com.facebook.flipper.core.FlipperClient;
import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
import com.facebook.flipper.plugins.inspector.DescriptorMapping;
import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
import com.facebook.flipper.plugins.react.ReactFlipperPlugin;
import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.bridge.ReactContext;
import com.facebook.react.modules.network.NetworkingModule;
import okhttp3.OkHttpClient;
public class ReactNativeFlipper {
public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
if (FlipperUtils.shouldEnableFlipper(context)) {
final FlipperClient client = AndroidFlipperClient.getInstance(context);
client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
client.addPlugin(new ReactFlipperPlugin());
client.addPlugin(new DatabasesFlipperPlugin(context));
client.addPlugin(new SharedPreferencesFlipperPlugin(context));
client.addPlugin(CrashReporterPlugin.getInstance());
NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
NetworkingModule.setCustomClientBuilder(
new NetworkingModule.CustomClientBuilder() {
@Override
public void apply(OkHttpClient.Builder builder) {
builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
}
});
client.addPlugin(networkFlipperPlugin);
client.start();
// Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
// Hence we run if after all native modules have been initialized
ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
if (reactContext == null) {
reactInstanceManager.addReactInstanceEventListener(
new ReactInstanceManager.ReactInstanceEventListener() {
@Override
public void onReactContextInitialized(ReactContext reactContext) {
reactInstanceManager.removeReactInstanceEventListener(this);
reactContext.runOnNativeModulesQueueThread(
new Runnable() {
@Override
public void run() {
client.addPlugin(new FrescoFlipperPlugin());
}
});
}
});
} else {
client.addPlugin(new FrescoFlipperPlugin());
}
}
}
}

View File

@@ -96,7 +96,7 @@
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:label="@string/app_name" android:label="@string/app_name"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:windowSoftInputMode="adjustResize" android:windowSoftInputMode="adjustResize"
android:launchMode="singleTop"> android:launchMode="singleTop">
<intent-filter> <intent-filter>

View File

@@ -8,6 +8,7 @@ import android.webkit.WebView;
import com.facebook.react.PackageList; import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication; import com.facebook.react.ReactApplication;
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.soloader.SoLoader; import com.facebook.soloader.SoLoader;
@@ -69,22 +70,27 @@ public class MainApplication extends Application implements ReactApplication {
} }
SoLoader.init(this, /* native exopackage */ false); SoLoader.init(this, /* native exopackage */ false);
initializeFlipper(this); // Remove this line if you don't want Flipper enabled initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
} }
/** /**
* Loads Flipper in React Native templates. * Loads Flipper in React Native templates. Call this in the onCreate method with something like
* initializeFlipper(this, getReactNativeHost().getReactInstanceManager());
* *
* @param context * @param context
* @param reactInstanceManager
*/ */
private static void initializeFlipper(Context context) { private static void initializeFlipper(
Context context, ReactInstanceManager reactInstanceManager) {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
try { try {
/* /*
We use reflection here to pick up the class that initializes Flipper, We use reflection here to pick up the class that initializes Flipper,
since Flipper library is not available in release mode since Flipper library is not available in release mode
*/ */
Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper"); Class<?> aClass = Class.forName("com.rndiffapp.ReactNativeFlipper");
aClass.getMethod("initializeFlipper", Context.class).invoke(null, context); aClass
.getMethod("initializeFlipper", Context.class, ReactInstanceManager.class)
.invoke(null, context, reactInstanceManager);
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
e.printStackTrace(); e.printStackTrace();
} catch (NoSuchMethodException e) { } catch (NoSuchMethodException e) {

View File

@@ -2,17 +2,18 @@
buildscript { buildscript {
ext { ext {
buildToolsVersion = "28.0.3" buildToolsVersion = "29.0.2"
minSdkVersion = 16 minSdkVersion = 16
compileSdkVersion = 28 compileSdkVersion = 29
targetSdkVersion = 28 targetSdkVersion = 29
kotlinVersion = "1.3.72"
} }
repositories { repositories {
jcenter() jcenter()
google() google()
} }
dependencies { dependencies {
classpath("com.android.tools.build:gradle:3.4.2") classpath("com.android.tools.build:gradle:3.5.2")
// 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
@@ -36,7 +37,7 @@ allprojects {
} }
google() google()
jcenter() jcenter()
maven { url 'https://jitpack.io' } maven { url 'https://www.jitpack.io' }
} }
} }
@@ -46,8 +47,8 @@ subprojects {
afterEvaluate {project -> afterEvaluate {project ->
if (project.hasProperty("android")) { if (project.hasProperty("android")) {
android { android {
compileSdkVersion 28 compileSdkVersion 29
buildToolsVersion "28.0.3" buildToolsVersion "29.0.2"
} }
} }
} }

View File

@@ -17,10 +17,14 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true # org.gradle.parallel=true
# Required for react-native-webview # AndroidX package structure to make it clearer which packages are bundled with the
# https://github.com/react-native-community/react-native-webview/blob/master/docs/Getting-Started.md # Android operating system, and which are packaged with your app's APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true android.useAndroidX=true
# Automatically convert third-party libraries to use AndroidX
android.enableJetifier=true android.enableJetifier=true
# Version of flipper SDK to use with React Native
FLIPPER_VERSION=0.33.1
# To fix this error: # To fix this error:
# > java.io.UncheckedIOException: java.io.IOException: Execution of compression failed. java.lang.OutOfMemoryError # > java.io.UncheckedIOException: java.io.IOException: Execution of compression failed. java.lang.OutOfMemoryError

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

View File

@@ -7,7 +7,7 @@
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
# You may obtain a copy of the License at # You may obtain a copy of the License at
# #
# http://www.apache.org/licenses/LICENSE-2.0 # https://www.apache.org/licenses/LICENSE-2.0
# #
# Unless required by applicable law or agreed to in writing, software # Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, # distributed under the License is distributed on an "AS IS" BASIS,
@@ -125,8 +125,8 @@ if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi fi
# For Cygwin, switch paths to Windows format before running java # For Cygwin or MSYS, switch paths to Windows format before running java
if $cygwin ; then if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"` APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"` JAVACMD=`cygpath --unix "$JAVACMD"`

View File

@@ -1,12 +1,3 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import <React/RCTBridgeDelegate.h> #import <React/RCTBridgeDelegate.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>

View File

@@ -1,12 +1,3 @@
/**
* Copyright (c) Facebook, Inc. and its affiliates.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
#import "AppDelegate.h" #import "AppDelegate.h"
#import "RNQuickActionManager.h" #import "RNQuickActionManager.h"
@@ -15,6 +6,25 @@
#import <React/RCTRootView.h> #import <React/RCTRootView.h>
#import <RNCPushNotificationIOS.h> #import <RNCPushNotificationIOS.h>
#if DEBUG
#import <FlipperKit/FlipperClient.h>
#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
static void InitializeFlipper(UIApplication *application) {
FlipperClient *client = [FlipperClient sharedClient];
SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
[client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
[client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
[client addPlugin:[FlipperKitReactPlugin new]];
[client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
[client start];
}
#endif
@implementation AppDelegate @implementation AppDelegate
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler { - (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded)) completionHandler {
@@ -23,6 +33,10 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{ {
#if DEBUG
InitializeFlipper(application);
#endif
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"Joplin" moduleName:@"Joplin"

View File

@@ -1,5 +1,47 @@
platform :ios, '9.0' platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
def add_flipper_pods!(versions = {})
versions['Flipper'] ||= '~> 0.33.1'
versions['DoubleConversion'] ||= '1.1.7'
versions['Flipper-Folly'] ||= '~> 2.1'
versions['Flipper-Glog'] ||= '0.3.6'
versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
versions['Flipper-RSocket'] ||= '~> 1.0'
pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'
# List all transitive dependencies for FlipperKit pods
# to avoid them being linked in Release builds
pod 'Flipper', versions['Flipper'], :configuration => 'Debug'
pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'
pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'
pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'
pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'
pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'
pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'
pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
end
# Post Install processing for Flipper
def flipper_post_install(installer)
installer.pods_project.targets.each do |target|
if target.name == 'YogaKit'
target.build_configurations.each do |config|
config.build_settings['SWIFT_VERSION'] = '4.1'
end
end
end
end
target 'Joplin' do target 'Joplin' do
# Pods for Joplin # Pods for Joplin
pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
@@ -24,20 +66,21 @@ target 'Joplin' do
pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon" pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga' pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true
pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec' 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 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob' pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob'
use_native_modules! use_native_modules!
end
# target 'Joplin-tvOS' do # Enables Flipper.
# # Pods for Joplin-tvOS #
# target 'Joplin-tvOSTests' do # Note that if you have use_frameworks! enabled, Flipper will not work and
# inherit! :search_paths # you should disable these next few lines.
# # Pods for testing add_flipper_pods!
# end post_install do |installer|
# end flipper_post_install(installer)
end
end

View File

@@ -1,14 +1,62 @@
PODS: PODS:
- boost-for-react-native (1.63.0) - boost-for-react-native (1.63.0)
- CocoaAsyncSocket (7.6.4)
- CocoaLibEvent (1.0.0)
- DoubleConversion (1.1.6) - DoubleConversion (1.1.6)
- FBLazyVector (0.61.5) - FBLazyVector (0.62.2)
- FBReactNativeSpec (0.61.5): - FBReactNativeSpec (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- RCTRequired (= 0.61.5) - RCTRequired (= 0.62.2)
- RCTTypeSafety (= 0.61.5) - RCTTypeSafety (= 0.62.2)
- React-Core (= 0.61.5) - React-Core (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.61.5) - ReactCommon/turbomodule/core (= 0.62.2)
- Flipper (0.33.1):
- Flipper-Folly (~> 2.1)
- Flipper-RSocket (~> 1.0)
- Flipper-DoubleConversion (1.1.7)
- Flipper-Folly (2.2.0):
- boost-for-react-native
- CocoaLibEvent (~> 1.0)
- Flipper-DoubleConversion
- Flipper-Glog
- OpenSSL-Universal (= 1.0.2.19)
- Flipper-Glog (0.3.6)
- Flipper-PeerTalk (0.0.4)
- Flipper-RSocket (1.1.0):
- Flipper-Folly (~> 2.2)
- FlipperKit (0.33.1):
- FlipperKit/Core (= 0.33.1)
- FlipperKit/Core (0.33.1):
- Flipper (~> 0.33.1)
- FlipperKit/CppBridge
- FlipperKit/FBCxxFollyDynamicConvert
- FlipperKit/FBDefines
- FlipperKit/FKPortForwarding
- FlipperKit/CppBridge (0.33.1):
- Flipper (~> 0.33.1)
- FlipperKit/FBCxxFollyDynamicConvert (0.33.1):
- Flipper-Folly (~> 2.1)
- FlipperKit/FBDefines (0.33.1)
- FlipperKit/FKPortForwarding (0.33.1):
- CocoaAsyncSocket (~> 7.6)
- Flipper-PeerTalk (~> 0.0.4)
- FlipperKit/FlipperKitHighlightOverlay (0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (0.33.1):
- FlipperKit/Core
- FlipperKit/FlipperKitHighlightOverlay
- FlipperKit/FlipperKitLayoutTextSearchable
- YogaKit (~> 1.18)
- FlipperKit/FlipperKitLayoutTextSearchable (0.33.1)
- FlipperKit/FlipperKitNetworkPlugin (0.33.1):
- FlipperKit/Core
- FlipperKit/FlipperKitReactPlugin (0.33.1):
- FlipperKit/Core
- FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1):
- FlipperKit/Core
- FlipperKit/SKIOSNetworkPlugin (0.33.1):
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- Folly (2018.10.22.00): - Folly (2018.10.22.00):
- boost-for-react-native - boost-for-react-native
- DoubleConversion - DoubleConversion
@@ -19,169 +67,172 @@ PODS:
- DoubleConversion - DoubleConversion
- glog - glog
- glog (0.3.5) - glog (0.3.5)
- RCTRequired (0.61.5) - OpenSSL-Universal (1.0.2.19):
- RCTTypeSafety (0.61.5): - OpenSSL-Universal/Static (= 1.0.2.19)
- FBLazyVector (= 0.61.5) - OpenSSL-Universal/Static (1.0.2.19)
- RCTRequired (0.62.2)
- RCTTypeSafety (0.62.2):
- FBLazyVector (= 0.62.2)
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- RCTRequired (= 0.61.5) - RCTRequired (= 0.62.2)
- React-Core (= 0.61.5) - React-Core (= 0.62.2)
- React (0.61.5): - React (0.62.2):
- React-Core (= 0.61.5) - React-Core (= 0.62.2)
- React-Core/DevSupport (= 0.61.5) - React-Core/DevSupport (= 0.62.2)
- React-Core/RCTWebSocket (= 0.61.5) - React-Core/RCTWebSocket (= 0.62.2)
- React-RCTActionSheet (= 0.61.5) - React-RCTActionSheet (= 0.62.2)
- React-RCTAnimation (= 0.61.5) - React-RCTAnimation (= 0.62.2)
- React-RCTBlob (= 0.61.5) - React-RCTBlob (= 0.62.2)
- React-RCTImage (= 0.61.5) - React-RCTImage (= 0.62.2)
- React-RCTLinking (= 0.61.5) - React-RCTLinking (= 0.62.2)
- React-RCTNetwork (= 0.61.5) - React-RCTNetwork (= 0.62.2)
- React-RCTSettings (= 0.61.5) - React-RCTSettings (= 0.62.2)
- React-RCTText (= 0.61.5) - React-RCTText (= 0.62.2)
- React-RCTVibration (= 0.61.5) - React-RCTVibration (= 0.62.2)
- React-Core (0.61.5): - React-Core (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default (= 0.61.5) - React-Core/Default (= 0.62.2)
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/CoreModulesHeaders (0.61.5): - React-Core/CoreModulesHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/Default (0.61.5): - React-Core/Default (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/DevSupport (0.61.5): - React-Core/DevSupport (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default (= 0.61.5) - React-Core/Default (= 0.62.2)
- React-Core/RCTWebSocket (= 0.61.5) - React-Core/RCTWebSocket (= 0.62.2)
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- React-jsinspector (= 0.61.5) - React-jsinspector (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTActionSheetHeaders (0.61.5): - React-Core/RCTActionSheetHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTAnimationHeaders (0.61.5): - React-Core/RCTAnimationHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTBlobHeaders (0.61.5): - React-Core/RCTBlobHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTImageHeaders (0.61.5): - React-Core/RCTImageHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTLinkingHeaders (0.61.5): - React-Core/RCTLinkingHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTNetworkHeaders (0.61.5): - React-Core/RCTNetworkHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTSettingsHeaders (0.61.5): - React-Core/RCTSettingsHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTTextHeaders (0.61.5): - React-Core/RCTTextHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTVibrationHeaders (0.61.5): - React-Core/RCTVibrationHeaders (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-Core/RCTWebSocket (0.61.5): - React-Core/RCTWebSocket (0.62.2):
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core/Default (= 0.61.5) - React-Core/Default (= 0.62.2)
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsiexecutor (= 0.61.5) - React-jsiexecutor (= 0.62.2)
- Yoga - Yoga
- React-CoreModules (0.61.5): - React-CoreModules (0.62.2):
- FBReactNativeSpec (= 0.61.5) - FBReactNativeSpec (= 0.62.2)
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- RCTTypeSafety (= 0.61.5) - RCTTypeSafety (= 0.62.2)
- React-Core/CoreModulesHeaders (= 0.61.5) - React-Core/CoreModulesHeaders (= 0.62.2)
- React-RCTImage (= 0.61.5) - React-RCTImage (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.61.5) - ReactCommon/turbomodule/core (= 0.62.2)
- React-cxxreact (0.61.5): - React-cxxreact (0.62.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-jsinspector (= 0.61.5) - React-jsinspector (= 0.62.2)
- React-jsi (0.61.5): - React-jsi (0.62.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-jsi/Default (= 0.61.5) - React-jsi/Default (= 0.62.2)
- React-jsi/Default (0.61.5): - React-jsi/Default (0.62.2):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-jsiexecutor (0.61.5): - React-jsiexecutor (0.62.2):
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- React-jsinspector (0.61.5) - React-jsinspector (0.62.2)
- react-native-camera (2.10.2): - react-native-camera (2.10.2):
- React - React
- react-native-camera/RCT (= 2.10.2) - react-native-camera/RCT (= 2.10.2)
@@ -206,45 +257,73 @@ PODS:
- React - React
- react-native-webview (5.12.0): - react-native-webview (5.12.0):
- React - React
- React-RCTActionSheet (0.61.5): - React-RCTActionSheet (0.62.2):
- React-Core/RCTActionSheetHeaders (= 0.61.5) - React-Core/RCTActionSheetHeaders (= 0.62.2)
- React-RCTAnimation (0.61.5): - React-RCTAnimation (0.62.2):
- React-Core/RCTAnimationHeaders (= 0.61.5) - FBReactNativeSpec (= 0.62.2)
- React-RCTBlob (0.61.5): - Folly (= 2018.10.22.00)
- React-Core/RCTBlobHeaders (= 0.61.5) - RCTTypeSafety (= 0.62.2)
- React-Core/RCTWebSocket (= 0.61.5) - React-Core/RCTAnimationHeaders (= 0.62.2)
- React-jsi (= 0.61.5) - ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTNetwork (= 0.61.5) - React-RCTBlob (0.62.2):
- React-RCTImage (0.61.5): - FBReactNativeSpec (= 0.62.2)
- React-Core/RCTImageHeaders (= 0.61.5) - Folly (= 2018.10.22.00)
- React-RCTNetwork (= 0.61.5) - React-Core/RCTBlobHeaders (= 0.62.2)
- React-RCTLinking (0.61.5): - React-Core/RCTWebSocket (= 0.62.2)
- React-Core/RCTLinkingHeaders (= 0.61.5) - React-jsi (= 0.62.2)
- React-RCTNetwork (0.61.5): - React-RCTNetwork (= 0.62.2)
- React-Core/RCTNetworkHeaders (= 0.61.5) - ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTSettings (0.61.5): - React-RCTImage (0.62.2):
- React-Core/RCTSettingsHeaders (= 0.61.5) - FBReactNativeSpec (= 0.62.2)
- React-RCTText (0.61.5): - Folly (= 2018.10.22.00)
- React-Core/RCTTextHeaders (= 0.61.5) - RCTTypeSafety (= 0.62.2)
- React-RCTVibration (0.61.5): - React-Core/RCTImageHeaders (= 0.62.2)
- React-Core/RCTVibrationHeaders (= 0.61.5) - React-RCTNetwork (= 0.62.2)
- ReactCommon/jscallinvoker (0.61.5): - ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTLinking (0.62.2):
- FBReactNativeSpec (= 0.62.2)
- React-Core/RCTLinkingHeaders (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTNetwork (0.62.2):
- FBReactNativeSpec (= 0.62.2)
- Folly (= 2018.10.22.00)
- RCTTypeSafety (= 0.62.2)
- React-Core/RCTNetworkHeaders (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTSettings (0.62.2):
- FBReactNativeSpec (= 0.62.2)
- Folly (= 2018.10.22.00)
- RCTTypeSafety (= 0.62.2)
- React-Core/RCTSettingsHeaders (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.62.2)
- React-RCTText (0.62.2):
- React-Core/RCTTextHeaders (= 0.62.2)
- React-RCTVibration (0.62.2):
- FBReactNativeSpec (= 0.62.2)
- Folly (= 2018.10.22.00)
- React-Core/RCTVibrationHeaders (= 0.62.2)
- ReactCommon/turbomodule/core (= 0.62.2)
- ReactCommon/callinvoker (0.62.2):
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- ReactCommon/turbomodule/core (0.61.5): - ReactCommon/turbomodule/core (0.62.2):
- DoubleConversion - DoubleConversion
- Folly (= 2018.10.22.00) - Folly (= 2018.10.22.00)
- glog - glog
- React-Core (= 0.61.5) - React-Core (= 0.62.2)
- React-cxxreact (= 0.61.5) - React-cxxreact (= 0.62.2)
- React-jsi (= 0.61.5) - React-jsi (= 0.62.2)
- ReactCommon/jscallinvoker (= 0.61.5) - ReactCommon/callinvoker (= 0.62.2)
- rn-fetch-blob (0.12.0): - rn-fetch-blob (0.12.0):
- React-Core - React-Core
- RNCClipboard (1.5.0):
- React-Core
- RNCPushNotificationIOS (1.0.5): - RNCPushNotificationIOS (1.0.5):
- React - React
- RNDateTimePicker (3.0.3):
- React-Core
- RNDeviceInfo (5.5.1): - RNDeviceInfo (5.5.1):
- React - React
- RNFileViewer (1.0.1): - RNFileViewer (1.0.1):
@@ -258,11 +337,32 @@ PODS:
- RNVectorIcons (6.6.0): - RNVectorIcons (6.6.0):
- React - React
- Yoga (1.14.0) - Yoga (1.14.0)
- YogaKit (1.18.1):
- Yoga (~> 1.14)
DEPENDENCIES: DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
- Flipper (~> 0.33.1)
- Flipper-DoubleConversion (= 1.1.7)
- Flipper-Folly (~> 2.1)
- Flipper-Glog (= 0.3.6)
- Flipper-PeerTalk (~> 0.0.4)
- Flipper-RSocket (~> 1.0)
- FlipperKit (~> 0.33.1)
- FlipperKit/Core (~> 0.33.1)
- FlipperKit/CppBridge (~> 0.33.1)
- FlipperKit/FBCxxFollyDynamicConvert (~> 0.33.1)
- FlipperKit/FBDefines (~> 0.33.1)
- FlipperKit/FKPortForwarding (~> 0.33.1)
- FlipperKit/FlipperKitHighlightOverlay (~> 0.33.1)
- FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1)
- FlipperKit/FlipperKitLayoutTextSearchable (~> 0.33.1)
- FlipperKit/FlipperKitNetworkPlugin (~> 0.33.1)
- FlipperKit/FlipperKitReactPlugin (~> 0.33.1)
- FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1)
- FlipperKit/SKIOSNetworkPlugin (~> 0.33.1)
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
@@ -294,10 +394,12 @@ DEPENDENCIES:
- React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`)
- React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`)
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
- ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`) - ReactCommon/callinvoker (from `../node_modules/react-native/ReactCommon`)
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
- rn-fetch-blob (from `../node_modules/rn-fetch-blob`) - rn-fetch-blob (from `../node_modules/rn-fetch-blob`)
- "RNCClipboard (from `../node_modules/@react-native-community/clipboard`)"
- "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)" - "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)"
- "RNDateTimePicker (from `../node_modules/@react-native-community/datetimepicker`)"
- RNDeviceInfo (from `../node_modules/react-native-device-info`) - RNDeviceInfo (from `../node_modules/react-native-device-info`)
- RNFileViewer (from `../node_modules/react-native-file-viewer/ios`) - RNFileViewer (from `../node_modules/react-native-file-viewer/ios`)
- RNFS (from `../node_modules/react-native-fs`) - RNFS (from `../node_modules/react-native-fs`)
@@ -309,6 +411,17 @@ DEPENDENCIES:
SPEC REPOS: SPEC REPOS:
trunk: trunk:
- boost-for-react-native - boost-for-react-native
- CocoaAsyncSocket
- CocoaLibEvent
- Flipper
- Flipper-DoubleConversion
- Flipper-Folly
- Flipper-Glog
- Flipper-PeerTalk
- Flipper-RSocket
- FlipperKit
- OpenSSL-Universal
- YogaKit
EXTERNAL SOURCES: EXTERNAL SOURCES:
DoubleConversion: DoubleConversion:
@@ -379,8 +492,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon" :path: "../node_modules/react-native/ReactCommon"
rn-fetch-blob: rn-fetch-blob:
:path: "../node_modules/rn-fetch-blob" :path: "../node_modules/rn-fetch-blob"
RNCClipboard:
:path: "../node_modules/@react-native-community/clipboard"
RNCPushNotificationIOS: RNCPushNotificationIOS:
:path: "../node_modules/@react-native-community/push-notification-ios" :path: "../node_modules/@react-native-community/push-notification-ios"
RNDateTimePicker:
:path: "../node_modules/@react-native-community/datetimepicker"
RNDeviceInfo: RNDeviceInfo:
:path: "../node_modules/react-native-device-info" :path: "../node_modules/react-native-device-info"
RNFileViewer: RNFileViewer:
@@ -398,20 +515,30 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS: SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
DoubleConversion: cde416483dac037923206447da6e1454df403714 CocoaAsyncSocket: 694058e7c0ed05a9e217d1b3c7ded962f4180845
FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f CocoaLibEvent: 2fab71b8bd46dd33ddb959f7928ec5909f838e3f
FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75 DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
FBLazyVector: 4aab18c93cd9546e4bfed752b4084585eca8b245
FBReactNativeSpec: 5465d51ccfeecb7faa12f9ae0024f2044ce4044e
Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3
Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7
FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3 glog: 1f3da668190260b06b429bb211bfbee5cd790c28
RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1 OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355
RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320 RCTRequired: cec6a34b3ac8a9915c37e7e4ad3aa74726ce4035
React: b6a59ef847b2b40bb6e0180a97d0ca716969ac78 RCTTypeSafety: 93006131180074cffa227a1075802c89a49dd4ce
React-Core: 688b451f7d616cc1134ac95295b593d1b5158a04 React: 29a8b1a02bd764fb7644ef04019270849b9a7ac3
React-CoreModules: d04f8494c1a328b69ec11db9d1137d667f916dcb React-Core: b12bffb3f567fdf99510acb716ef1abd426e0e05
React-cxxreact: d0f7bcafa196ae410e5300736b424455e7fb7ba7 React-CoreModules: 4a9b87bbe669d6c3173c0132c3328e3b000783d0
React-jsi: cb2cd74d7ccf4cffb071a46833613edc79cdf8f7 React-cxxreact: e65f9c2ba0ac5be946f53548c1aaaee5873a8103
React-jsiexecutor: d5525f9ed5f782fdbacb64b9b01a43a9323d2386 React-jsi: b6dc94a6a12ff98e8877287a0b7620d365201161
React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0 React-jsiexecutor: 1540d1c01bb493ae3124ed83351b1b6a155db7da
React-jsinspector: 512e560d0e985d0e8c479a54a4e5c147a9c83493
react-native-camera: ea85f74cf2e501d2a91a3da7092ecdac082f18df react-native-camera: ea85f74cf2e501d2a91a3da7092ecdac082f18df
react-native-document-picker: 8508bfda34be6c24a2cbecbe515b15108658c183 react-native-document-picker: 8508bfda34be6c24a2cbecbe515b15108658c183
react-native-geolocation: cbd9d6bd06bac411eed2671810f454d4908484a8 react-native-geolocation: cbd9d6bd06bac411eed2671810f454d4908484a8
@@ -421,26 +548,29 @@ SPEC CHECKSUMS:
react-native-sqlite-storage: bb10beb2407e5fc21f3f1bcd86bacbfd6edcc818 react-native-sqlite-storage: bb10beb2407e5fc21f3f1bcd86bacbfd6edcc818
react-native-version-info: daadd78b8fc93cf2764cb5aa52ec995961b62201 react-native-version-info: daadd78b8fc93cf2764cb5aa52ec995961b62201
react-native-webview: 26d8993b090ca5d59eb9a9466dcb8291baa3223e react-native-webview: 26d8993b090ca5d59eb9a9466dcb8291baa3223e
React-RCTActionSheet: 600b4d10e3aea0913b5a92256d2719c0cdd26d76 React-RCTActionSheet: f41ea8a811aac770e0cc6e0ad6b270c644ea8b7c
React-RCTAnimation: 791a87558389c80908ed06cc5dfc5e7920dfa360 React-RCTAnimation: 49ab98b1c1ff4445148b72a3d61554138565bad0
React-RCTBlob: d89293cc0236d9cb0933d85e430b0bbe81ad1d72 React-RCTBlob: a332773f0ebc413a0ce85942a55b064471587a71
React-RCTImage: 6b8e8df449eb7c814c99a92d6b52de6fe39dea4e React-RCTImage: e70be9b9c74fe4e42d0005f42cace7981c994ac3
React-RCTLinking: 121bb231c7503cf9094f4d8461b96a130fabf4a5 React-RCTLinking: c1b9739a88d56ecbec23b7f63650e44672ab2ad2
React-RCTNetwork: fb353640aafcee84ca8b78957297bd395f065c9a React-RCTNetwork: 73138b6f45e5a2768ad93f3d57873c2a18d14b44
React-RCTSettings: 8db258ea2a5efee381fcf7a6d5044e2f8b68b640 React-RCTSettings: 6e3738a87e21b39a8cb08d627e68c44acf1e325a
React-RCTText: 9ccc88273e9a3aacff5094d2175a605efa854dbe React-RCTText: fae545b10cfdb3d247c36c56f61a94cfd6dba41d
React-RCTVibration: a49a1f42bf8f5acf1c3e297097517c6b3af377ad React-RCTVibration: 4356114dbcba4ce66991096e51a66e61eda51256
ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd ReactCommon: ed4e11d27609d571e7eee8b65548efc191116eb3
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
RNCClipboard: 8f9f12fabf3c06e976f19f87a62c89e28dfedfca
RNCPushNotificationIOS: 30ed75aa2981a4ee00b8a2c46599ff18a9c7fcf6 RNCPushNotificationIOS: 30ed75aa2981a4ee00b8a2c46599ff18a9c7fcf6
RNDateTimePicker: e9fcd5ecdc0c5b018871e0d178d6040dca11973c
RNDeviceInfo: 6812ed7e578d4344bf4e77102f014b5adf0b5c28 RNDeviceInfo: 6812ed7e578d4344bf4e77102f014b5adf0b5c28
RNFileViewer: 5047ecf40477339723cc08abd55b5ebcefcef4b5 RNFileViewer: 5047ecf40477339723cc08abd55b5ebcefcef4b5
RNFS: 416676c3a9ae404454bade10e3d78147c7c33a40 RNFS: 416676c3a9ae404454bade10e3d78147c7c33a40
RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93 RNQuickAction: 6d404a869dc872cde841ad3147416a670d13fa93
RNSecureRandom: 1f19ad1492f7ed416b8fc79e92216a1f73f13a4c RNSecureRandom: 1f19ad1492f7ed416b8fc79e92216a1f73f13a4c
RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4
Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b Yoga: 3ebccbdd559724312790e7742142d062476b698e
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: c8797581a23c0ae9c6a4f471c2b19dda3644a8b2 PODFILE CHECKSUM: 2fe21139b05fad33e772c30f4bcba0de59502f8f
COCOAPODS: 1.9.3 COCOAPODS: 1.9.3

View File

@@ -0,0 +1,94 @@
const { time } = require('lib/time-utils.js');
type IntervalId = number;
interface Interval {
id: IntervalId,
callback: Function,
interval: number,
lastIntervalTime: number,
isTimeout: boolean,
}
interface Intervals {
[key: number]: Interval;
}
export default class PoorManIntervals {
private static maxNativeTimerDuration_ = 10 * 1000;
private static lastUpdateTime_:number = 0;
private static intervalId_:IntervalId = 0;
private static intervals_:Intervals = {};
public static setInterval(callback:Function, interval:number):IntervalId {
if (interval <= this.maxNativeTimerDuration_) return setInterval(callback, interval);
this.intervalId_++;
const id = this.intervalId_;
this.intervals_[id] = {
id: id,
callback: callback,
interval: interval,
lastIntervalTime: time.unixMs(),
isTimeout: false,
};
return id;
}
public static setTimeout(callback:Function, interval:number):IntervalId {
if (interval <= this.maxNativeTimerDuration_) return setTimeout(callback, interval);
this.intervalId_++;
const id = this.intervalId_;
this.intervals_[id] = {
id: id,
callback: callback,
interval: interval,
lastIntervalTime: time.unixMs(),
isTimeout: true,
};
return id;
}
public static clearInterval(id:IntervalId) {
const r = this.intervals_[id];
if (!r) {
clearInterval(id);
} else {
delete this.intervals_[id];
}
}
public static clearTimeout(id:IntervalId) {
const r = this.intervals_[id];
if (!r) {
clearTimeout(id);
} else {
delete this.intervals_[id];
}
}
public static update() {
// Don't update more than once a second
if (this.lastUpdateTime_ + 1000 > time.unixMs()) return;
for (const id in this.intervals_) {
const interval = this.intervals_[id];
const now = time.unixMs();
if (now - interval.lastIntervalTime >= interval.interval) {
interval.lastIntervalTime = now;
interval.callback();
if (interval.isTimeout) {
this.clearTimeout(interval.id);
}
}
}
this.lastUpdateTime_ = time.unixMs();
}
}

View File

@@ -0,0 +1,125 @@
import * as React from 'react';
import { View, Button, Text } from 'react-native';
import { themeStyle } from 'lib/theme';
import { _ } from 'lib/locale';
const PopupDialog = require('react-native-popup-dialog').default;
const { DialogTitle, DialogButton } = require('react-native-popup-dialog');
const { time } = require('lib/time-utils.js');
const DateTimePickerModal = require('react-native-modal-datetime-picker').default;
export default class SelectDateTimeDialog extends React.PureComponent<any, any> {
private dialog_:any = null;
private shown_:boolean = false;
constructor(props:any) {
super(props);
this.state = {
date: null,
mode: 'date',
showPicker: false,
};
this.onReject = this.onReject.bind(this);
this.onPickerConfirm = this.onPickerConfirm.bind(this);
this.onPickerCancel = this.onPickerCancel.bind(this);
this.onSetDate = this.onSetDate.bind(this);
}
UNSAFE_componentWillReceiveProps(newProps:any) {
if (newProps.date != this.state.date) {
this.setState({ date: newProps.date });
}
if ('shown' in newProps && newProps.shown != this.shown_) {
this.show(newProps.shown);
}
}
show(doShow:boolean = true) {
if (doShow) {
this.dialog_.show();
} else {
this.dialog_.dismiss();
}
this.shown_ = doShow;
}
dismiss() {
this.show(false);
}
onAccept() {
if (this.props.onAccept) this.props.onAccept(this.state.date);
}
onReject() {
if (this.props.onReject) this.props.onReject();
}
onClear() {
if (this.props.onAccept) this.props.onAccept(null);
}
onPickerConfirm(selectedDate:Date) {
this.setState({ date: selectedDate, showPicker: false });
}
onPickerCancel() {
this.setState({ showPicker: false });
}
onSetDate() {
this.setState({ showPicker: true });
}
renderContent() {
if (!this.shown_) return <View/>;
const theme = themeStyle(this.props.themeId);
return (
<View style={{ flex: 1, margin: 20, alignItems: 'center' }}>
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
{ this.state.date && <Text style={{ ...theme.normalText, marginRight: 10 }}>{time.formatDateToLocal(this.state.date)}</Text> }
<Button title="Set date" onPress={this.onSetDate} />
</View>
<DateTimePickerModal
date={this.state.date ? this.state.date : new Date()}
is24Hour={time.use24HourFormat()}
isVisible={this.state.showPicker}
mode="datetime"
onConfirm={this.onPickerConfirm}
onCancel={this.onPickerCancel}
/>
</View>
);
}
render() {
const clearAlarmText = _('Clear alarm'); // For unknown reasons, this particular string doesn't get translated if it's directly in the text property below
const popupActions = [
<DialogButton text={_('Save alarm')} align="center" onPress={() => this.onAccept()} key="saveButton" />,
<DialogButton text={clearAlarmText} align="center" onPress={() => this.onClear()} key="clearButton" />,
<DialogButton text={_('Cancel')} align="center" onPress={() => this.onReject()} key="cancelButton" />,
];
return (
<PopupDialog
ref={(dialog:any) => { this.dialog_ = dialog; }}
dialogTitle={<DialogTitle title={_('Set alarm')} />}
actions={popupActions}
dismissOnTouchOutside={false}
width={0.9}
height={350}
>
{this.renderContent()}
</PopupDialog>
);
}
}

View File

@@ -2,7 +2,8 @@ import FileViewer from 'react-native-file-viewer';
import AsyncActionQueue from '../../AsyncActionQueue'; import AsyncActionQueue from '../../AsyncActionQueue';
const React = require('react'); const React = require('react');
const { Platform, Clipboard, Keyboard, View, TextInput, StyleSheet, Linking, Image, Share } = require('react-native'); const { Platform, Keyboard, View, TextInput, StyleSheet, Linking, Image, Share } = require('react-native');
const Clipboard = require('@react-native-community/clipboard').default;
const { connect } = require('react-redux'); const { connect } = require('react-redux');
const uuid = require('lib/uuid').default; const uuid = require('lib/uuid').default;
const { MarkdownEditor } = require('../../../MarkdownEditor/index.js'); const { MarkdownEditor } = require('../../../MarkdownEditor/index.js');
@@ -36,8 +37,8 @@ const { NoteBodyViewer } = require('lib/components/note-body-viewer.js');
const { DocumentPicker, DocumentPickerUtil } = require('react-native-document-picker'); const { DocumentPicker, DocumentPickerUtil } = require('react-native-document-picker');
const ImageResizer = require('react-native-image-resizer').default; 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/SelectDateTimeDialog').default;
const ShareExtension = require('lib/ShareExtension.js').default; const ShareExtension = require('lib/ShareExtension.js').default;
const CameraView = require('lib/components/CameraView'); const CameraView = require('lib/components/CameraView');
const urlUtils = require('lib/urlUtils'); const urlUtils = require('lib/urlUtils');
@@ -507,13 +508,13 @@ class NoteScreenComponent extends BaseScreenComponent {
}); });
} }
showImagePicker(options) { // showImagePicker(options) {
return new Promise((resolve) => { // return new Promise((resolve) => {
ImagePicker.launchImageLibrary(options, response => { // ImagePicker.launchImageLibrary(options, response => {
resolve(response); // resolve(response);
}); // });
}); // });
} // }
async resizeImage(localFilePath, targetPath, mimeType) { async resizeImage(localFilePath, targetPath, mimeType) {
const maxSize = Resource.IMAGE_MAX_DIMENSION; const maxSize = Resource.IMAGE_MAX_DIMENSION;
@@ -665,10 +666,10 @@ class NoteScreenComponent extends BaseScreenComponent {
this.scheduleSave(); this.scheduleSave();
} }
async attachPhoto_onPress() { // async attachPhoto_onPress() {
const response = await this.showImagePicker({ mediaType: 'photo', noData: true }); // const response = await this.showImagePicker({ mediaType: 'photo', noData: true });
await this.attachFile(response, 'image'); // await this.attachFile(response, 'image');
} // }
takePhoto_onPress() { takePhoto_onPress() {
this.setState({ showCamera: true }); this.setState({ showCamera: true });
@@ -817,10 +818,14 @@ class NoteScreenComponent extends BaseScreenComponent {
output.push({ output.push({
title: _('Attach...'), title: _('Attach...'),
onPress: async () => { onPress: async () => {
const buttonId = await dialogs.pop(this, _('Choose an option'), [{ text: _('Take photo'), id: 'takePhoto' }, { text: _('Attach photo'), id: 'attachPhoto' }, { text: _('Attach any file'), id: 'attachFile' }]); const buttonId = await dialogs.pop(this, _('Choose an option'), [
{ text: _('Attach file'), id: 'attachFile' },
{ text: _('Take photo'), id: 'takePhoto' },
// { text: _('Attach photo'), id: 'attachPhoto' },
]);
if (buttonId === 'takePhoto') this.takePhoto_onPress(); if (buttonId === 'takePhoto') this.takePhoto_onPress();
if (buttonId === 'attachPhoto') this.attachPhoto_onPress(); // if (buttonId === 'attachPhoto') this.attachPhoto_onPress();
if (buttonId === 'attachFile') this.attachFile_onPress(); if (buttonId === 'attachFile') this.attachFile_onPress();
}, },
}); });
@@ -1178,7 +1183,7 @@ class NoteScreenComponent extends BaseScreenComponent {
{bodyComponent} {bodyComponent}
{!this.useBetaEditor() && actionButtonComp} {!this.useBetaEditor() && actionButtonComp}
<SelectDateTimeDialog shown={this.state.alarmDialogShown} date={dueDate} onAccept={this.onAlarmDialogAccept} onReject={this.onAlarmDialogReject} /> <SelectDateTimeDialog themeId={this.props.themeId} shown={this.state.alarmDialogShown} date={dueDate} onAccept={this.onAlarmDialogAccept} onReject={this.onAlarmDialogReject} />
<DialogBox <DialogBox
ref={dialogbox => { ref={dialogbox => {

View File

@@ -1,109 +0,0 @@
import React from 'react';
import { View } from 'react-native';
import PopupDialog, { DialogTitle, DialogButton } from 'react-native-popup-dialog';
import DatePicker from 'react-native-datepicker';
import moment from 'moment';
import { _ } from 'lib/locale.js';
const { time } = require('lib/time-utils.js');
class SelectDateTimeDialog extends React.PureComponent {
constructor() {
super();
this.dialog_ = null;
this.shown_ = false;
this.state = { date: null };
this.onReject = this.onReject.bind(this);
}
UNSAFE_componentWillReceiveProps(newProps) {
if (newProps.date != this.state.date) {
this.setState({ date: newProps.date });
}
if ('shown' in newProps && newProps.shown != this.shown_) {
this.show(newProps.shown);
}
}
show(doShow = true) {
if (doShow) {
this.dialog_.show();
} else {
this.dialog_.dismiss();
}
this.shown_ = doShow;
}
dismiss() {
this.show(false);
}
dateTimeFormat() {
return time.dateTimeFormat();
}
stringToDate(s) {
return moment(s, this.dateTimeFormat()).toDate();
}
onAccept() {
if (this.props.onAccept) this.props.onAccept(this.state.date);
}
onReject() {
if (this.props.onReject) this.props.onReject();
}
onClear() {
if (this.props.onAccept) this.props.onAccept(null);
}
render() {
const clearAlarmText = _('Clear alarm'); // For unknown reasons, this particular string doesn't get translated if it's directly in the text property below
const popupActions = [
<DialogButton text={_('Save alarm')} align="center" onPress={() => this.onAccept()} key="saveButton" />,
<DialogButton text={clearAlarmText} align="center" onPress={() => this.onClear()} key="clearButton" />,
<DialogButton text={_('Cancel')} align="center" onPress={() => this.onReject()} key="cancelButton" />,
];
return (
<PopupDialog
ref={(dialog) => { this.dialog_ = dialog; }}
dialogTitle={<DialogTitle title={_('Set alarm')} />}
actions={popupActions}
dismissOnTouchOutside={false}
width={0.9}
height={350}
>
<View style={{ flex: 1, margin: 20, alignItems: 'center' }}>
<DatePicker
date={this.state.date}
mode="datetime"
placeholder={_('Select date')}
format={this.dateTimeFormat()}
confirmBtnText={_('Confirm')}
cancelBtnText={_('Cancel')}
onDateChange={(date) => { this.setState({ date: this.stringToDate(date) }); }}
style={{ width: 300 }}
customStyles={{
btnConfirm: {
paddingVertical: 0,
},
btnCancel: {
paddingVertical: 0,
},
}}
/>
</View>
</PopupDialog>
);
}
}
// eslint-disable-next-line import/prefer-default-export
export { SelectDateTimeDialog };

View File

@@ -1,71 +0,0 @@
const { time } = require('lib/time-utils.js');
class PoorManIntervals {
static setInterval(callback, interval) {
PoorManIntervals.intervalId_++;
PoorManIntervals.intervals_.push({
id: PoorManIntervals.intervalId_,
callback: callback,
interval: interval,
lastIntervalTime: time.unixMs(),
});
return PoorManIntervals.intervalId_;
}
static setTimeout(callback, interval) {
PoorManIntervals.intervalId_++;
PoorManIntervals.intervals_.push({
id: PoorManIntervals.intervalId_,
callback: callback,
interval: interval,
lastIntervalTime: time.unixMs(),
oneOff: true,
});
return PoorManIntervals.intervalId_;
}
static intervalById(id) {
for (let i = 0; i < PoorManIntervals.intervals_.length; i++) {
if (PoorManIntervals.intervals_[i].id == id) return PoorManIntervals.intervals_[id];
}
return null;
}
static clearInterval(id) {
for (let i = 0; i < PoorManIntervals.intervals_.length; i++) {
if (PoorManIntervals.intervals_[i].id == id) {
PoorManIntervals.intervals_.splice(i, 1);
break;
}
}
}
static update() {
// Don't update more than once a second
if (PoorManIntervals.lastUpdateTime_ + 1000 > time.unixMs()) return;
for (let i = 0; i < PoorManIntervals.intervals_.length; i++) {
const interval = PoorManIntervals.intervals_[i];
const now = time.unixMs();
if (now - interval.lastIntervalTime >= interval.interval) {
interval.lastIntervalTime = now;
interval.callback();
if (interval.oneOff) {
this.clearInterval(interval.id);
}
}
}
PoorManIntervals.lastUpdateTime_ = time.unixMs();
}
}
PoorManIntervals.lastUpdateTime_ = 0;
PoorManIntervals.intervalId_ = 0;
PoorManIntervals.intervals_ = [];
module.exports = { PoorManIntervals };

View File

@@ -1,6 +1,6 @@
const shim = require('lib/shim').default; const shim = require('lib/shim').default;
const { GeolocationReact } = require('lib/geolocation-react.js'); const { GeolocationReact } = require('lib/geolocation-react.js');
const { PoorManIntervals } = require('lib/poor-man-intervals.js'); const PoorManIntervals = require('lib/PoorManIntervals').default;
const RNFetchBlob = require('rn-fetch-blob').default; const RNFetchBlob = require('rn-fetch-blob').default;
const { generateSecureRandom } = require('react-native-securerandom'); const { generateSecureRandom } = require('react-native-securerandom');
const FsDriverRN = require('lib/fs-driver-rn.js').FsDriverRN; const FsDriverRN = require('lib/fs-driver-rn.js').FsDriverRN;
@@ -18,8 +18,6 @@ const injectedJs = {
function shimInit() { function shimInit() {
shim.Geolocation = GeolocationReact; shim.Geolocation = GeolocationReact;
shim.setInterval = PoorManIntervals.setInterval;
shim.clearInterval = PoorManIntervals.clearInterval;
shim.sjclModule = require('lib/vendor/sjcl-rn.js'); shim.sjclModule = require('lib/vendor/sjcl-rn.js');
shim.fsDriver = () => { shim.fsDriver = () => {
@@ -199,19 +197,19 @@ function shimInit() {
}; };
shim.setTimeout = (fn, interval) => { shim.setTimeout = (fn, interval) => {
return setTimeout(fn, interval); return PoorManIntervals.setTimeout(fn, interval);
}; };
shim.setInterval = (fn, interval) => { shim.setInterval = (fn, interval) => {
return setInterval(fn, interval); return PoorManIntervals.setInterval(fn, interval);
}; };
shim.clearTimeout = (id) => { shim.clearTimeout = (id) => {
return clearTimeout(id); return PoorManIntervals.clearTimeout(id);
}; };
shim.clearInterval = (id) => { shim.clearInterval = (id) => {
return clearInterval(id); return PoorManIntervals.clearInterval(id);
}; };
} }

View File

@@ -33,6 +33,10 @@ class Time {
this.timeFormat_ = v; this.timeFormat_ = v;
} }
use24HourFormat() {
return this.timeFormat() ? this.timeFormat().includes('HH') : true;
}
dateTimeFormat() { dateTimeFormat() {
return `${this.dateFormat()} ${this.timeFormat()}`; return `${this.dateFormat()} ${this.timeFormat()}`;
} }
@@ -79,6 +83,10 @@ class Time {
return moment.unix(ms / 1000).format('HH:mm:ss'); return moment.unix(ms / 1000).format('HH:mm:ss');
} }
formatDateToLocal(date, format = null) {
return this.formatMsToLocal(date.getTime(), format);
}
formatMsToLocal(ms, format = null) { formatMsToLocal(ms, format = null) {
if (format === null) format = this.dateTimeFormat(); if (format === null) format = this.dateTimeFormat();
return moment(ms).format(format); return moment(ms).format(format);

File diff suppressed because it is too large Load Diff

View File

@@ -14,6 +14,8 @@
"log-android": "adb logcat *:S ReactNative:V ReactNativeJS:V" "log-android": "adb logcat *:S ReactNative:V ReactNativeJS:V"
}, },
"dependencies": { "dependencies": {
"@react-native-community/clipboard": "^1.5.0",
"@react-native-community/datetimepicker": "^3.0.3",
"@react-native-community/geolocation": "^2.0.2", "@react-native-community/geolocation": "^2.0.2",
"@react-native-community/push-notification-ios": "^1.0.5", "@react-native-community/push-notification-ios": "^1.0.5",
"@react-native-community/slider": "^2.0.8", "@react-native-community/slider": "^2.0.8",
@@ -56,9 +58,9 @@
"punycode": "^2.1.1", "punycode": "^2.1.1",
"query-string": "4.3.4", "query-string": "4.3.4",
"re-reselect": "^4.0.0", "re-reselect": "^4.0.0",
"react": "16.9.0", "react": "16.11.0",
"react-async": "^10.0.0", "react-async": "^10.0.0",
"react-native": "0.61.5", "react-native": "0.62.2",
"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",
@@ -72,6 +74,7 @@
"react-native-image-resizer": "^1.0.0", "react-native-image-resizer": "^1.0.0",
"react-native-log-ios": "^1.5.0", "react-native-log-ios": "^1.5.0",
"react-native-material-dropdown": "^0.5.2", "react-native-material-dropdown": "^0.5.2",
"react-native-modal-datetime-picker": "^9.0.0",
"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",
@@ -106,8 +109,8 @@
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"gulp": "^4.0.2", "gulp": "^4.0.2",
"jetifier": "^1.6.5", "jetifier": "^1.6.5",
"metro-react-native-babel-preset": "^0.54.1", "metro-react-native-babel-preset": "^0.58.0",
"patch-package": "^6.2.2", "patch-package": "^6.2.2",
"react-test-renderer": "^16.8.3" "react-test-renderer": "^16.11.0"
} }
} }

View File

@@ -54,7 +54,7 @@ const { DatabaseDriverReactNative } = require('lib/database-driver-react-native'
const { reg } = require('lib/registry.js'); const { reg } = require('lib/registry.js');
const { setLocale, closestSupportedLocale, defaultLocale } = require('lib/locale'); const { setLocale, closestSupportedLocale, defaultLocale } = require('lib/locale');
const RNFetchBlob = require('rn-fetch-blob').default; const RNFetchBlob = require('rn-fetch-blob').default;
const { PoorManIntervals } = require('lib/poor-man-intervals.js'); const PoorManIntervals = require('lib/PoorManIntervals').default;
const reducer = require('lib/reducer').default; const reducer = require('lib/reducer').default;
const { defaultState } = require('lib/reducer'); const { defaultState } = require('lib/reducer');
const { FileApiDriverLocal } = require('lib/file-api-driver-local.js'); const { FileApiDriverLocal } = require('lib/file-api-driver-local.js');

View File

@@ -181,6 +181,7 @@ async function main() {
console.info(await execCommand('git add -A')); console.info(await execCommand('git add -A'));
console.info(await execCommand(`git commit -m "Android release v${version}"`)); console.info(await execCommand(`git commit -m "Android release v${version}"`));
console.info(await execCommand(`git tag ${tagName}`)); console.info(await execCommand(`git tag ${tagName}`));
console.info(await execCommand('git pull')); // Again, to make sure git push doesn't fail
console.info(await execCommand('git push')); console.info(await execCommand('git push'));
console.info(await execCommand('git push --tags')); console.info(await execCommand('git push --tags'));