Settings
This commit is contained in:
parent
f8b695985f
commit
dc338f031c
|
|
@ -338,7 +338,7 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
//return 'showCurrencyCode: ${staticState.gatewayMap}';
|
//return 'showCurrencyCode: ${staticState.gatewayMap}';
|
||||||
return 'gateway config: ${companyGatewayUIState.editing}';
|
return 'defaultInvoiceDesignId: ${selectedCompany.settings.defaultInvoiceDesignId}';
|
||||||
//return 'Routes: Current: ${uiState.currentRoute} Prev: ${uiState.previousRoute}';
|
//return 'Routes: Current: ${uiState.currentRoute} Prev: ${uiState.previousRoute}';
|
||||||
//return 'Route: ${uiState.currentRoute}, Setting Type: ${uiState.settingsUIState.entityType}, Name: ${uiState.settingsUIState.settings.name}, Updated: ${uiState.settingsUIState.updatedAt}';
|
//return 'Route: ${uiState.currentRoute}, Setting Type: ${uiState.settingsUIState.entityType}, Name: ${uiState.settingsUIState.settings.name}, Updated: ${uiState.settingsUIState.updatedAt}';
|
||||||
//return 'Route: ${uiState.currentRoute}, Previous: ${uiState.previousRoute}, Layout: ${uiState.layout}, Menu: ${uiState.isMenuVisible}, History: ${uiState.isHistoryVisible}';
|
//return 'Route: ${uiState.currentRoute}, Previous: ${uiState.previousRoute}, Layout: ${uiState.layout}, Menu: ${uiState.isMenuVisible}, History: ${uiState.isHistoryVisible}';
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@ import 'package:flutter/widgets.dart';
|
||||||
import 'package:flutter_redux/flutter_redux.dart';
|
import 'package:flutter_redux/flutter_redux.dart';
|
||||||
import 'package:invoiceninja_flutter/constants.dart';
|
import 'package:invoiceninja_flutter/constants.dart';
|
||||||
import 'package:invoiceninja_flutter/data/models/company_model.dart';
|
import 'package:invoiceninja_flutter/data/models/company_model.dart';
|
||||||
|
import 'package:invoiceninja_flutter/data/models/entities.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/client/client_actions.dart';
|
||||||
|
import 'package:invoiceninja_flutter/redux/group/group_actions.dart';
|
||||||
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
|
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
|
||||||
import 'package:invoiceninja_flutter/ui/settings/client_portal.dart';
|
import 'package:invoiceninja_flutter/ui/settings/client_portal.dart';
|
||||||
import 'package:invoiceninja_flutter/utils/completers.dart';
|
import 'package:invoiceninja_flutter/utils/completers.dart';
|
||||||
|
|
@ -31,8 +34,10 @@ class ClientPortalScreen extends StatelessWidget {
|
||||||
class ClientPortalVM {
|
class ClientPortalVM {
|
||||||
ClientPortalVM({
|
ClientPortalVM({
|
||||||
@required this.state,
|
@required this.state,
|
||||||
|
@required this.settings,
|
||||||
@required this.company,
|
@required this.company,
|
||||||
@required this.onChanged,
|
@required this.onCompanyChanged,
|
||||||
|
@required this.onSettingsChanged,
|
||||||
@required this.onSavePressed,
|
@required this.onSavePressed,
|
||||||
@required this.onCancelPressed,
|
@required this.onCancelPressed,
|
||||||
});
|
});
|
||||||
|
|
@ -42,23 +47,41 @@ class ClientPortalVM {
|
||||||
|
|
||||||
return ClientPortalVM(
|
return ClientPortalVM(
|
||||||
state: state,
|
state: state,
|
||||||
company: state.selectedCompany,
|
settings: state.uiState.settingsUIState.settings,
|
||||||
onChanged: (company) {
|
company: state.uiState.settingsUIState.userCompany.company,
|
||||||
store.dispatch(UpdateCompany(company: state.selectedCompany));
|
onSettingsChanged: (settings) =>
|
||||||
},
|
store.dispatch(UpdateSettings(settings: settings)),
|
||||||
onCancelPressed: (context) {},
|
onCompanyChanged: (company) =>
|
||||||
|
store.dispatch(UpdateCompany(company: company)),
|
||||||
|
onCancelPressed: (context) => store.dispatch(ResetSettings()),
|
||||||
onSavePressed: (context) {
|
onSavePressed: (context) {
|
||||||
|
final settingsUIState = state.uiState.settingsUIState;
|
||||||
final completer = snackBarCompleter(
|
final completer = snackBarCompleter(
|
||||||
context, AppLocalization.of(context).savedSettings);
|
context, AppLocalization.of(context).savedSettings);
|
||||||
|
switch (settingsUIState.entityType) {
|
||||||
|
case EntityType.company:
|
||||||
store.dispatch(SaveCompanyRequest(
|
store.dispatch(SaveCompanyRequest(
|
||||||
completer: completer,
|
completer: completer,
|
||||||
company: state.uiState.settingsUIState.userCompany.company));
|
company: settingsUIState.userCompany.company));
|
||||||
});
|
break;
|
||||||
|
case EntityType.group:
|
||||||
|
store.dispatch(SaveGroupRequest(
|
||||||
|
completer: completer, group: settingsUIState.group));
|
||||||
|
break;
|
||||||
|
case EntityType.client:
|
||||||
|
store.dispatch(SaveClientRequest(
|
||||||
|
completer: completer, client: settingsUIState.client));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
final AppState state;
|
final AppState state;
|
||||||
final CompanyEntity company;
|
final CompanyEntity company;
|
||||||
final Function(CompanyEntity) onChanged;
|
final SettingsEntity settings;
|
||||||
final Function(BuildContext) onSavePressed;
|
final Function(BuildContext) onSavePressed;
|
||||||
final Function(BuildContext) onCancelPressed;
|
final Function(BuildContext) onCancelPressed;
|
||||||
|
final Function(CompanyEntity) onCompanyChanged;
|
||||||
|
final Function(SettingsEntity) onSettingsChanged;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,6 @@ class _EmailSettingsState extends State<EmailSettings>
|
||||||
final localization = AppLocalization.of(context);
|
final localization = AppLocalization.of(context);
|
||||||
final viewModel = widget.viewModel;
|
final viewModel = widget.viewModel;
|
||||||
final state = viewModel.state;
|
final state = viewModel.state;
|
||||||
final settings = viewModel.settings;
|
|
||||||
|
|
||||||
return SettingsScaffold(
|
return SettingsScaffold(
|
||||||
title: localization.emailSettings,
|
title: localization.emailSettings,
|
||||||
|
|
|
||||||
|
|
@ -131,12 +131,13 @@ class SettingsList extends StatelessWidget {
|
||||||
viewModel: viewModel,
|
viewModel: viewModel,
|
||||||
icon: FontAwesomeIcons.paintBrush,
|
icon: FontAwesomeIcons.paintBrush,
|
||||||
),
|
),
|
||||||
if (showAll)
|
*/
|
||||||
SettingsListTile(
|
SettingsListTile(
|
||||||
section: kSettingsClientPortal,
|
section: kSettingsClientPortal,
|
||||||
viewModel: viewModel,
|
viewModel: viewModel,
|
||||||
icon: FontAwesomeIcons.cloud,
|
icon: FontAwesomeIcons.cloud,
|
||||||
),
|
),
|
||||||
|
/*
|
||||||
if (showAll)
|
if (showAll)
|
||||||
SettingsListTile(
|
SettingsListTile(
|
||||||
section: kSettingsBuyNowButtons,
|
section: kSettingsBuyNowButtons,
|
||||||
|
|
@ -185,7 +186,7 @@ class SettingsListTile extends StatelessWidget {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final localization = AppLocalization.of(context);
|
final localization = AppLocalization.of(context);
|
||||||
final company = viewModel.state.selectedCompany;
|
final state = viewModel.state;
|
||||||
|
|
||||||
return SelectedIndicator(
|
return SelectedIndicator(
|
||||||
isSelected: viewModel.state.uiState.containsRoute('/$section'),
|
isSelected: viewModel.state.uiState.containsRoute('/$section'),
|
||||||
|
|
@ -197,14 +198,13 @@ class SettingsListTile extends StatelessWidget {
|
||||||
title: Text(localization.lookup(section)),
|
title: Text(localization.lookup(section)),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
if (section == kSettingsOnlinePayments &&
|
if (section == kSettingsOnlinePayments &&
|
||||||
(company.companyGateways == null ||
|
state.companyGatewayState.list.isEmpty) {
|
||||||
company.companyGateways.isEmpty)) {
|
|
||||||
viewModel.loadSection(context, kSettingsOnlinePaymentsEdit);
|
viewModel.loadSection(context, kSettingsOnlinePaymentsEdit);
|
||||||
} else if (section == kSettingsTaxRates &&
|
} else if (section == kSettingsTaxRates &&
|
||||||
(company.taxRates == null || company.taxRates.isEmpty)) {
|
state.taxRateState.list.isEmpty) {
|
||||||
viewModel.loadSection(context, kSettingsTaxRatesEdit);
|
viewModel.loadSection(context, kSettingsTaxRatesEdit);
|
||||||
} else if (section == kSettingsGroupSettings &&
|
} else if (section == kSettingsGroupSettings &&
|
||||||
(company.groups == null || company.groups.isEmpty)) {
|
state.groupState.list.isEmpty) {
|
||||||
viewModel.loadSection(context, kSettingsGroupSettingsEdit);
|
viewModel.loadSection(context, kSettingsGroupSettingsEdit);
|
||||||
} else {
|
} else {
|
||||||
viewModel.loadSection(context, section);
|
viewModel.loadSection(context, section);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue