decord/alpha/source/modules/calls/VideoSpeakerStore.tsx
2026-10-10 08:08:14 +00:00

174 lines
5.3 KiB
TypeScript

// Module ID: 10836
// Function ID: 10837
// Name: VideoSpeakerStore
// Dependencies: [5897, 502, 2012, 5947, 6036, 5115, 5900, 12, 504, 584, 2]
// Module 10836 (VideoSpeakerStore)
import get_initializedDefault from "get initialized" /* 504 */;
import DispatcherDefault from "Dispatcher" /* 584 */;
import CallConstants from "CallConstants" /* 5115 */;
import StreamKeyUtils from "StreamKeyUtils" /* 5900 */;
import ApplicationStreamingStore from "ApplicationStreamingStore" /* 5897 */;
import AuthenticationStore from "AuthenticationStore" /* 502 */;
import MediaEngineStore from "MediaEngineStore" /* 2012 */;
import SpeakingStore from "SpeakingStore" /* 5947 */;
import ChannelRTCStore from "ChannelRTCStore" /* 6036 */;
import module_12 from "module_12" /* 12 */;
import size from "module_2" /* 2 */;
let React2, c3;
function updateSpeaker(arg0) {
let tmp;
let flag = arg0;
if (arg0 === undefined) {
flag = true;
}
let tmp3 = null;
if (null != React2) {
let selectedParticipantId = ChannelRTCStore.getSelectedParticipantId(React2);
const result = null != selectedParticipantId && obj.isParticipantPoppedOut(React2, selectedParticipantId);
if (result) {
selectedParticipantId = null;
}
const lastActiveStream = ApplicationStreamingStore.getLastActiveStream();
let participant = null;
if (null != selectedParticipantId) {
participant = obj.getParticipant(React2, selectedParticipantId);
}
let type;
if (participant != null) {
type = participant.type;
}
let tmp17 = type === ParticipantTypes.ACTIVITY;
if (!tmp17) {
let type1;
if (participant != null) {
type1 = participant.type;
}
let tmp19 = type1 === tmp16.USER;
if (tmp19) {
const voiceState = participant.voiceState;
let selfVideo;
if (voiceState != null) {
selfVideo = voiceState.selfVideo;
}
tmp19 = !selfVideo;
}
tmp17 = tmp19;
}
let tmp21 = selectedParticipantId;
if (tmp17) {
tmp21 = null;
}
let tmp22 = tmp21;
if (null != lastActiveStream) {
tmp22 = tmp21;
if (null == tmp21) {
const getParticipant = obj.getParticipant;
const obj2 = StreamKeyUtils;
const participant1 = getParticipant(React2, obj2.encodeStreamKey(lastActiveStream));
let id;
if (participant1 != null) {
id = participant1.id;
}
const result1 = null == id || obj.isParticipantPoppedOut(React2, id);
tmp22 = tmp21;
if (!result1) {
tmp22 = id;
}
}
}
tmp3 = tmp22;
if (null == tmp22) {
const _Date = Date;
const id1 = AuthenticationStore.getId();
const items = [];
const items1 = [];
const timestamp = Date.now();
const videoParticipants = obj.getVideoParticipants(React2);
const iter = videoParticipants[Symbol.iterator]();
const nextResult = iter.next();
while (iter !== undefined) {
let tmp35 = nextResult;
if (nextResult.user.id !== id1) {
if (!MediaEngineStore.isLocalVideoDisabled(tmp35.user.id)) {
if (!ChannelRTCStore.isParticipantPoppedOut(React2, tmp35.id)) {
let arr = items.push(tmp35.user.id);
let speakingDuration = SpeakingStore.getSpeakingDuration(tmp35.user.id, timestamp);
if (0 !== speakingDuration) {
let obj3 = { userId: tmp35.user.id, duration: tmp44 };
let arr2 = items1.push(obj3);
}
}
}
}
continue;
}
for (const item10094 of items1) {
let tmp2;
let duration = item10094.duration;
let tmp51 = null == tmp2;
let userId = item10094.userId;
if (!tmp51) {
tmp51 = duration < tmp2;
}
if (tmp51) {
tmp = userId;
tmp2 = duration;
}
continue;
}
tmp3 = tmp;
if (null == tmp) {
if (null != c3) {
let first;
if (items.includes(c3)) {
first = c3;
}
tmp3 = first;
}
first = items[0];
}
}
}
if (c3 !== tmp3) {
c3 = tmp3;
if (flag) {
videoSpeakerStoreClass.emitChange();
}
}
}
function handleChannelRTCUpdate() {
closure_11();
return false;
}
const ParticipantTypes = CallConstants.ParticipantTypes;
let closure_11 = module_12.throttle(updateSpeaker, 300, { trailing: true });
const Store = get_initializedDefault.Store;
class VideoSpeakerStoreClass extends Store {
initialize() {
this.waitFor(ChannelRTCStore, AuthenticationStore, SpeakingStore, ApplicationStreamingStore, MediaEngineStore);
const items = [ChannelRTCStore, ApplicationStreamingStore];
this.syncWith(items, handleChannelRTCUpdate);
}
getSpeaker(arg0) {
if (React2 !== arg0) {
React2 = arg0;
c3 = null;
updateSpeaker(false);
}
let id = c3;
if (c3 == null) {
id = AuthenticationStore.getId();
}
return id;
}
}
const prototype = VideoSpeakerStoreClass.prototype;
VideoSpeakerStoreClass.displayName = "VideoSpeakerStore";
const obj = { AUDIO_SET_LOCAL_VIDEO_DISABLED: handleChannelRTCUpdate };
const videoSpeakerStoreClass = new VideoSpeakerStoreClass(DispatcherDefault, obj);
let result = size.fileFinishedImporting("modules/calls/VideoSpeakerStore.tsx");
export default videoSpeakerStoreClass;