migrated custom timetable events to Marianum-Connect and refactored push notification handling
This commit is contained in:
+22
-4
@@ -22,6 +22,7 @@ import 'api/marianumconnect/auth/session_validator.dart';
|
||||
import 'api/marianumconnect/marianumconnect_endpoint.dart';
|
||||
import 'api/marianumconnect/queries/get_breakers/get_breakers_response.dart';
|
||||
import 'api/marianumconnect/queries/report_client_error/client_error_reporter.dart';
|
||||
import 'api/marianumconnect/queries/telemetry_heartbeat/telemetry_heartbeat.dart';
|
||||
import 'app.dart';
|
||||
import 'background/widget_background_task.dart';
|
||||
import 'firebase_options.dart';
|
||||
@@ -29,6 +30,7 @@ import 'model/account_data.dart';
|
||||
import 'notification/notification_service.dart';
|
||||
import 'push/push_message_handler.dart';
|
||||
import 'push/push_registration.dart';
|
||||
import 'push/push_registration_store.dart';
|
||||
import 'push/push_renderer.dart';
|
||||
import 'routing/app_routes.dart';
|
||||
import 'share_intent/share_intent_listener.dart';
|
||||
@@ -251,14 +253,23 @@ class _MainState extends State<Main> {
|
||||
unawaited(ListFilesCache.prefetchRootListing());
|
||||
}
|
||||
|
||||
/// Registers/self-heals the push subscription when push is user-enabled and
|
||||
/// the backend advertises the capability. Fire-and-forget.
|
||||
/// Registers/self-heals the push subscription whenever the backend advertises
|
||||
/// the capability — independent of the notification toggle, so a user with
|
||||
/// notifications off stays registered for silent sync pushes. Fire-and-forget.
|
||||
void _syncPush(SettingsCubit settings, CapabilitiesCubit capabilities) {
|
||||
final enabled = settings.val().notificationSettings.enabled;
|
||||
unawaited(
|
||||
PushRegistration.syncSubscription(
|
||||
enabled: settings.val().notificationSettings.enabled,
|
||||
capable: capabilities.canReceivePushNotifications,
|
||||
),
|
||||
).then((registered) {
|
||||
// The app-start heartbeat runs before this async registration
|
||||
// finishes, so it reports the pre-registration state. Re-emit once
|
||||
// the identifier is persisted so the new push status shows up this
|
||||
// session instead of only after the next launch.
|
||||
if (registered) {
|
||||
TelemetryHeartbeat.report(notificationsEnabled: enabled);
|
||||
}
|
||||
}),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -290,6 +301,13 @@ class _MainState extends State<Main> {
|
||||
final mcBaseUrl = devToolsSettings.resolveMarianumConnectBaseUrl();
|
||||
MarianumConnectEndpoint.update(mcBaseUrl);
|
||||
unawaited(WidgetSync.setMarianumConnectBaseUrl(mcBaseUrl));
|
||||
// Mirror the notification toggle into group-scoped storage so the FCM
|
||||
// background isolate and the iOS NSE can suppress rendering when off.
|
||||
unawaited(
|
||||
const PushRegistrationStore().setNotificationsEnabled(
|
||||
settings.notificationSettings.enabled,
|
||||
),
|
||||
);
|
||||
return MaterialApp(
|
||||
showPerformanceOverlay: devToolsSettings.showPerformanceOverlay,
|
||||
checkerboardOffscreenLayers:
|
||||
|
||||
Reference in New Issue
Block a user