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:
@@ -1,7 +1,14 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||
|
||||
import '../../../../api/marianumconnect/auth/token_storage.dart';
|
||||
// Prefixed: the dio endpoint singleton shares its name with the enum from
|
||||
// dev_tools_settings.dart imported below.
|
||||
import '../../../../api/marianumconnect/marianumconnect_endpoint.dart'
|
||||
as mc_api;
|
||||
import '../../../../push/push_registration.dart';
|
||||
import '../../../../state/app/modules/settings/bloc/settings_cubit.dart';
|
||||
import '../../../../storage/dev_tools_settings.dart';
|
||||
import '../../../../storage/settings.dart' as model;
|
||||
@@ -35,6 +42,20 @@ class MarianumConnectEndpointPicker {
|
||||
mutable.marianumConnectEndpoint = next;
|
||||
if (custom != null) mutable.marianumConnectCustomUrl = custom;
|
||||
await const MarianumConnectTokenStorage().clear();
|
||||
// main.dart's BlocBuilder syncs the dio endpoint singleton on
|
||||
// its next rebuild, but the push re-registration below must
|
||||
// see the new base URL right now — update it here first
|
||||
// (idempotent, same value the rebuild would set).
|
||||
mc_api.MarianumConnectEndpoint.update(
|
||||
settings
|
||||
.val()
|
||||
.devToolsSettings
|
||||
.resolveMarianumConnectBaseUrl(),
|
||||
);
|
||||
// A push registration bound to the old proxy would keep
|
||||
// routing pushes there; no-op when not registered or the
|
||||
// endpoints are unchanged.
|
||||
unawaited(PushRegistration().reRegisterIfEndpointChanged());
|
||||
},
|
||||
);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user