119 lines
5.2 KiB
Dart
119 lines
5.2 KiB
Dart
import 'package:built_collection/built_collection.dart';
|
|
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
|
import 'package:invoiceninja_flutter/redux/settings/settings_actions.dart';
|
|
import 'package:redux/redux.dart';
|
|
import 'package:invoiceninja_flutter/data/models/models.dart';
|
|
import 'package:invoiceninja_flutter/redux/company/company_state.dart';
|
|
import 'package:invoiceninja_flutter/redux/product/product_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/client/client_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/invoice/invoice_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/company/company_actions.dart';
|
|
import 'package:invoiceninja_flutter/redux/document/document_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/expense/expense_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/vendor/vendor_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/task/task_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/project/project_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/payment/payment_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/quote/quote_reducer.dart';
|
|
// STARTER: import - do not remove comment
|
|
import 'package:invoiceninja_flutter/redux/user/user_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/tax_rate/tax_rate_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/company_gateway/company_gateway_reducer.dart';
|
|
import 'package:invoiceninja_flutter/redux/group/group_reducer.dart';
|
|
|
|
UserCompanyState companyReducer(UserCompanyState state, dynamic action) {
|
|
if (action is RefreshData && action.loadCompanies) {
|
|
return UserCompanyState();
|
|
}
|
|
|
|
return state.rebuild((b) => b
|
|
..userCompany.replace(userCompanyEntityReducer(state.userCompany, action))
|
|
..documentState.replace(documentsReducer(state.documentState, action))
|
|
..clientState.replace(clientsReducer(state.clientState, action))
|
|
..productState.replace(productsReducer(state.productState, action))
|
|
..invoiceState.replace(invoicesReducer(state.invoiceState, action))
|
|
..expenseState.replace(expensesReducer(state.expenseState, action))
|
|
..vendorState.replace(vendorsReducer(state.vendorState, action))
|
|
..taskState.replace(tasksReducer(state.taskState, action))
|
|
// STARTER: reducer - do not remove comment
|
|
..userState.replace(usersReducer(state.userState, action))
|
|
..taxRateState.replace(taxRatesReducer(state.taxRateState, action))
|
|
..companyGatewayState
|
|
.replace(companyGatewaysReducer(state.companyGatewayState, action))
|
|
..projectState.replace(projectsReducer(state.projectState, action))
|
|
..paymentState.replace(paymentsReducer(state.paymentState, action))
|
|
..quoteState.replace(quotesReducer(state.quoteState, action))
|
|
..groupState.replace(groupsReducer(state.groupState, action)));
|
|
}
|
|
|
|
Reducer<UserCompanyEntity> userCompanyEntityReducer = combineReducers([
|
|
TypedReducer<UserCompanyEntity, LoadCompanySuccess>(
|
|
loadCompanySuccessReducer),
|
|
TypedReducer<UserCompanyEntity, SaveCompanySuccess>(
|
|
saveCompanySuccessReducer),
|
|
TypedReducer<UserCompanyEntity, SaveUserSettingsSuccess>(
|
|
(userCompany, action) =>
|
|
userCompany.rebuild((b) => b..user.replace(action.user))),
|
|
]);
|
|
|
|
UserCompanyEntity loadCompanySuccessReducer(
|
|
UserCompanyEntity company, LoadCompanySuccess action) {
|
|
var userCompany = action.userCompany;
|
|
|
|
userCompany = userCompany.rebuild((b) => b.company
|
|
..taskStatuses.replace(<TaskStatusEntity>[])
|
|
..taskStatusMap.replace(BuiltMap<String, TaskStatusEntity>())
|
|
..expenseCategories.replace(<ExpenseCategoryEntity>[])
|
|
..expenseCategoryMap.replace(BuiltMap<String, ExpenseCategoryEntity>())
|
|
..userMap.replace(BuiltMap<String, UserEntity>()));
|
|
|
|
/*
|
|
|
|
return userCompany;
|
|
|
|
if (userCompany.company.taskStatuses != null) {
|
|
userCompany = userCompany
|
|
..company.rebuild((b) => b
|
|
..taskStatusMap.addAll(Map.fromIterable(
|
|
userCompany.company.taskStatuses,
|
|
key: (dynamic item) => item.id,
|
|
value: (dynamic item) => item,
|
|
)));
|
|
}
|
|
|
|
if (userCompany.company.expenseCategories != null) {
|
|
userCompany = userCompany
|
|
..company.rebuild((b) => b
|
|
..expenseCategoryMap.addAll(Map.fromIterable(
|
|
userCompany.company.expenseCategories,
|
|
key: (dynamic item) => item.id,
|
|
value: (dynamic item) => item,
|
|
)));
|
|
}
|
|
*/
|
|
|
|
return userCompany
|
|
..company.rebuild((b) => b
|
|
..userMap.addAll(Map.fromIterable(
|
|
action.userCompany.company.users,
|
|
key: (dynamic item) => item.id,
|
|
value: (dynamic item) => item,
|
|
)));
|
|
}
|
|
|
|
UserCompanyEntity saveCompanySuccessReducer(
|
|
UserCompanyEntity userCompany, SaveCompanySuccess action) {
|
|
final company = action.company.rebuild((b) => b
|
|
..taxRates.replace(userCompany.company.taxRates)
|
|
..taskStatuses.replace(userCompany.company.taskStatuses)
|
|
..taskStatusMap.replace(userCompany.company.taskStatusMap)
|
|
..expenseCategories.replace(userCompany.company.expenseCategories)
|
|
..expenseCategoryMap.replace(userCompany.company.expenseCategoryMap)
|
|
..users.replace(userCompany.company.users)
|
|
..userMap.replace(userCompany.company.userMap));
|
|
|
|
userCompany = userCompany.rebuild((b) => b..company.replace(company));
|
|
|
|
return userCompany;
|
|
}
|