Implemented structure for push Notifications
This commit is contained in:
@ -7,6 +7,7 @@ import 'package:provider/provider.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../../model/accountData.dart';
|
||||
import '../../notification/notifyUpdater.dart';
|
||||
import '../../storage/base/settingsProvider.dart';
|
||||
import '../../theming/appTheme.dart';
|
||||
import '../../widget/centeredLeading.dart';
|
||||
@ -87,9 +88,7 @@ class _SettingsState extends State<Settings> {
|
||||
),
|
||||
)).toList(),
|
||||
onChanged: (e) {
|
||||
setState(() {
|
||||
settings.val(write: true).appTheme = e!;
|
||||
});
|
||||
settings.val(write: true).appTheme = e!;
|
||||
},
|
||||
),
|
||||
),
|
||||
@ -102,9 +101,7 @@ class _SettingsState extends State<Settings> {
|
||||
trailing: Checkbox(
|
||||
value: settings.val().talkSettings.sortFavoritesToTop,
|
||||
onChanged: (e) {
|
||||
setState(() {
|
||||
settings.val(write: true).talkSettings.sortFavoritesToTop = e!;
|
||||
});
|
||||
settings.val(write: true).talkSettings.sortFavoritesToTop = e!;
|
||||
},
|
||||
),
|
||||
),
|
||||
@ -115,9 +112,7 @@ class _SettingsState extends State<Settings> {
|
||||
trailing: Checkbox(
|
||||
value: settings.val().talkSettings.sortUnreadToTop,
|
||||
onChanged: (e) {
|
||||
setState(() {
|
||||
settings.val(write: true).talkSettings.sortUnreadToTop = e!;
|
||||
});
|
||||
settings.val(write: true).talkSettings.sortUnreadToTop = e!;
|
||||
},
|
||||
),
|
||||
),
|
||||
@ -130,9 +125,7 @@ class _SettingsState extends State<Settings> {
|
||||
trailing: Checkbox(
|
||||
value: settings.val().fileSettings.sortFoldersToTop,
|
||||
onChanged: (e) {
|
||||
setState(() {
|
||||
settings.val(write: true).fileSettings.sortFoldersToTop = e!;
|
||||
});
|
||||
settings.val(write: true).fileSettings.sortFoldersToTop = e!;
|
||||
},
|
||||
),
|
||||
),
|
||||
@ -152,6 +145,49 @@ class _SettingsState extends State<Settings> {
|
||||
|
||||
const Divider(),
|
||||
|
||||
ListTile(
|
||||
leading: const CenteredLeading(Icon(Icons.notifications_active_outlined)),
|
||||
title: const Text("Push-Benachrichtigungen aktivieren"),
|
||||
subtitle: const Text("Lange tippen für mehr Informationen"),
|
||||
trailing: Checkbox(
|
||||
value: settings.val().notificationSettings.enabled,
|
||||
onChanged: (e) {
|
||||
if(e!) {
|
||||
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: () {
|
||||
settings.val(write: true).notificationSettings.enabled = e;
|
||||
NotifyUpdater.registerToServer();
|
||||
},
|
||||
).asDialog(context);
|
||||
} else {
|
||||
settings.val(write: true).notificationSettings.enabled = e;
|
||||
}
|
||||
},
|
||||
),
|
||||
onLongPress: () => showDialog(context: context, builder: (context) => AlertDialog(
|
||||
title: const Text("Info über Push"),
|
||||
content: const SingleChildScrollView(child: Text(""
|
||||
"Aufgrund technischer Limitationen müssen Push-nachrichten über einen Externen Server - hier 'mhsl.eu' (Author dieser App) - erfolgen.\n\n"
|
||||
"Wenn Push aktiviert wird, werden deine Zugangsdaten und ein Token verschlüsselt an den Betreiber gesendet und von ihm unverschlüsselt gespeichert.\n\n"
|
||||
"Der extene Server verwendet die Zugangsdaten um sich maschinell in Nextcloud Talk anzumelden und via Websockets auf neue Nachrichten zu warten.\n\n"
|
||||
"Wenn eine neue Nachricht eintrifft wird dein Telefon via FBC-Messaging (Google Firebase Push) vom Externen Server benachrichtigt.\n\n"
|
||||
"Behalte im Hinterkopf, dass deine Zugangsdaten auf einem Externen Server gespeichert werden und dies trots bester Absichten ein Sicherheitsrisiko sein kann!"
|
||||
)),
|
||||
actions: [
|
||||
TextButton(onPressed: () => Navigator.of(context).pop(), child: const Text("Zurück"))
|
||||
],
|
||||
)),
|
||||
),
|
||||
|
||||
const Divider(),
|
||||
|
||||
ListTile(
|
||||
leading: const Icon(Icons.live_help_outlined),
|
||||
title: const Text("Informationen und Lizenzen"),
|
||||
@ -215,9 +251,7 @@ class _SettingsState extends State<Settings> {
|
||||
trailing: Checkbox(
|
||||
value: settings.val().devToolsEnabled,
|
||||
onChanged: (state) {
|
||||
changeView() => setState(() {
|
||||
settings.val(write: true).devToolsEnabled = state ?? false;
|
||||
});
|
||||
changeView() => settings.val(write: true).devToolsEnabled = state ?? false;
|
||||
|
||||
if(!state!) {
|
||||
changeView();
|
||||
@ -284,9 +318,7 @@ class _SettingsState extends State<Settings> {
|
||||
content: "Alle Einstellungen gehen verloren! Accountdaten sowie App-Daten sind nicht betroffen.",
|
||||
confirmButton: "Unwiederruflich Löschen",
|
||||
onConfirm: () {
|
||||
setState(() {
|
||||
Provider.of<SettingsProvider>(context, listen: false).reset();
|
||||
});
|
||||
Provider.of<SettingsProvider>(context, listen: false).reset();
|
||||
},
|
||||
).asDialog(context);
|
||||
},
|
||||
|
Reference in New Issue
Block a user