Future<void>
saveAcceptedCards()
Implementation
Future<void> saveAcceptedCards() async {
state = state.copyWith(isSaving: true);
try {
final supabase = ref.read(supabaseDatasourceProvider);
final userId = Supabase.instance.client.auth.currentUser?.id;
if (userId == null) throw StateError('User not authenticated');
for (final p in state.proposals.where((p) => p.accepted)) {
final model = ReviewCardModel(
id: '', // ignored by toInsertJson()
userId: userId,
topicId: p.topicId,
cardType: p.type,
front: p.front,
back: p.back,
easinessFactor: 2.5,
intervalDays: 1,
repetitions: 0,
nextReviewAt: DateTime.now(),
algorithm: 'fsrs',
cardData: p.cardData,
);
await supabase.createCard(model);
}
ref.invalidate(dueCardsProvider);
state = state.copyWith(isSaving: false);
} catch (e) {
state = state.copyWith(
isSaving: false,
error: userFriendlyMessage(e, logName: 'CardGeneration'),
);
}
}