AutoDispose icon indicating copy to clipboard operation
AutoDispose copied to clipboard

Context receiver APIs

Open ZacSweers opened this issue 6 years ago • 4 comments

If compound extensions do make their way into Kotlin, we could leverage them nicely in AutoDispose to do something like this:

fun <T> ScopeProvider.Observable<T>.autoDispose() {
  // ...
}

fun test(scope: ScopeProvider) = scope.apply {
  myObservable
      .autoDisposable()
      .subscribe()
}

// or

class Worker : ScopeProvider {
  fun run() {
    workObservable
        .autoDisposable()
        .subscribe()
  }
}

ZacSweers avatar Sep 06 '19 07:09 ZacSweers

Note: this would supersede the need for #375

ZacSweers avatar Sep 15 '19 20:09 ZacSweers

Closing this as it seems like it's not moving anywhere

ZacSweers avatar May 10 '20 04:05 ZacSweers

context receivers are happening

ZacSweers avatar Feb 13 '22 18:02 ZacSweers

Should be a very simple function:

// Original function
@CheckReturnValue
inline fun <T> Observable<T>.autoDispose(provider: ScopeProvider): ObservableSubscribeProxy<T> =
    this.`as`(AutoDispose.autoDisposable(provider))

// Context receivers function
context(ScopeProvider)
inline fun <T> Observable<T>.autoDispose(): ObservableSubscribeProxy<T> = autoDispose(this@ScopeProvider)

psteiger avatar Mar 08 '23 17:03 psteiger