Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

Push Notifications (#66)

Fixes #35.

Things to do:
- [x] Register with local distributor
- [x] Register with homeserver
- [x] Recieve messages
- [x] Show notifications
- [ ] Notifications page (could come later)

Reviewed-on: Nexus/nexus#66
This commit is contained in:
Henry Hiles 2026-09-10 15:37:05 -04:00 • committed by Henry Hiles
commit ff9bf3bec4
30 changed files with 772 additions and 36 deletions

View file

@ -0,0 +1,30 @@
import "dart:convert";
import "package:fast_immutable_collections/fast_immutable_collections.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/key.dart";
class PushKeyController(final String instance) extends Notifier<String?> {
@override
String? build() => json.decode(
ref.watch(KeyController.provider(KeyController.pushKeyKey)) ?? "{}",
)[instance];
Future<void> set(String? value) async {
final provider = KeyController.provider(KeyController.pushKeyKey);
final notifier = ref.watch(provider.notifier);
final prefs = IMap(json.decode(ref.watch(provider) ?? "{}"));
state = value;
notifier.set(
json.encode(
prefs.add(instance, value).where((_, value) => value != null).unlock,
),
);
}
static final provider =
NotifierProvider.family<PushKeyController, String?, String>(
PushKeyController.new,
);
}