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