Add push to mangadex

(cherry picked from commit 869f24f2092c761bc2a7bf075784bc8b7cbaea23)

# Conflicts:
#	app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt
#	app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt
#	app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsSiteController.kt
#	app/src/main/res/values/strings_neko.xml
This commit is contained in:
Carlos 2020-09-22 15:51:41 -04:00 committed by Jobobby04
parent c789203ff8
commit 0b6f7c5e23
3 changed files with 55 additions and 3 deletions

View File

@ -27,6 +27,7 @@ import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.all.MangaDex
import eu.kanade.tachiyomi.source.online.all.MergedSource
import eu.kanade.tachiyomi.ui.library.LibraryGroup
import eu.kanade.tachiyomi.ui.manga.track.TrackItem
import eu.kanade.tachiyomi.util.chapter.NoChaptersException
import eu.kanade.tachiyomi.util.chapter.syncChaptersWithSource
import eu.kanade.tachiyomi.util.prepUpdateCover
@ -92,7 +93,8 @@ class LibraryUpdateService(
COVERS, // Manga covers
TRACKING, // Tracking metadata
// SY -->
SYNC_FOLLOWS // MangaDex specific, pull mangadex manga in reading, rereading
SYNC_FOLLOWS, // MangaDex specific, pull mangadex manga in reading, rereading
PUSH_FAVORITES // MangaDex specific, push mangadex manga to mangadex
// SY <--
}
@ -225,6 +227,7 @@ class LibraryUpdateService(
Target.TRACKING -> updateTrackings(mangaList)
// SY -->
Target.SYNC_FOLLOWS -> syncFollows()
Target.PUSH_FAVORITES -> pushFavorites()
// SY <--
}
}
@ -581,6 +584,40 @@ class LibraryUpdateService(
}
.map { LibraryManga() }
}
/**
* Method that updates the all mangas which are not tracked as "reading" on mangadex
*/
private fun pushFavorites(): Observable<LibraryManga> {
val count = AtomicInteger(0)
val listManga = db.getLibraryMangas().executeAsBlocking()
// filter all follows from Mangadex and only add reading or rereading manga to library
return Observable.from(if (trackManager.mdList.isLogged) listManga else emptyList())
.flatMap { manga ->
notifier.showProgressNotification(manga, count.andIncrement, listManga.size)
// Get this manga's trackers from the database
val dbTracks = db.getTracks(manga).executeAsBlocking()
//find the mdlist entry if its unfollowed the follow it
val tracker = TrackItem(dbTracks.firstOrNull { it.sync_id == TrackManager.MDLIST } ?: trackManager.mdList.createInitialTracker(manga), trackManager.mdList)
if (tracker.track?.status == FollowStatus.UNFOLLOWED.int) {
tracker.track.status = FollowStatus.READING.int
tracker.service.update(tracker.track)
} else Observable.just(null)
}
.doOnNext { returnedTracker ->
returnedTracker?.let {
db.insertTrack(returnedTracker)
}
}
.doOnCompleted {
notifier.cancelProgressNotification()
}
.map { LibraryManga() }
}
// SY <--
/**

View File

@ -79,6 +79,18 @@ class SettingsMangaDexController :
)
}
}
preference {
titleRes = R.string.mangadex_push_favorites_to_mangadex
summaryRes = R.string.mangadex_push_favorites_to_mangadex_summary
onClick {
LibraryUpdateService.start(
context,
target = LibraryUpdateService.Target.PUSH_FAVORITES
)
}
}
}
override fun siteLoginDialogClosed(source: Source) {

View File

@ -547,8 +547,8 @@
<!-- MangaDex -->
<string name="md_follows_unfollowed">Unfollowed</string>
<string name="mangadex_specific_settings">MangaDex settings</string>
<string name="mangadex_sync_follows_to_library">Sync Mangadex manga into your library</string>
<string name="mangadex_sync_follows_to_library_summary">Pulls reading/rereading manga from Mangadex into your library</string>
<string name="mangadex_sync_follows_to_library">Sync Mangadex manga to your library</string>
<string name="mangadex_sync_follows_to_library_summary">Pulls reading/rereading manga from MangaDex into your library if they are not already added.</string>
<string name="mangadex_low_quality_covers">Use low quality thumbnails</string>
<string name="mangadex_use_latest_cover">Use latest uploaded cover</string>
<string name="mangadex_use_latest_cover_summary">When enabled, it uses the latest uploaded manga cover under the /covers url instead of using the cover on MangaDex\'s manga page</string>
@ -559,5 +559,8 @@
<string name="mangadex_add_to_follows">Add to MangaDex follows</string>
<string name="mangadex_follows">MangaDex follows</string>
<string name="random">Random</string>
<string name="mangadex_push_favorites_to_mangadex">Sync library manga to MangaDex</string>
<string name="mangadex_push_favorites_to_mangadex_summary">Syncs any non MdList tracked manga to MangaDex as reading.</string>
<string name="mangadex_push_favorites_to_mangadex_toast">Pushed %d manga to MangaDex</string>
</resources>