|  |  |  | @ -19,6 +19,7 @@ import io.legado.app.help.storage.WebDavHelp | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.ui.filechooser.FilePicker | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.getPrefString | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.isContentPath | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.longToast | 
			
		
	
		
			
				
					|  |  |  |  | import io.legado.app.utils.toast | 
			
		
	
		
			
				
					|  |  |  |  | import kotlinx.coroutines.Dispatchers.Main | 
			
		
	
		
			
				
					|  |  |  |  | import org.jetbrains.anko.toast | 
			
		
	
	
		
			
				
					|  |  |  | @ -77,24 +78,24 @@ object BackupRestoreUi { | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  |     fun restore(fragment: Fragment) { | 
			
		
	
		
			
				
					|  |  |  |  |         Coroutine.async(context = Main) { | 
			
		
	
		
			
				
					|  |  |  |  |             val restoreFromWebDav = WebDavHelp.showRestoreDialog(fragment.requireContext()) | 
			
		
	
		
			
				
					|  |  |  |  |             if (!restoreFromWebDav) { | 
			
		
	
		
			
				
					|  |  |  |  |                 val backupPath = fragment.getPrefString(PreferKey.backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                 if (backupPath?.isNotEmpty() == true) { | 
			
		
	
		
			
				
					|  |  |  |  |                     if (backupPath.isContentPath()) { | 
			
		
	
		
			
				
					|  |  |  |  |                         val uri = Uri.parse(backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                         val doc = DocumentFile.fromTreeUri(fragment.requireContext(), uri) | 
			
		
	
		
			
				
					|  |  |  |  |                         if (doc?.canWrite() == true) { | 
			
		
	
		
			
				
					|  |  |  |  |                             Restore.restore(fragment.requireContext(), backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                         } else { | 
			
		
	
		
			
				
					|  |  |  |  |                             selectBackupFolder(fragment, restoreSelectRequestCode) | 
			
		
	
		
			
				
					|  |  |  |  |                         } | 
			
		
	
		
			
				
					|  |  |  |  |             WebDavHelp.showRestoreDialog(fragment.requireContext()) | 
			
		
	
		
			
				
					|  |  |  |  |         }.onError { | 
			
		
	
		
			
				
					|  |  |  |  |             fragment.longToast("WebDavError:${it.localizedMessage},将从本地备份恢复。") | 
			
		
	
		
			
				
					|  |  |  |  |             val backupPath = fragment.getPrefString(PreferKey.backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |             if (backupPath?.isNotEmpty() == true) { | 
			
		
	
		
			
				
					|  |  |  |  |                 if (backupPath.isContentPath()) { | 
			
		
	
		
			
				
					|  |  |  |  |                     val uri = Uri.parse(backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                     val doc = DocumentFile.fromTreeUri(fragment.requireContext(), uri) | 
			
		
	
		
			
				
					|  |  |  |  |                     if (doc?.canWrite() == true) { | 
			
		
	
		
			
				
					|  |  |  |  |                         Restore.restore(fragment.requireContext(), backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                     } else { | 
			
		
	
		
			
				
					|  |  |  |  |                         restoreUsePermission(fragment, backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                         selectBackupFolder(fragment, restoreSelectRequestCode) | 
			
		
	
		
			
				
					|  |  |  |  |                     } | 
			
		
	
		
			
				
					|  |  |  |  |                 } else { | 
			
		
	
		
			
				
					|  |  |  |  |                     selectBackupFolder(fragment, restoreSelectRequestCode) | 
			
		
	
		
			
				
					|  |  |  |  |                     restoreUsePermission(fragment, backupPath) | 
			
		
	
		
			
				
					|  |  |  |  |                 } | 
			
		
	
		
			
				
					|  |  |  |  |             } else { | 
			
		
	
		
			
				
					|  |  |  |  |                 selectBackupFolder(fragment, restoreSelectRequestCode) | 
			
		
	
		
			
				
					|  |  |  |  |             } | 
			
		
	
		
			
				
					|  |  |  |  |         } | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
	
		
			
				
					|  |  |  | 
 |