Skip to content

Instantly share code, notes, and snippets.

@MaTriXy
Forked from LouisCAD/GooglePlayServices.kt
Created April 27, 2020 15:24
Show Gist options
  • Select an option

  • Save MaTriXy/446bbbb414093c4bb8c37e2842170d33 to your computer and use it in GitHub Desktop.

Select an option

Save MaTriXy/446bbbb414093c4bb8c37e2842170d33 to your computer and use it in GitHub Desktop.
Allows using Google Play Services Task API in Kotlin Coroutines, plus Play Services availability check made easier.
import com.google.android.gms.common.GoogleApiAvailability
import com.google.android.gms.tasks.Task
import splitties.init.appCtx
import kotlin.coroutines.experimental.suspendCoroutine
val googleApiAvailability = GoogleApiAvailability.getInstance()!!
inline val playServicesAvailability get() = googleApiAvailability.isGooglePlayServicesAvailable(appCtx)
@JvmName("awaitVoid")
suspend fun Task<Void>.await() = suspendCoroutine<Unit> { continuation ->
addOnSuccessListener { continuation.resume(Unit) }
addOnFailureListener { continuation.resumeWithException(it) }
}
suspend fun <TResult> Task<TResult>.await() = suspendCoroutine<TResult> { continuation ->
addOnSuccessListener { continuation.resume(it) }
addOnFailureListener { continuation.resumeWithException(it) }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment