Fix for app context

This commit is contained in:
Hillel Coren 2021-04-13 06:20:24 +03:00
parent d3f7b76540
commit eb50cf16d7
12 changed files with 34 additions and 23 deletions

View File

@ -254,18 +254,18 @@ void filterByEntity({
}
void viewEntitiesByType({
@required BuildContext context,
@required AppContext appContext,
@required EntityType entityType,
BaseEntity filterEntity,
}) {
final store = StoreProvider.of<AppState>(context);
final store = appContext.store;
final navigator = appContext.navigator;
final uiState = store.state.uiState;
final navigator = Navigator.of(context);
dynamic action;
checkForChanges(
store: store,
context: context,
context: appContext.buildContext,
callback: () {
if (filterEntity != null) {
if (uiState.filterEntityType != filterEntity.entityType ||

View File

@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:invoiceninja_flutter/data/models/entities.dart';
import 'package:invoiceninja_flutter/redux/app/app_actions.dart';
import 'package:invoiceninja_flutter/utils/app_context.dart';
class AppShortcuts extends StatefulWidget {
const AppShortcuts({Key key, this.child}) : super(key: key);
@ -59,7 +60,8 @@ class AppShortcutsState extends State<AppShortcuts> {
break;
case _ShortcutIntentType.list:
viewEntitiesByType(
context: context, entityType: intent.entityType);
appContext: context.getAppContext(),
entityType: intent.entityType);
break;
case _ShortcutIntentType.back:
Navigator.of(context).maybePop();

View File

@ -165,7 +165,7 @@ class _EntitiesListTileState extends State<EntitiesListTile> {
bool _isHovered = false;
void _onTap(BuildContext context) => viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: widget.entityType,
filterEntity: widget.entity);

View File

@ -103,7 +103,7 @@ class EntityTopFilter extends StatelessWidget {
),
onPressed: () {
viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: relatedTypes[i],
filterEntity: filterEntity,
);
@ -159,7 +159,7 @@ class EntityTopFilter extends StatelessWidget {
);
} else {
viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: value,
filterEntity: filterEntity,
);

View File

@ -36,6 +36,7 @@ import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:invoiceninja_flutter/utils/colors.dart';
import 'package:invoiceninja_flutter/utils/app_context.dart';
class MenuDrawer extends StatelessWidget {
const MenuDrawer({
@ -303,7 +304,7 @@ class MenuDrawer extends StatelessWidget {
icon: getEntityIcon(EntityType.dashboard),
title: localization.dashboard,
onTap: () => viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.dashboard),
onLongPress: () => store.dispatch(ViewDashboard(
navigator: Navigator.of(context), filter: '')),
@ -393,7 +394,7 @@ class MenuDrawer extends StatelessWidget {
icon: getEntityIcon(EntityType.kanban),
title: localization.kanban,
onTap: () => viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.kanban),
),
DrawerTile(
@ -401,7 +402,7 @@ class MenuDrawer extends StatelessWidget {
icon: getEntityIcon(EntityType.reports),
title: localization.reports,
onTap: () => viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.reports),
),
DrawerTile(
@ -409,7 +410,7 @@ class MenuDrawer extends StatelessWidget {
icon: getEntityIcon(EntityType.settings),
title: localization.settings,
onTap: () => viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.settings),
),
],
@ -572,7 +573,10 @@ class _DrawerTileState extends State<DrawerTile> {
),
onTap: () {
if (widget.entityType != null) {
viewEntitiesByType(context: context, entityType: widget.entityType);
viewEntitiesByType(
appContext: context.getAppContext(),
entityType: widget.entityType,
);
} else {
widget.onTap();
}

View File

@ -13,8 +13,6 @@ import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
import 'package:invoiceninja_flutter/ui/client/edit/client_edit.dart';
import 'package:invoiceninja_flutter/ui/client/view/client_view_vm.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:invoiceninja_flutter/utils/app_context.dart';
import 'package:redux/redux.dart';

View File

@ -96,7 +96,7 @@ class ExpenseCategoryEditVM {
}
} else {
viewEntity(
appContext: context.getAppContext(),
appContext: appContext,
entity: savedExpenseCategory,
force: true);
}

View File

@ -92,7 +92,7 @@ class GroupViewVM {
handleGroupAction(context, [group], EntityAction.newClient);
} else {
viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.client,
filterEntity: group);
}

View File

@ -142,12 +142,13 @@ class InvoiceViewVM extends EntityViewVM {
onRefreshed: (context) => _handleRefresh(context),
onPaymentsPressed: (BuildContext context) {
viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.payment,
filterEntity: invoice);
},
onEntityAction: (BuildContext context, EntityAction action) =>
handleEntitiesActions(context.getAppContext(), [invoice], action, autoPop: true),
handleEntitiesActions(context.getAppContext(), [invoice], action,
autoPop: true),
onUploadDocument: (BuildContext context, MultipartFile multipartFile) {
final Completer<DocumentEntity> completer = Completer<DocumentEntity>();
store.dispatch(SaveInvoiceDocumentRequest(

View File

@ -10,6 +10,7 @@ import 'package:invoiceninja_flutter/ui/payment_term/payment_term_screen.dart';
import 'package:invoiceninja_flutter/utils/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:invoiceninja_flutter/utils/app_context.dart';
import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
@ -71,6 +72,7 @@ class PaymentTermEditVM {
store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute));
},
onSavePressed: (BuildContext context) {
final appContext = context.getAppContext();
Debouncer.runOnComplete(() {
final paymentTerm = store.state.paymentTermUIState.editing;
final localization = AppLocalization.of(context);
@ -82,7 +84,6 @@ class PaymentTermEditVM {
showToast(paymentTerm.isNew
? localization.createdPaymentTerm
: localization.updatedPaymentTerm);
if (state.prefState.isMobile) {
store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route));
if (paymentTerm.isNew) {
@ -93,7 +94,9 @@ class PaymentTermEditVM {
}
} else {
viewEntitiesByType(
context: context, entityType: EntityType.paymentTerm);
appContext: appContext,
entityType: EntityType.paymentTerm,
);
}
}).catchError((Object error) {
showDialog<ErrorDialog>(

View File

@ -90,7 +90,10 @@ class ProjectViewVM {
context, [project], EntityAction.newEntityType(entityType));
} else {
viewEntitiesByType(
context: context, entityType: entityType, filterEntity: project);
appContext: context.getAppContext(),
entityType: entityType,
filterEntity: project,
);
}
},
onAddTaskPressed: (context) {

View File

@ -89,7 +89,7 @@ class VendorViewVM {
entity: ExpenseEntity(state: state, vendor: vendor));
} else {
viewEntitiesByType(
context: context,
appContext: context.getAppContext(),
entityType: EntityType.expense,
filterEntity: vendor);
}