mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Fix #636. Minor improvements. Dependency updates
This commit is contained in:
		| @@ -22,8 +22,6 @@ interface Track : Serializable { | ||||
|  | ||||
|     var status: Int | ||||
|  | ||||
|     var update: Boolean | ||||
|  | ||||
|     fun copyPersonalFrom(other: Track) { | ||||
|         last_chapter_read = other.last_chapter_read | ||||
|         score = other.score | ||||
|   | ||||
| @@ -20,8 +20,6 @@ class TrackImpl : Track { | ||||
|  | ||||
|     override var status: Int = 0 | ||||
|  | ||||
|     override var update: Boolean = false | ||||
|  | ||||
|     override fun equals(other: Any?): Boolean { | ||||
|         if (this === other) return true | ||||
|         if (other == null || javaClass != other.javaClass) return false | ||||
|   | ||||
| @@ -1,74 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.data.track | ||||
|  | ||||
| import android.app.Service | ||||
| import android.content.Context | ||||
| import android.content.Intent | ||||
| import android.os.IBinder | ||||
| import eu.kanade.tachiyomi.data.database.DatabaseHelper | ||||
| import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import rx.Observable | ||||
| import rx.android.schedulers.AndroidSchedulers | ||||
| import rx.schedulers.Schedulers | ||||
| import rx.subscriptions.CompositeSubscription | ||||
| import uy.kohesive.injekt.injectLazy | ||||
|  | ||||
| class TrackUpdateService : Service() { | ||||
|  | ||||
|     val trackManager: TrackManager by injectLazy() | ||||
|     val db: DatabaseHelper by injectLazy() | ||||
|  | ||||
|     private lateinit var subscriptions: CompositeSubscription | ||||
|  | ||||
|     override fun onCreate() { | ||||
|         super.onCreate() | ||||
|         subscriptions = CompositeSubscription() | ||||
|     } | ||||
|  | ||||
|     override fun onDestroy() { | ||||
|         subscriptions.unsubscribe() | ||||
|         super.onDestroy() | ||||
|     } | ||||
|  | ||||
|     override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int { | ||||
|         val track = intent.getSerializableExtra(EXTRA_TRACK) | ||||
|         if (track != null) { | ||||
|             updateLastChapterRead(track as Track, startId) | ||||
|             return Service.START_REDELIVER_INTENT | ||||
|         } else { | ||||
|             stopSelf(startId) | ||||
|             return Service.START_NOT_STICKY | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun onBind(intent: Intent): IBinder? { | ||||
|         return null | ||||
|     } | ||||
|  | ||||
|     private fun updateLastChapterRead(track: Track, startId: Int) { | ||||
|         val sync = trackManager.getService(track.sync_id) | ||||
|         if (sync == null) { | ||||
|             stopSelf(startId) | ||||
|             return | ||||
|         } | ||||
|  | ||||
|         subscriptions.add(Observable.defer { sync.update(track) } | ||||
|                 .flatMap { db.insertTrack(track).asRxObservable() } | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe({ stopSelf(startId) }, | ||||
|                         { stopSelf(startId) })) | ||||
|     } | ||||
|  | ||||
|     companion object { | ||||
|  | ||||
|         private val EXTRA_TRACK = "extra_track" | ||||
|  | ||||
|         @JvmStatic | ||||
|         fun start(context: Context, track: Track) { | ||||
|             val intent = Intent(context, TrackUpdateService::class.java) | ||||
|             intent.putExtra(EXTRA_TRACK, track) | ||||
|             context.startService(intent) | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
| @@ -45,7 +45,7 @@ class TrackFragment : BaseRxFragment<TrackPresenter>() { | ||||
|  | ||||
|     private fun findSearchFragmentIfNeeded() { | ||||
|         if (dialog == null) { | ||||
|             dialog = childFragmentManager.findFragmentByTag(searchFragmentTag) as TrackSearchDialog | ||||
|             dialog = childFragmentManager.findFragmentByTag(searchFragmentTag) as? TrackSearchDialog | ||||
|         } | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -171,11 +171,11 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() { | ||||
|                         .content(getString(R.string.confirm_update_manga_sync, chapterToUpdate)) | ||||
|                         .positiveText(android.R.string.yes) | ||||
|                         .negativeText(android.R.string.no) | ||||
|                         .onPositive { dialog, which -> presenter.updateTrackLastChapterRead() } | ||||
|                         .onPositive { dialog, which -> presenter.updateTrackLastChapterRead(chapterToUpdate) } | ||||
|                         .onAny { dialog1, which1 -> super.onBackPressed() } | ||||
|                         .show() | ||||
|             } else { | ||||
|                 presenter.updateTrackLastChapterRead() | ||||
|                 presenter.updateTrackLastChapterRead(chapterToUpdate) | ||||
|                 super.onBackPressed() | ||||
|             } | ||||
|         } else { | ||||
|   | ||||
| @@ -14,7 +14,6 @@ import eu.kanade.tachiyomi.data.database.models.Track | ||||
| import eu.kanade.tachiyomi.data.download.DownloadManager | ||||
| import eu.kanade.tachiyomi.data.preference.PreferencesHelper | ||||
| import eu.kanade.tachiyomi.data.track.TrackManager | ||||
| import eu.kanade.tachiyomi.data.track.TrackUpdateService | ||||
| import eu.kanade.tachiyomi.source.LocalSource | ||||
| import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.source.model.Page | ||||
| @@ -452,27 +451,31 @@ class ReaderPresenter : BasePresenter<ReaderActivity>() { | ||||
|             Math.floor(chapter.chapter_number.toDouble()).toInt() | ||||
|         else if (prevChapter != null && prevChapter.read) | ||||
|             Math.floor(prevChapter.chapter_number.toDouble()).toInt() | ||||
|         else | ||||
|             return 0 | ||||
|  | ||||
|         return if (trackList.any { lastChapterRead > it.last_chapter_read }) | ||||
|             lastChapterRead | ||||
|         else | ||||
|             0 | ||||
|  | ||||
|         trackList.forEach { sync -> | ||||
|             if (lastChapterRead > sync.last_chapter_read) { | ||||
|                 sync.last_chapter_read = lastChapterRead | ||||
|                 sync.update = true | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return if (trackList.any { it.update }) lastChapterRead else 0 | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Starts the service that updates the last chapter read in sync services | ||||
|      */ | ||||
|     fun updateTrackLastChapterRead() { | ||||
|         trackList?.forEach { sync -> | ||||
|             val service = trackManager.getService(sync.sync_id) | ||||
|             if (service != null && service.isLogged && sync.update) { | ||||
|                 TrackUpdateService.start(context, sync) | ||||
|     fun updateTrackLastChapterRead(lastChapterRead: Int) { | ||||
|         trackList?.forEach { track -> | ||||
|             val service = trackManager.getService(track.sync_id) | ||||
|             if (service != null && service.isLogged && lastChapterRead > track.last_chapter_read) { | ||||
|                 track.last_chapter_read = lastChapterRead | ||||
|  | ||||
|                 // We wan't these to execute even if the presenter is destroyed and leaks for a | ||||
|                 // while. The view can still be garbage collected. | ||||
|                 Observable.defer { service.update(track) } | ||||
|                         .map { db.insertTrack(track).executeAsBlocking() } | ||||
|                         .subscribeOn(Schedulers.io()) | ||||
|                         .observeOn(AndroidSchedulers.mainThread()) | ||||
|                         .subscribe({}, { Timber.e(it) }) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -1,9 +1,10 @@ | ||||
| package eu.kanade.tachiyomi.ui.recent_updates | ||||
|  | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
|  | ||||
| class RecentChaptersAdapter(val fragment: RecentChaptersFragment) : | ||||
|         FlexibleAdapter<RecentChapterItem>(null, fragment, true) { | ||||
|         FlexibleAdapter<IFlexible<*>>(null, fragment, true) { | ||||
|  | ||||
|     init { | ||||
|         setDisplayHeadersAtStartUp(true) | ||||
|   | ||||
| @@ -9,6 +9,7 @@ import android.support.v7.widget.RecyclerView | ||||
| import android.view.* | ||||
| import com.afollestad.materialdialogs.MaterialDialog | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.data.download.model.Download | ||||
| import eu.kanade.tachiyomi.data.library.LibraryUpdateService | ||||
| @@ -116,7 +117,7 @@ class RecentChaptersFragment: | ||||
|      * @return list of selected chapters | ||||
|      */ | ||||
|     fun getSelectedChapters(): List<RecentChapterItem> { | ||||
|         return adapter.selectedPositions.mapNotNull { adapter.getItem(it) } | ||||
|         return adapter.selectedPositions.mapNotNull { adapter.getItem(it) as? RecentChapterItem } | ||||
|     } | ||||
|  | ||||
|     /** | ||||
| @@ -125,7 +126,7 @@ class RecentChaptersFragment: | ||||
|      */ | ||||
|     override fun onItemClick(position: Int): Boolean { | ||||
|         // Get item from position | ||||
|         val item = adapter.getItem(position) | ||||
|         val item = adapter.getItem(position) as? RecentChapterItem ?: return false | ||||
|         if (actionMode != null && adapter.mode == FlexibleAdapter.MODE_MULTI) { | ||||
|             toggleSelection(position) | ||||
|             return true | ||||
| @@ -183,7 +184,7 @@ class RecentChaptersFragment: | ||||
|      * Populate adapter with chapters | ||||
|      * @param chapters list of [Any] | ||||
|      */ | ||||
|     fun onNextRecentChapters(chapters: List<RecentChapterItem>) { | ||||
|     fun onNextRecentChapters(chapters: List<IFlexible<*>>) { | ||||
|         (activity as MainActivity).updateEmptyView(chapters.isEmpty(), | ||||
|                 R.string.information_no_recent, R.drawable.ic_update_black_128dp) | ||||
|  | ||||
| @@ -291,6 +292,8 @@ class RecentChaptersFragment: | ||||
|      * @param item item from ActionMode. | ||||
|      */ | ||||
|     override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean { | ||||
|         if (!isAdded) return true | ||||
|  | ||||
|         when (item.itemId) { | ||||
|             R.id.action_mark_as_read -> markAsRead(getSelectedChapters()) | ||||
|             R.id.action_mark_as_unread -> markAsUnread(getSelectedChapters()) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user