implemented an E2E-encrypted Nextcloud push-v2 notification system with support for RSA decryption and signature verification; introduced an iOS Notification Service Extension and native AppDelegate handlers for Talk actions (inline reply and mark-as-read); replaced the legacy notification registration with a new lifecycle managing app passwords and secure keypair storage; added background message handling with tray synchronization and a test notification utility in the settings.

This commit is contained in:
2026-07-04 22:50:18 +02:00
parent 32f7c311bc
commit 74a2ddd17f
56 changed files with 2987 additions and 285 deletions
@@ -11,7 +11,15 @@ class CapabilitiesResponse {
@JsonKey(defaultValue: false)
final bool viewForeignTimetables;
CapabilitiesResponse({required this.viewForeignTimetables});
/// Whether the backend push-proxy feature is configured and enabled for this
/// user. The app only registers for push when this is true.
@JsonKey(defaultValue: false)
final bool pushNotifications;
CapabilitiesResponse({
required this.viewForeignTimetables,
required this.pushNotifications,
});
factory CapabilitiesResponse.fromJson(Map<String, dynamic> json) =>
_$CapabilitiesResponseFromJson(json);
@@ -10,8 +10,12 @@ CapabilitiesResponse _$CapabilitiesResponseFromJson(
Map<String, dynamic> json,
) => CapabilitiesResponse(
viewForeignTimetables: json['viewForeignTimetables'] as bool? ?? false,
pushNotifications: json['pushNotifications'] as bool? ?? false,
);
Map<String, dynamic> _$CapabilitiesResponseToJson(
CapabilitiesResponse instance,
) => <String, dynamic>{'viewForeignTimetables': instance.viewForeignTimetables};
) => <String, dynamic>{
'viewForeignTimetables': instance.viewForeignTimetables,
'pushNotifications': instance.pushNotifications,
};