Null safety
This commit is contained in:
parent
b17162ef25
commit
a88f96e1f1
|
|
@ -234,10 +234,10 @@ Middleware<AppState> _createLoadState(
|
|||
store.dispatch(LoadStateSuccess(appState));
|
||||
store.dispatch(RefreshData(
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
|
||||
store.dispatch(UpdatedSetting());
|
||||
} as FutureOr<Null> Function(Null))));
|
||||
})));
|
||||
|
||||
if (uiState!.currentRoute != LoginScreen.route &&
|
||||
uiState!.currentRoute.isNotEmpty) {
|
||||
|
|
|
|||
|
|
@ -379,12 +379,12 @@ Middleware<AppState> _createCompany(AuthRepository repository) {
|
|||
store.dispatch(RefreshData(
|
||||
allCompanies: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(SelectCompany(companyIndex: state.companies.length));
|
||||
store.dispatch(ViewDashboard(force: true));
|
||||
|
||||
action!.completer!.complete();
|
||||
} as FutureOr<Null> Function(Null)),
|
||||
}),
|
||||
));
|
||||
});
|
||||
|
||||
|
|
@ -459,9 +459,9 @@ Middleware<AppState> _purgeData(AuthRepository repository) {
|
|||
store.dispatch(RefreshData(
|
||||
clearData: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
action.completer.complete(null);
|
||||
} as FutureOr<Null> Function(Null))));
|
||||
})));
|
||||
}).catchError((Object error) {
|
||||
store.dispatch(PurgeDataFailure(error));
|
||||
action.completer.completeError(error);
|
||||
|
|
|
|||
|
|
@ -309,9 +309,9 @@ void handleCompanyGatewayAction(BuildContext? context,
|
|||
case EntityAction.disconnect:
|
||||
final completer =
|
||||
snackBarCompleter<Null>(context, localization!.disconnectedGateway);
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
store.dispatch(RefreshData());
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
confirmCallback(
|
||||
context: context,
|
||||
callback: (_) {
|
||||
|
|
|
|||
|
|
@ -483,82 +483,67 @@ void handleDocumentAction(
|
|||
context, AppLocalization.of(context)!.deletedDocument);
|
||||
switch (document!.parentType) {
|
||||
case EntityType.client:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadClient(clientId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store
|
||||
.dispatch(LoadClient(clientId: document.parentId))));
|
||||
break;
|
||||
case EntityType.credit:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadCredit(creditId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store
|
||||
.dispatch(LoadCredit(creditId: document.parentId))));
|
||||
break;
|
||||
case EntityType.expense:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadExpense(expenseId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadExpense(expenseId: document.parentId))));
|
||||
break;
|
||||
case EntityType.group:
|
||||
completer.future.then<Null>((() => store
|
||||
.dispatch(LoadGroup(groupId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store
|
||||
.dispatch(LoadGroup(groupId: document.parentId))));
|
||||
break;
|
||||
case EntityType.invoice:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadInvoice(invoiceId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadInvoice(invoiceId: document.parentId))));
|
||||
break;
|
||||
case EntityType.product:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadProduct(productId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadProduct(productId: document.parentId))));
|
||||
break;
|
||||
case EntityType.project:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadProject(projectId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadProject(projectId: document.parentId))));
|
||||
break;
|
||||
case EntityType.purchaseOrder:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadPurchaseOrder(
|
||||
purchaseOrderId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadPurchaseOrder(
|
||||
purchaseOrderId: document.parentId))));
|
||||
break;
|
||||
case EntityType.quote:
|
||||
completer.future.then<Null>((() => store
|
||||
.dispatch(LoadQuote(quoteId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store
|
||||
.dispatch(LoadQuote(quoteId: document.parentId))));
|
||||
break;
|
||||
case EntityType.recurringExpense:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadRecurringExpense(
|
||||
recurringExpenseId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadRecurringExpense(
|
||||
recurringExpenseId: document.parentId))));
|
||||
break;
|
||||
case EntityType.recurringInvoice:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadRecurringInvoice(
|
||||
recurringInvoiceId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store.dispatch(
|
||||
LoadRecurringInvoice(
|
||||
recurringInvoiceId: document.parentId))));
|
||||
break;
|
||||
case EntityType.task:
|
||||
completer.future.then<Null>((() => store
|
||||
.dispatch(LoadTask(taskId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) =>
|
||||
store.dispatch(LoadTask(taskId: document.parentId))));
|
||||
break;
|
||||
case EntityType.vendor:
|
||||
completer.future.then<Null>((() => store.dispatch(
|
||||
LoadVendor(vendorId: document.parentId)))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => store
|
||||
.dispatch(LoadVendor(vendorId: document.parentId))));
|
||||
break;
|
||||
default:
|
||||
completer.future.then<Null>((() =>
|
||||
store.dispatch(RefreshData()))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future
|
||||
.then<Null>(((_) => store.dispatch(RefreshData())));
|
||||
}
|
||||
|
||||
completer.future.then<Null>((() =>
|
||||
store.dispatch(RefreshData()))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future
|
||||
.then<Null>(((_) => store.dispatch(RefreshData())));
|
||||
store.dispatch(DeleteDocumentRequest(
|
||||
completer: completer,
|
||||
documentIds: [document.id],
|
||||
|
|
|
|||
|
|
@ -90,11 +90,11 @@ class _DesktopSessionTimeoutState extends State<DesktopSessionTimeout> {
|
|||
onPressed: () {
|
||||
final store = StoreProvider.of<AppState>(context);
|
||||
final completer = Completer<Null>();
|
||||
completer.future.then(() {
|
||||
completer.future.then<Null>((_) {
|
||||
setState(() {
|
||||
_isWarned = false;
|
||||
});
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
store.dispatch(RefreshData(completer: completer));
|
||||
},
|
||||
child: Text(
|
||||
|
|
|
|||
|
|
@ -88,9 +88,9 @@ class _HealthCheckDialogState extends State<HealthCheckDialog> {
|
|||
webClient.get(url, credentials.token).then((dynamic response) {
|
||||
store.dispatch(RefreshData(
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
runCheck();
|
||||
} as FutureOr<Null> Function(Null))));
|
||||
})));
|
||||
}).catchError((dynamic error) {
|
||||
showErrorDialog(message: error);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -261,9 +261,9 @@ class _HistoryListTileState extends State<HistoryListTile> {
|
|||
entities: [entity],
|
||||
completer: state.prefState.isHistoryFloated
|
||||
? (Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
Navigator.pop(context);
|
||||
} as FutureOr<Null> Function(Null)))
|
||||
}))
|
||||
: null,
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -140,9 +140,9 @@ class MenuDrawerVM {
|
|||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.addedCompany,
|
||||
shouldPop: true)
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
|
||||
store
|
||||
.dispatch(AddCompany(context: context, completer: completer));
|
||||
|
|
|
|||
|
|
@ -470,9 +470,8 @@ class _EntityListState extends State<EntityList> {
|
|||
entities: entities,
|
||||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>((() =>
|
||||
widget.onClearMultiselect())
|
||||
as FutureOr<Null> Function(Null)),
|
||||
..future.then<Null>(
|
||||
((_) => widget.onClearMultiselect())),
|
||||
);
|
||||
},
|
||||
onCancelPressed: (_) => widget.onClearMultiselect(),
|
||||
|
|
|
|||
|
|
@ -184,13 +184,11 @@ class _LoginState extends State<LoginView> {
|
|||
}
|
||||
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
completer.future
|
||||
.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
setState(() {
|
||||
_loginError = '';
|
||||
});
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
}).catchError((Object error) {
|
||||
setState(() {
|
||||
_buttonController.reset();
|
||||
_loginError = error.toString();
|
||||
|
|
|
|||
|
|
@ -184,8 +184,8 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
|
||||
oneTimePassword: oneTimePassword,
|
||||
));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future
|
||||
.then<Null>(((_) => _handleLogin(context: context)));
|
||||
}
|
||||
});
|
||||
if (!signedIn) {
|
||||
|
|
@ -215,9 +215,8 @@ class LoginVM {
|
|||
accessToken: accessToken,
|
||||
provider: UserEntity.OAUTH_PROVIDER_GOOGLE,
|
||||
));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(
|
||||
((_) => _handleLogin(context: context, isSignUp: true)));
|
||||
}
|
||||
});
|
||||
if (!signedIn) {
|
||||
|
|
@ -249,8 +248,8 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
|
||||
oneTimePassword: oneTimePassword,
|
||||
));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future
|
||||
.then<Null>(((_) => _handleLogin(context: context)));
|
||||
}, (dynamic error) {
|
||||
completer.completeError(error);
|
||||
});
|
||||
|
|
@ -270,9 +269,8 @@ class LoginVM {
|
|||
provider: UserEntity.OAUTH_PROVIDER_MICROSOFT,
|
||||
accessToken: accessToken,
|
||||
));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(
|
||||
((_) => _handleLogin(context: context, isSignUp: true)));
|
||||
}, (dynamic error) {
|
||||
completer.completeError(error);
|
||||
});
|
||||
|
|
@ -311,8 +309,7 @@ class LoginVM {
|
|||
authCode: credentials.authorizationCode,
|
||||
idToken: credentials.identityToken,
|
||||
));
|
||||
completer.future.then<Null>((() => _handleLogin(context: context))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => _handleLogin(context: context)));
|
||||
} catch (error) {
|
||||
completer.completeError(error);
|
||||
print('## onAppleLoginPressed: $error');
|
||||
|
|
@ -340,9 +337,8 @@ class LoginVM {
|
|||
firstName: credentials.givenName,
|
||||
lastName: credentials.familyName,
|
||||
));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(
|
||||
((_) => _handleLogin(context: context, isSignUp: true)));
|
||||
} catch (error) {
|
||||
completer.completeError(error);
|
||||
print('## onAppleSignUpPressed: $error');
|
||||
|
|
@ -363,9 +359,8 @@ class LoginVM {
|
|||
email: email.trim(),
|
||||
password: password.trim(),
|
||||
));
|
||||
completer.future.then<Null>((() =>
|
||||
_handleLogin(context: context, isSignUp: true))
|
||||
as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(
|
||||
((_) => _handleLogin(context: context, isSignUp: true)));
|
||||
},
|
||||
onRecoverPressed: (
|
||||
BuildContext context,
|
||||
|
|
|
|||
|
|
@ -72,9 +72,8 @@ class CompanyGatewayScreen extends StatelessWidget {
|
|||
entities: companyGateways,
|
||||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>((() => store
|
||||
.dispatch(ClearCompanyGatewayMultiselect()))
|
||||
as FutureOr<Null> Function(Null)),
|
||||
..future.then<Null>(((_) =>
|
||||
store.dispatch(ClearCompanyGatewayMultiselect()))),
|
||||
);
|
||||
},
|
||||
onCancelPressed: (context) =>
|
||||
|
|
|
|||
|
|
@ -92,9 +92,9 @@ class EmailCreditVM extends EmailEntityVM {
|
|||
context, AppLocalization.of(context)!.emailedCredit,
|
||||
shouldPop: isMobile(context));
|
||||
if (!isMobile(context)) {
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
viewEntity(entity: credit);
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
}
|
||||
store.dispatch(EmailCreditRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -103,9 +103,9 @@ class CreditEditDetailsVM extends EntityEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(CreditEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -120,9 +120,9 @@ class ExpenseEditVM extends AbstractExpenseEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
|
||||
});
|
||||
|
|
@ -134,9 +134,9 @@ class ExpenseEditVM extends AbstractExpenseEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity expense) {
|
||||
store.dispatch(UpdateCurrentRoute(ExpenseEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -131,9 +131,9 @@ class InvoiceEditDetailsVM extends EntityEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(InvoiceEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -113,9 +113,9 @@ class EmailInvoiceVM extends EmailEntityVM {
|
|||
context, AppLocalization.of(context)!.emailedInvoice,
|
||||
shouldPop: isMobile(context));
|
||||
if (!isMobile(context)) {
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
viewEntity(entity: invoice);
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
}
|
||||
store.dispatch(EmailInvoiceRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -88,9 +88,9 @@ class ProjectEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(ProjectEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -102,10 +102,10 @@ class PurchaseOrderEditDetailsVM extends EntityEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(PurchaseOrderEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(PurchaseOrderEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -90,9 +90,9 @@ class EmailPurchaseOrderVM extends EmailEntityVM {
|
|||
context, AppLocalization.of(context)!.emailedPurchaseOrder,
|
||||
shouldPop: isMobile(context));
|
||||
if (!isMobile(context)) {
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
viewEntity(entity: purchaseOrder);
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
}
|
||||
store.dispatch(EmailPurchaseOrderRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -102,9 +102,9 @@ class QuoteEditDetailsVM extends EntityEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(QuoteEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -89,9 +89,9 @@ class EmailQuoteVM extends EmailEntityVM {
|
|||
context, AppLocalization.of(context)!.emailedQuote,
|
||||
shouldPop: isMobile(context));
|
||||
if (!isMobile(context)) {
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
viewEntity(entity: quote);
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
}
|
||||
store.dispatch(EmailQuoteRequest(
|
||||
completer: completer,
|
||||
|
|
|
|||
|
|
@ -90,10 +90,10 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
});
|
||||
|
|
@ -105,10 +105,10 @@ class RecurringExpenseEditVM extends AbstractExpenseEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity expense) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringExpenseEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -105,10 +105,10 @@ class RecurringInvoiceEditDetailsVM extends EntityEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(
|
||||
UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(RecurringInvoiceEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -73,8 +73,7 @@ class AccountManagementVM {
|
|||
|
||||
final companyLength = state.companies.length;
|
||||
final deleteCompleter = Completer<Null>()
|
||||
..future
|
||||
.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
final context = navigatorKey.currentContext;
|
||||
final state = store.state;
|
||||
if (companyLength == 1) {
|
||||
|
|
@ -87,7 +86,7 @@ class AccountManagementVM {
|
|||
final index = selectedCompanyIndex == 0 ? 1 : 0;
|
||||
store.dispatch(SelectCompany(companyIndex: index));
|
||||
final refreshCompleter = Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(SelectCompany(companyIndex: 0));
|
||||
store.dispatch(ViewDashboard());
|
||||
AppBuilder.of(navigatorKey.currentContext!)!.rebuild();
|
||||
|
|
@ -95,12 +94,11 @@ class AccountManagementVM {
|
|||
if (Navigator.of(context!).canPop()) {
|
||||
Navigator.of(context).pop();
|
||||
}
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
store.dispatch(
|
||||
RefreshData(clearData: true, completer: refreshCompleter));
|
||||
}
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
}).catchError((Object error) {
|
||||
if (Navigator.of(navigatorKey.currentContext!).canPop()) {
|
||||
Navigator.of(navigatorKey.currentContext!).pop();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,10 +82,10 @@ class ClientPortalVM {
|
|||
final oldSubdomain = state.company!.subdomain;
|
||||
final newSubdomain = settingsUIState.company.subdomain;
|
||||
if (oldSubdomain != newSubdomain) {
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
showRefreshDataDialog(
|
||||
context: navigatorKey.currentContext!);
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
}
|
||||
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ class InvoiceDesignVM {
|
|||
case EntityType.company:
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.savedSettings)
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
final webClient = WebClient();
|
||||
final credentials = state.credentials;
|
||||
final url = '${credentials.url}/designs/set/default';
|
||||
|
|
@ -106,7 +106,7 @@ class InvoiceDesignVM {
|
|||
showErrorDialog(message: '$error');
|
||||
});
|
||||
});
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
completer: completer, company: settingsUIState.company));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -75,14 +75,14 @@ class LocalizationSettingsVM {
|
|||
final appBuilder = AppBuilder.of(context);
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.savedSettings)
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
appBuilder!.rebuild();
|
||||
store.dispatch(RefreshData(
|
||||
includeStatic: true,
|
||||
completer: Completer<dynamic>()
|
||||
..future
|
||||
.then((dynamic value) => appBuilder.rebuild())));
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
completer: completer, company: settingsUIState.company));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -146,18 +146,15 @@ class _SettingsWizardState extends State<SettingsWizard> {
|
|||
callback: (password, idToken) {
|
||||
final localization = AppLocalization.of(context);
|
||||
final completer = Completer<Null>();
|
||||
completer.future
|
||||
.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
final toastCompleter =
|
||||
snackBarCompleter<Null>(context, localization!.savedSettings);
|
||||
toastCompleter.future
|
||||
.then<Null>(() {
|
||||
toastCompleter.future.then<Null>((_) {
|
||||
setState(() {
|
||||
_isSaving = false;
|
||||
_showLogo = true;
|
||||
});
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
}).catchError((Object error) {
|
||||
setState(() {
|
||||
_isSaving = false;
|
||||
});
|
||||
|
|
@ -174,8 +171,7 @@ class _SettingsWizardState extends State<SettingsWizard> {
|
|||
),
|
||||
),
|
||||
);
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
}).catchError((Object error) {
|
||||
setState(() => _isSaving = false);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -96,8 +96,7 @@ class TemplatesAndRemindersVM {
|
|||
case EntityType.company:
|
||||
final completer = snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.savedSettings);
|
||||
completer.future.then<Null>(
|
||||
(() => callback()) as FutureOr<Null> Function(Null));
|
||||
completer.future.then<Null>(((_) => callback()));
|
||||
store.dispatch(SaveCompanyRequest(
|
||||
completer: completer, company: settingsUIState.company));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -176,9 +176,9 @@ class UserDetailsVM {
|
|||
callback: (password, idToken) {
|
||||
final completer = snackBarCompleter<Null>(context,
|
||||
AppLocalization.of(context)!.disconnectedGoogle);
|
||||
completer.future.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
GoogleOAuth.disconnect();
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
store.dispatch(
|
||||
DisconnecOAuthUserRequest(
|
||||
user: state.user,
|
||||
|
|
@ -315,7 +315,7 @@ class UserDetailsVM {
|
|||
final appBuilder = AppBuilder.of(context);
|
||||
final origUserSettings = state.userCompany!.settings;
|
||||
|
||||
completer.future.then<Null>(() async {
|
||||
completer.future.then<Null>((_) async {
|
||||
final newUserSettings = store.state.userCompany!.settings!;
|
||||
if (origUserSettings!.includeDeletedClients !=
|
||||
newUserSettings.includeDeletedClients ||
|
||||
|
|
@ -338,7 +338,7 @@ class UserDetailsVM {
|
|||
}
|
||||
|
||||
appBuilder!.rebuild();
|
||||
} as FutureOr<Null> Function(Null));
|
||||
});
|
||||
|
||||
confirmCallback(
|
||||
context: context,
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ class TaskEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
});
|
||||
|
|
@ -107,9 +107,9 @@ class TaskEditDetailsVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TaskEditDetailsScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -78,9 +78,8 @@ class TaskStatusScreen extends StatelessWidget {
|
|||
entities: taskStatusIds,
|
||||
multiselect: true,
|
||||
completer: Completer<Null>()
|
||||
..future.then<Null>((() =>
|
||||
store.dispatch(ClearTaskStatusMultiselect()))
|
||||
as FutureOr<Null> Function(Null)),
|
||||
..future.then<Null>(
|
||||
((_) => store.dispatch(ClearTaskStatusMultiselect()))),
|
||||
);
|
||||
},
|
||||
label: localization!.actions,
|
||||
|
|
|
|||
|
|
@ -110,9 +110,9 @@ class TransactionEditVM {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity client) {
|
||||
store.dispatch(UpdateCurrentRoute(TransactionEditScreen.route));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -1109,10 +1109,10 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(
|
||||
TransactionScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity vendor) {
|
||||
store.dispatch(SaveTransactionSuccess(transaction
|
||||
.rebuild((b) => b..pendingVendorId = vendor.id)));
|
||||
|
|
@ -1193,10 +1193,10 @@ class _MatchWithdrawalsState extends State<_MatchWithdrawals> {
|
|||
force: true,
|
||||
completer: completer,
|
||||
cancelCompleter: Completer<Null>()
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
store.dispatch(UpdateCurrentRoute(
|
||||
TransactionScreen.route));
|
||||
} as FutureOr<Null> Function(Null)));
|
||||
}));
|
||||
completer.future.then((SelectableEntity category) {
|
||||
store.dispatch(SaveTransactionSuccess(
|
||||
transaction.rebuild(
|
||||
|
|
|
|||
|
|
@ -118,14 +118,14 @@ class TransactionViewVM {
|
|||
ConvertTransactionsToExpensesRequest(
|
||||
snackBarCompleter<Null>(
|
||||
context, AppLocalization.of(context)!.convertedTransaction)
|
||||
..future.then<Null>(() {
|
||||
..future.then<Null>((_) {
|
||||
if (state.transactionListState.isInMultiselect()) {
|
||||
store.dispatch(ClearTransactionMultiselect());
|
||||
if (store.state.prefState.isPreviewVisible) {
|
||||
store.dispatch(TogglePreviewSidebar());
|
||||
}
|
||||
}
|
||||
} as FutureOr<Null> Function(Null)),
|
||||
}),
|
||||
transactionIds,
|
||||
vendorId,
|
||||
categoryId,
|
||||
|
|
|
|||
|
|
@ -46,11 +46,9 @@ Completer<T> snackBarCompleter<T>(
|
|||
Completer<Null> popCompleter(BuildContext context, dynamic result) {
|
||||
final Completer<Null> completer = Completer<Null>();
|
||||
|
||||
completer.future
|
||||
.then<Null>(() {
|
||||
completer.future.then<Null>((_) {
|
||||
Navigator.of(context).pop<dynamic>(result);
|
||||
} as FutureOr<Null> Function(Null))
|
||||
.catchError((Object error) {
|
||||
}).catchError((Object error) {
|
||||
showDialog<ErrorDialog>(
|
||||
context: navigatorKey.currentContext!,
|
||||
builder: (BuildContext context) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue