Swallow errors when trying to determine available disk space when downloading (closes #3603)

This commit is contained in:
arkon 2020-08-09 11:39:18 -04:00
parent 421dfb4a2d
commit 3e6b0117fd
2 changed files with 7 additions and 8 deletions

View file

@ -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) {

View file

@ -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
}
/**