Skip to content

Commit

Permalink
Merge pull request #17 from Dark25/master-1
Browse files Browse the repository at this point in the history
Master 1
  • Loading branch information
Dark25 authored Dec 18, 2023
2 parents d5bdead + 8bddea7 commit a73e97c
Show file tree
Hide file tree
Showing 328 changed files with 2,973 additions and 2,620 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build_pull_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
uses: actions/dependency-review-action@v3

- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build_push.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
uses: gradle/wrapper-validation-action@v1

- name: Set up JDK
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
java-version: 17
distribution: adopt
Expand Down
1 change: 0 additions & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,6 @@ dependencies {

// RxJava
implementation(libs.rxjava)
implementation(libs.flowreactivenetwork)

// Networking
implementation(libs.bundles.okhttp)
Expand Down
16 changes: 9 additions & 7 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.READ_APP_SPECIFIC_LOCALES" />

<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />

<application
android:name=".App"
Expand Down Expand Up @@ -230,11 +231,7 @@
android:exported="false" />

<service
android:name=".data.download.manga.MangaDownloadService"
android:exported="false" />

<service
android:name=".data.download.anime.AnimeDownloadService"
android:name=".extension.util.ExtensionInstallService"
android:exported="false" />

<service
Expand All @@ -253,6 +250,11 @@
android:value="true" />
</service>

<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="dataSync"
tools:node="merge" />

<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
Expand Down
10 changes: 4 additions & 6 deletions app/src/main/java/eu/kanade/core/preference/CheckboxState.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,8 @@ package eu.kanade.core.preference
import androidx.compose.ui.state.ToggleableState
import tachiyomi.core.preference.CheckboxState

fun <T> CheckboxState.TriState<T>.asToggleableState(): ToggleableState {
return when (this) {
is CheckboxState.TriState.Exclude -> ToggleableState.Indeterminate
is CheckboxState.TriState.Include -> ToggleableState.On
is CheckboxState.TriState.None -> ToggleableState.Off
}
fun <T> CheckboxState.TriState<T>.asToggleableState(): ToggleableState = when (this) {
is CheckboxState.TriState.Exclude -> ToggleableState.Indeterminate
is CheckboxState.TriState.Include -> ToggleableState.On
is CheckboxState.TriState.None -> ToggleableState.Off
}
4 changes: 2 additions & 2 deletions app/src/main/java/eu/kanade/domain/DomainModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ import eu.kanade.domain.source.anime.interactor.GetEnabledAnimeSources
import eu.kanade.domain.source.anime.interactor.GetLanguagesWithAnimeSources
import eu.kanade.domain.source.anime.interactor.ToggleAnimeSource
import eu.kanade.domain.source.anime.interactor.ToggleAnimeSourcePin
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.domain.source.interactor.ToggleLanguage
import eu.kanade.domain.source.manga.interactor.GetEnabledMangaSources
import eu.kanade.domain.source.manga.interactor.GetLanguagesWithMangaSources
import eu.kanade.domain.source.manga.interactor.GetMangaSourcesWithFavoriteCount
import eu.kanade.domain.source.manga.interactor.ToggleMangaSource
import eu.kanade.domain.source.manga.interactor.ToggleMangaSourcePin
import eu.kanade.domain.source.service.SetMigrateSorting
import eu.kanade.domain.source.service.ToggleLanguage
import eu.kanade.domain.track.anime.interactor.AddAnimeTracks
import eu.kanade.domain.track.anime.interactor.RefreshAnimeTracks
import eu.kanade.domain.track.anime.interactor.SyncEpisodeProgressWithTrack
Expand Down
2 changes: 2 additions & 0 deletions app/src/main/java/eu/kanade/domain/base/BasePreferences.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ class BasePreferences(
PackageManager.FEATURE_PICTURE_IN_PICTURE,
)

fun shownOnboardingFlow() = preferenceStore.getBoolean(Preference.appStateKey("onboarding_complete"), false)

enum class ExtensionInstaller(val titleRes: StringResource) {
LEGACY(MR.strings.ext_installer_legacy),
PACKAGEINSTALLER(MR.strings.ext_installer_packageinstaller),
Expand Down
15 changes: 0 additions & 15 deletions app/src/main/java/eu/kanade/domain/entries/TriStateFilter.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import tachiyomi.domain.entries.anime.repository.AnimeRepository
import tachiyomi.source.local.entries.anime.isLocal
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.time.Instant
import java.time.ZonedDateTime
import java.util.Date

class UpdateAnime(
private val animeRepository: AnimeRepository,
Expand Down Expand Up @@ -46,14 +46,14 @@ class UpdateAnime(
// Never refresh covers if the url is empty to avoid "losing" existing covers
remoteAnime.thumbnail_url.isNullOrEmpty() -> null
!manualFetch && localAnime.thumbnailUrl == remoteAnime.thumbnail_url -> null
localAnime.isLocal() -> Date().time
localAnime.isLocal() -> Instant.now().toEpochMilli()
localAnime.hasCustomCover(coverCache) -> {
coverCache.deleteFromCache(localAnime, false)
null
}
else -> {
coverCache.deleteFromCache(localAnime, false)
Date().time
Instant.now().toEpochMilli()
}
}

Expand Down Expand Up @@ -87,18 +87,18 @@ class UpdateAnime(
}

suspend fun awaitUpdateLastUpdate(animeId: Long): Boolean {
return animeRepository.updateAnime(AnimeUpdate(id = animeId, lastUpdate = Date().time))
return animeRepository.updateAnime(AnimeUpdate(id = animeId, lastUpdate = Instant.now().toEpochMilli()))
}

suspend fun awaitUpdateCoverLastModified(mangaId: Long): Boolean {
return animeRepository.updateAnime(
AnimeUpdate(id = mangaId, coverLastModified = Date().time),
AnimeUpdate(id = mangaId, coverLastModified = Instant.now().toEpochMilli()),
)
}

suspend fun awaitUpdateFavorite(animeId: Long, favorite: Boolean): Boolean {
val dateAdded = when (favorite) {
true -> Date().time
true -> Instant.now().toEpochMilli()
false -> 0
}
return animeRepository.updateAnime(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import tachiyomi.domain.entries.anime.model.Anime
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get

// TODO: move these into the domain model
val Anime.downloadedFilter: TriState
get() {
if (forceDownloaded()) return TriState.ENABLED_IS
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import tachiyomi.domain.entries.manga.repository.MangaRepository
import tachiyomi.source.local.entries.manga.isLocal
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.time.Instant
import java.time.ZonedDateTime
import java.util.Date

class UpdateManga(
private val mangaRepository: MangaRepository,
Expand Down Expand Up @@ -46,14 +46,14 @@ class UpdateManga(
// Never refresh covers if the url is empty to avoid "losing" existing covers
remoteManga.thumbnail_url.isNullOrEmpty() -> null
!manualFetch && localManga.thumbnailUrl == remoteManga.thumbnail_url -> null
localManga.isLocal() -> Date().time
localManga.isLocal() -> Instant.now().toEpochMilli()
localManga.hasCustomCover(coverCache) -> {
coverCache.deleteFromCache(localManga, false)
null
}
else -> {
coverCache.deleteFromCache(localManga, false)
Date().time
Instant.now().toEpochMilli()
}
}

Expand Down Expand Up @@ -87,18 +87,16 @@ class UpdateManga(
}

suspend fun awaitUpdateLastUpdate(mangaId: Long): Boolean {
return mangaRepository.updateManga(MangaUpdate(id = mangaId, lastUpdate = Date().time))
return mangaRepository.updateManga(MangaUpdate(id = mangaId, lastUpdate = Instant.now().toEpochMilli()))
}

suspend fun awaitUpdateCoverLastModified(mangaId: Long): Boolean {
return mangaRepository.updateManga(
MangaUpdate(id = mangaId, coverLastModified = Date().time),
)
return mangaRepository.updateManga(MangaUpdate(id = mangaId, coverLastModified = Instant.now().toEpochMilli()))
}

suspend fun awaitUpdateFavorite(mangaId: Long, favorite: Boolean): Boolean {
val dateAdded = when (favorite) {
true -> Date().time
true -> Instant.now().toEpochMilli()
false -> 0
}
return mangaRepository.updateManga(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ import tachiyomi.domain.items.chapter.repository.ChapterRepository
import tachiyomi.domain.items.chapter.service.ChapterRecognition
import tachiyomi.source.local.entries.manga.isLocal
import java.lang.Long.max
import java.time.Instant
import java.time.ZonedDateTime
import java.util.Date
import java.util.TreeSet

class SyncChaptersWithSource(
Expand Down Expand Up @@ -83,7 +83,7 @@ class SyncChaptersWithSource(
}
}

val rightNow = Date().time
val rightNow = Instant.now().toEpochMilli()

// Used to not set upload date of older chapters
// to a higher value than newer chapters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ import tachiyomi.domain.items.episode.repository.EpisodeRepository
import tachiyomi.domain.items.episode.service.EpisodeRecognition
import tachiyomi.source.local.entries.anime.isLocal
import java.lang.Long.max
import java.time.Instant
import java.time.ZonedDateTime
import java.util.Date
import java.util.TreeSet

class SyncEpisodesWithSource(
Expand Down Expand Up @@ -81,7 +81,7 @@ class SyncEpisodesWithSource(
}
}

val rightNow = Date().time
val rightNow = Instant.now().toEpochMilli()

// Used to not set upload date of older episodes
// to a higher value than newer episodes
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package eu.kanade.domain.source.anime.interactor

import eu.kanade.domain.source.service.SetMigrateSorting
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
package eu.kanade.domain.source.service
package eu.kanade.domain.source.interactor

import eu.kanade.domain.source.service.SourcePreferences

class SetMigrateSorting(
private val preferences: SourcePreferences,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package eu.kanade.domain.source.service
package eu.kanade.domain.source.interactor

import eu.kanade.domain.source.service.SourcePreferences
import tachiyomi.core.preference.getAndSet

class ToggleLanguage(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package eu.kanade.domain.source.manga.interactor

import eu.kanade.domain.source.service.SetMigrateSorting
import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.domain.source.service.SourcePreferences
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package eu.kanade.domain.source.service

import eu.kanade.domain.source.interactor.SetMigrateSorting
import eu.kanade.tachiyomi.util.system.LocaleHelper
import tachiyomi.core.preference.Preference
import tachiyomi.core.preference.PreferenceStore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,8 @@ import eu.kanade.tachiyomi.data.track.TrackerManager
import eu.kanade.tachiyomi.util.system.isOnline
import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.coroutineScope
import logcat.LogPriority
import tachiyomi.core.util.lang.launchNonCancellable
import tachiyomi.core.util.lang.withNonCancellableContext
import tachiyomi.core.util.system.logcat
import tachiyomi.domain.track.anime.interactor.GetAnimeTracks
import tachiyomi.domain.track.anime.interactor.InsertAnimeTrack
Expand All @@ -23,11 +22,10 @@ class TrackEpisode(
private val delayedTrackingStore: DelayedAnimeTrackingStore,
) {

suspend fun await(context: Context, animeId: Long, episodeNumber: Double) = coroutineScope {
launchNonCancellable {
suspend fun await(context: Context, animeId: Long, episodeNumber: Double) {
withNonCancellableContext {
val tracks = getTracks.await(animeId)

if (tracks.isEmpty()) return@launchNonCancellable
if (tracks.isEmpty()) return@withNonCancellableContext

tracks.mapNotNull { track ->
val service = trackerManager.get(track.syncId)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ fun AnimeTrack.copyPersonalFrom(other: AnimeTrack): AnimeTrack {
)
}

fun AnimeTrack.toDbTrack(): DbAnimeTrack = eu.kanade.tachiyomi.data.database.models.anime.AnimeTrack.create(
syncId,
).also {
fun AnimeTrack.toDbTrack(): DbAnimeTrack = DbAnimeTrack.create(syncId).also {
it.id = id
it.anime_id = animeId
it.media_id = remoteId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ class DelayedAnimeTrackingStore(context: Context) {
private val preferences = context.getSharedPreferences("tracking_queue", Context.MODE_PRIVATE)

fun addAnime(trackId: Long, lastEpisodeSeen: Double) {
val previousLastChapterRead = preferences.getFloat(trackId.toString(), 0f)
if (lastEpisodeSeen > previousLastChapterRead) {
val previousLastEpisodeSeen = preferences.getFloat(trackId.toString(), 0f)
if (lastEpisodeSeen > previousLastEpisodeSeen) {
logcat(LogPriority.DEBUG) { "Queuing track item: $trackId, last episode seen: $lastEpisodeSeen" }
preferences.edit {
putFloat(trackId.toString(), lastEpisodeSeen.toFloat())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ class TrackChapter(
suspend fun await(context: Context, mangaId: Long, chapterNumber: Double) {
withNonCancellableContext {
val tracks = getTracks.await(mangaId)

if (tracks.isEmpty()) return@withNonCancellableContext

tracks.mapNotNull { track ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,7 @@ fun MangaTrack.copyPersonalFrom(other: MangaTrack): MangaTrack {
)
}

fun MangaTrack.toDbTrack(): DbMangaTrack = eu.kanade.tachiyomi.data.database.models.manga.MangaTrack.create(
syncId,
).also {
fun MangaTrack.toDbTrack(): DbMangaTrack = DbMangaTrack.create(syncId).also {
it.id = id
it.manga_id = mangaId
it.media_id = remoteId
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ import tachiyomi.core.util.system.logcat
import tachiyomi.domain.track.manga.interactor.GetMangaTracks
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import kotlin.time.Duration.Companion.minutes
import kotlin.time.toJavaDuration
import java.util.concurrent.TimeUnit

class DelayedMangaTrackingUpdateJob(private val context: Context, workerParams: WorkerParameters) :
CoroutineWorker(context, workerParams) {
Expand Down Expand Up @@ -63,7 +62,7 @@ class DelayedMangaTrackingUpdateJob(private val context: Context, workerParams:

val request = OneTimeWorkRequestBuilder<DelayedMangaTrackingUpdateJob>()
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 5.minutes.toJavaDuration())
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 5, TimeUnit.MINUTES)
.addTag(TAG)
.build()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import eu.kanade.presentation.library.CommonEntryItemDefaults
import eu.kanade.presentation.library.EntryComfortableGridItem
import eu.kanade.presentation.library.components.CommonEntryItemDefaults
import eu.kanade.presentation.library.components.EntryComfortableGridItem
import tachiyomi.domain.entries.EntryCover

@Composable
Expand Down
Loading

0 comments on commit a73e97c

Please sign in to comment.