mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Minor improvements
This commit is contained in:
		@@ -1,7 +1,7 @@
 | 
			
		||||
package eu.kanade.tachiyomi.data.network
 | 
			
		||||
 | 
			
		||||
import android.net.Uri
 | 
			
		||||
import com.squareup.duktape.Duktape
 | 
			
		||||
import okhttp3.HttpUrl
 | 
			
		||||
import okhttp3.Interceptor
 | 
			
		||||
import okhttp3.Request
 | 
			
		||||
import okhttp3.Response
 | 
			
		||||
@@ -42,8 +42,8 @@ class CloudflareInterceptor(private val cookies: PersistentCookieStore) : Interc
 | 
			
		||||
            val domain = originalRequest.url().host()
 | 
			
		||||
            val content = response.body().string()
 | 
			
		||||
 | 
			
		||||
            // CloudFlare requires waiting 5 seconds before resolving the challenge
 | 
			
		||||
            Thread.sleep(5000)
 | 
			
		||||
            // CloudFlare requires waiting 4 seconds before resolving the challenge
 | 
			
		||||
            Thread.sleep(4000)
 | 
			
		||||
 | 
			
		||||
            val operation = operationPattern.find(content)?.groups?.get(1)?.value
 | 
			
		||||
            val challenge = challengePattern.find(content)?.groups?.get(1)?.value
 | 
			
		||||
@@ -65,10 +65,10 @@ class CloudflareInterceptor(private val cookies: PersistentCookieStore) : Interc
 | 
			
		||||
 | 
			
		||||
            val answer = "${result + domain.length}"
 | 
			
		||||
 | 
			
		||||
            val url = Uri.parse("http://$domain/cdn-cgi/l/chk_jschl").buildUpon()
 | 
			
		||||
                    .appendQueryParameter("jschl_vc", challenge)
 | 
			
		||||
                    .appendQueryParameter("pass", pass)
 | 
			
		||||
                    .appendQueryParameter("jschl_answer", answer)
 | 
			
		||||
            val url = HttpUrl.parse("http://$domain/cdn-cgi/l/chk_jschl").newBuilder()
 | 
			
		||||
                    .addQueryParameter("jschl_vc", challenge)
 | 
			
		||||
                    .addQueryParameter("pass", pass)
 | 
			
		||||
                    .addQueryParameter("jschl_answer", answer)
 | 
			
		||||
                    .toString()
 | 
			
		||||
 | 
			
		||||
            val referer = originalRequest.url().toString()
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import eu.kanade.tachiyomi.data.download.DownloadService
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.model.Download
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
 | 
			
		||||
import eu.kanade.tachiyomi.ui.main.MainActivity
 | 
			
		||||
import eu.kanade.tachiyomi.util.plusAssign
 | 
			
		||||
import eu.kanade.tachiyomi.widget.NpaLinearLayoutManager
 | 
			
		||||
import kotlinx.android.synthetic.main.fragment_download_queue.*
 | 
			
		||||
import nucleus.factory.RequiresPresenter
 | 
			
		||||
