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 _receiptHeaders = []; final Server server; final SessionController sessionController; ReceiptHeaderController( {required this.server, required this.sessionController}) { fetchReceiptsFromServer(); } Future fetchReceiptsFromServer() async { final res = await sessionController.requestWithSession( (Server server, String token) => server.allReceipts(token)); switch (res) { case Ok, String>(value: final receiptHeaders): _receiptHeaders = receiptHeaders; case Err, String>(): break; } notifyListeners(); } List receiptHeadersSortedByDate() { List clonedReceiptHeaders = []; for (var i = 0; i < _receiptHeaders.length; i++) { clonedReceiptHeaders.add(_receiptHeaders[i]); } clonedReceiptHeaders.sort((a, b) => b.timestamp.compareTo(a.timestamp)); return clonedReceiptHeaders; } }