diff --git a/ReactNativeClient/ios/Joplin/Info.plist b/ReactNativeClient/ios/Joplin/Info.plist
index fc213d9d9f..863083c080 100644
--- a/ReactNativeClient/ios/Joplin/Info.plist
+++ b/ReactNativeClient/ios/Joplin/Info.plist
@@ -17,11 +17,11 @@
CFBundlePackageType
APPL
CFBundleShortVersionString
- 0.10.9
+ 1.0.11
CFBundleSignature
????
CFBundleVersion
- 9
+ 11
LSRequiresIPhoneOS
NSAppTransportSecurity
diff --git a/ReactNativeClient/lib/components/screens/encryption-config.js b/ReactNativeClient/lib/components/screens/encryption-config.js
index e7b7f63485..cfd51da210 100644
--- a/ReactNativeClient/lib/components/screens/encryption-config.js
+++ b/ReactNativeClient/lib/components/screens/encryption-config.js
@@ -1,5 +1,5 @@
const React = require('react'); const Component = React.Component;
-const { TextInput, TouchableOpacity, Linking, View, Switch, Slider, StyleSheet, Text, Button, ScrollView } = require('react-native');
+const { TextInput, TouchableOpacity, Linking, View, Switch, Slider, StyleSheet, Text, Button, ScrollView, Platform } = require('react-native');
const EncryptionService = require('lib/services/EncryptionService');
const { connect } = require('react-redux');
const { ScreenHeader } = require('lib/components/screen-header.js');
@@ -109,13 +109,20 @@ class EncryptionConfigScreenComponent extends BaseScreenComponent {
const passwordOk = this.state.passwordChecks[mk.id] === true ? '✔' : '❌';
const active = this.props.activeMasterKeyId === mk.id ? '✔' : '';
+ const inputStyle = {flex:1, marginRight: 10, color: theme.color};
+
+ if (Platform.OS === 'ios') {
+ inputStyle.borderBottomWidth = 1;
+ inputStyle.borderBottomColor = theme.dividerColor;
+ }
+
return (
{_('Master Key %s', mk.id.substr(0,6))}
{_('Created: %s', time.formatMsToLocal(mk.created_time))}
{_('Password:')}
- onPasswordChange(text)} style={{flex:1, marginRight: 10, color: theme.color}}>
+ onPasswordChange(text)} style={inputStyle}>
{passwordOk}
diff --git a/ReactNativeClient/lib/components/screens/log.js b/ReactNativeClient/lib/components/screens/log.js
index f8cd0e1e12..cf737e1468 100644
--- a/ReactNativeClient/lib/components/screens/log.js
+++ b/ReactNativeClient/lib/components/screens/log.js
@@ -1,5 +1,5 @@
const React = require('react'); const Component = React.Component;
-const { ListView, View, Text, Button, StyleSheet } = require('react-native');
+const { ListView, View, Text, Button, StyleSheet, Platform } = require('react-native');
const { connect } = require('react-redux');
const { Log } = require('lib/log.js');
const { reg } = require('lib/registry.js');
@@ -43,12 +43,15 @@ class LogScreenComponent extends BaseScreenComponent {
paddingBottom:0,
},
rowText: {
- fontFamily: 'monospace',
fontSize: 10,
color: theme.color,
},
};
+ if (Platform.OS !== 'ios') { // Crashes on iOS with error "Unrecognized font family 'monospace'"
+ styles.rowText.fontFamily = 'monospace';
+ }
+
styles.rowTextError = Object.assign({}, styles.rowText);
styles.rowTextError.color = theme.colorError;
diff --git a/ReactNativeClient/lib/fs-driver-rn.js b/ReactNativeClient/lib/fs-driver-rn.js
index e987d9f5fd..2543e11b4d 100644
--- a/ReactNativeClient/lib/fs-driver-rn.js
+++ b/ReactNativeClient/lib/fs-driver-rn.js
@@ -62,7 +62,7 @@ class FsDriverRN {
const r = await RNFS.stat(path);
return this.rnfsStatToStd_(r, path);
} catch (error) {
- if (error && error.message && error.message.indexOf('exist') >= 0) {
+ if (error && ((error.message && error.message.indexOf('exist') >= 0) || error.code === 'ENOENT')) {
// Probably { [Error: File does not exist] framesToPop: 1, code: 'EUNSPECIFIED' }
// which unfortunately does not have a proper error code. Can be ignored.
return null;
@@ -120,7 +120,7 @@ class FsDriverRN {
try {
await RNFS.unlink(path);
} catch (error) {
- if (error && error.message && error.message.indexOf('exist') >= 0) {
+ if (error && ((error.message && error.message.indexOf('exist') >= 0) || error.code === 'ENOENT')) {
// Probably { [Error: File does not exist] framesToPop: 1, code: 'EUNSPECIFIED' }
// which unfortunately does not have a proper error code. Can be ignored.
} else {
diff --git a/ReactNativeClient/lib/services/DecryptionWorker.js b/ReactNativeClient/lib/services/DecryptionWorker.js
index 46ee3a7190..c1ef325e6c 100644
--- a/ReactNativeClient/lib/services/DecryptionWorker.js
+++ b/ReactNativeClient/lib/services/DecryptionWorker.js
@@ -84,8 +84,9 @@ class DecryptionWorker {
try {
await ItemClass.decrypt(item);
} catch (error) {
+ excludedIds.push(item.id);
+
if (error.code === 'masterKeyNotLoaded' && options.materKeyNotLoadedHandler === 'dispatch') {
- excludedIds.push(item.id);
if (notLoadedMasterKeyDisptaches.indexOf(error.masterKeyId) < 0) {
this.dispatch({
type: 'MASTERKEY_ADD_NOT_LOADED',