Add this suggestion to a batch that can be applied as a single commit. This suggestion is invalid because no changes were made to the code. Suggestions cannot be applied while the pull request is closed. Suggestions cannot be applied while viewing a subset of changes. Only one suggestion per line can be applied in a batch. Add this suggestion to a batch that can be applied as a single commit. Applying suggestions on deleted lines is not supported. You must change the existing code in this line in order to create a valid suggestion. Outdated suggestions cannot be applied. This suggestion has been applied or marked resolved. Suggestions cannot be applied from pending reviews. Suggestions cannot be applied on multi-line comments. Suggestions cannot be applied while the pull request is queued to merge. Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This catch looks redundant.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It catches the possible thrown error by calling the original
addDocument
function (which seems only throwable by the underlying encoder). SincewithCheckedThrowingContinuation
takes a non-throwingclosure
, we can't just rethrow it.Am I missing something here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh I see. It looks like the problem is with the existing API above that both throws and does a callback with an error parameter.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree, I was about to refactor it but stopped because it is part of the public API and would be backward-incompatible.
By the way, it's not clear to me what to
return
when encountering encoding errors.I can open another PR for refactoring the existing API and discuss it further separately. Let me know your opinion.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
About this PR, how about moving this function back to the
CollectionReference+AsyncAwait
and using the existing API there like:So no need for
withCheckedThrowingContinuation
at all.Why move this to the other file? Because otherwise, this extension would depend on another extension.
Let me know your opinion.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See #9157 (comment) for a discussion about an edge case when the client is offline. This would result in the async method never returning.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Using this method will depend on the existing
async
API. So, at the end of the day, we should either deprecate both of them or agree on the current existing logic.