isConsumingTranslationForSpeaker function

TranslationConsumptionStatus isConsumingTranslationForSpeaker(
  1. String speakerId,
  2. List<TransportType> consumerTransports,
  3. Map<String, dynamic> translationProducerMap
)

Check if we're currently consuming a translation for a given speaker. Looks for consumers that have translation metadata attached.

Implementation

TranslationConsumptionStatus isConsumingTranslationForSpeaker(
  String speakerId,
  List<TransportType> consumerTransports,
  Map<String, dynamic> translationProducerMap,
) {
  // Check our translation map for this speaker
  for (final entry in translationProducerMap.entries) {
    final producerId = entry.key;
    final meta = entry.value;

    if (meta is TranslationMeta) {
      if (meta.speakerId == speakerId) {
        // Verify we have a consumer for this translation producer
        final hasConsumer = consumerTransports.any(
          (t) => t.producerId == producerId,
        );

        if (hasConsumer) {
          return TranslationConsumptionStatus(
            consuming: true,
            language: meta.language,
            translationProducerId: producerId,
            originalProducerId: meta.originalProducerId,
          );
        }
      }
    }
  }

  return TranslationConsumptionStatus(consuming: false);
}