handleCaptionFromRaw method

void handleCaptionFromRaw(
  1. String text,
  2. bool isFinal,
  3. String participantIdentity
)

Implementation

void handleCaptionFromRaw(
    String text,
    bool isFinal,
    String participantIdentity,
    ) {
  final name = getParticipantNameByIdentity(participantIdentity);

  final sourceLang =
      transcriptionLanguageData?.sourceLang ?? ""; // fallback if needed

  final targetLang = translationLanguage?.code ??
      transcriptionLanguageData?.sourceLang ??
      sourceLang;

  // -------------------- FINAL ---------------------
  if (isFinal) {
    if (particalTranscription != null) {
      // Finalize existing partial
      particalTranscription = particalTranscription!.copyWith(
        name: name,
        transcription: text,
        isFinal: true,
        sourceLang: sourceLang,
        targetLang: targetLang,
      );

      _updateTranscriptionInList(particalTranscription!);

      if (_isTranslationActive && sourceLang != targetLang) {
        translateText(particalTranscription!);
      }
    } else {
      // No partial → create fresh final
      final newTranscription = TranscriptionModel(
        id: const Uuid().v4(),
        name: name,
        transcription: text,
        timestamp: Utils.formatTimestampToTime(
          DateTime.now().millisecondsSinceEpoch,
        ),
        isFinal: true,
        sourceLang: sourceLang,
        targetLang: targetLang,
      );

      addTranscription(newTranscription);

      if (_isTranslationActive && sourceLang != targetLang) {
        translateText(newTranscription);
      }
    }

    // Clear partial after final
    particalTranscription = null;
  }

  // -------------------- PARTIAL ---------------------
  else {
    if (particalTranscription != null) {
      // Update existing partial (live typing effect)
      particalTranscription = particalTranscription!.copyWith(
        name: name,
        transcription: text,
        isFinal: false,
        sourceLang: sourceLang,
        targetLang: targetLang,
      );

      _updateTranscriptionInList(particalTranscription!);
    } else {
      // Create new partial
      particalTranscription = TranscriptionModel(
        id: const Uuid().v4(),
        name: name,
        transcription: text,
        timestamp: Utils.formatTimestampToTime(
          DateTime.now().millisecondsSinceEpoch,
        ),
        isFinal: false,
        sourceLang: sourceLang,
        targetLang: targetLang,
      );

      addTranscription(particalTranscription!);
    }
  }
}