From 6e0f6d1d79e619c137b29d3d706657c48ba5dda7 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Thu, 16 Apr 2020 19:30:25 +0200 Subject: [PATCH] Can change account image visibility level --- lib/helpers/settings_helper.dart | 15 +++++ .../account_image_settings.dart | 55 ++++++++++++++++++- 2 files changed, 69 insertions(+), 1 deletion(-) diff --git a/lib/helpers/settings_helper.dart b/lib/helpers/settings_helper.dart index d2dfba4..01cac03 100644 --- a/lib/helpers/settings_helper.dart +++ b/lib/helpers/settings_helper.dart @@ -35,4 +35,19 @@ class SettingsHelper { .addFile("picture", newImage) .execWithFiles()) .isOK; + + /// Change account image visibility level + static Future setAccountImageVisibilityLevel( + AccountImageVisibilityLevels level) async => + (await APIRequest( + uri: "settings/set_account_image_visibility", needLogin: true) + .addString( + "visibility", + + // Find appropriate visibility level + _APIAccountImageVisibilityAPILevels.entries + .firstWhere((f) => f.value == level) + .key) + .exec()) + .isOK; } diff --git a/lib/ui/routes/account_settings/account_image_settings.dart b/lib/ui/routes/account_settings/account_image_settings.dart index 3748c73..d20d8d1 100644 --- a/lib/ui/routes/account_settings/account_image_settings.dart +++ b/lib/ui/routes/account_settings/account_image_settings.dart @@ -73,11 +73,26 @@ class __AccountImageSettingsBodyState extends State<_AccountImageSettingsBody> { width: 40, ), ), + + // Upload new account image SettingsTile( title: tr("Upload new account image"), onTap: () => _uploadAccountImage(), ), - SettingsTile(title: tr("Change account image visibility")), + + // Change account image visibility + SettingsTile( + title: tr("Change account image visibility"), + onTap: () => _chooseAccountImageVisibility(), + subtitle: tr("Current level: %level%", args: { + "level": + _settings.visibility == AccountImageVisibilityLevels.EVERYONE + ? tr("Everyone") + : _settings.visibility == + AccountImageVisibilityLevels.COMUNIC_USERS + ? tr("Comunic users") + : tr("My friends only"), + })), SettingsTile(title: tr("Delete account image")) ]; } @@ -95,4 +110,42 @@ class __AccountImageSettingsBodyState extends State<_AccountImageSettingsBody> { _key.currentState.refresh(); } + + /// Change account image visibility + void _chooseAccountImageVisibility() async { + final newLevel = await showDialog( + context: context, + builder: (c) => AlertDialog( + title: Text(tr("Account image visiblity")), + content: + Text(tr("Please choose new account image visibility level:")), + actions: [ + MaterialButton( + child: Text(tr("Everyone")), + onPressed: () => + Navigator.pop(c, AccountImageVisibilityLevels.EVERYONE), + ), + MaterialButton( + child: Text(tr("Connected users")), + onPressed: () => Navigator.pop( + c, AccountImageVisibilityLevels.COMUNIC_USERS), + ), + MaterialButton( + child: Text(tr("My friends")), + onPressed: () => Navigator.pop( + c, AccountImageVisibilityLevels.FRIENDS_ONLY), + ) + ], + )); + + if (newLevel == null) return; + + if (!await SettingsHelper.setAccountImageVisibilityLevel(newLevel)) { + showSimpleSnack( + context, tr("Could not update account image visibility level!")); + return; + } + + _key.currentState.refresh(); + } }