42 lines
1.5 KiB
Dart
42 lines
1.5 KiB
Dart
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();
|
|
}
|
|
}
|