Files
Client/lib/notification/notify_updater.dart
T
2026-05-08 20:12:40 +02:00

52 lines
1.6 KiB
Dart

import 'dart:async';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import '../api/mhsl/notify/register/notify_register.dart';
import '../api/mhsl/notify/register/notify_register_params.dart';
import '../model/account_data.dart';
import '../state/app/modules/settings/bloc/settings_cubit.dart';
import '../widget/confirm_dialog.dart';
class NotifyUpdater {
static ConfirmDialog enableAfterDisclaimer(
SettingsCubit settings,
) => ConfirmDialog(
title: 'Warnung',
icon: Icons.warning_amber,
content:
''
'Die Push-Benachrichtigungen werden durch mhsl.eu versendet.\n\n'
'Durch das aktivieren dieser Funktion wird dein Nutzername, dein Password und eine Geräte-ID von mhsl dauerhaft gespeichert und verarbeitet.\n\n'
'Für mehr Informationen drücke lange auf die Einstellungsoption!',
confirmButton: 'Aktivieren',
onConfirm: () {
unawaited(
FirebaseMessaging.instance.requestPermission(provisional: false),
);
settings.val(write: true).notificationSettings.enabled = true;
unawaited(NotifyUpdater.registerToServer());
},
);
static Future<void> registerToServer() async {
final fcmToken = await FirebaseMessaging.instance.getToken();
if (fcmToken == null) {
throw Exception(
'Failed to register push notification because there is no FBC token!',
);
}
unawaited(
NotifyRegister(
NotifyRegisterParams(
username: AccountData().getUsername(),
password: AccountData().getPassword(),
fcmToken: fcmToken,
),
).run(),
);
}
}