Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New #7

Merged
merged 4 commits into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import cafe.adriel.voyager.core.screen.Screen
import eu.kanade.core.util.asFlow
import eu.kanade.presentation.components.TabbedDialogPaddings
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.animesource.model.Video
Expand Down Expand Up @@ -126,7 +125,7 @@ class EpisodeOptionsDialogScreenModel(

val result = withIOContext {
try {
val results = EpisodeLoader.getLinks(episode, anime, source).asFlow().first()
val results = EpisodeLoader.getLinks(episode, anime, source)
Result.success(results)
} catch (e: Throwable) {
Result.failure(e)
Expand Down
164 changes: 82 additions & 82 deletions app/src/main/java/eu/kanade/tachiyomi/Migrations.kt
Original file line number Diff line number Diff line change
Expand Up @@ -478,95 +478,95 @@ object Migrations {
}
}
}
if (oldVersion < 96) {
MangaLibraryUpdateJob.cancelAllWorks(context)
AnimeLibraryUpdateJob.cancelAllWorks(context)
MangaLibraryUpdateJob.setupTask(context)
AnimeLibraryUpdateJob.setupTask(context)
}
if (oldVersion < 97) {
// Removed background jobs
context.workManager.cancelAllWorkByTag("UpdateChecker")
context.workManager.cancelAllWorkByTag("ExtensionUpdate")
prefs.edit {
remove("automatic_ext_updates")
}
}
if (oldVersion < 99) {
val prefKeys = listOf(
"pref_filter_library_downloaded",
"pref_filter_library_unread",
"pref_filter_library_unseen",
"pref_filter_library_started",
"pref_filter_library_bookmarked",
"pref_filter_library_completed",
) + trackerManager.trackers.map { "pref_filter_library_tracked_${it.id}" }

prefKeys.forEach { key ->
val pref = preferenceStore.getInt(key, 0)
prefs.edit {
remove(key)
}
}
if (oldVersion < 96) {
MangaLibraryUpdateJob.cancelAllWorks(context)
AnimeLibraryUpdateJob.cancelAllWorks(context)
MangaLibraryUpdateJob.setupTask(context)
AnimeLibraryUpdateJob.setupTask(context)
}
if (oldVersion < 97) {
// Removed background jobs
context.workManager.cancelAllWorkByTag("UpdateChecker")
context.workManager.cancelAllWorkByTag("ExtensionUpdate")
prefs.edit {
remove("automatic_ext_updates")
}
}
if (oldVersion < 99) {
val prefKeys = listOf(
"pref_filter_library_downloaded",
"pref_filter_library_unread",
"pref_filter_library_unseen",
"pref_filter_library_started",
"pref_filter_library_bookmarked",
"pref_filter_library_completed",
) + trackerManager.trackers.map { "pref_filter_library_tracked_${it.id}" }

val newValue = when (pref.get()) {
1 -> TriState.ENABLED_IS
2 -> TriState.ENABLED_NOT
else -> TriState.DISABLED
}
prefKeys.forEach { key ->
val pref = preferenceStore.getInt(key, 0)
prefs.edit {
remove(key)

preferenceStore.getEnum("${key}_v2", TriState.DISABLED).set(
newValue,
)
}
}
}
if (oldVersion < 100) {
BackupCreateJob.setupTask(context)
}
if (oldVersion < 105) {
val pref = libraryPreferences.autoUpdateDeviceRestrictions()
if (pref.isSet() && "battery_not_low" in pref.get()) {
pref.getAndSet { it - "battery_not_low" }
val newValue = when (pref.get()) {
1 -> TriState.ENABLED_IS
2 -> TriState.ENABLED_NOT
else -> TriState.DISABLED
}
}
if (oldVersion < 106) {
val pref = preferenceStore.getInt("relative_time", 7)
if (pref.get() == 0) {
uiPreferences.relativeTime().set(false)
}
}
if (oldVersion < 107) {
replacePreferences(
preferenceStore = preferenceStore,
filterPredicate = {
it.key.startsWith("pref_mangasync_") ||
it.key.startsWith("track_token_")
},
newKey = { Preference.privateKey(it) },
)
}
if (oldVersion < 110) {
val prefsToReplace = listOf(
"pref_download_only",
"incognito_mode",
"last_catalogue_source",
"trusted_signatures",
"last_app_closed",
"library_update_last_timestamp",
"library_unseen_updates_count",
"last_used_category",
"last_app_check",
"last_ext_check",
"last_version_code",
)
replacePreferences(
preferenceStore = preferenceStore,
filterPredicate = { it.key in prefsToReplace },
newKey = { Preference.appStateKey(it) },

preferenceStore.getEnum("${key}_v2", TriState.DISABLED).set(
newValue,
)
}
return true
}
}
if (oldVersion < 100) {
BackupCreateJob.setupTask(context)
}
if (oldVersion < 105) {
val pref = libraryPreferences.autoUpdateDeviceRestrictions()
if (pref.isSet() && "battery_not_low" in pref.get()) {
pref.getAndSet { it - "battery_not_low" }
}
}
if (oldVersion < 106) {
val pref = preferenceStore.getInt("relative_time", 7)
if (pref.get() == 0) {
uiPreferences.relativeTime().set(false)
}
}
if (oldVersion < 107) {
replacePreferences(
preferenceStore = preferenceStore,
filterPredicate = {
it.key.startsWith("pref_mangasync_") ||
it.key.startsWith("track_token_")
},
newKey = { Preference.privateKey(it) },
)
}
if (oldVersion < 110) {
val prefsToReplace = listOf(
"pref_download_only",
"incognito_mode",
"last_catalogue_source",
"trusted_signatures",
"last_app_closed",
"library_update_last_timestamp",
"library_unseen_updates_count",
"last_used_category",
"last_app_check",
"last_ext_check",
"last_version_code",
)
replacePreferences(
preferenceStore = preferenceStore,
filterPredicate = { it.key in prefsToReplace },
newKey = { Preference.appStateKey(it) },
)
}
return true
}
return false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.runBlocking
import logcat.LogPriority
import rx.Observable
import tachiyomi.core.provider.FolderProvider
import tachiyomi.core.util.lang.launchIO
import tachiyomi.core.util.system.logcat
Expand Down Expand Up @@ -167,25 +166,24 @@ class AnimeDownloadManager(
* @param episode the downloaded episode.
* @return an observable containing the list of pages from the episode.
*/
fun buildVideo(source: AnimeSource, anime: Anime, episode: Episode): Observable<Video> {
fun buildVideo(source: AnimeSource, anime: Anime, episode: Episode): Video {
val episodeDir =
provider.findEpisodeDir(episode.name, episode.scanlator, anime.title, source)
return Observable.fromCallable {
val files = episodeDir?.listFiles().orEmpty()
.filter { "video" in it.type.orEmpty() }
val files = episodeDir?.listFiles().orEmpty()
.filter { "video" in it.type.orEmpty() }

if (files.isEmpty()) {
throw Exception(context.getString(R.string.video_list_empty_error))
}

val file = files[0]
Video(
file.uri.toString(),
"download: " + file.uri.toString(),
file.uri.toString(),
file.uri,
).apply { status = Video.State.READY }
if (files.isEmpty()) {
throw Exception(context.getString(R.string.video_list_empty_error))
}

val file = files[0]

return Video(
file.uri.toString(),
"download: " + file.uri.toString(),
file.uri.toString(),
file.uri,
).apply { status = Video.State.READY }
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -506,7 +506,7 @@ class AnimeLibraryUpdateJob(private val context: Context, workerParams: WorkerPa
private fun writeErrorFile(errors: List<Pair<Anime, String?>>): File {
try {
if (errors.isNotEmpty()) {
val file = context.createFileInCacheDir("animetail_update_errors.txt")
val file = context.createFileInCacheDir("kuukiyomi_update_errors.txt")
file.bufferedWriter().use { out ->
out.write(
context.getString(R.string.library_errors_help, ERROR_LOG_HELP_URL) + "\n\n",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import eu.kanade.domain.items.chapter.interactor.SyncChaptersWithSource
import eu.kanade.tachiyomi.source.MangaSource
import eu.kanade.tachiyomi.source.model.SChapter
import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.ResolvableMangaSource
import eu.kanade.tachiyomi.source.online.ResolvableSource
import eu.kanade.tachiyomi.source.online.UriType
import kotlinx.coroutines.flow.update
import tachiyomi.core.util.lang.launchIO
Expand All @@ -34,7 +34,7 @@ class DeepLinkMangaScreenModel(
init {
screenModelScope.launchIO {
val source = sourceManager.getCatalogueSources()
.filterIsInstance<ResolvableMangaSource>()
.filterIsInstance<ResolvableSource>()
.firstOrNull { it.getUriType(query) != UriType.Unknown }

val manga = source?.getManga(query)?.let {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import android.os.Build
import android.os.Bundle
import androidx.core.content.FileProvider
import androidx.core.net.toUri
import eu.kanade.core.util.asFlow
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.track.anime.model.toDbTrack
import eu.kanade.domain.track.anime.service.DelayedAnimeTrackingUpdateJob
Expand Down Expand Up @@ -87,7 +86,7 @@ class ExternalIntents {
episode = getEpisodesByAnimeId.await(anime.id).find { it.id == episodeId } ?: return null

val video = chosenVideo
?: EpisodeLoader.getLinks(episode, anime, source).asFlow().first().firstOrNull()
?: EpisodeLoader.getLinks(episode, anime, source).firstOrNull()
?: throw Exception("Video list is empty")

val videoUrl = getVideoUrl(context, video) ?: return null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import androidx.compose.runtime.Immutable
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import eu.kanade.core.util.asFlow
import eu.kanade.domain.base.BasePreferences
import eu.kanade.domain.entries.anime.interactor.SetAnimeViewerFlags
import eu.kanade.domain.items.episode.model.toDbEpisode
Expand Down Expand Up @@ -254,7 +253,7 @@ class PlayerViewModel @JvmOverloads constructor(

val currentEp = currentEpisode ?: throw Exception("No episode loaded.")

EpisodeLoader.getLinks(currentEp.toDomainEpisode()!!, anime, source).asFlow().first()
EpisodeLoader.getLinks(currentEp.toDomainEpisode()!!, anime, source)
.takeIf { it.isNotEmpty() }
?.also { currentVideoList = it }
?: run {
Expand Down Expand Up @@ -328,7 +327,7 @@ class PlayerViewModel @JvmOverloads constructor(
currentEpisode.toDomainEpisode()!!,
anime,
source,
).asFlow().first()
)
[email protected] = currentEpisode.id!!
} catch (e: Exception) {
logcat(LogPriority.ERROR, e) { e.message ?: "Error getting links" }
Expand Down
Loading
Loading