You've already forked joplin
							
							
				mirror of
				https://github.com/laurent22/joplin.git
				synced 2025-10-31 00:07:48 +02:00 
			
		
		
		
	Better handling of network errors
This commit is contained in:
		| @@ -72,7 +72,7 @@ class NoteItemComponent extends Component { | ||||
| 		const listItemStyle = !!Number(note.is_todo) && checkboxChecked ? styles.listItemFadded : styles.listItem; | ||||
|  | ||||
| 		return ( | ||||
| 			<TouchableHighlight style={{borderWidth:1, borderColor:'red'}} onPress={() => this.onPress()} underlayColor="#0066FF"> | ||||
| 			<TouchableHighlight onPress={() => this.onPress()} underlayColor="#0066FF"> | ||||
| 				<View style={ listItemStyle }> | ||||
| 					<Checkbox | ||||
| 						style={checkboxStyle} | ||||
|   | ||||
| @@ -112,7 +112,14 @@ class SideMenuContentComponent extends Component { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		const sync = await reg.synchronizer(Setting.value('sync.target')) | ||||
| 		let sync = null; | ||||
| 		try { | ||||
| 			sync = await reg.synchronizer(Setting.value('sync.target')) | ||||
| 		} catch (error) { | ||||
| 			reg.logger().info('Could not acquire synchroniser:'); | ||||
| 			reg.logger().info(error); | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		if (this.props.syncStarted) { | ||||
| 			sync.cancel(); | ||||
|   | ||||
| @@ -69,8 +69,8 @@ class OneDriveApi { | ||||
| 	} | ||||
|  | ||||
| 	async appDirectory() { | ||||
| 			let r = await this.execJson('GET', '/drive/special/approot'); | ||||
| 			return r.parentReference.path + '/' + r.name; | ||||
| 		let r = await this.execJson('GET', '/drive/special/approot'); | ||||
| 		return r.parentReference.path + '/' + r.name; | ||||
| 	} | ||||
|  | ||||
| 	authCodeUrl(redirectUri) { | ||||
| @@ -172,8 +172,7 @@ class OneDriveApi { | ||||
| 				if (error.message == 'Network request failed') { | ||||
| 					// Unfortunately the error 'Network request failed' doesn't have a type | ||||
| 					// or error code, so hopefully that message won't change and is not localized | ||||
| 					this.logger().warn('Got error below - retrying...'); | ||||
| 					this.logger().warn(error); | ||||
| 					this.logger().info('Got error "Network request failed" - retrying (' + i + ')...'); | ||||
| 					await time.sleep((i + 1) * 3); | ||||
| 					continue; | ||||
| 				} else { | ||||
| @@ -204,8 +203,8 @@ class OneDriveApi { | ||||
| 					//   type: 'system', | ||||
| 					//   errno: 'EAGAIN', | ||||
| 					//   code: 'EAGAIN' } | ||||
| 					this.logger().warn('Got error below - retrying...'); | ||||
| 					this.logger().warn(error); | ||||
| 					this.logger().info('Got error below - retrying (' + i + ')...'); | ||||
| 					this.logger().info(error); | ||||
| 					await time.sleep((i + 1) * 3); | ||||
| 					continue; | ||||
| 				} else if (error.code == 'itemNotFound' && method == 'DELETE') { | ||||
|   | ||||
| @@ -126,19 +126,25 @@ reg.scheduleSync = async (delay = null) => { | ||||
| 			return; | ||||
| 		} | ||||
|  | ||||
| 		const sync = await reg.synchronizer(syncTargetId); | ||||
|  | ||||
| 		let context = Setting.value('sync.context'); | ||||
| 		context = context ? JSON.parse(context) : {}; | ||||
| 		try { | ||||
| 			let newContext = await sync.start({ context: context }); | ||||
| 			Setting.setValue('sync.context', JSON.stringify(newContext)); | ||||
| 		} catch (error) { | ||||
| 			if (error.code == 'alreadyStarted') { | ||||
| 				reg.logger().info(error.message); | ||||
| 			} else { | ||||
| 				throw error; | ||||
| 			const sync = await reg.synchronizer(syncTargetId); | ||||
|  | ||||
|  | ||||
| 			let context = Setting.value('sync.context'); | ||||
| 			context = context ? JSON.parse(context) : {}; | ||||
| 			try { | ||||
| 				let newContext = await sync.start({ context: context }); | ||||
| 				Setting.setValue('sync.context', JSON.stringify(newContext)); | ||||
| 			} catch (error) { | ||||
| 				if (error.code == 'alreadyStarted') { | ||||
| 					reg.logger().info(error.message); | ||||
| 				} else { | ||||
| 					throw error; | ||||
| 				} | ||||
| 			} | ||||
| 		} catch (error) { | ||||
| 			reg.logger().info('Could not run background sync: '); | ||||
| 			reg.logger().info(error); | ||||
| 		} | ||||
|  | ||||
| 		reg.setupRecurrentSync(); | ||||
|   | ||||
| @@ -55,7 +55,7 @@ class Synchronizer { | ||||
| 		if (report.updateRemote) lines.push(_('Updated remote items: %d.', report.updateRemote)); | ||||
| 		if (report.deleteLocal) lines.push(_('Deleted local items: %d.', report.deleteLocal)); | ||||
| 		if (report.deleteRemote) lines.push(_('Deleted remote items: %d.', report.deleteRemote)); | ||||
| 		if (report.state) lines.push(_('State: %s.', report.state.replace(/_/g, ' '))); | ||||
| 		if (!report.completedTime && report.state) lines.push(_('State: %s.', report.state.replace(/_/g, ' '))); | ||||
| 		if (report.errors && report.errors.length) lines.push(_('Last error: %s (stacktrace in log).', report.errors[report.errors.length-1].message)); | ||||
| 		if (report.cancelling && !report.completedTime) lines.push(_('Cancelling...')); | ||||
| 		if (report.completedTime) lines.push(_('Completed: %s', time.unixMsToLocalDateTime(report.completedTime))); | ||||
| @@ -464,7 +464,6 @@ class Synchronizer { | ||||
| 			this.cancelling_ = false; | ||||
| 		} | ||||
|  | ||||
|  | ||||
| 		this.progressReport_.completedTime = time.unixMs(); | ||||
|  | ||||
| 		this.logSyncOperation('finished', null, null, 'Synchronisation finished [' + synchronizationId + ']'); | ||||
| @@ -475,7 +474,7 @@ class Synchronizer { | ||||
| 		this.progressReport_ = {}; | ||||
|  | ||||
| 		this.dispatch({ type: 'SYNC_COMPLETED' }); | ||||
| 		 | ||||
|  | ||||
| 		this.state_ = 'idle'; | ||||
|  | ||||
| 		return outputContext; | ||||
|   | ||||
| @@ -508,7 +508,7 @@ async function initialize(dispatch, backButtonHandler) { | ||||
| 	reg.setupRecurrentSync(); | ||||
|  | ||||
| 	if (Setting.value('env') == 'dev') { | ||||
|  | ||||
| 		// reg.scheduleSync(); | ||||
| 	} else { | ||||
| 		reg.scheduleSync(); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user