1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2025-06-20 00:35:17 +00:00

Can update page visibility settings

This commit is contained in:
2020-04-27 18:44:41 +02:00
parent 991d7ec1ab
commit cf0708cd3b
4 changed files with 154 additions and 2 deletions

View File

@ -1,6 +1,8 @@
import 'package:comunic/enums/user_page_visibility.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/dialogs/multi_choices_dialog.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';
@ -61,6 +63,10 @@ class __GeneralAccountSettingsBodyState
SettingsSection(
title: tr("Main account information"),
tiles: _mainInformationTiles(),
),
SettingsSection(
title: tr("Your page settings"),
tiles: _pageSettingsTiles(),
)
],
);
@ -111,6 +117,48 @@ class __GeneralAccountSettingsBodyState
];
}
List<MultiChoiceEntry> get _visibilityChoices => [
MultiChoiceEntry(
id: UserPageVisibility.PRIVATE,
title: tr("Private"),
subtitle: tr("Private, accessible only to your friends")),
MultiChoiceEntry(
id: UserPageVisibility.PUBLIC,
title: tr("Public"),
subtitle: tr("Public, accessible to all Comunic members")),
MultiChoiceEntry(
id: UserPageVisibility.OPEN,
title: tr("Open"),
subtitle:
tr("Accessible to everyone, including non-Comunic users")),
];
/// Build page settings tile
List<SettingsTile> _pageSettingsTiles() {
return [
// Page visibility
SettingsTile(
title: tr("Page visibility"),
subtitle: _visibilityChoices
.firstWhere((f) => f.id == _settings.pageVisibility)
.subtitle,
onTap: () async {
final choice = await showMultiChoicesDialog(
context: context,
choices: _visibilityChoices,
defaultChoice: _settings.pageVisibility,
title: tr("Change your page visibility"),
);
if (choice == null) return;
_settings.pageVisibility = choice;
_updateSettings();
},
),
];
}
/// Apply new settings
Future<void> _updateSettings() async {
try {