mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Remove unused Rx/Coroutines converters
This commit is contained in:
		@@ -1,61 +0,0 @@
 | 
			
		||||
package eu.kanade.core.util
 | 
			
		||||
 | 
			
		||||
import kotlinx.coroutines.CancellationException
 | 
			
		||||
import kotlinx.coroutines.CoroutineStart
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.GlobalScope
 | 
			
		||||
import kotlinx.coroutines.channels.awaitClose
 | 
			
		||||
import kotlinx.coroutines.flow.Flow
 | 
			
		||||
import kotlinx.coroutines.flow.callbackFlow
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import rx.Emitter
 | 
			
		||||
import rx.Observable
 | 
			
		||||
import rx.Observer
 | 
			
		||||
import kotlin.coroutines.CoroutineContext
 | 
			
		||||
 | 
			
		||||
fun <T : Any> Observable<T>.asFlow(): Flow<T> = callbackFlow {
 | 
			
		||||
    val observer = object : Observer<T> {
 | 
			
		||||
        override fun onNext(t: T) {
 | 
			
		||||
            trySend(t)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun onError(e: Throwable) {
 | 
			
		||||
            close(e)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        override fun onCompleted() {
 | 
			
		||||
            close()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    val subscription = subscribe(observer)
 | 
			
		||||
    awaitClose { subscription.unsubscribe() }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fun <T : Any> Flow<T>.asObservable(
 | 
			
		||||
    context: CoroutineContext = Dispatchers.Unconfined,
 | 
			
		||||
    backpressureMode: Emitter.BackpressureMode = Emitter.BackpressureMode.NONE,
 | 
			
		||||
): Observable<T> {
 | 
			
		||||
    return Observable.create(
 | 
			
		||||
        { emitter ->
 | 
			
		||||
            /*
 | 
			
		||||
             * ATOMIC is used here to provide stable behaviour of subscribe+dispose pair even if
 | 
			
		||||
             * asObservable is already invoked from unconfined
 | 
			
		||||
             */
 | 
			
		||||
            val job = GlobalScope.launch(context = context, start = CoroutineStart.ATOMIC) {
 | 
			
		||||
                try {
 | 
			
		||||
                    collect { emitter.onNext(it) }
 | 
			
		||||
                    emitter.onCompleted()
 | 
			
		||||
                } catch (e: Throwable) {
 | 
			
		||||
                    // Ignore `CancellationException` as error, since it indicates "normal cancellation"
 | 
			
		||||
                    if (e !is CancellationException) {
 | 
			
		||||
                        emitter.onError(e)
 | 
			
		||||
                    } else {
 | 
			
		||||
                        emitter.onCompleted()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            emitter.setCancellation { job.cancel() }
 | 
			
		||||
        },
 | 
			
		||||
        backpressureMode,
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
@@ -20,7 +20,6 @@ import eu.kanade.tachiyomi.source.model.Page
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.HttpSource
 | 
			
		||||
import eu.kanade.tachiyomi.source.online.fetchAllImageUrlsFromPageList
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.RetryWithDelay
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.plusAssign
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.DiskUtil.NOMEDIA_FILE
 | 
			
		||||
import eu.kanade.tachiyomi.util.storage.saveTo
 | 
			
		||||
@@ -30,6 +29,7 @@ import logcat.LogPriority
 | 
			
		||||
import nl.adaptivity.xmlutil.serialization.XML
 | 
			
		||||
import okhttp3.Response
 | 
			
		||||
import rx.Observable
 | 
			
		||||
import rx.Subscription
 | 
			
		||||
import rx.android.schedulers.AndroidSchedulers
 | 
			
		||||
import rx.schedulers.Schedulers
 | 
			
		||||
import rx.subscriptions.CompositeSubscription
 | 
			
		||||
@@ -637,6 +637,8 @@ class Downloader(
 | 
			
		||||
        return queue.none { it.status.value <= Download.State.DOWNLOADING.value }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private operator fun CompositeSubscription.plusAssign(subscription: Subscription) = add(subscription)
 | 
			
		||||
 | 
			
		||||
    companion object {
 | 
			
		||||
        const val TMP_DIR_SUFFIX = "_tmp"
 | 
			
		||||
        const val WARNING_NOTIF_TIMEOUT_MS = 30_000L
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +0,0 @@
 | 
			
		||||
package eu.kanade.tachiyomi.util.lang
 | 
			
		||||
 | 
			
		||||
import rx.Subscription
 | 
			
		||||
import rx.subscriptions.CompositeSubscription
 | 
			
		||||
 | 
			
		||||
operator fun CompositeSubscription.plusAssign(subscription: Subscription) = add(subscription)
 | 
			
		||||
@@ -1,15 +1,8 @@
 | 
			
		||||
package tachiyomi.core.util.lang
 | 
			
		||||
 | 
			
		||||
import kotlinx.coroutines.CancellableContinuation
 | 
			
		||||
import kotlinx.coroutines.CancellationException
 | 
			
		||||
import kotlinx.coroutines.CoroutineStart
 | 
			
		||||
import kotlinx.coroutines.Dispatchers
 | 
			
		||||
import kotlinx.coroutines.ExperimentalCoroutinesApi
 | 
			
		||||
import kotlinx.coroutines.GlobalScope
 | 
			
		||||
import kotlinx.coroutines.InternalCoroutinesApi
 | 
			
		||||
import kotlinx.coroutines.launch
 | 
			
		||||
import kotlinx.coroutines.suspendCancellableCoroutine
 | 
			
		||||
import rx.Emitter
 | 
			
		||||
import rx.Observable
 | 
			
		||||
import rx.Subscriber
 | 
			
		||||
import rx.Subscription
 | 
			
		||||
@@ -61,31 +54,5 @@ private suspend fun <T> Observable<T>.awaitOne(): T = suspendCancellableCoroutin
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
internal fun <T> CancellableContinuation<T>.unsubscribeOnCancellation(sub: Subscription) =
 | 
			
		||||
private fun <T> CancellableContinuation<T>.unsubscribeOnCancellation(sub: Subscription) =
 | 
			
		||||
    invokeOnCancellation { sub.unsubscribe() }
 | 
			
		||||
 | 
			
		||||
@OptIn(ExperimentalCoroutinesApi::class)
 | 
			
		||||
fun <T> runAsObservable(
 | 
			
		||||
    backpressureMode: Emitter.BackpressureMode = Emitter.BackpressureMode.NONE,
 | 
			
		||||
    block: suspend () -> T,
 | 
			
		||||
): Observable<T> {
 | 
			
		||||
    return Observable.create(
 | 
			
		||||
        { emitter ->
 | 
			
		||||
            val job = GlobalScope.launch(Dispatchers.Unconfined, start = CoroutineStart.ATOMIC) {
 | 
			
		||||
                try {
 | 
			
		||||
                    emitter.onNext(block())
 | 
			
		||||
                    emitter.onCompleted()
 | 
			
		||||
                } catch (e: Throwable) {
 | 
			
		||||
                    // Ignore `CancellationException` as error, since it indicates "normal cancellation"
 | 
			
		||||
                    if (e !is CancellationException) {
 | 
			
		||||
                        emitter.onError(e)
 | 
			
		||||
                    } else {
 | 
			
		||||
                        emitter.onCompleted()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            emitter.setCancellation { job.cancel() }
 | 
			
		||||
        },
 | 
			
		||||
        backpressureMode,
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user