komikku/app/src/main/java/exh/GalleryAdder.kt

251 lines
9.5 KiB
Kotlin
Raw Normal View History

package exh
import android.content.Context
2020-11-21 22:24:16 +01:00
import androidx.core.net.toUri
import eu.kanade.domain.chapter.interactor.SyncChaptersWithSource
import eu.kanade.domain.manga.interactor.UpdateManga
Move more models to domain module (cherry picked from commit 345e9c2a9a61f1f3b814db52eddbb42681499854) # Conflicts: # app/src/main/java/eu/kanade/data/manga/MangaMapper.kt # app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt # app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt # app/src/main/java/eu/kanade/domain/history/interactor/GetNextChapters.kt # app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt # app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceDialogs.kt # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt
2023-01-22 16:54:28 +01:00
import eu.kanade.domain.manga.model.toSManga
import eu.kanade.domain.source.service.SourcePreferences
2019-08-07 16:21:18 +02:00
import eu.kanade.tachiyomi.source.online.UrlImportableSource
import eu.kanade.tachiyomi.source.online.all.EHentai
import exh.log.xLogStack
2020-10-28 00:52:32 +01:00
import exh.source.getMainSource
2023-12-24 04:40:54 +01:00
import tachiyomi.core.i18n.stringResource
import tachiyomi.domain.chapter.interactor.GetChapter
Move more models to domain module (cherry picked from commit 345e9c2a9a61f1f3b814db52eddbb42681499854) # Conflicts: # app/src/main/java/eu/kanade/data/manga/MangaMapper.kt # app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt # app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt # app/src/main/java/eu/kanade/domain/history/interactor/GetNextChapters.kt # app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt # app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceDialogs.kt # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt
2023-01-22 16:54:28 +01:00
import tachiyomi.domain.chapter.model.Chapter
import tachiyomi.domain.manga.interactor.GetManga
import tachiyomi.domain.manga.interactor.NetworkToLocalManga
Move more models to domain module (cherry picked from commit 345e9c2a9a61f1f3b814db52eddbb42681499854) # Conflicts: # app/src/main/java/eu/kanade/data/manga/MangaMapper.kt # app/src/main/java/eu/kanade/domain/chapter/interactor/SyncChaptersWithSource.kt # app/src/main/java/eu/kanade/domain/chapter/model/ChapterFilter.kt # app/src/main/java/eu/kanade/domain/history/interactor/GetNextChapters.kt # app/src/main/java/eu/kanade/domain/library/service/LibraryPreferences.kt # app/src/main/java/eu/kanade/domain/manga/model/Manga.kt # app/src/main/java/eu/kanade/presentation/browse/MigrateSearchScreen.kt # app/src/main/java/eu/kanade/presentation/browse/components/BrowseSourceDialogs.kt # app/src/main/java/eu/kanade/presentation/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/database/models/Manga.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/MigrateDialog.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/history/HistoryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryTab.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreen.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaScreenModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderViewModel.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/util/chapter/ChapterGetNextUnread.kt
2023-01-22 16:54:28 +01:00
import tachiyomi.domain.manga.model.Manga
import tachiyomi.domain.source.service.SourceManager
2023-12-24 04:40:54 +01:00
import tachiyomi.i18n.sy.SYMR
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
class GalleryAdder(
private val getManga: GetManga = Injekt.get(),
private val updateManga: UpdateManga = Injekt.get(),
private val networkToLocalManga: NetworkToLocalManga = Injekt.get(),
private val getChapter: GetChapter = Injekt.get(),
private val syncChaptersWithSource: SyncChaptersWithSource = Injekt.get(),
private val sourceManager: SourceManager = Injekt.get(),
) {
private val filters: Pair<Set<String>, Set<Long>> = Injekt.get<SourcePreferences>().run {
enabledLanguages().get() to disabledSources().get().map { it.toLong() }.toSet()
}
2022-07-24 21:29:48 +02:00
private val Pair<Set<String>, Set<Long>>.enabledLangs
get() = first
private val Pair<Set<String>, Set<Long>>.disabledSources
get() = second
private val logger = xLogStack()
2020-11-25 21:57:05 +01:00
2020-10-20 00:41:41 +02:00
fun pickSource(url: String): List<UrlImportableSource> {
2020-11-21 22:24:16 +01:00
val uri = url.toUri()
2020-10-20 00:41:41 +02:00
return sourceManager.getVisibleCatalogueSources()
2021-07-25 20:16:16 +02:00
.mapNotNull { it.getMainSource<UrlImportableSource>() }
2020-10-20 00:41:41 +02:00
.filter {
2022-07-24 21:29:48 +02:00
it.lang in filters.enabledLangs && it.id !in filters.disabledSources && try {
2020-10-20 00:41:41 +02:00
it.matchesUri(uri)
} catch (e: Exception) {
false
}
}
}
suspend fun addGallery(
context: Context,
url: String,
fav: Boolean = false,
forceSource: UrlImportableSource? = null,
Update linter (cherry picked from commit f0eb42e72d1e267049777a303bd97d96517a9a1f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt # app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
2022-04-08 21:30:30 +02:00
throttleFunc: suspend () -> Unit = {},
retry: Int = 1,
): GalleryAddEvent {
2023-12-24 04:40:54 +01:00
logger.d(context.stringResource(SYMR.strings.gallery_adder_importing_gallery, url, fav.toString(), forceSource?.toString().orEmpty()))
try {
2020-11-21 22:24:16 +01:00
val uri = url.toUri()
2019-08-07 16:21:18 +02:00
// Find matching source
val source = if (forceSource != null) {
2019-08-07 16:21:18 +02:00
try {
2022-09-12 01:43:45 +02:00
if (forceSource.matchesUri(uri)) {
forceSource
} else {
return GalleryAddEvent.Fail.UnknownSource(url, context)
}
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.e(context.stringResource(SYMR.strings.gallery_adder_source_uri_must_match), e)
return GalleryAddEvent.Fail.UnknownType(url, context)
2017-12-08 04:25:27 +01:00
}
2019-08-07 16:21:18 +02:00
} else {
sourceManager.getVisibleCatalogueSources()
2021-07-25 20:16:16 +02:00
.mapNotNull { it.getMainSource<UrlImportableSource>() }
2020-06-21 06:44:04 +02:00
.find {
2022-07-24 21:29:48 +02:00
it.lang in filters.enabledLangs && it.id !in filters.disabledSources && try {
2020-06-21 06:44:04 +02:00
it.matchesUri(uri)
} catch (e: Exception) {
2020-05-02 06:46:24 +02:00
false
}
2021-01-10 23:28:52 +01:00
} ?: return GalleryAddEvent.Fail.UnknownSource(url, context)
}
val realChapterUrl = try {
source.mapUrlToChapterUrl(uri)
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.e(context.stringResource(SYMR.strings.gallery_adder_uri_map_to_chapter_error), e)
null
}
val cleanedChapterUrl = if (realChapterUrl != null) {
try {
source.cleanChapterUrl(realChapterUrl)
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.e(context.stringResource(SYMR.strings.gallery_adder_uri_clean_error), e)
null
}
2022-09-12 01:43:45 +02:00
} else {
null
}
val chapterMangaUrl = if (realChapterUrl != null) {
source.mapChapterUrlToMangaUrl(realChapterUrl.toUri())
2022-09-12 01:43:45 +02:00
} else {
null
}
2019-08-07 16:21:18 +02:00
// Map URL to manga URL
2020-12-26 20:22:55 +01:00
val realMangaUrl = try {
chapterMangaUrl ?: source.mapUrlToMangaUrl(uri)
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.e(context.stringResource(SYMR.strings.gallery_adder_uri_map_to_gallery_error), e)
2019-08-07 16:21:18 +02:00
null
} ?: return GalleryAddEvent.Fail.UnknownType(url, context)
2019-08-07 16:21:18 +02:00
// Clean URL
2020-12-26 20:22:55 +01:00
val cleanedMangaUrl = try {
source.cleanMangaUrl(realMangaUrl)
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.e(context.stringResource(SYMR.strings.gallery_adder_uri_clean_error), e)
2019-08-07 16:21:18 +02:00
null
} ?: return GalleryAddEvent.Fail.UnknownType(url, context)
// Use manga in DB if possible, otherwise, make a new manga
var manga = getManga.await(cleanedMangaUrl, source.id)
?: networkToLocalManga.await(
Manga.create().copy(
source = source.id,
url = cleanedMangaUrl,
),
)
// Fetch and copy details
val newManga = retry(retry) { source.getMangaDetails(manga.toSManga()) }
2022-07-05 03:54:24 +02:00
updateManga.awaitUpdateFromSource(manga, newManga, false)
manga = getManga.await(manga.id)!!
if (fav) {
updateManga.awaitUpdateFavorite(manga.id, true)
manga = manga.copy(favorite = true)
}
// Fetch and copy chapters
try {
val chapterList = retry(retry) {
if (source is EHentai) {
source.getChapterList(manga.toSManga(), throttleFunc)
} else {
source.getChapterList(manga.toSManga())
}
}
if (chapterList.isNotEmpty()) {
syncChaptersWithSource.await(chapterList, manga, source)
}
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.w(context.stringResource(SYMR.strings.gallery_adder_chapter_fetch_error, manga.title), e)
return GalleryAddEvent.Fail.Error(url, context.stringResource(SYMR.strings.gallery_adder_chapter_fetch_error, url))
}
return if (cleanedChapterUrl != null) {
val chapter = getChapter.await(cleanedChapterUrl, manga.id)
if (chapter != null) {
GalleryAddEvent.Success(url, manga, context, chapter)
} else {
2023-12-24 04:40:54 +01:00
GalleryAddEvent.Fail.Error(url, context.stringResource(SYMR.strings.gallery_adder_could_not_identify_chapter, url))
}
} else {
GalleryAddEvent.Success(url, manga, context)
}
} catch (e: Exception) {
2023-12-24 04:40:54 +01:00
logger.w(context.stringResource(SYMR.strings.gallery_adder_could_not_add_gallery, url), e)
if (e is EHentai.GalleryNotFoundException) {
return GalleryAddEvent.Fail.NotFound(url, context)
}
2020-05-02 06:46:24 +02:00
return GalleryAddEvent.Fail.Error(
url,
Update linter (cherry picked from commit f0eb42e72d1e267049777a303bd97d96517a9a1f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt # app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
2022-04-08 21:30:30 +02:00
((e.message ?: "Unknown error!") + " (Gallery: $url)").trim(),
2020-05-02 06:46:24 +02:00
)
}
}
private inline fun <T : Any> retry(retryCount: Int, block: () -> T): T {
var result: T? = null
var lastError: Exception? = null
for (i in 1..retryCount) {
try {
result = block()
break
} catch (e: Exception) {
if (e is EHentai.GalleryNotFoundException) {
throw e
}
lastError = e
}
}
if (lastError != null) {
throw lastError
}
return result!!
}
}
sealed class GalleryAddEvent {
abstract val logMessage: String
abstract val galleryUrl: String
open val galleryTitle: String? = null
class Success(
override val galleryUrl: String,
val manga: Manga,
2020-12-26 20:22:55 +01:00
val context: Context,
Update linter (cherry picked from commit f0eb42e72d1e267049777a303bd97d96517a9a1f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt # app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
2022-04-08 21:30:30 +02:00
val chapter: Chapter? = null,
) : GalleryAddEvent() {
2019-08-07 16:21:18 +02:00
override val galleryTitle = manga.title
2023-12-24 04:40:54 +01:00
override val logMessage = context.stringResource(SYMR.strings.batch_add_success_log_message, galleryTitle)
}
sealed class Fail : GalleryAddEvent() {
class UnknownType(override val galleryUrl: String, val context: Context) : Fail() {
2023-12-24 04:40:54 +01:00
override val logMessage = context.stringResource(SYMR.strings.batch_add_unknown_type_log_message, galleryUrl)
}
open class Error(
override val galleryUrl: String,
Update linter (cherry picked from commit f0eb42e72d1e267049777a303bd97d96517a9a1f) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/legacy/models/Backup.kt # app/src/main/java/eu/kanade/tachiyomi/extension/model/Extension.kt # app/src/main/java/eu/kanade/tachiyomi/source/LocalSource.kt # app/src/main/java/eu/kanade/tachiyomi/ui/base/changehandler/OneWayFadeChangeHandler.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/SelectionHeader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceItem.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourcePresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryListHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/ChapterLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/loader/HttpPageLoader.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/model/ReaderPage.kt # app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerPageHolder.kt # app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt
2022-04-08 21:30:30 +02:00
override val logMessage: String,
) : Fail()
class NotFound(galleryUrl: String, context: Context) :
2023-12-24 04:40:54 +01:00
Error(galleryUrl, context.stringResource(SYMR.strings.batch_add_not_exist_log_message, galleryUrl))
2021-01-10 23:28:52 +01:00
class UnknownSource(override val galleryUrl: String, val context: Context) : Fail() {
2023-12-24 04:40:54 +01:00
override val logMessage = context.stringResource(SYMR.strings.batch_add_unknown_source_log_message, galleryUrl)
2021-01-10 23:28:52 +01:00
}
}
}