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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -142,12 +142,13 @@ class InvoiceViewVM extends EntityViewVM {
onRefreshed: (context) => _handleRefresh(context), onRefreshed: (context) => _handleRefresh(context),
onPaymentsPressed: (BuildContext context) { onPaymentsPressed: (BuildContext context) {
viewEntitiesByType( viewEntitiesByType(
context: context, appContext: context.getAppContext(),
entityType: EntityType.payment, entityType: EntityType.payment,
filterEntity: invoice); filterEntity: invoice);
}, },
onEntityAction: (BuildContext context, EntityAction action) => onEntityAction: (BuildContext context, EntityAction action) =>
handleEntitiesActions(context.getAppContext(), [invoice], action, autoPop: true), handleEntitiesActions(context.getAppContext(), [invoice], action,
autoPop: true),
onUploadDocument: (BuildContext context, MultipartFile multipartFile) { onUploadDocument: (BuildContext context, MultipartFile multipartFile) {
final Completer<DocumentEntity> completer = Completer<DocumentEntity>(); final Completer<DocumentEntity> completer = Completer<DocumentEntity>();
store.dispatch(SaveInvoiceDocumentRequest( 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/completers.dart';
import 'package:invoiceninja_flutter/utils/localization.dart'; import 'package:invoiceninja_flutter/utils/localization.dart';
import 'package:invoiceninja_flutter/utils/platforms.dart'; import 'package:invoiceninja_flutter/utils/platforms.dart';
import 'package:invoiceninja_flutter/utils/app_context.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
import 'package:invoiceninja_flutter/data/models/models.dart'; import 'package:invoiceninja_flutter/data/models/models.dart';
import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart'; import 'package:invoiceninja_flutter/ui/app/dialogs/error_dialog.dart';
@ -71,6 +72,7 @@ class PaymentTermEditVM {
store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute)); store.dispatch(UpdateCurrentRoute(state.uiState.previousRoute));
}, },
onSavePressed: (BuildContext context) { onSavePressed: (BuildContext context) {
final appContext = context.getAppContext();
Debouncer.runOnComplete(() { Debouncer.runOnComplete(() {
final paymentTerm = store.state.paymentTermUIState.editing; final paymentTerm = store.state.paymentTermUIState.editing;
final localization = AppLocalization.of(context); final localization = AppLocalization.of(context);
@ -82,7 +84,6 @@ class PaymentTermEditVM {
showToast(paymentTerm.isNew showToast(paymentTerm.isNew
? localization.createdPaymentTerm ? localization.createdPaymentTerm
: localization.updatedPaymentTerm); : localization.updatedPaymentTerm);
if (state.prefState.isMobile) { if (state.prefState.isMobile) {
store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route)); store.dispatch(UpdateCurrentRoute(PaymentTermScreen.route));
if (paymentTerm.isNew) { if (paymentTerm.isNew) {
@ -93,7 +94,9 @@ class PaymentTermEditVM {
} }
} else { } else {
viewEntitiesByType( viewEntitiesByType(
context: context, entityType: EntityType.paymentTerm); appContext: appContext,
entityType: EntityType.paymentTerm,
);
} }
}).catchError((Object error) { }).catchError((Object error) {
showDialog<ErrorDialog>( showDialog<ErrorDialog>(

View File

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

View File

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