mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Include minor changes from extensions PR
This commit is contained in:
		@@ -28,11 +28,11 @@ open class App : Application() {
 | 
			
		||||
 | 
			
		||||
    override fun onCreate() {
 | 
			
		||||
        super.onCreate()
 | 
			
		||||
        if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
 | 
			
		||||
 | 
			
		||||
        Injekt = InjektScope(DefaultRegistrar())
 | 
			
		||||
        Injekt.importModule(AppModule(this))
 | 
			
		||||
 | 
			
		||||
        if (BuildConfig.DEBUG) Timber.plant(Timber.DebugTree())
 | 
			
		||||
 | 
			
		||||
        setupAcra()
 | 
			
		||||
        setupJobManager()
 | 
			
		||||
        setupNotificationChannels()
 | 
			
		||||
 
 | 
			
		||||
@@ -18,16 +18,6 @@ class NetworkHelper(context: Context) {
 | 
			
		||||
            .cache(Cache(cacheDir, cacheSize))
 | 
			
		||||
            .build()
 | 
			
		||||
 | 
			
		||||
    val forceCacheClient = client.newBuilder()
 | 
			
		||||
            .addNetworkInterceptor { chain ->
 | 
			
		||||
                val originalResponse = chain.proceed(chain.request())
 | 
			
		||||
                originalResponse.newBuilder()
 | 
			
		||||
                        .removeHeader("Pragma")
 | 
			
		||||
                        .header("Cache-Control", "max-age=600")
 | 
			
		||||
                        .build()
 | 
			
		||||
            }
 | 
			
		||||
            .build()
 | 
			
		||||
 | 
			
		||||
    val cloudflareClient = client.newBuilder()
 | 
			
		||||
            .addInterceptor(CloudflareInterceptor())
 | 
			
		||||
            .build()
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.base.presenter
 | 
			
		||||
 | 
			
		||||
import nucleus.presenter.RxPresenter
 | 
			
		||||
import nucleus.presenter.delivery.Delivery
 | 
			
		||||
import rx.Observable
 | 
			
		||||
 | 
			
		||||
open class BasePresenter<V> : RxPresenter<V>() {
 | 
			
		||||
@@ -35,4 +36,29 @@ open class BasePresenter<V> : RxPresenter<V>() {
 | 
			
		||||
    fun <T> Observable<T>.subscribeReplay(onNext: (V, T) -> Unit, onError: ((V, Throwable) -> Unit)? = null)
 | 
			
		||||
            = compose(deliverReplay<T>()).subscribe(split(onNext, onError)).apply { add(this) }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Subscribes an observable with [DeliverWithView] and adds it to the presenter's lifecycle
 | 
			
		||||
     * subscription list.
 | 
			
		||||
     *
 | 
			
		||||
     * @param onNext function to execute when the observable emits an item.
 | 
			
		||||
     * @param onError function to execute when the observable throws an error.
 | 
			
		||||
     */
 | 
			
		||||
    fun <T> Observable<T>.subscribeWithView(onNext: (V, T) -> Unit, onError: ((V, Throwable) -> Unit)? = null)
 | 
			
		||||
            = compose(DeliverWithView<V, T>(view())).subscribe(split(onNext, onError)).apply { add(this) }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * A deliverable that only emits to the view if attached, otherwise the event is ignored.
 | 
			
		||||
     */
 | 
			
		||||
    class DeliverWithView<View, T>(private val view: Observable<View>) : Observable.Transformer<T, Delivery<View, T>> {
 | 
			
		||||
 | 
			
		||||
        override fun call(observable: Observable<T>): Observable<Delivery<View, T>> {
 | 
			
		||||
            return observable
 | 
			
		||||
                    .materialize()
 | 
			
		||||
                    .filter { notification -> !notification.isOnCompleted }
 | 
			
		||||
                    .flatMap { notification ->
 | 
			
		||||
                        view.take(1).filter { it != null }.map { Delivery(it, notification) }
 | 
			
		||||
                    }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -46,7 +46,7 @@ class CatalogueController : NucleusController<CataloguePresenter>(),
 | 
			
		||||
    /**
 | 
			
		||||
     * Adapter containing sources.
 | 
			
		||||
     */
 | 
			
		||||
    private var adapter : CatalogueAdapter? = null
 | 
			
		||||
    private var adapter: CatalogueAdapter? = null
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Called when controller is initialized.
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ class SourceDividerItemDecoration(context: Context) : RecyclerView.ItemDecoratio
 | 
			
		||||
    private val divider: Drawable
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        val a = context.obtainStyledAttributes(ATTRS)
 | 
			
		||||
        val a = context.obtainStyledAttributes(intArrayOf(android.R.attr.listDivider))
 | 
			
		||||
        divider = a.getDrawable(0)
 | 
			
		||||
        a.recycle()
 | 
			
		||||
    }
 | 
			
		||||
@@ -41,7 +41,4 @@ class SourceDividerItemDecoration(context: Context) : RecyclerView.ItemDecoratio
 | 
			
		||||
        outRect.set(0, 0, 0, divider.intrinsicHeight)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        private val ATTRS = intArrayOf(android.R.attr.listDivider)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,6 +1,5 @@
 | 
			
		||||
package eu.kanade.tachiyomi.ui.setting
 | 
			
		||||
 | 
			
		||||
import android.content.Context
 | 
			
		||||
import android.support.graphics.drawable.VectorDrawableCompat
 | 
			
		||||
import android.support.v4.graphics.drawable.DrawableCompat
 | 
			
		||||
import android.support.v7.preference.*
 | 
			
		||||
@@ -10,7 +9,7 @@ import eu.kanade.tachiyomi.widget.preference.IntListPreference
 | 
			
		||||
@Target(AnnotationTarget.TYPE)
 | 
			
		||||
annotation class DSL
 | 
			
		||||
 | 
			
		||||
inline fun PreferenceManager.newScreen(context: Context, block: (@DSL PreferenceScreen).() -> Unit): PreferenceScreen {
 | 
			
		||||
inline fun PreferenceManager.newScreen(block: (@DSL PreferenceScreen).() -> Unit): PreferenceScreen {
 | 
			
		||||
    return createPreferenceScreen(context).also { it.block() }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,11 @@ import android.view.ContextThemeWrapper
 | 
			
		||||
import android.view.LayoutInflater
 | 
			
		||||
import android.view.View
 | 
			
		||||
import android.view.ViewGroup
 | 
			
		||||
import com.bluelinelabs.conductor.ControllerChangeHandler
 | 
			
		||||
import com.bluelinelabs.conductor.ControllerChangeType
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.ui.base.controller.BaseController
 | 
			
		||||
import rx.Observable
 | 
			
		||||
import rx.Subscription
 | 
			
		||||
import rx.subscriptions.CompositeSubscription
 | 
			
		||||
@@ -55,9 +58,23 @@ abstract class SettingsController : PreferenceController() {
 | 
			
		||||
        return preferenceScreen?.title?.toString()
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onAttach(view: View) {
 | 
			
		||||
    fun setTitle() {
 | 
			
		||||
        var parentController = parentController
 | 
			
		||||
        while (parentController != null) {
 | 
			
		||||
            if (parentController is BaseController && parentController.getTitle() != null) {
 | 
			
		||||
                return
 | 
			
		||||
            }
 | 
			
		||||
            parentController = parentController.parentController
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        (activity as? AppCompatActivity)?.supportActionBar?.title = getTitle()
 | 
			
		||||
        super.onAttach(view)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    override fun onChangeStarted(handler: ControllerChangeHandler, type: ControllerChangeType) {
 | 
			
		||||
        if (type.isEnter) {
 | 
			
		||||
            setTitle()
 | 
			
		||||
        }
 | 
			
		||||
        super.onChangeStarted(handler, type)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun <T> Observable<T>.subscribeUntilDestroy(): Subscription {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user