34 lines
889 B
Dart
34 lines
889 B
Dart
|
|
import 'package:halkyon_learn_flutter/src/feature/study/data/review_gateway.dart';
|
||
|
|
|
||
|
|
/// A [ReviewGateway] in memory; ids sort by creation, as UUID v7 ids do.
|
||
|
|
class FakeReviewGateway() implements ReviewGateway {
|
||
|
|
var _nextId = 1;
|
||
|
|
|
||
|
|
/// Every review stored, in order.
|
||
|
|
final rows = <ReviewRow>[];
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<List<ReviewRow>> reviewsOf(Set<String> cardIds) async => [
|
||
|
|
for (final row in rows)
|
||
|
|
if (cardIds.contains(row.cardId)) row,
|
||
|
|
];
|
||
|
|
|
||
|
|
@override
|
||
|
|
Future<void> insert({
|
||
|
|
required String cardId,
|
||
|
|
required int rating,
|
||
|
|
required DateTime reviewedAt,
|
||
|
|
required int durationMs,
|
||
|
|
}) async {
|
||
|
|
rows.add((
|
||
|
|
id: 'review-${(_nextId++).toString().padLeft(4, '0')}',
|
||
|
|
cardId: cardId,
|
||
|
|
rating: rating,
|
||
|
|
reviewedAt: reviewedAt,
|
||
|
|
durationMs: durationMs,
|
||
|
|
));
|
||
|
|
}
|
||
|
|
|
||
|
|
@override
|
||
|
|
Stream<void> get remoteChanges => const Stream.empty();
|
||
|
|
}
|