saveAcceptedCards method

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'),
    );
  }
}