mirror of
https://gitlab.com/comunic/comunicmobile
synced 2025-06-19 08:15:16 +00:00
Can update conversation settings from mobile application
This commit is contained in:
@ -4,6 +4,7 @@ import 'package:comunic/ui/routes/settings/account_security_settings.dart';
|
||||
import 'package:comunic/ui/routes/settings/application_settings.dart';
|
||||
import 'package:comunic/ui/routes/settings/custom_emojies_account_settings.dart';
|
||||
import 'package:comunic/ui/routes/settings/general_account_settings.dart';
|
||||
import 'package:comunic/ui/routes/settings/notifications_settings.dart';
|
||||
import 'package:comunic/ui/widgets/settings/header_spacer_section.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:comunic/utils/ui_utils.dart';
|
||||
@ -84,6 +85,14 @@ class __AccountSettingsBodyState extends State<_AccountSettingsBody> {
|
||||
onBuild: () => AccountImageSettingsScreen(),
|
||||
),
|
||||
|
||||
// Notifications settings
|
||||
_SettingsSection(
|
||||
title: tr("Notifications"),
|
||||
subtitle: tr("Customize the notifications you receive on you phone"),
|
||||
icon: Icons.notifications,
|
||||
onBuild: () => NotificationsSettingsScreen(),
|
||||
),
|
||||
|
||||
// Security settings
|
||||
_SettingsSection(
|
||||
title: tr("Security"),
|
||||
|
67
lib/ui/routes/settings/notifications_settings.dart
Normal file
67
lib/ui/routes/settings/notifications_settings.dart
Normal file
@ -0,0 +1,67 @@
|
||||
import 'package:comunic/helpers/settings_helper.dart';
|
||||
import 'package:comunic/models/notifications_settings.dart';
|
||||
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
||||
import 'package:comunic/ui/widgets/settings/header_spacer_section.dart';
|
||||
import 'package:comunic/utils/intl_utils.dart';
|
||||
import 'package:comunic/utils/log_utils.dart';
|
||||
import 'package:comunic/utils/ui_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:settings_ui/settings_ui.dart';
|
||||
|
||||
/// Notifications settings
|
||||
///
|
||||
/// @author Pierre Hubert
|
||||
|
||||
class NotificationsSettingsScreen extends StatefulWidget {
|
||||
@override
|
||||
_NotificationsSettingsScreenState createState() =>
|
||||
_NotificationsSettingsScreenState();
|
||||
}
|
||||
|
||||
class _NotificationsSettingsScreenState
|
||||
extends State<NotificationsSettingsScreen> {
|
||||
final key = GlobalKey<AsyncScreenWidgetState>();
|
||||
|
||||
NotificationsSettings _settings;
|
||||
|
||||
Future<void> _loadSettings() async {
|
||||
_settings = await SettingsHelper.getNotificationsSettings();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) => AsyncScreenWidget(
|
||||
key: key,
|
||||
onReload: _loadSettings,
|
||||
onBuild: _buildScreen,
|
||||
errorMessage: tr("Failed to load notifications settings!"),
|
||||
);
|
||||
|
||||
Widget _buildScreen() => SettingsList(sections: [
|
||||
HeadSpacerSection(),
|
||||
SettingsSection(
|
||||
title: tr("Push notifications"),
|
||||
tiles: [
|
||||
SettingsTile.switchTile(
|
||||
title: tr("Allow conversations notification"),
|
||||
onToggle: (v) {
|
||||
_settings.allowConversations = v;
|
||||
_updatedSettings();
|
||||
},
|
||||
switchValue: _settings.allowConversations,
|
||||
subtitle:
|
||||
tr("Receive notifications for the conversations you follow."),
|
||||
)
|
||||
],
|
||||
)
|
||||
]);
|
||||
|
||||
void _updatedSettings() async {
|
||||
try {
|
||||
await SettingsHelper.setNotificationsSettings(_settings);
|
||||
setState(() {});
|
||||
} catch (e, s) {
|
||||
logError(e, s);
|
||||
snack(context, tr("Failed to update settings!"));
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user