From d4662be3a1b1dad6e70742ef8e6af04ccd2363d3 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Thu, 3 Oct 2019 15:52:19 +0300 Subject: [PATCH] Settings --- lib/redux/app/app_state.dart | 2 +- lib/ui/invoice/edit/invoice_edit.dart | 2 +- lib/ui/settings/company_details.dart | 49 ++++++++++++++++++++++++- lib/ui/settings/company_details_vm.dart | 2 +- 4 files changed, 51 insertions(+), 4 deletions(-) diff --git a/lib/redux/app/app_state.dart b/lib/redux/app/app_state.dart index 22415e4c1..72e1bdf1c 100644 --- a/lib/redux/app/app_state.dart +++ b/lib/redux/app/app_state.dart @@ -289,7 +289,7 @@ abstract class AppState implements Built { String toString() { //return 'Settings: ${selectedCompanyState.company.settings}'; //return 'URL: ${authState.url}, ${selectedCompany.plan}'; - return 'Route: ${uiState.currentRoute}, updatedAt: ${settingsUIState.updatedAt}'; + return 'Route: ${uiState.currentRoute}, size: ${selectedCompany.sizeId}/${uiState.settingsUIState.editing.company.sizeId}, country: ${selectedCompany.countryId}/${uiState.settingsUIState.editing.company.countryId} updatedAt: ${settingsUIState.updatedAt}'; //return 'Route: ${uiState.currentRoute}, Previous: ${uiState.previousRoute}, Layout: ${uiState.layout}, Menu: ${uiState.isMenuVisible}, History: ${uiState.isHistoryVisible}'; } } diff --git a/lib/ui/invoice/edit/invoice_edit.dart b/lib/ui/invoice/edit/invoice_edit.dart index 4f0f89d86..8de055361 100644 --- a/lib/ui/invoice/edit/invoice_edit.dart +++ b/lib/ui/invoice/edit/invoice_edit.dart @@ -111,7 +111,7 @@ class _InvoiceEditState extends State body: Form( key: widget.formKey, child: TabBarView( - key: ValueKey(viewModel.invoice.id), + key: ValueKey('__invoice_${viewModel.invoice.id}__'), controller: _controller, children: [ InvoiceEditDetailsScreen(), diff --git a/lib/ui/settings/company_details.dart b/lib/ui/settings/company_details.dart index 7d87f5332..2b1c6700e 100644 --- a/lib/ui/settings/company_details.dart +++ b/lib/ui/settings/company_details.dart @@ -1,5 +1,8 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:invoiceninja_flutter/data/models/entities.dart'; +import 'package:invoiceninja_flutter/redux/static/static_selectors.dart'; +import 'package:invoiceninja_flutter/ui/app/entity_dropdown.dart'; import 'package:invoiceninja_flutter/ui/app/form_card.dart'; import 'package:invoiceninja_flutter/ui/app/forms/decorated_form_field.dart'; import 'package:invoiceninja_flutter/ui/settings/company_details_vm.dart'; @@ -119,6 +122,8 @@ class _CompanyDetailsState extends State Widget build(BuildContext context) { final localization = AppLocalization.of(context); final viewModel = widget.viewModel; + final state = viewModel.state; + final company = viewModel.company; return SettingsScaffold( title: localization.companyDetails, @@ -176,7 +181,36 @@ class _CompanyDetailsState extends State controller: _phoneController, ), ], - ) + ), + FormCard( + children: [ + EntityDropdown( + key: ValueKey('__size_${company.sizeId}__'), + entityType: EntityType.size, + entityMap: state.staticState.sizeMap, + entityList: memoizedSizeList(state.staticState.sizeMap), + labelText: localization.size, + initialValue: + state.staticState.sizeMap[company.sizeId]?.name, + onSelected: (SelectableEntity size) => + viewModel.onChanged( + company.rebuild((b) => b..sizeId = size.id)), + ), + EntityDropdown( + key: ValueKey('__industry_${company.industryId}__'), + entityType: EntityType.industry, + entityMap: state.staticState.industryMap, + entityList: + memoizedIndustryList(state.staticState.industryMap), + labelText: localization.industry, + initialValue: state + .staticState.industryMap[company.industryId]?.name, + onSelected: (SelectableEntity industry) => + viewModel.onChanged(company + .rebuild((b) => b..industryId = industry.id)), + ), + ], + ), ], ), ListView( @@ -203,6 +237,19 @@ class _CompanyDetailsState extends State label: localization.postalCode, controller: _postalCodeController, ), + EntityDropdown( + key: ValueKey('__country_${company.countryId}__'), + entityType: EntityType.country, + entityMap: state.staticState.countryMap, + entityList: + memoizedCountryList(state.staticState.countryMap), + labelText: localization.country, + initialValue: + state.staticState.countryMap[company.countryId]?.name, + onSelected: (SelectableEntity country) => + viewModel.onChanged(company + .rebuild((b) => b..countryId = country.id)), + ), ], ) ], diff --git a/lib/ui/settings/company_details_vm.dart b/lib/ui/settings/company_details_vm.dart index 0220d54d8..19266454a 100644 --- a/lib/ui/settings/company_details_vm.dart +++ b/lib/ui/settings/company_details_vm.dart @@ -39,7 +39,7 @@ class CompanyDetailsVM { return CompanyDetailsVM( state: state, - company: state.selectedCompany, + company: state.uiState.settingsUIState.editing.company, onChanged: (company) => store.dispatch(UpdateCompanySettings(company: company)), onCancelPressed: (context) => store