-
Notifications
You must be signed in to change notification settings - Fork 205
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Feature/decouple thumbnail downloads and cache (#581)
* Rename "DownloadedFilesProvider" to "ChaptersFilesProvider" * Move files into sub packages * Further abstract "DownloadedFilesProvider" * Rename "getCachedImageResponse" to "getImageResponse" * Extract getting cached image response into new function * Decouple thumbnail cache and download * Download and delete permanent thumbnails When adding/removing manga from/to the library make sure the permanent thumbnail files will get handled properly * Move thumbnail cache to actual temp folder * Rename "mangaDownloadsRoot" to "downloadRoot" * Move manga downloads into "mangas" subfolder * Clear downloaded thumbnail
- Loading branch information
Showing
19 changed files
with
342 additions
and
82 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
23 changes: 23 additions & 0 deletions
23
server/src/main/kotlin/suwayomi/tachidesk/manga/impl/ThumbnailDownloadHelper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
package suwayomi.tachidesk.manga.impl | ||
|
||
import suwayomi.tachidesk.manga.impl.download.fileProvider.impl.ThumbnailFileProvider | ||
import java.io.InputStream | ||
|
||
object ThumbnailDownloadHelper { | ||
fun getImage(mangaId: Int): Pair<InputStream, String> { | ||
return provider(mangaId).getImage().execute() | ||
} | ||
|
||
fun delete(mangaId: Int): Boolean { | ||
return provider(mangaId).delete() | ||
} | ||
|
||
suspend fun download(mangaId: Int): Boolean { | ||
return provider(mangaId).download().execute() | ||
} | ||
|
||
// return the appropriate provider based on how the download was saved. For the logic is simple but will evolve when new types of downloads are available | ||
private fun provider(mangaId: Int): ThumbnailFileProvider { | ||
return ThumbnailFileProvider(mangaId) | ||
} | ||
} |
20 changes: 0 additions & 20 deletions
20
server/src/main/kotlin/suwayomi/tachidesk/manga/impl/download/DownloadedFilesProvider.kt
This file was deleted.
Oops, something went wrong.
40 changes: 40 additions & 0 deletions
40
.../main/kotlin/suwayomi/tachidesk/manga/impl/download/fileProvider/ChaptersFilesProvider.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
package suwayomi.tachidesk.manga.impl.download.fileProvider | ||
|
||
import kotlinx.coroutines.CoroutineScope | ||
import suwayomi.tachidesk.manga.impl.download.model.DownloadChapter | ||
import java.io.InputStream | ||
|
||
/* | ||
* Base class for downloaded chapter files provider, example: Folder, Archive | ||
* */ | ||
abstract class ChaptersFilesProvider(val mangaId: Int, val chapterId: Int) : DownloadedFilesProvider { | ||
abstract fun getImageImpl(index: Int): Pair<InputStream, String> | ||
|
||
override fun getImage(): RetrieveFile1Args<Int> { | ||
return object : RetrieveFile1Args<Int> { | ||
override fun execute(a: Int): Pair<InputStream, String> { | ||
return getImageImpl(a) | ||
} | ||
} | ||
} | ||
|
||
abstract suspend fun downloadImpl( | ||
download: DownloadChapter, | ||
scope: CoroutineScope, | ||
step: suspend (DownloadChapter?, Boolean) -> Unit | ||
): Boolean | ||
|
||
override fun download(): FileDownload3Args<DownloadChapter, CoroutineScope, suspend (DownloadChapter?, Boolean) -> Unit> { | ||
return object : FileDownload3Args<DownloadChapter, CoroutineScope, suspend (DownloadChapter?, Boolean) -> Unit> { | ||
override suspend fun execute( | ||
a: DownloadChapter, | ||
b: CoroutineScope, | ||
c: suspend (DownloadChapter?, Boolean) -> Unit | ||
): Boolean { | ||
return downloadImpl(a, b, c) | ||
} | ||
} | ||
} | ||
|
||
abstract override fun delete(): Boolean | ||
} |
5 changes: 5 additions & 0 deletions
5
...ain/kotlin/suwayomi/tachidesk/manga/impl/download/fileProvider/DownloadedFilesProvider.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package suwayomi.tachidesk.manga.impl.download.fileProvider | ||
|
||
interface DownloadedFilesProvider : FileDownloader, FileRetriever { | ||
fun delete(): Boolean | ||
} |
29 changes: 29 additions & 0 deletions
29
server/src/main/kotlin/suwayomi/tachidesk/manga/impl/download/fileProvider/FileDownloader.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
package suwayomi.tachidesk.manga.impl.download.fileProvider | ||
|
||
@FunctionalInterface | ||
interface FileDownload { | ||
suspend fun executeDownload(vararg args: Any): Boolean | ||
} | ||
|
||
@FunctionalInterface | ||
interface FileDownload0Args : FileDownload { | ||
suspend fun execute(): Boolean | ||
|
||
override suspend fun executeDownload(vararg args: Any): Boolean { | ||
return execute() | ||
} | ||
} | ||
|
||
@FunctionalInterface | ||
interface FileDownload3Args<A, B, C> : FileDownload { | ||
suspend fun execute(a: A, b: B, c: C): Boolean | ||
|
||
override suspend fun executeDownload(vararg args: Any): Boolean { | ||
return execute(args[0] as A, args[1] as B, args[2] as C) | ||
} | ||
} | ||
|
||
@FunctionalInterface | ||
interface FileDownloader { | ||
fun download(): FileDownload | ||
} |
Oops, something went wrong.