This repository has been archived by the owner on Apr 19, 2023. It is now read-only.
Fix message streaming using react-native-community/fetch
#8
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.
This PR demonstrates streaming messages in a Conversation. The issue was React Native's
fetch
implementation doesn't support streaming withbody
.Related RN issue and RN feature request to upvote.
The feature request led me to Realm's workaround realm/realm-js#4155 which was extremely helpful as it pointed me to use
text
type instead ofblob
in https://github.com/react-native-community/fetch. However, we can't pass the:{ reactNative: { textStreaming: true } }
to fetch itself like it's recommended since our fetch methods are auto-generated in the https://github.com/xmtp/proto repo. To workaround that, I patched the default type totext
instead ofblob
which I believe should be ok since it appears it can still be overridden in the options.Here's the motivation behind using
text
for streaming to begin with: https://github.com/react-native-community/fetch#motivation.NOTE: This only resolves streaming on iOS. Android streaming is still under investigation.
Relates to: xmtp/xmtp-js#223
Demo
demo_streaming.mov
Testing steps