mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Swallow errors when trying to determine available disk space when downloading (closes #3603)
This commit is contained in:
		@@ -267,15 +267,16 @@ class Downloader(
 | 
			
		||||
     * @param download the chapter to be downloaded.
 | 
			
		||||
     */
 | 
			
		||||
    private fun downloadChapter(download: Download): Observable<Download> = Observable.defer {
 | 
			
		||||
        val chapterDirname = provider.getChapterDirName(download.chapter)
 | 
			
		||||
        val mangaDir = provider.getMangaDir(download.manga, download.source)
 | 
			
		||||
 | 
			
		||||
        if (DiskUtil.getAvailableStorageSpace(mangaDir) < MIN_DISK_SPACE) {
 | 
			
		||||
        val availSpace = DiskUtil.getAvailableStorageSpace(mangaDir)
 | 
			
		||||
        if (availSpace != -1L && availSpace < MIN_DISK_SPACE) {
 | 
			
		||||
            download.status = Download.ERROR
 | 
			
		||||
            notifier.onError(context.getString(R.string.download_insufficient_space), download.chapter.name)
 | 
			
		||||
            return@defer Observable.just(download)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val chapterDirname = provider.getChapterDirName(download.chapter)
 | 
			
		||||
        val tmpDir = mangaDir.createDirectory(chapterDirname + TMP_DIR_SUFFIX)
 | 
			
		||||
 | 
			
		||||
        val pageListObservable = if (download.pages == null) {
 | 
			
		||||
 
 | 
			
		||||
@@ -34,14 +34,12 @@ object DiskUtil {
 | 
			
		||||
     * Gets the available space for the disk that a file path points to, in bytes.
 | 
			
		||||
     */
 | 
			
		||||
    fun getAvailableStorageSpace(f: UniFile): Long {
 | 
			
		||||
        val stat = try {
 | 
			
		||||
            StatFs(f.filePath)
 | 
			
		||||
        return try {
 | 
			
		||||
            val stat = StatFs(f.uri.path)
 | 
			
		||||
            stat.availableBlocksLong * stat.blockSizeLong
 | 
			
		||||
        } catch (_: Exception) {
 | 
			
		||||
            // Assume that exception is thrown when path is on external storage
 | 
			
		||||
            StatFs(Environment.getExternalStorageDirectory().path)
 | 
			
		||||
            -1L
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return stat.availableBlocksLong * stat.blockSizeLong
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user