Skip to content
This repository was archived by the owner on Jun 13, 2025. It is now read-only.

await connect for subscription#99

Open
barbalex wants to merge 3 commits into
Flutterando:masterfrom
barbalex:master
Open

await connect for subscription#99
barbalex wants to merge 3 commits into
Flutterando:masterfrom
barbalex:master

Conversation

@barbalex

@barbalex barbalex commented Jun 16, 2021

Copy link
Copy Markdown

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

zaqwery commented Mar 18, 2024

Copy link
Copy Markdown

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

@rhonner

rhonner commented Apr 14, 2024

Copy link
Copy Markdown

and the problem continues. Need to merge this commit

@OrlandoEduardo101

Copy link
Copy Markdown
Contributor

this branch has conflicting

@barbalex

barbalex commented Jun 13, 2024

Copy link
Copy Markdown
Author

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 subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants