Add pagination to expenses

This commit is contained in:
Hillel Coren 2023-04-04 19:03:05 +03:00
parent 64bbe895ce
commit 62472b07ff
3 changed files with 20 additions and 9 deletions

View File

@ -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) {

View File

@ -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 {}

View File

@ -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));