wait for metadata to come in on notif's rooms before sending them
This commit is contained in:
parent
a90bf00f18
commit
5d994bf2bb
1 changed files with 22 additions and 2 deletions
|
|
@ -1,3 +1,4 @@
|
||||||
|
import "dart:async";
|
||||||
import "dart:convert";
|
import "dart:convert";
|
||||||
import "dart:io";
|
import "dart:io";
|
||||||
|
|
||||||
|
|
@ -78,10 +79,29 @@ class UnifiedPushController extends AsyncNotifier<bool> {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final room = ref.read(
|
final provider = RoomsController.provider.select(
|
||||||
RoomsController.provider.select((rooms) => rooms[event.roomId]),
|
(rooms) => rooms[event.roomId],
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (ref.read(provider)?.metadata == null) {
|
||||||
|
final completer = Completer<void>();
|
||||||
|
|
||||||
|
final subscription = ref.listen(provider, (previous, next) {
|
||||||
|
if (next?.metadata != null && !completer.isCompleted) {
|
||||||
|
completer.complete();
|
||||||
|
}
|
||||||
|
}, fireImmediately: true);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await completer.future.timeout(.new(seconds: 10));
|
||||||
|
} on TimeoutException {
|
||||||
|
// metadata didn't show up in time
|
||||||
|
} finally {
|
||||||
|
subscription.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final room = ref.read(provider);
|
||||||
final avatar = room?.metadata?.avatar;
|
final avatar = room?.metadata?.avatar;
|
||||||
final icon = avatar == null
|
final icon = avatar == null
|
||||||
? null
|
? null
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue