From 5d994bf2bb4cc3bc7f210047bba53d28cf988d91 Mon Sep 17 00:00:00 2001 From: Henry-Hiles Date: Wed, 23 Sep 2026 11:15:04 -0400 Subject: [PATCH] wait for metadata to come in on notif's rooms before sending them --- lib/controllers/unified_push.dart | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/lib/controllers/unified_push.dart b/lib/controllers/unified_push.dart index 181a3d6..72e29b2 100644 --- a/lib/controllers/unified_push.dart +++ b/lib/controllers/unified_push.dart @@ -1,3 +1,4 @@ +import "dart:async"; import "dart:convert"; import "dart:io"; @@ -78,10 +79,29 @@ class UnifiedPushController extends AsyncNotifier { return; } - final room = ref.read( - RoomsController.provider.select((rooms) => rooms[event.roomId]), + final provider = RoomsController.provider.select( + (rooms) => rooms[event.roomId], ); + if (ref.read(provider)?.metadata == null) { + final completer = Completer(); + + 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 icon = avatar == null ? null