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',