Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

await connect for subscription #99

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

barbalex
Copy link

@barbalex barbalex commented Jun 16, 2021

solves #90

When creating a subscription hasura_connect checks if a connection already exists. If not, it creates it before returning the snapshot. But it returns the snapshot without awaiting the connection to be established: https://github.com/Flutterando/hasura_connect/blob/master/lib/src/presenter/hasura_connect_base.dart#L204.

I forked this repo and the corrected version works for me. I must admit I have not understood all of the code under hasura_connect's hood though. So hopefully this is the right thing to do.

@zaqwery
Copy link

zaqwery commented Mar 18, 2024

any chance this is reviewed and merged? otherwise we keep getting Error: HasuraRequestError: an operation already exists with this id....
thanks guys!

@rhonner
Copy link

rhonner commented Apr 14, 2024

and the problem continues. Need to merge this commit

@OrlandoEduardo101
Copy link
Contributor

this branch has conflicting

@barbalex
Copy link
Author

barbalex commented Jun 13, 2024

Since I created this pull request, the code has been changed from:

if (snapmap.keys.isNotEmpty && !_isConnected) {
  // ignore: unawaited_futures
  _connect();
} else if (_isConnected) {
  final input = querySubscription(snapshot.query);
  sendToWebSocketServer(input);
}
return snapshot;

to:

///If the snapmap keys is not empty and it's not connected, connects
///else if is connected, the input receives the query subscription and
///send it to web socker server
if (snapmap.keys.isNotEmpty && !_isConnected) {
  // ignore: unawaited_futures
  _connect();
  await Future.delayed(const Duration(milliseconds: 500));
} else if (_isConnected) {
  final input = querySubscription(snapshot.query);
  sendToWebSocketServer(input);
}

/// returns the snapshot
return snapshot;

I can't tell whether that solves the issue (maybe better). I am not using flutter any more. So maybe this pull request does not make sense any more?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants