mirror of
https://gitlab.com/comunic/comunicmobile
synced 2024-10-23 15:03:22 +00:00
125 lines
3.2 KiB
Dart
125 lines
3.2 KiB
Dart
import 'package:comunic/helpers/database/users_database_helper.dart';
|
|
import 'package:comunic/helpers/settings_helper.dart';
|
|
import 'package:comunic/models/general_settings.dart';
|
|
import 'package:comunic/ui/widgets/async_screen_widget.dart';
|
|
import 'package:comunic/ui/widgets/settings/text_settings_edit_tile.dart';
|
|
import 'package:comunic/utils/account_utils.dart';
|
|
import 'package:comunic/utils/intl_utils.dart';
|
|
import 'package:comunic/utils/ui_utils.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:settings_ui/settings_ui.dart';
|
|
|
|
/// General account settings
|
|
///
|
|
/// @author Pierre HUBERT
|
|
|
|
class GeneralAccountSettingsScreen extends StatelessWidget {
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: AppBar(
|
|
title: Text("General settings"),
|
|
),
|
|
body: _GeneralAccountSettingsBody(),
|
|
);
|
|
}
|
|
}
|
|
|
|
class _GeneralAccountSettingsBody extends StatefulWidget {
|
|
@override
|
|
__GeneralAccountSettingsBodyState createState() =>
|
|
__GeneralAccountSettingsBodyState();
|
|
}
|
|
|
|
class __GeneralAccountSettingsBodyState
|
|
extends State<_GeneralAccountSettingsBody> {
|
|
GeneralSettings _settings;
|
|
|
|
final _key = GlobalKey<AsyncScreenWidgetState>();
|
|
|
|
@override
|
|
void dispose() {
|
|
// Remove current user information to force refresh of account image
|
|
UsersDatabaseHelper().delete(userID());
|
|
|
|
super.dispose();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return AsyncScreenWidget(
|
|
key: _key,
|
|
onReload: () async =>
|
|
_settings = await SettingsHelper.getGeneralSettings(),
|
|
onBuild: _buildSettings,
|
|
errorMessage: tr("Could not load general settings!"));
|
|
}
|
|
|
|
Widget _buildSettings() {
|
|
return SettingsList(
|
|
sections: [
|
|
SettingsSection(
|
|
title: tr("Main account information"),
|
|
tiles: _mainInformationTiles(),
|
|
)
|
|
],
|
|
);
|
|
}
|
|
|
|
List<SettingsTile> _mainInformationTiles() {
|
|
return [
|
|
SettingsTile(
|
|
title: tr("User ID"),
|
|
subtitle: "${userID()}",
|
|
),
|
|
SettingsTile(
|
|
title: tr("Email address"),
|
|
subtitle: _settings.email,
|
|
),
|
|
|
|
// First name
|
|
TextEditSettingsTile(
|
|
title: tr("First name"),
|
|
currValue: _settings.firstName,
|
|
onChanged: (s) {
|
|
_settings.firstName = s;
|
|
_updateSettings();
|
|
},
|
|
checkInput: (s) => s.length >= 3,
|
|
),
|
|
|
|
// Last name
|
|
TextEditSettingsTile(
|
|
title: tr("Last name"),
|
|
currValue: _settings.lastName,
|
|
onChanged: (s) {
|
|
_settings.lastName = s;
|
|
_updateSettings();
|
|
},
|
|
checkInput: (s) => s.length >= 3,
|
|
),
|
|
|
|
// Emails settings
|
|
SettingsTile.switchTile(
|
|
title: tr("Allow comunic to send emails"),
|
|
onToggle: (s) {
|
|
_settings.allowComunicEmails = s;
|
|
_updateSettings();
|
|
},
|
|
switchValue: _settings.allowComunicEmails,
|
|
),
|
|
];
|
|
}
|
|
|
|
/// Apply new settings
|
|
Future<void> _updateSettings() async {
|
|
try {
|
|
await SettingsHelper.updateGeneralSettings(_settings);
|
|
} catch (e, stack) {
|
|
print("Error while updating settings! $e/n$stack");
|
|
showSimpleSnack(context, tr("Could not update general settings!"));
|
|
}
|
|
_key.currentState.refresh();
|
|
}
|
|
}
|