41 lines
1.2 KiB
Dart

import 'package:flutter/material.dart';
import 'package:mobile/controllers/session.dart';
import 'package:mobile/models/receipt.dart';
import 'package:mobile/results.dart';
import 'package:mobile/server/server.dart';
class ReceiptHeaderController extends ChangeNotifier {
List<ReceiptHeader> _receiptHeaders = [];
final Server server;
final SessionController sessionController;
ReceiptHeaderController(
{required this.server, required this.sessionController}) {
fetchReceiptsFromServer();
}
Future<void> fetchReceiptsFromServer() async {
final res = await sessionController.requestWithSession(
(Server server, String token) => server.allReceipts(token));
switch (res) {
case Ok<List<ReceiptHeader>, String>(value: final receiptHeaders):
_receiptHeaders = receiptHeaders;
case Err<List<ReceiptHeader>, String>():
break;
}
notifyListeners();
}
List<ReceiptHeader> receiptHeadersSortedByDate() {
List<ReceiptHeader> clonedReceiptHeaders = [];
for (var i = 0; i < _receiptHeaders.length; i++) {
clonedReceiptHeaders.add(_receiptHeaders[i]);
}
clonedReceiptHeaders.sort((a, b) => b.timestamp.compareTo(a.timestamp));
return clonedReceiptHeaders;
}
}