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:
@ -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 {
|
||||
|
Reference in New Issue
Block a user