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 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()); } }