Skip to content
This repository has been archived by the owner on Oct 27, 2019. It is now read-only.

Latest commit

 

History

History
62 lines (42 loc) · 2.5 KB

README.md

File metadata and controls

62 lines (42 loc) · 2.5 KB

Deprecation notice

A better implementation has been merged into the official kotlin/kotlinx.coroutines repository.

Please, use the official implementation instead.

Firebase Admin Coroutines

Coroutine wrappers for Tasks API and ApiFuture API used in Firebase Admin SDK.

Example

The following code shows how to get an user from Firebase and delete it using two approaches.

The standard approach is to write nested callback functions.

val auth = FirebaseAuth.getInstance()

auth.getUserByEmail(email)
    .addOnSuccessListener { user ->
        auth.deleteUser(user.uid)
          .addOnSuccessListener { println("User deleted") }
          .addOnFailureListener { exception -> println(exception) }
    }
    .addOnFailureListener { exception -> println(exception) }

The other approach is the use of a suspended coroutine to make the code flatter, so we can call the await() method to wait the first asynchronous operations (retrieve the user) to complete before starting the second one (delete the user).

val auth = FirebaseAuth.getInstance()

try {
  val user = auth.getUserByEmail(email).await()

  auth.deleteUser(user.uid).await()

  println("User deleted")
} catch (exception: FirebaseAuthException) {
  println(exception)
}

How to use

Assuming you already have the Firebase Admin SDK as a dependency in your project, you just need to copy and paste the functions into your project.

Firebase SDK version Function
5.x.x or earlier Task<T>.await()
6.x.x or later ApiFuture<T>.await()

About testing

To run the test cases you'll need to put the private key of a Firebase project in the root path. It also should be named google-services.json. In case you don't the tests will throw an error due to unauthorized call to the Firebase servers.

If you know how to implement unit tests for the case, please fill an issue and send a pull request.

Contributing

If you found any bug or want to improve the project, please feel free to fork it, fill issues and send pull requests.