Added dialog to ask users to enable Notifications

This commit is contained in:
2023-09-08 21:58:54 +02:00
parent 6816e77d21
commit fe685c40fc
4 changed files with 57 additions and 16 deletions

View File

@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
import '../../../api/marianumcloud/talk/createRoom/createRoom.dart';
import '../../../api/marianumcloud/talk/createRoom/createRoomParams.dart';
import '../../../model/chatList/chatListProps.dart';
import '../../../notification/notifyUpdater.dart';
import '../../../storage/base/settingsProvider.dart';
import '../../../widget/confirmDialog.dart';
import '../../../widget/loadingSpinner.dart';
@ -27,13 +28,43 @@ class _ChatListState extends State<ChatList> {
void initState() {
super.initState();
FirebaseMessaging.instance.requestPermission(
provisional: false
);
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_query();
SettingsProvider settings = Provider.of<SettingsProvider>(context, listen: false);
if(!settings.val().notificationSettings.enabled && !settings.val().notificationSettings.askUsageDismissed) {
settings.val(write: true).notificationSettings.askUsageDismissed = true;
ConfirmDialog(
icon: Icons.notifications_active_outlined,
title: "Benachrichtigungen aktivieren",
content: "Auf wunsch kannst du Push-Benachrichtigungen aktivieren. Deine Einstellungen kannst du jederzeit ändern.",
confirmButton: "Weiter",
onConfirm: () {
FirebaseMessaging.instance.requestPermission(
provisional: false
).then((value) {
switch (value.authorizationStatus) {
case AuthorizationStatus.authorized:
NotifyUpdater.enableAfterDisclaimer(settings).asDialog(context);
break;
case AuthorizationStatus.denied:
showDialog(context: context, builder: (context) => const AlertDialog(
content: Text("Du kannst die Benachrichtigungen später jederzeit in den App-Einstellungen aktivieren."),
));
break;
default:
break;
}
});
},
).asDialog(context);
}
});
}
void _query({bool renew = false}) {