@@ -46,9 +47,9 @@ class DownloadFragment : BaseRxFragment<DownloadPresenter>() {
 | 
			
		||||
    private var clearButton: MenuItem? = null
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Subscription list to be cleared during [onPause].
 | 
			
		||||
     * Subscription list to be cleared during [onDestroyView].
 | 
			
		||||
     */
 | 
			
		||||
    private val resumeSubscriptions by lazy { CompositeSubscription() }
 | 
			
		||||
    private val subscriptions by lazy { CompositeSubscription() }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Map of subscriptions for active downloads.
 | 
			
		||||
@@ -94,6 +95,28 @@ class DownloadFragment : BaseRxFragment<DownloadPresenter>() {
 | 
			
		||||
        // Set the layout manager for the recycler and fixed size.
 | 
			
		||||
        recycler.layoutManager = NpaLinearLayoutManager(activity)
 | 
			
		||||
        recycler.setHasFixedSize(true)
 | 
			
		||||
 | 
			
		||||
        // Suscribe to changes
 | 
			
		||||
        subscriptions += presenter.downloadManager.runningSubject
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onQueueStatusChange(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions += presenter.getStatusObservable()
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onStatusChange(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions += presenter.getProgressObservable()
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onUpdateDownloadedPages(it) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onDestroyView() {
 | 
			
		||||
        for (subscription in progressSubscriptions.values) {
 | 
			
		||||
            subscription.unsubscribe()
 | 
			
		||||
        }
 | 
			
		||||
        progressSubscriptions.clear()
 | 
			
		||||
        subscriptions.clear()
 | 
			
		||||
        super.onDestroyView()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
 | 
			
		||||
@@ -131,33 +154,6 @@ class DownloadFragment : BaseRxFragment<DownloadPresenter>() {
 | 
			
		||||
        return true
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onResume() {
 | 
			
		||||
        super.onResume()
 | 
			
		||||
        presenter.downloadManager.runningSubject
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onQueueStatusChange(it) }
 | 
			
		||||
                .apply { resumeSubscriptions.add(this) }
 | 
			
		||||
 | 
			
		||||
        presenter.getStatusObservable()
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onStatusChange(it) }
 | 
			
		||||
                .apply { resumeSubscriptions.add(this) }
 | 
			
		||||
 | 
			
		||||
        presenter.getProgressObservable()
 | 
			
		||||
                .observeOn(AndroidSchedulers.mainThread())
 | 
			
		||||
                .subscribe { onUpdateDownloadedPages(it) }
 | 
			
		||||
                .apply { resumeSubscriptions.add(this) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onPause() {
 | 
			
		||||
        for (subscription in progressSubscriptions.values) {
 | 
			
		||||
            subscription.unsubscribe()
 | 
			
		||||
        }
 | 
			
		||||
        progressSubscriptions.clear()
 | 
			
		||||
        resumeSubscriptions.clear()
 | 
			
		||||
        super.onPause()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Called when the status of a download changes.
 | 
			
		||||
     *
 | 
			
		||||
 
 | 
			
		||||
@@ -240,37 +240,27 @@ class ChaptersFragment : BaseRxFragment<ChaptersPresenter>(), ActionMode.Callbac
 | 
			
		||||
                .negativeText(android.R.string.cancel)
 | 
			
		||||
                .items(modes.map { getString(it) })
 | 
			
		||||
                .itemsCallback { dialog, view, i, charSequence ->
 | 
			
		||||
                    var chapters: MutableList<Chapter> = arrayListOf()
 | 
			
		||||
 | 
			
		||||
                    fun getUnreadChaptersSorted() = presenter.chapters
 | 
			
		||||
                            .filter { !it.read && !it.isDownloaded }
 | 
			
		||||
                            .sortedByDescending { it.source_order }
 | 
			
		||||
 | 
			
		||||
                    // i = 0: Download 1
 | 
			
		||||
                    // i = 1: Download 5
 | 
			
		||||
                    // i = 2: Download 10
 | 
			
		||||
                    // i = 3: Download unread
 | 
			
		||||
                    // i = 4: Download all
 | 
			
		||||
                    for (chapter in presenter.chapters) {
 | 
			
		||||
                        if (!chapter.isDownloaded) {
 | 
			
		||||
                            if (i == 4 || (i != 4 && !chapter.read)) {
 | 
			
		||||
                                chapters.add(chapter)
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    val chaptersToDownload = when (i) {
 | 
			
		||||
                        0 -> getUnreadChaptersSorted().take(1)
 | 
			
		||||
                        1 -> getUnreadChaptersSorted().take(5)
 | 
			
		||||
                        2 -> getUnreadChaptersSorted().take(10)
 | 
			
		||||
                        3 -> presenter.chapters.filter { !it.read }
 | 
			
		||||
                        4 -> presenter.chapters
 | 
			
		||||
                        else -> emptyList()
 | 
			
		||||
                    }
 | 
			
		||||
                    if (chapters.size > 0) {
 | 
			
		||||
                        if (!presenter.sortDescending()) {
 | 
			
		||||
                            chapters.reverse()
 | 
			
		||||
                        }
 | 
			
		||||
                        when (i) {
 | 
			
		||||
                        // Set correct chapters size if desired
 | 
			
		||||
                            0 -> chapters = chapters.subList(0, 1)
 | 
			
		||||
                            1 -> {
 | 
			
		||||
                                if (chapters.size >= 5)
 | 
			
		||||
                                    chapters = chapters.subList(0, 5)
 | 
			
		||||
                            }
 | 
			
		||||
                            2 -> {
 | 
			
		||||
                                if (chapters.size >= 10)
 | 
			
		||||
                                    chapters = chapters.subList(0, 10)
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                        downloadChapters(chapters)
 | 
			
		||||
 | 
			
		||||
                    if (chaptersToDownload.isNotEmpty()) {
 | 
			
		||||
                        downloadChapters(chaptersToDownload)
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                .show()
 | 
			
		||||
 
 | 
			
		||||
@@ -114,13 +114,13 @@ class MangaInfoFragment : BaseRxFragment<MangaInfoPresenter>() {
 | 
			
		||||
 | 
			
		||||
        // Set cover if it wasn't already.
 | 
			
		||||
        if (manga_cover.drawable == null && !manga.thumbnail_url.isNullOrEmpty()) {
 | 
			
		||||
            Glide.with(context)
 | 
			
		||||
            Glide.with(this)
 | 
			
		||||
                    .load(manga)
 | 
			
		||||
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
 | 
			
		||||
                    .centerCrop()
 | 
			
		||||
                    .into(manga_cover)
 | 
			
		||||
 | 
			
		||||
            Glide.with(context)
 | 
			
		||||
            Glide.with(this)
 | 
			
		||||
                    .load(manga)
 | 
			
		||||
                    .diskCacheStrategy(DiskCacheStrategy.RESULT)
 | 
			
		||||
                    .centerCrop()
 | 
			
		||||
 
 | 
			
		||||
@@ -29,6 +29,7 @@ import eu.kanade.tachiyomi.ui.reader.viewer.pager.vertical.VerticalReader
 | 
			
		||||
import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonReader
 | 
			
		||||
import eu.kanade.tachiyomi.util.GLUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.SharedData
 | 
			
		||||
import eu.kanade.tachiyomi.util.plusAssign
 | 
			
		||||
import eu.kanade.tachiyomi.util.toast
 | 
			
		||||
import eu.kanade.tachiyomi.widget.SimpleAnimationListener
 | 
			
		||||
import eu.kanade.tachiyomi.widget.SimpleSeekBarListener
 | 
			
		||||
@@ -451,10 +452,10 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun initializeSettings() {
 | 
			
		||||
        subscriptions.add(preferences.showPageNumber().asObservable()
 | 
			
		||||
                .subscribe { setPageNumberVisibility(it) })
 | 
			
		||||
        subscriptions += preferences.showPageNumber().asObservable()
 | 
			
		||||
                .subscribe { setPageNumberVisibility(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions.add(preferences.rotation().asObservable()
 | 
			
		||||
        subscriptions += preferences.rotation().asObservable()
 | 
			
		||||
                .subscribe {
 | 
			
		||||
                    setRotation(it)
 | 
			
		||||
 | 
			
		||||
@@ -468,20 +469,20 @@ class ReaderActivity : BaseRxActivity<ReaderPresenter>() {
 | 
			
		||||
                        R.drawable.ic_screen_lock_landscape_white_24dp
 | 
			
		||||
 | 
			
		||||
                    lock_orientation.setImageResource(resourceId)
 | 
			
		||||
                })
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
        subscriptions.add(preferences.hideStatusBar().asObservable()
 | 
			
		||||
                .subscribe { setStatusBarVisibility(it) })
 | 
			
		||||
        subscriptions += preferences.hideStatusBar().asObservable()
 | 
			
		||||
                .subscribe { setStatusBarVisibility(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions.add(preferences.keepScreenOn().asObservable()
 | 
			
		||||
                .subscribe { setKeepScreenOn(it) })
 | 
			
		||||
        subscriptions += preferences.keepScreenOn().asObservable()
 | 
			
		||||
                .subscribe { setKeepScreenOn(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions.add(preferences.customBrightness().asObservable()
 | 
			
		||||
                .subscribe { setCustomBrightness(it) })
 | 
			
		||||
        subscriptions += preferences.customBrightness().asObservable()
 | 
			
		||||
                .subscribe { setCustomBrightness(it) }
 | 
			
		||||
 | 
			
		||||
        subscriptions.add(preferences.readerTheme().asObservable()
 | 
			
		||||
        subscriptions += preferences.readerTheme().asObservable()
 | 
			
		||||
                .distinctUntilChanged()
 | 
			
		||||
                .subscribe { applyTheme(it) })
 | 
			
		||||
                .subscribe { applyTheme(it) }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private fun setRotation(rotation: Int) {
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,8 @@
 | 
			
		||||
package eu.kanade.tachiyomi.util
 | 
			
		||||
 | 
			
		||||
import rx.Subscription
 | 
			
		||||
import rx.subscriptions.CompositeSubscription
 | 
			
		||||
 | 
			
		||||
fun Subscription?.isNullOrUnsubscribed() = this == null || isUnsubscribed
 | 
			
		||||
 | 
			
		||||
operator fun CompositeSubscription.plusAssign(subscription: Subscription) = add(subscription)
 | 
			
		||||
		Reference in New Issue
	
	Block a user