import 'package:flutter/material.dart';
import 'package:firebase_messaging/firebase_messaging.dart';

import '../api/mhsl/notify/register/notifyRegister.dart';
import '../api/mhsl/notify/register/notifyRegisterParams.dart';
import '../model/accountData.dart';
import '../storage/base/settingsProvider.dart';
import '../widget/confirmDialog.dart';

class NotifyUpdater {
  static ConfirmDialog enableAfterDisclaimer(SettingsProvider 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: () {
        FirebaseMessaging.instance.requestPermission(
            provisional: false
        );
        settings.val(write: true).notificationSettings.enabled = true;
        NotifyUpdater.registerToServer();
      },
    );

  static Future<void> registerToServer() async {
    var fcmToken = await FirebaseMessaging.instance.getToken();

    if(fcmToken == null) throw Exception('Failed to register push notification because there is no FBC token!');

    NotifyRegister(
      NotifyRegisterParams(
        username: AccountData().getUsername(),
        password: AccountData().getPassword(),
        fcmToken: fcmToken,
      ),
    ).run();
  }
}