Save invoice then choose mark paid, shown discard changes
This commit is contained in:
parent
342da329d4
commit
ce9e83aae0
|
|
@ -17,58 +17,36 @@ import 'package:invoiceninja_flutter/constants.dart';
|
|||
import 'package:invoiceninja_flutter/data/models/account_model.dart';
|
||||
import 'package:invoiceninja_flutter/data/models/models.dart';
|
||||
import 'package:invoiceninja_flutter/redux/auth/auth_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/client/client_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/client/client_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company/company_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company_gateway/company_gateway_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/company_gateway/company_gateway_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/dashboard/dashboard_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/design/design_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/design/design_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/document/document_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense/expense_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense/expense_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense_category/expense_category_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense_category/expense_category_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/group/group_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/group/group_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment/payment_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment/payment_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment_term/payment_term_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/payment_term/payment_term_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/product/product_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/product/product_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/project/project_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/project/project_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/quote/quote_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/static/static_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/subscription/subscription_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/subscription/subscription_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/task/task_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/task/task_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/task_status/task_status_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/task_status/task_status_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/tax_rate/tax_rate_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/tax_rate/tax_rate_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/token/token_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/token/token_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/entity_ui_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/list_ui_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/pref_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/user/user_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/vendor/vendor_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/vendor/vendor_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/webhook/webhook_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/webhook/webhook_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/screen_imports.dart';
|
||||
import 'package:invoiceninja_flutter/ui/credit/credit_screen.dart';
|
||||
|
|
@ -87,15 +65,12 @@ import 'package:invoiceninja_flutter/ui/webhook/edit/webhook_edit_vm.dart';
|
|||
import 'package:invoiceninja_flutter/utils/colors.dart';
|
||||
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
||||
import 'package:invoiceninja_flutter/utils/platforms.dart';
|
||||
// STARTER: import - do not remove comment
|
||||
import 'package:invoiceninja_flutter/redux/transaction/transaction_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/transaction/edit/transaction_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/redux/transaction/transaction_selectors.dart';
|
||||
|
||||
import 'package:invoiceninja_flutter/redux/bank_account/bank_account_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_state.dart';
|
||||
import 'package:invoiceninja_flutter/ui/purchase_order/edit/purchase_order_edit_vm.dart';
|
||||
import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_selectors.dart';
|
||||
// STARTER: import - do not remove comment
|
||||
|
||||
part 'app_state.g.dart';
|
||||
|
||||
|
|
@ -702,64 +677,54 @@ abstract class AppState implements Built<AppState, AppStateBuilder> {
|
|||
bool hasChanges() {
|
||||
switch (uiState.currentRoute) {
|
||||
case ClientEditScreen.route:
|
||||
return hasClientChanges(clientUIState.editing, clientState.map);
|
||||
return clientUIState.editing.isChanged == true;
|
||||
case ProductEditScreen.route:
|
||||
return hasProductChanges(productUIState.editing, productState.map);
|
||||
return productUIState.editing.isChanged == true;
|
||||
case InvoiceEditScreen.route:
|
||||
return hasInvoiceChanges(invoiceUIState.editing, invoiceState.map);
|
||||
return invoiceUIState.editing.isChanged == true;
|
||||
case PaymentEditScreen.route:
|
||||
return hasPaymentChanges(paymentUIState.editing, paymentState.map);
|
||||
return paymentUIState.editing.isChanged == true;
|
||||
case QuoteEditScreen.route:
|
||||
return hasQuoteChanges(quoteUIState.editing, quoteState.map);
|
||||
return quoteUIState.editing.isChanged == true;
|
||||
case ProjectEditScreen.route:
|
||||
return hasProjectChanges(projectUIState.editing, projectState.map);
|
||||
return projectUIState.editing.isChanged == true;
|
||||
case TaskEditScreen.route:
|
||||
return hasTaskChanges(taskUIState.editing, taskState.map);
|
||||
return taskUIState.editing.isChanged == true;
|
||||
case VendorEditScreen.route:
|
||||
return hasVendorChanges(vendorUIState.editing, vendorState.map);
|
||||
return vendorUIState.editing.isChanged == true;
|
||||
case ExpenseEditScreen.route:
|
||||
return hasExpenseChanges(expenseUIState.editing, expenseState.map);
|
||||
return expenseUIState.editing.isChanged == true;
|
||||
case GroupEditScreen.route:
|
||||
return hasGroupChanges(groupUIState.editing, groupState.map);
|
||||
return groupUIState.editing.isChanged == true;
|
||||
case TaxRateEditScreen.route:
|
||||
return hasTaxRateChanges(taxRateUIState.editing, taxRateState.map);
|
||||
return taxRateUIState.editing.isChanged == true;
|
||||
case CompanyGatewayEditScreen.route:
|
||||
return hasCompanyGatewayChanges(
|
||||
companyGatewayUIState.editing, companyGatewayState.map);
|
||||
return companyGatewayUIState.editing.isChanged == true;
|
||||
case CreditEditScreen.route:
|
||||
return hasCreditChanges(creditUIState.editing, creditState.map);
|
||||
return creditUIState.editing.isChanged == true;
|
||||
// STARTER: has changes - do not remove comment
|
||||
case TransactionEditScreen.route:
|
||||
return hasTransactionChanges(
|
||||
transactionUIState.editing, transactionState.map);
|
||||
|
||||
return transactionUIState.editing.isChanged == true;
|
||||
case PurchaseOrderEditScreen.route:
|
||||
return hasPurchaseOrderChanges(
|
||||
purchaseOrderUIState.editing, purchaseOrderState.map);
|
||||
return purchaseOrderUIState.editing.isChanged == true;
|
||||
case RecurringExpenseEditScreen.route:
|
||||
return hasRecurringExpenseChanges(
|
||||
recurringExpenseUIState.editing, recurringExpenseState.map);
|
||||
return recurringExpenseUIState.editing.isChanged == true;
|
||||
case SubscriptionEditScreen.route:
|
||||
return hasSubscriptionChanges(
|
||||
subscriptionUIState.editing, subscriptionState.map);
|
||||
return subscriptionUIState.editing.isChanged == true;
|
||||
case TaskStatusEditScreen.route:
|
||||
return hasTaskStatusChanges(
|
||||
taskStatusUIState.editing, taskStatusState.map);
|
||||
return taskStatusUIState.editing.isChanged == true;
|
||||
case ExpenseCategoryEditScreen.route:
|
||||
return hasExpenseCategoryChanges(
|
||||
expenseCategoryUIState.editing, expenseCategoryState.map);
|
||||
return expenseCategoryUIState.editing.isChanged == true;
|
||||
case RecurringInvoiceEditScreen.route:
|
||||
return hasRecurringInvoiceChanges(
|
||||
recurringInvoiceUIState.editing, recurringInvoiceState.map);
|
||||
return recurringInvoiceUIState.editing.isChanged == true;
|
||||
case WebhookEditScreen.route:
|
||||
return hasWebhookChanges(webhookUIState.editing, webhookState.map);
|
||||
return webhookUIState.editing.isChanged == true;
|
||||
case TokenEditScreen.route:
|
||||
return hasTokenChanges(tokenUIState.editing, tokenState.map);
|
||||
return tokenUIState.editing.isChanged == true;
|
||||
case PaymentTermEditScreen.route:
|
||||
return hasPaymentTermChanges(
|
||||
paymentTermUIState.editing, paymentTermState.map);
|
||||
return paymentTermUIState.editing.isChanged == true;
|
||||
case DesignEditScreen.route:
|
||||
return hasDesignChanges(designUIState.editing, designState.map);
|
||||
return designUIState.editing.isChanged == true;
|
||||
}
|
||||
|
||||
if (uiState.isInSettings) {
|
||||
|
|
|
|||
|
|
@ -86,12 +86,6 @@ List<String> filteredCompanyGatewaysSelector(
|
|||
return gatewaysIds;
|
||||
}
|
||||
|
||||
bool hasCompanyGatewayChanges(CompanyGatewayEntity companyGateway,
|
||||
BuiltMap<String, CompanyGatewayEntity> companyGatewayMap) =>
|
||||
companyGateway.isNew
|
||||
? companyGateway.isChanged
|
||||
: companyGateway != companyGatewayMap[companyGateway.id];
|
||||
|
||||
var memoizedCalculateCompanyGatewayProcessed = memo2(
|
||||
(String companyGatewayId, BuiltMap<String, PaymentEntity> paymentMap) =>
|
||||
calculateCompanyGatewayProcessed(
|
||||
|
|
|
|||
|
|
@ -238,7 +238,3 @@ EntityStats creditStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasCreditChanges(
|
||||
InvoiceEntity credit, BuiltMap<String, InvoiceEntity> creditMap) =>
|
||||
credit.isNew ? credit.isChanged : credit != creditMap[credit.id];
|
||||
|
|
|
|||
|
|
@ -64,10 +64,6 @@ List<String> filteredDesignsSelector(BuiltMap<String, DesignEntity> designMap,
|
|||
return list;
|
||||
}
|
||||
|
||||
bool hasDesignChanges(
|
||||
DesignEntity design, BuiltMap<String, DesignEntity> designMap) =>
|
||||
design.isNew ? design.isChanged : design != designMap[design.id];
|
||||
|
||||
String getDesignIdForClientByEntity(
|
||||
{AppState state, String clientId, EntityType entityType}) {
|
||||
final client = state.clientState.get(clientId);
|
||||
|
|
|
|||
|
|
@ -381,7 +381,3 @@ EntityStats expenseStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasExpenseChanges(
|
||||
ExpenseEntity expense, BuiltMap<String, ExpenseEntity> expenseMap) =>
|
||||
expense.isNew ? expense.isChanged : expense != expenseMap[expense.id];
|
||||
|
|
|
|||
|
|
@ -124,8 +124,3 @@ EntityStats expenseStatsForExpenseCategory(
|
|||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasExpenseCategoryChanges(ExpenseCategoryEntity expenseCategory,
|
||||
BuiltMap<String, ExpenseCategoryEntity> expenseCategoryMap) =>
|
||||
expenseCategory.isNew
|
||||
? expenseCategory.isChanged
|
||||
: expenseCategory != expenseCategoryMap[expenseCategory.id];
|
||||
|
|
|
|||
|
|
@ -89,7 +89,3 @@ EntityStats clientStatsForGroup(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasGroupChanges(
|
||||
GroupEntity group, BuiltMap<String, GroupEntity> groupMap) =>
|
||||
group.isNew ? group.isChanged : group != groupMap[group.id];
|
||||
|
|
|
|||
|
|
@ -350,7 +350,3 @@ int precisionForInvoice(AppState state, InvoiceEntity invoice) {
|
|||
final currency = state.staticState.currencyMap[client.currencyId];
|
||||
return currency?.precision ?? 2;
|
||||
}
|
||||
|
||||
bool hasInvoiceChanges(
|
||||
InvoiceEntity invoice, BuiltMap<String, InvoiceEntity> invoiceMap) =>
|
||||
invoice.isNew ? invoice.isChanged : invoice != invoiceMap[invoice.id];
|
||||
|
|
|
|||
|
|
@ -211,7 +211,3 @@ EntityStats paymentStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasPaymentChanges(
|
||||
PaymentEntity payment, BuiltMap<String, PaymentEntity> paymentMap) =>
|
||||
payment.isNew ? payment.isChanged : payment != paymentMap[payment.id];
|
||||
|
|
|
|||
|
|
@ -68,9 +68,3 @@ List<String> filteredPaymentTermsSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasPaymentTermChanges(PaymentTermEntity paymentTerm,
|
||||
BuiltMap<String, PaymentTermEntity> paymentTermMap) =>
|
||||
paymentTerm.isNew
|
||||
? paymentTerm.isChanged
|
||||
: paymentTerm != paymentTermMap[paymentTerm.id];
|
||||
|
|
|
|||
|
|
@ -154,6 +154,3 @@ List<String> filteredProductsSelector(
|
|||
return list;
|
||||
}
|
||||
|
||||
bool hasProductChanges(
|
||||
ProductEntity product, BuiltMap<String, ProductEntity> productMap) =>
|
||||
product.isNew ? product.isChanged : product != productMap[product.id];
|
||||
|
|
|
|||
|
|
@ -273,7 +273,3 @@ EntityStats projectStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasProjectChanges(
|
||||
ProjectEntity project, BuiltMap<String, ProjectEntity> projectMap) =>
|
||||
project.isNew ? project.isChanged : project != projectMap[project.id];
|
||||
|
|
|
|||
|
|
@ -198,8 +198,3 @@ EntityStats purchaseOrderStatsForVendor(
|
|||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasPurchaseOrderChanges(InvoiceEntity purchaseOrder,
|
||||
BuiltMap<String, InvoiceEntity> purchaseOrderMap) =>
|
||||
purchaseOrder.isNew
|
||||
? purchaseOrder.isChanged
|
||||
: purchaseOrder != purchaseOrderMap[purchaseOrder.id];
|
||||
|
|
|
|||
|
|
@ -180,7 +180,3 @@ EntityStats quoteStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasQuoteChanges(
|
||||
InvoiceEntity quote, BuiltMap<String, InvoiceEntity> quoteMap) =>
|
||||
quote.isNew ? quote.isChanged : quote != quoteMap[quote.id];
|
||||
|
|
|
|||
|
|
@ -271,9 +271,3 @@ EntityStats recurringExpenseStatsForExpense(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasRecurringExpenseChanges(ExpenseEntity recurringExpense,
|
||||
BuiltMap<String, ExpenseEntity> recurringExpenseMap) =>
|
||||
recurringExpense.isNew
|
||||
? recurringExpense.isChanged
|
||||
: recurringExpense != recurringExpenseMap[recurringExpense.id];
|
||||
|
|
|
|||
|
|
@ -215,9 +215,3 @@ EntityStats recurringInvoiceStatsForSubscription(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasRecurringInvoiceChanges(InvoiceEntity recurringInvoice,
|
||||
BuiltMap<String, InvoiceEntity> recurringInvoiceMap) =>
|
||||
recurringInvoice.isNew
|
||||
? recurringInvoice.isChanged
|
||||
: recurringInvoice != recurringInvoiceMap[recurringInvoice.id];
|
||||
|
|
|
|||
|
|
@ -87,9 +87,3 @@ List<String> filteredSubscriptionsSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasSubscriptionChanges(SubscriptionEntity subscription,
|
||||
BuiltMap<String, SubscriptionEntity> subscriptionMap) =>
|
||||
subscription.isNew
|
||||
? subscription.isChanged
|
||||
: subscription != subscriptionMap[subscription.id];
|
||||
|
|
|
|||
|
|
@ -468,6 +468,3 @@ EntityStats taskStatsForUser(
|
|||
|
||||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasTaskChanges(TaskEntity task, BuiltMap<String, TaskEntity> taskMap) =>
|
||||
task.isNew ? task.isChanged : task != taskMap[task.id];
|
||||
|
|
|
|||
|
|
@ -153,12 +153,6 @@ EntityStats taskStatsForTaskStatus(
|
|||
return EntityStats(countActive: countActive, countArchived: countArchived);
|
||||
}
|
||||
|
||||
bool hasTaskStatusChanges(TaskStatusEntity taskStatus,
|
||||
BuiltMap<String, TaskStatusEntity> taskStatusMap) =>
|
||||
taskStatus.isNew
|
||||
? taskStatus.isChanged
|
||||
: taskStatus != taskStatusMap[taskStatus.id];
|
||||
|
||||
String defaultTaskStatusId(BuiltMap<String, TaskStatusEntity> taskStatusMap) {
|
||||
final statusIds = taskStatusMap.keys.where((statusId) {
|
||||
final status = taskStatusMap[statusId];
|
||||
|
|
|
|||
|
|
@ -69,7 +69,3 @@ List<String> filteredTaxRatesSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasTaxRateChanges(
|
||||
TaxRateEntity taxRate, BuiltMap<String, TaxRateEntity> taxRateMap) =>
|
||||
taxRate.isNew ? taxRate.isChanged : taxRate != taxRateMap[taxRate.id];
|
||||
|
|
|
|||
|
|
@ -76,7 +76,3 @@ List<String> filteredTokensSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasTokenChanges(
|
||||
TokenEntity token, BuiltMap<String, TokenEntity> tokenMap) =>
|
||||
token.isNew ? token.isChanged : token != tokenMap[token.id];
|
||||
|
|
|
|||
|
|
@ -107,9 +107,3 @@ List<String> filteredTransactionsSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasTransactionChanges(TransactionEntity transaction,
|
||||
BuiltMap<String, TransactionEntity> transactionMap) =>
|
||||
transaction.isNew
|
||||
? transaction.isChanged
|
||||
: transaction != transactionMap[transaction.id];
|
||||
|
|
|
|||
|
|
@ -129,7 +129,3 @@ double calculateVendorBalance(String vendorId, String currencyId,
|
|||
|
||||
return total;
|
||||
}
|
||||
|
||||
bool hasVendorChanges(
|
||||
VendorEntity vendor, BuiltMap<String, VendorEntity> vendorMap) =>
|
||||
vendor.isNew ? vendor.isChanged : vendor != vendorMap[vendor.id];
|
||||
|
|
|
|||
|
|
@ -77,7 +77,3 @@ List<String> filteredWebhooksSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasWebhookChanges(
|
||||
WebhookEntity webhook, BuiltMap<String, WebhookEntity> webhookMap) =>
|
||||
webhook.isNew ? webhook.isChanged : webhook != webhookMap[webhook.id];
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import 'package:invoiceninja_flutter/utils/localization.dart';
|
|||
import 'package:invoiceninja_flutter/utils/strings.dart';
|
||||
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
|
||||
import 'package:url_launcher/url_launcher.dart';
|
||||
import 'package:url_launcher/url_launcher_string.dart';
|
||||
|
||||
class ClientViewFullwidth extends StatefulWidget {
|
||||
const ClientViewFullwidth({
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import 'package:invoiceninja_flutter/main_app.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/credit/credit_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/credit/edit/credit_edit.dart';
|
||||
|
|
@ -100,7 +99,7 @@ class CreditEditVM extends AbstractInvoiceEditVM {
|
|||
}
|
||||
|
||||
if (credit.isOld &&
|
||||
!hasCreditChanges(credit, state.creditState.map) &&
|
||||
credit.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(credit, action);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ import 'package:flutter_redux/flutter_redux.dart';
|
|||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'package:invoiceninja_flutter/redux/document/document_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/expense/expense_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
|
||||
|
|
@ -154,7 +153,7 @@ class ExpenseEditVM extends AbstractExpenseEditVM {
|
|||
final navigator = navigatorKey.currentState;
|
||||
|
||||
if (expense.isOld &&
|
||||
!hasExpenseChanges(expense, state.expenseState.map) &&
|
||||
expense.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(expense, action);
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ import 'package:invoiceninja_flutter/main_app.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/invoice/invoice_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit.dart';
|
||||
|
|
@ -153,7 +152,7 @@ class InvoiceEditVM extends AbstractInvoiceEditVM {
|
|||
}
|
||||
|
||||
if (invoice.isOld &&
|
||||
!hasInvoiceChanges(invoice, state.invoiceState.map) &&
|
||||
invoice.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(invoice, action);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
|||
import 'package:http/http.dart';
|
||||
import 'package:invoiceninja_flutter/redux/document/document_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/purchase_order/purchase_order_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/ui/purchase_order/edit/purchase_order_edit.dart';
|
||||
import 'package:invoiceninja_flutter/ui/purchase_order/view/purchase_order_view_vm.dart';
|
||||
import 'package:invoiceninja_flutter/utils/localization.dart';
|
||||
|
|
@ -99,8 +98,7 @@ class PurchaseOrderEditVM extends AbstractInvoiceEditVM {
|
|||
return null;
|
||||
}
|
||||
if (purchaseOrder.isOld &&
|
||||
!hasPurchaseOrderChanges(
|
||||
purchaseOrder, state.purchaseOrderState.map) &&
|
||||
purchaseOrder.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(purchaseOrder, action);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import 'package:invoiceninja_flutter/main_app.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/quote/quote_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/quote/quote_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||
|
|
@ -99,7 +98,7 @@ class QuoteEditVM extends AbstractInvoiceEditVM {
|
|||
return null;
|
||||
}
|
||||
if (quote.isOld &&
|
||||
!hasQuoteChanges(quote, state.quoteState.map) &&
|
||||
quote.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(quote, action);
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@ import 'package:invoiceninja_flutter/data/models/models.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_expense/recurring_expense_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/expense/edit/expense_edit.dart';
|
||||
|
|
@ -133,8 +132,7 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
final recurringExpense = store.state.recurringExpenseUIState.editing;
|
||||
final localization = AppLocalization.of(context);
|
||||
if (recurringExpense.isOld &&
|
||||
!hasRecurringExpenseChanges(
|
||||
recurringExpense, state.recurringExpenseState.map) &&
|
||||
recurringExpense.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(recurringExpense, action);
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import 'package:invoiceninja_flutter/main_app.dart';
|
|||
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_actions.dart';
|
||||
import 'package:invoiceninja_flutter/redux/recurring_invoice/recurring_invoice_selectors.dart';
|
||||
import 'package:invoiceninja_flutter/redux/ui/ui_actions.dart';
|
||||
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
|
||||
import 'package:invoiceninja_flutter/ui/invoice/edit/invoice_edit_vm.dart';
|
||||
|
|
@ -100,8 +99,7 @@ class RecurringInvoiceEditVM extends AbstractInvoiceEditVM {
|
|||
return null;
|
||||
}
|
||||
if (recurringInvoice.isOld &&
|
||||
!hasRecurringInvoiceChanges(
|
||||
recurringInvoice, state.recurringInvoiceState.map) &&
|
||||
recurringInvoice.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(recurringInvoice, action);
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@ import 'package:flutter/material.dart';
|
|||
// Package imports:
|
||||
import 'package:flutter_redux/flutter_redux.dart';
|
||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||
import 'package:invoiceninja_flutter/redux/task/task_selectors.dart';
|
||||
import 'package:redux/redux.dart';
|
||||
|
||||
// Project imports:
|
||||
|
|
@ -98,7 +97,7 @@ class TaskEditVM {
|
|||
}
|
||||
|
||||
if (task.isOld &&
|
||||
!hasTaskChanges(task, state.taskState.map) &&
|
||||
task.isChanged == false &&
|
||||
action != null &&
|
||||
action.isClientSide) {
|
||||
handleEntityAction(task, action);
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ else
|
|||
# Link in new module
|
||||
echo "app_state: import"
|
||||
comment="STARTER: import - do not remove comment"
|
||||
code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_state.dart';import 'package:${package}\/ui\/${module_snake}\/edit\/${module_snake}_edit_vm.dart';import 'package:${package}\/redux\/${module_snake}\/${module_snake}_selectors.dart';${lineBreak}"
|
||||
code="import 'package:${package}\/redux\/${module_snake}\/${module_snake}_state.dart';import 'package:${package}\/ui\/${module_snake}\/edit\/${module_snake}_edit_vm.dart';${lineBreak}"
|
||||
sed -i -e "s/$comment/$code${lineBreak}$comment/g" ./lib/redux/app/app_state.dart
|
||||
|
||||
echo "app_state: list"
|
||||
|
|
@ -214,7 +214,7 @@ else
|
|||
|
||||
echo "app_state: has changes"
|
||||
comment="STARTER: has changes - do not remove comment"
|
||||
code="case ${Module}EditScreen.route: return has${Module}Changes(${module_camel}UIState.editing, ${module_camel}State.map);${lineBreak}"
|
||||
code="case ${Module}EditScreen.route: return has${module_camel}UIState.editing.isChanged == true;${lineBreak}"
|
||||
sed -i -e "s/$comment/$comment${lineBreak}$code/g" ./lib/redux/app/app_state.dart
|
||||
|
||||
for (( idx=${#fieldsArray[@]}-1 ; idx>=0 ; idx-- )) ; do
|
||||
|
|
|
|||
|
|
@ -90,7 +90,3 @@ List<String> filteredStubsSelector(
|
|||
|
||||
return list;
|
||||
}
|
||||
|
||||
bool hasStubChanges(
|
||||
StubEntity stub, BuiltMap<String, StubEntity> stubMap) =>
|
||||
stub.isNew ? stub.isChanged : stub != stubMap[stub.id];
|
||||
|
|
|
|||
Loading…
Reference in New Issue