updateActiveUserByTimer method

void updateActiveUserByTimer()

Implementation

void updateActiveUserByTimer() {
  var maxAverageSoundLevel = 0.0;
  var activeUserID = '';
  rangeSoundLevels.forEach((userID, soundLevels) {
    final averageSoundLevel =
        soundLevels.reduce((a, b) => a + b) / soundLevels.length;

    if (averageSoundLevel > maxAverageSoundLevel) {
      activeUserID = userID;
      maxAverageSoundLevel = averageSoundLevel;
    }
  });

  if (activeUserID.isEmpty) {
    return;
  }

  if (activeUserID != activeUserIDNotifier.value) {
    ZegoLoggerService.logInfo(
      'update active user:$activeUserID',
      tag: 'live streaming',
      subTag: 'controller.minimize.active_user',
    );
  }

  activeUserIDNotifier.value = activeUserID;
  if (activeUserIDNotifier.value?.isEmpty ?? true) {
    if (!ignoreLocalUser) {
      activeUserIDNotifier.value = ZegoUIKit().getLocalUser().id;
    }
  }

  rangeSoundLevels.clear();
}