Firebase async tasks to coroutinesAndroid: Is There A Way To Wait Until A Fragment Attaches To An Activity?Difference between thread and coroutine in KotlinWhat is the difference between launch/join and async/await in Kotlin coroutinesCan “experimental” Kotlin coroutines be used in production?What does suspend function mean in Kotlin CoroutineAndroid: Async Tasks and UIHow can I implement coroutines for a parallel taskKotlin coroutine async with delayKotlin Coroutines Async Await SequenceCoroutines: runBlocking vs coroutineScope
Can Ogre clerics use Purify Food and Drink on humanoid characters?
How to remove this component from PCB
Can humans ever directly see a few photons at a time? Can a human see a single photon?
When two first person POV characters meet
Paralleling mosfets reduce Rds On?
If the Dragon's Breath spell is cast on a familiar, does it use the wizard's DC or familiar's DC?
What are Elsa's reasons for selecting the Holy Grail on behalf of Donovan?
Methodology: Writing unit tests for another developer
Dates on degrees don’t make sense – will people care?
What does it mean to not be able to take the derivative of a function multiple times?
Cut the gold chain
CircuiTikZ: Start ground relative to the closest component
Why tighten down in a criss-cross pattern?
Where's this swanky house and vineyard near a mountain?
Story about hunting giant lizards for hides on privately owned planet
How do I farm creepers for XP without them exploding?
UK - Working without a contract. I resign and guy wants to sue me
Number of solutions mod p and Betti numbers
Is "Busen" just the area between the breasts?
Hit the Bulls Eye with T in the Center
Calibrations vs. Riemannian holonomy
Why don't countries like Japan just print more money?
Does Doppler effect happen instantly?
How can I get my left hand to sound legato when I'm leaping?
Firebase async tasks to coroutines
Android: Is There A Way To Wait Until A Fragment Attaches To An Activity?Difference between thread and coroutine in KotlinWhat is the difference between launch/join and async/await in Kotlin coroutinesCan “experimental” Kotlin coroutines be used in production?What does suspend function mean in Kotlin CoroutineAndroid: Async Tasks and UIHow can I implement coroutines for a parallel taskKotlin coroutine async with delayKotlin Coroutines Async Await SequenceCoroutines: runBlocking vs coroutineScope
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;
I have used the suspend routine builder to make the Firebase Tasks's move away from async listener based code to coroutine-based code.
This is my suspendcoroutine via which I achieve the coroutine behavior.
suspend fun <T> Task<T>.awaitTask(): T =
suspendCoroutine continuation ->
addOnCompleteListener task ->
if (task.isSuccessful)
continuation.resume(task.result!!)//what to do if task.result is null
else
continuation.resumeWithException(task.exception!!)
This is how I invoke it
firebase.createUserWithEmailAndPassword(userCredentials.email!!, userCredentials.password!!).awaitTask()
All works well until we execute a task which has a possibility of a null result. Like .
firebase.currentUser?.updateProfile(profileUpdates)?.awaitTask()
Here upon successfully updation , task.result is null. In that case what should be passed to continuation.resume?.
android kotlin firebase-authentication kotlin-coroutines
add a comment |
I have used the suspend routine builder to make the Firebase Tasks's move away from async listener based code to coroutine-based code.
This is my suspendcoroutine via which I achieve the coroutine behavior.
suspend fun <T> Task<T>.awaitTask(): T =
suspendCoroutine continuation ->
addOnCompleteListener task ->
if (task.isSuccessful)
continuation.resume(task.result!!)//what to do if task.result is null
else
continuation.resumeWithException(task.exception!!)
This is how I invoke it
firebase.createUserWithEmailAndPassword(userCredentials.email!!, userCredentials.password!!).awaitTask()
All works well until we execute a task which has a possibility of a null result. Like .
firebase.currentUser?.updateProfile(profileUpdates)?.awaitTask()
Here upon successfully updation , task.result is null. In that case what should be passed to continuation.resume?.
android kotlin firebase-authentication kotlin-coroutines
add a comment |
I have used the suspend routine builder to make the Firebase Tasks's move away from async listener based code to coroutine-based code.
This is my suspendcoroutine via which I achieve the coroutine behavior.
suspend fun <T> Task<T>.awaitTask(): T =
suspendCoroutine continuation ->
addOnCompleteListener task ->
if (task.isSuccessful)
continuation.resume(task.result!!)//what to do if task.result is null
else
continuation.resumeWithException(task.exception!!)
This is how I invoke it
firebase.createUserWithEmailAndPassword(userCredentials.email!!, userCredentials.password!!).awaitTask()
All works well until we execute a task which has a possibility of a null result. Like .
firebase.currentUser?.updateProfile(profileUpdates)?.awaitTask()
Here upon successfully updation , task.result is null. In that case what should be passed to continuation.resume?.
android kotlin firebase-authentication kotlin-coroutines
I have used the suspend routine builder to make the Firebase Tasks's move away from async listener based code to coroutine-based code.
This is my suspendcoroutine via which I achieve the coroutine behavior.
suspend fun <T> Task<T>.awaitTask(): T =
suspendCoroutine continuation ->
addOnCompleteListener task ->
if (task.isSuccessful)
continuation.resume(task.result!!)//what to do if task.result is null
else
continuation.resumeWithException(task.exception!!)
This is how I invoke it
firebase.createUserWithEmailAndPassword(userCredentials.email!!, userCredentials.password!!).awaitTask()
All works well until we execute a task which has a possibility of a null result. Like .
firebase.currentUser?.updateProfile(profileUpdates)?.awaitTask()
Here upon successfully updation , task.result is null. In that case what should be passed to continuation.resume?.
android kotlin firebase-authentication kotlin-coroutines
android kotlin firebase-authentication kotlin-coroutines
edited Mar 25 at 8:10
bugfreerammohan
1,3451215
1,3451215
asked Mar 25 at 8:07
Muhammad Ahmed AbuTalibMuhammad Ahmed AbuTalib
1,46422233
1,46422233
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Your return type should be nullable because Task.getResult()
is nullable:
suspend fun <T> Task<T>.await() : T? = ...
If you use it to get a non-nullable result, then enforce non-nullability at the use site and not inside the implementation.
However, why do you bother reimplementing this when it's already defined in kotlinx-coroutines-play-services
?
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55333512%2ffirebase-async-tasks-to-coroutines%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your return type should be nullable because Task.getResult()
is nullable:
suspend fun <T> Task<T>.await() : T? = ...
If you use it to get a non-nullable result, then enforce non-nullability at the use site and not inside the implementation.
However, why do you bother reimplementing this when it's already defined in kotlinx-coroutines-play-services
?
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
add a comment |
Your return type should be nullable because Task.getResult()
is nullable:
suspend fun <T> Task<T>.await() : T? = ...
If you use it to get a non-nullable result, then enforce non-nullability at the use site and not inside the implementation.
However, why do you bother reimplementing this when it's already defined in kotlinx-coroutines-play-services
?
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
add a comment |
Your return type should be nullable because Task.getResult()
is nullable:
suspend fun <T> Task<T>.await() : T? = ...
If you use it to get a non-nullable result, then enforce non-nullability at the use site and not inside the implementation.
However, why do you bother reimplementing this when it's already defined in kotlinx-coroutines-play-services
?
Your return type should be nullable because Task.getResult()
is nullable:
suspend fun <T> Task<T>.await() : T? = ...
If you use it to get a non-nullable result, then enforce non-nullability at the use site and not inside the implementation.
However, why do you bother reimplementing this when it's already defined in kotlinx-coroutines-play-services
?
answered Mar 25 at 8:16
Marko TopolnikMarko Topolnik
151k19209337
151k19209337
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
add a comment |
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
Marko this is a revelation for me. About this prebuilt coroutines class. Thanks. Also Yup , my return type should have been nullable
– Muhammad Ahmed AbuTalib
Mar 25 at 8:19
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55333512%2ffirebase-async-tasks-to-coroutines%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown