explicit listener for ClientStateController in notifs

This commit is contained in:
Henry Hiles 2026-09-23 11:22:47 -04:00
commit 721349ca21
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -128,19 +128,26 @@ class UnifiedPushController extends AsyncNotifier<bool> {
onUnregistered: deregister, onUnregistered: deregister,
); );
ref.listen(
ClientStateController.provider.select((value) => value?.deviceId),
(_, _) => register(),
);
if (registered) { if (registered) {
// Needs to be registered every startup // Needs to be registered every startup
await register(true); await register();
} }
return registered; return registered;
} }
Future<void> register([bool alreadyRegistered = false]) async { Future<void> register() async {
state = .loading(); state = .loading();
try { try {
final clientState = ref.watch(ClientStateController.provider); final deviceId = ref.read(
if (clientState?.deviceId == null) return; ClientStateController.provider.select((value) => value?.deviceId),
);
if (deviceId == null) return;
final capabilities = await ref final capabilities = await ref
.read(ClientController.provider.notifier) .read(ClientController.provider.notifier)
@ -157,7 +164,7 @@ class UnifiedPushController extends AsyncNotifier<bool> {
} }
await UnifiedPush.register( await UnifiedPush.register(
instance: clientState!.deviceId!, instance: deviceId,
vapid: capabilities.webpush?.vapid, vapid: capabilities.webpush?.vapid,
); );
} catch (_) { } catch (_) {