From f462ebb9ed18eba7d68bcc9db1ba795e10a70d49 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Fri, 18 Oct 2019 14:25:44 +0300 Subject: [PATCH] Settings --- lib/redux/static/static_selectors.dart | 3 ++- .../edit/company_gateway_edit.dart | 7 +++++- lib/utils/strings.dart | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/lib/redux/static/static_selectors.dart b/lib/redux/static/static_selectors.dart index 197a0e1d5..220941d90 100644 --- a/lib/redux/static/static_selectors.dart +++ b/lib/redux/static/static_selectors.dart @@ -115,7 +115,8 @@ var memoizedGatewayList = memo1( List gatewayList(BuiltMap gatewayMap) { final list = gatewayMap.keys.toList(); - list.sort((idA, idB) => gatewayMap[idA].id.compareTo(gatewayMap[idB].id)); + list.sort((idA, idB) => + gatewayMap[idA].sortOrder.compareTo(gatewayMap[idB].sortOrder)); return list; } diff --git a/lib/ui/company_gateway/edit/company_gateway_edit.dart b/lib/ui/company_gateway/edit/company_gateway_edit.dart index 7a06f6631..9c8c624d8 100644 --- a/lib/ui/company_gateway/edit/company_gateway_edit.dart +++ b/lib/ui/company_gateway/edit/company_gateway_edit.dart @@ -9,6 +9,7 @@ import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/company_gateway/edit/company_gateway_edit_vm.dart'; import 'package:invoiceninja_flutter/ui/settings/settings_scaffold.dart'; import 'package:invoiceninja_flutter/utils/localization.dart'; +import 'package:invoiceninja_flutter/utils/strings.dart'; class CompanyGatewayEdit extends StatefulWidget { const CompanyGatewayEdit({ @@ -260,6 +261,10 @@ class GatewayConfigSettings extends StatelessWidget { final state = viewModel.state; final gateway = state.staticState.gatewayMap[companyGateway.gatewayId]; + if (gateway == null) { + return SizedBox(); + } + return Column( children: gateway.parsedFields.keys .map((field) => GatewayConfigField( @@ -324,7 +329,7 @@ class _GatewayConfigFieldState extends State { return TextFormField( controller: _textController, decoration: InputDecoration( - labelText: widget.field, + labelText: toTitleCase(widget.field), ), onChanged: (value) => _onChanged(), obscureText: _obscureText(widget.field), diff --git a/lib/utils/strings.dart b/lib/utils/strings.dart index b7d2c64c9..03f8543c9 100644 --- a/lib/utils/strings.dart +++ b/lib/utils/strings.dart @@ -3,6 +3,31 @@ String toSnakeCase(String value) { RegExp(r'[A-Z]'), (Match match) => '_' + match[0].toLowerCase()); } +String toSpaceCase(String value) { + return value.replaceAllMapped( + RegExp(r'[A-Z]'), (Match match) => ' ' + match[0].toLowerCase()); +} + +String toTitleCase(String text) { + if (text.length <= 1) { + return text.toUpperCase(); + } + + text = toSpaceCase(text); + final words = text.split(' '); + final capitalized = words.map((word) { + if (word == 'url') { + return 'URL'; + } + + final first = word.substring(0, 1).toUpperCase(); + final rest = word.substring(1); + return '$first$rest'; + }); + + return capitalized.join(' '); +} + String getFirstName(String value) { final parts = value.split(' '); if (parts.length > 1) {