From 75e15f9f830f778d4e0edbe591a094f45234b24d Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Mon, 27 Apr 2020 19:21:30 +0200 Subject: [PATCH] Can update user public note --- lib/models/general_settings.dart | 2 +- lib/ui/dialogs/single_input_dialog.dart | 12 +++++++++++- .../general_account_settings.dart | 17 +++++++++++++++-- .../settings/text_settings_edit_tile.dart | 9 ++++++++- 4 files changed, 35 insertions(+), 5 deletions(-) diff --git a/lib/models/general_settings.dart b/lib/models/general_settings.dart index 7508ace..4a1e116 100644 --- a/lib/models/general_settings.dart +++ b/lib/models/general_settings.dart @@ -16,7 +16,7 @@ class GeneralSettings { bool publicFriendsList; final String virtualDirectory; String personalWebsite; - final String publicNote; + String publicNote; GeneralSettings({ @required this.email, diff --git a/lib/ui/dialogs/single_input_dialog.dart b/lib/ui/dialogs/single_input_dialog.dart index 9641d8b..55e6f89 100644 --- a/lib/ui/dialogs/single_input_dialog.dart +++ b/lib/ui/dialogs/single_input_dialog.dart @@ -2,7 +2,10 @@ import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -/// Ask the user to enter an URL +/// Dialog to use to ask the user to enter a value +/// +/// @author Pierre Hubert + class SingleInputDialog extends StatefulWidget { final String title; final IconData icon; @@ -11,6 +14,8 @@ class SingleInputDialog extends StatefulWidget { final bool Function(String) checkInput; final String errorMessage; final bool canBeEmpty; + final int maxLines; + final int maxLength; const SingleInputDialog({ Key key, @@ -21,10 +26,13 @@ class SingleInputDialog extends StatefulWidget { @required this.checkInput, @required this.errorMessage, this.canBeEmpty = false, + this.maxLines = 1, + this.maxLength, }) : assert(title != null), assert(label != null), assert(checkInput != null), assert(errorMessage != null), + assert(maxLines != null), super(key: key); @override @@ -51,6 +59,8 @@ class __InputURLDialogState extends State { content: TextField( controller: _controller, onChanged: (s) => setState(() {}), + maxLines: widget.maxLines, + maxLength: widget.maxLength, decoration: InputDecoration( icon: widget.icon == null ? null : Icon(widget.icon), alignLabelWithHint: true, diff --git a/lib/ui/routes/account_settings/general_account_settings.dart b/lib/ui/routes/account_settings/general_account_settings.dart index b9a0218..08a25ac 100644 --- a/lib/ui/routes/account_settings/general_account_settings.dart +++ b/lib/ui/routes/account_settings/general_account_settings.dart @@ -192,7 +192,7 @@ class __GeneralAccountSettingsBodyState // Personal website TextEditSettingsTile( - title: tr("Personal website URL"), + title: tr("Personal website URL (optional)"), currValue: _settings.personalWebsite, onChanged: (v) { _settings.personalWebsite = v; @@ -200,7 +200,20 @@ class __GeneralAccountSettingsBodyState }, checkInput: (s) => validateUrl(s), allowEmptyValues: true, - ) + ), + + // Public notes + TextEditSettingsTile( + title: tr("Public note (optional)"), + currValue: _settings.publicNote, + onChanged: (v) { + _settings.publicNote = v; + _updateSettings(); + }, + allowEmptyValues: true, + maxLength: 255, + maxLines: 3, + ), ]; } diff --git a/lib/ui/widgets/settings/text_settings_edit_tile.dart b/lib/ui/widgets/settings/text_settings_edit_tile.dart index 80664cf..4f892c4 100644 --- a/lib/ui/widgets/settings/text_settings_edit_tile.dart +++ b/lib/ui/widgets/settings/text_settings_edit_tile.dart @@ -15,6 +15,8 @@ class TextEditSettingsTile extends SettingsTile { final void Function(String) onChanged; final bool Function(String) checkInput; final bool allowEmptyValues; + final int maxLines; + final int maxLength; bool get readOnly => onChanged == null; @@ -25,10 +27,13 @@ class TextEditSettingsTile extends SettingsTile { @required this.onChanged, this.checkInput = _defaultCheck, this.allowEmptyValues = false, + this.maxLength, + this.maxLines = 1, }) : assert(title != null), assert(currValue != null), assert(checkInput != null), - assert(allowEmptyValues != null); + assert(allowEmptyValues != null), + assert(maxLines != null); @override Widget build(BuildContext context) { @@ -50,6 +55,8 @@ class TextEditSettingsTile extends SettingsTile { checkInput: checkInput, errorMessage: tr("Invalid value!"), canBeEmpty: allowEmptyValues, + maxLines: maxLines, + maxLength: maxLength, ), );