migrated custom timetable events to Marianum-Connect and refactored push notification handling
This commit is contained in:
@@ -77,15 +77,24 @@ class PushMessageHandler {
|
||||
String? openChatToken,
|
||||
}) async {
|
||||
final data = message.data;
|
||||
// The device stays registered even when the user turns notifications off,
|
||||
// so silent sync pushes (deletes, data refresh) keep arriving. When off we
|
||||
// still process the message but skip raising a visible notification.
|
||||
final notificationsEnabled = await _registrationStore.notificationsEnabled();
|
||||
switch (classifyPush(data)) {
|
||||
case PushKind.connect:
|
||||
await _handleConnect(message, foreground: foreground);
|
||||
await _handleConnect(
|
||||
message,
|
||||
foreground: foreground,
|
||||
notificationsEnabled: notificationsEnabled,
|
||||
);
|
||||
break;
|
||||
case PushKind.nextcloud:
|
||||
await _handleNextcloud(
|
||||
data,
|
||||
foreground: foreground,
|
||||
openChatToken: openChatToken,
|
||||
notificationsEnabled: notificationsEnabled,
|
||||
);
|
||||
break;
|
||||
case PushKind.unknown:
|
||||
@@ -96,7 +105,11 @@ class PushMessageHandler {
|
||||
Future<void> _handleConnect(
|
||||
RemoteMessage message, {
|
||||
required bool foreground,
|
||||
required bool notificationsEnabled,
|
||||
}) async {
|
||||
// Connect pushes carry no silent side effects, so nothing to do when the
|
||||
// user has notifications off.
|
||||
if (!notificationsEnabled) return;
|
||||
// On iOS the alert is delivered natively by the system; only Android needs
|
||||
// to render the plaintext payload locally.
|
||||
final data = message.data;
|
||||
@@ -114,6 +127,7 @@ class PushMessageHandler {
|
||||
Map<String, dynamic> data, {
|
||||
required bool foreground,
|
||||
required String? openChatToken,
|
||||
required bool notificationsEnabled,
|
||||
}) async {
|
||||
final subjectBase64 = data['subject'] as String;
|
||||
final signatureBase64 = data['signature'] as String;
|
||||
@@ -153,6 +167,11 @@ class PushMessageHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
// Notifications turned off: the push was still processed (deletes above,
|
||||
// plus the foreground badge/provider refresh in NotificationController) —
|
||||
// only the visible tray notification is suppressed.
|
||||
if (!notificationsEnabled) return;
|
||||
|
||||
await _renderer.render(subject);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user