Add pagination to expenses
This commit is contained in:
parent
64bbe895ce
commit
62472b07ff
|
|
@ -36,9 +36,10 @@ class ExpenseRepository {
|
|||
return expenseResponse.data;
|
||||
}
|
||||
|
||||
Future<BuiltList<ExpenseEntity>> loadList(
|
||||
Credentials credentials, int createdAt, bool filterDeleted) async {
|
||||
final url = credentials.url + '/expenses?created_at=$createdAt';
|
||||
Future<BuiltList<ExpenseEntity>> loadList(Credentials credentials, int page,
|
||||
int createdAt, bool filterDeleted) async {
|
||||
final url = credentials.url +
|
||||
'/expenses?per_page=$kMaxRecordsPerPage&page=$page&created_at=$createdAt';
|
||||
|
||||
/* Server is incorrect if client isn't set
|
||||
if (filterDeleted) {
|
||||
|
|
|
|||
|
|
@ -67,9 +67,10 @@ class LoadExpenseActivity {
|
|||
}
|
||||
|
||||
class LoadExpenses {
|
||||
LoadExpenses({this.completer});
|
||||
LoadExpenses({this.completer, this.page = 1});
|
||||
|
||||
final Completer completer;
|
||||
final int page;
|
||||
}
|
||||
|
||||
class LoadExpenseRequest implements StartLoading {}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Flutter imports:
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:invoiceninja_flutter/constants.dart';
|
||||
|
||||
// Package imports:
|
||||
import 'package:redux/redux.dart';
|
||||
|
|
@ -229,14 +230,22 @@ Middleware<AppState> _loadExpenses(ExpenseRepository repository) {
|
|||
|
||||
store.dispatch(LoadExpensesRequest());
|
||||
repository
|
||||
.loadList(
|
||||
state.credentials, state.createdAtLimit, state.filterDeletedClients)
|
||||
.loadList(state.credentials, action.page, state.createdAtLimit,
|
||||
state.filterDeletedClients)
|
||||
.then((data) {
|
||||
store.dispatch(LoadExpensesSuccess(data));
|
||||
|
||||
if (data.length == kMaxRecordsPerPage) {
|
||||
store.dispatch(LoadExpenses(
|
||||
completer: action.completer,
|
||||
page: action.page + 1,
|
||||
));
|
||||
} else {
|
||||
if (action.completer != null) {
|
||||
action.completer.complete(null);
|
||||
}
|
||||
store.dispatch(LoadRecurringExpenses());
|
||||
}
|
||||
}).catchError((Object error) {
|
||||
print(error);
|
||||
store.dispatch(LoadExpensesFailure(error));
|
||||
|
|
|
|||
Loading…
Reference in New Issue