Files
discord-decomp/sources/modules/calls/ChannelRTCParticipants.tsx
T
2026-07-28 01:06:53 +03:00

767 lines
37 KiB
TypeScript

/* Metro module 4610; source: modules/calls/ChannelRTCParticipants.tsx; dependencies: [6, 7, 1378, 4492, 1226, 4258, 1379, 4259, 4607, 1878, 4609, 4297, 4299, 661, 4291, 4611, 3780, 4612, 22, 4617, 4618, 4285, 2] */
import ClassCallCheck from '../../by-id/module-00006-ClassCallCheck.js'; /* Metro dependency 6 */
import CreateClass from '../../by-id/module-00007-CreateClass.js'; /* Metro dependency 7 */
import AuthenticationStore from '../../stores/AuthenticationStore.tsx'; /* Metro dependency 1226 */
import EmbeddedActivitiesStore from '../activities/EmbeddedActivitiesStore.tsx'; /* Metro dependency 1378 */
import ChannelStore from '../../stores/ChannelStore.tsx'; /* Metro dependency 1379 */
import UserStore from '../../stores/UserStore.tsx'; /* Metro dependency 1878 */
import CallStore from '../../stores/CallStore.tsx'; /* Metro dependency 4258 */
import MediaEngineStore from '../../stores/MediaEngineStore.tsx'; /* Metro dependency 4259 */
import VoiceStateStore from '../../stores/VoiceStateStore.tsx'; /* Metro dependency 4297 */
import ApplicationStreamingStore from '../../stores/ApplicationStreamingStore.tsx'; /* Metro dependency 4492 */
import SpeakingStore from '../../stores/SpeakingStore.tsx'; /* Metro dependency 4607 */
import VideoStreamStore from '../../stores/VideoStreamStore.tsx'; /* Metro dependency 4609 */
import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */
import * as SecondaryIndexMapModule from '../../external/discord_common/js/packages/secondary-index-map/SecondaryIndexMap.tsx'; /* Metro dependency 3780 */
import * as ConstantsModule from '../../external/discord_common/js/packages/media-engine/Constants.tsx'; /* Metro dependency 4291 */
import * as CallConstantsModule from './CallConstants.tsx'; /* Metro dependency 4299 */
function _fun39541(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#39541, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:6, offset: 0x010e4767, size: 506 bytes, params: 8, frame: 21
const env0_0 = require;
const closure = function({applicationId, instanceId}) {
return instanceId != null ? 'activity-' + applicationId + '-' + instanceId : 'activity-' + applicationId;
};
const sortKey2 = sortKey;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = CallConstantsModule;
const env0_15 = value.isStreamParticipant;
const env0_16 = value.ParticipantTypes;
value = require(661) /* metro dependency 661: Constants */;
const env0_17 = value.ActivityTypes;
const env0_18 = value.ChannelTypes;
value = _fun39544();
(FileImportTrackerModule).fileFinishedImporting('modules/calls/ChannelRTCParticipants.tsx');
exports.default = value;
exports.getEmbeddedActivityParticipantId = closure;
exports.activityParticipantIdToApplicationId = function(a0) {
var r0;
var value = a0;
if (value == null) {
r0 = value;
} else {
value = value.split('-');
r0 = value[1];
}
return r0;
};
exports.sortKey = sortKey2;
exports.areParticipantsEqual = areParticipantsEqual;
exports.ChannelRTCParticipantsIndexes = {VIDEO: 'VIDEO', STREAM: 'STREAM', FILTERED: 'FILTERED',
SPEAKING: 'SPEAKING', ACTIVITY: 'ACTIVITY', NOT_POPPED_OUT: 'NOT_POPPED_OUT'};
function sortKey(a0) { // fn#39543, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:509, offset: 0x010e49af, size: 326 bytes, params: 2, frame: 17
var r5;
var r4;
var voiceState;
var userVideo;
var value6;
const type = a0.type;
var value;
const ACTIVITY = ParticipantTypes.ACTIVITY;
if (ACTIVITY === type) {
return '\x01' + a0.sortKey;
}
const HIDDEN_STREAM = ParticipantTypes.HIDDEN_STREAM;
if (HIDDEN_STREAM === type) {
userVideo = a0.userVideo;
value6 = '\x03';
r4 = userVideo ? '\x02' : value6;
value = importDefault(4611) /* metro dependency 4611: getParticipantUserKey */;
value = value(a0.userNick, a0.user);
return '' + r4 + value + value6;
}
const STREAM = ParticipantTypes.STREAM;
if (STREAM === type) {
userVideo = a0.userVideo;
value6 = '\x03';
r4 = userVideo ? '\x02' : value6;
value = importDefault(4611) /* metro dependency 4611: getParticipantUserKey */;
value = value(a0.userNick, a0.user);
return '' + r4 + value + value6;
}
const USER = ParticipantTypes.USER;
if (USER === type) {
voiceState = a0.voiceState;
r5 = voiceState == null ? a0.voiceState != null && a0.voiceState.selfStream ? '\x04' : '\x05' : voiceState.selfVideo ? '\x03' : a0.voiceState != null && a0.voiceState.selfStream ? '\x04' : '\x05';
value = importDefault(4611) /* metro dependency 4611: getParticipantUserKey */;
value = value(a0.userNick, a0.user);
return '' + r5 + value;
}
}
function _fun39544() { // fn#39544, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:1010, offset: 0x010e4af5, size: 385 bytes, params: 1, frame: 15
return CreateClass(ChannelRTCParticipants, [{key: 'version', get: function() {
return this.participantByIndex.version;
}}, {key: 'size', value: function(a0) {
return this.participantByIndex.size(a0);
}}, {key: 'toArray', value: function(a0) {
return this.participantByIndex.values(a0, true);
}}, {key: 'rebuild', value: value_39550}, {key: 'getParticipant', value: function(a0) {
var value = this.participantByIndex.get(a0);
var value2 = null;
return value2 != value ? value : value2;
}}, {key: 'updateEmbeddedActivities', value: function() {
return this.updateParticipant('__EMBEDDED_ACTIVITIES__');
}}, {key: 'hasEmbeddedActivity', value: value_39555}, {key: 'updateParticipant', value: function(a0) {
var r2;
var r0;
var env0_0 = this;
var property = this.participants[a0];
r2 = a0 === '__EMBEDDED_ACTIVITIES__' ? this._getParticipantsForEmbeddedActivities() : this._getParticipantsForUser(a0);
r0 = property != null || r2.length !== 0;
if (r0) {
if (property != null) {
property.forEach(_fun39557);
}
r2.forEach(_fun39558);
this.participants[a0] = r2;
r0 = true;
}
return r0;
}}, {key: 'updateParticipantSpeaking', value: function(a0) {
var r1;
var env0_0 = this;
var env0_1 = a0;
r1 = this.participants[a0]?.reduce(_fun39560, false);
return r1 != null && r1;
}}, {key: 'updateParticipantQuality', value: function(a0, a1, a2) {
var r1;
var env0_0 = this;
var env0_1 = a1;
var env0_2 = a2;
r1 = this.participants[a0]?.reduce(_fun39562, false);
return r1 != null && r1;
}}, {key: 'updateGuildRingingUsers', value: function(a0, a1) {
var guildRingingUsers = this.guildRingingUsers;
if (a1) {
guildRingingUsers.add(a0);
} else {
guildRingingUsers.delete(a0);
}
}}, {key: 'updateParticipantPoppedOut', value: function(a0, a1) {
var poppedOutParticipants = this.poppedOutParticipants;
if (a1) {
poppedOutParticipants.add(a0);
} else {
poppedOutParticipants.delete(a0);
}
}}, {key: '_getEmbeddedActivities', value: value_39565}, {key: '_getParticipantsForEmbeddedActivities',
value: function() {
var env0_0 = this;
return this._getEmbeddedActivities().map(_fun39568);
}}, {key: '_getParticipantsForUser', value: value_39569}]);
function ChannelRTCParticipants(a0) { // fn#39545, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:1031, offset: 0x010e4c76, size: 181 bytes, params: 2, frame: 15
var environment;
const value = environment.__proto__;
env1_3(this, ChannelRTCParticipants);
this.participants = {};
this.lastSpoke = {};
let Set = global.Set;
const value3 = Object.create(Set.prototype, {constructor: {value: Set}});
let set = new Set();
this.guildRingingUsers = set instanceof Object ? set : value3;
Set = global.Set;
const value5 = Object.create(Set.prototype, {constructor: {value: Set}});
set = new Set();
this.poppedOutParticipants = set instanceof Object ? set : value5;
const SecondaryIndexMap = (SecondaryIndexMapModule).SecondaryIndexMap;
this.participantByIndex = new SecondaryIndexMap(_fun39546, sortKey);
this.channelId = a0;
function _fun39546(a0) { // fn#39546, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:1259, offset: 0x010e4d2b, size: 345 bytes, params: 2, frame: 14
var voiceState;
const items2 = [];
let type = a0.type;
let USER = ParticipantTypes.USER;
let r2 = type === USER && a0.speaking;
if (r2) {
items2.push(env2_20.SPEAKING);
}
type = a0.type;
USER = ParticipantTypes.USER;
if (type !== USER) {
if (isStreamParticipant(a0)) {
items2.push(env2_20.STREAM);
r2 = a0.type === ParticipantTypes.HIDDEN_STREAM || a0.streamId == null;
r2 = !r2 ? a0.isPoppedOut : r2;
if (!r2) {
items2.push(env2_20.FILTERED);
}
}
} else {
voiceState = a0.voiceState;
if (voiceState == null) {
if (isStreamParticipant(a0)) {
items2.push(env2_20.STREAM);
r2 = a0.type === ParticipantTypes.HIDDEN_STREAM || a0.streamId == null;
r2 = !r2 ? a0.isPoppedOut : r2;
if (!r2) {
items2.push(env2_20.FILTERED);
}
}
} else if (voiceState.selfVideo) {
items2.push(env2_20.VIDEO);
if (!(a0.localVideoDisabled || a0.isPoppedOut)) {
items2.push(env2_20.FILTERED);
}
} else if (isStreamParticipant(a0)) {
items2.push(env2_20.STREAM);
r2 = a0.type === ParticipantTypes.HIDDEN_STREAM || a0.streamId == null;
r2 = !r2 ? a0.isPoppedOut : r2;
if (!r2) {
items2.push(env2_20.FILTERED);
}
}
}
type = a0.type;
const ACTIVITY = ParticipantTypes.ACTIVITY;
if (type === ACTIVITY) {
items2.push(env2_20.ACTIVITY);
}
if (!('isPoppedOut' in a0 && a0.isPoppedOut)) {
items2.push(env2_20.NOT_POPPED_OUT);
}
return items2;
}
}
function value_39550() { // fn#39550, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:1933, offset: 0x010e4ec8, size: 427 bytes, params: 1, frame: 21
var r10;
var environment;
var r3;
var call;
var Set;
var Object;
var keys;
var voiceStateStoreBinding;
var set;
var add;
var authenticationStoreBinding;
var items2;
var applicationStreamingStoreBinding;
const value = environment.__proto__;
const channel = ChannelStore.getChannel(this.channelId);
if (channel == null) {
return false;
}
const type = channel.type;
const GUILD_TEXT = ChannelTypes.GUILD_TEXT;
if (type === GUILD_TEXT) {
return false;
}
const callStoreBinding = CallStore;
const getCall = callStoreBinding.getCall;
this.call = Reflect.apply(getCall, callStoreBinding, [this.channelId]);
if (channel.isPrivate()) {
call = this.call;
if (call == null) {
return false;
}
call = this.call;
if (call.unavailable) {
return false;
}
Set = global.Set;
if (channel.isGuildVocalOrThread()) {
Object = global.Object;
keys = Object.keys;
voiceStateStoreBinding = VoiceStateStore;
r3 = Reflect.apply(keys, Object, [voiceStateStoreBinding.getVoiceStatesForChannel(channel.id)]);
r10 = voiceStateStoreBinding;
} else {
r3 = channel.recipients;
}
set = new Set();
add = set.add;
authenticationStoreBinding = AuthenticationStore;
Reflect.apply(add, set, [authenticationStoreBinding.getId()]);
if (this.guildRingingUsers.size > 0) {
Set = global.Set;
items2 = [];
arraySpread(items2, this.guildRingingUsers, arraySpread(items2, set, 0, r10), r10);
set = new Set();
} else {
r3 = set;
}
applicationStreamingStoreBinding = ApplicationStreamingStore;
applicationStreamingStoreBinding.getAllActiveStreamsForChannel(this.channelId).forEach(_fun39551);
this.participantByIndex.clear();
this.participants = {};
r3.forEach(_fun39552);
} else {
Set = global.Set;
if (channel.isGuildVocalOrThread()) {
Object = global.Object;
keys = Object.keys;
voiceStateStoreBinding = VoiceStateStore;
r3 = Reflect.apply(keys, Object, [voiceStateStoreBinding.getVoiceStatesForChannel(channel.id)]);
r10 = voiceStateStoreBinding;
} else {
r3 = channel.recipients;
}
set = new Set();
add = set.add;
authenticationStoreBinding = AuthenticationStore;
Reflect.apply(add, set, [authenticationStoreBinding.getId()]);
if (this.guildRingingUsers.size > 0) {
Set = global.Set;
items2 = [];
arraySpread(items2, this.guildRingingUsers, arraySpread(items2, set, 0, r10), r10);
set = new Set();
} else {
r3 = set;
}
applicationStreamingStoreBinding = ApplicationStreamingStore;
applicationStreamingStoreBinding.getAllActiveStreamsForChannel(this.channelId).forEach(_fun39551);
this.participantByIndex.clear();
this.participants = {};
r3.forEach(_fun39552);
}
this.updateEmbeddedActivities();
return true;
function _fun39551({ownerId}) { // fn#39551, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:2383, offset: 0x010e5073, size: 28 bytes, params: 2, frame: 11
return env0_1.add(ownerId);
}
function _fun39552(a0) { // fn#39552, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:2473, offset: 0x010e508f, size: 23 bytes, params: 2, frame: 11
return env0_0.updateParticipant(a0);
}
}
function value_39555() { // fn#39555, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:2761, offset: 0x010e50e0, size: 34 bytes, params: 1, frame: 11
const size = this.size;
const value = environment.__proto__;
const ACTIVITY = env1_20.ACTIVITY;
return Reflect.apply(size, this, [ACTIVITY]) > 0;
}
function value_39556(a0) { // fn#39556, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:2836, offset: 0x010e5102, size: 128 bytes, params: 2, frame: 17
const property = this.participants[a0];
const r2 = a0 === '__EMBEDDED_ACTIVITIES__' ? this._getParticipantsForEmbeddedActivities() : this._getParticipantsForUser(a0);
let r0 = property != null || r2.length !== 0;
if (r0) {
if (property != null) {
property.forEach(_fun39557);
}
r2.forEach(_fun39558);
this.participants[a0] = r2;
r0 = true;
}
return r0;
function _fun39557({id}) { // fn#39557, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3012, offset: 0x010e5182, size: 35 bytes, params: 2, frame: 11
env0_0.participantByIndex.delete(id);
}
function _fun39558(a0) { // fn#39558, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3067, offset: 0x010e51a5, size: 36 bytes, params: 2, frame: 13
const participantByIndex = env0_0.participantByIndex;
participantByIndex.set(a0.id, a0);
}
}
function value_39559(a0) { // fn#39559, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3178, offset: 0x010e51c9, size: 68 bytes, params: 2, frame: 15
const env0_1 = a0;
const r1 = this.participants[a0]?.reduce(_fun39560, false);
return r1 != null && r1;
function _fun39560(a0, a1) { // fn#39560, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3262, offset: 0x010e520d, size: 292 bytes, params: 3, frame: 20
var r0;
var value3;
var moduleValue;
var getIsSpeaking;
var object;
var binding;
var value5;
var value6;
var isSoundSharing2;
var participantByIndex;
var get;
var id;
var value7;
var lastSpoke;
var Date;
var set;
const value = a0;
const type = a1.type;
const USER = ParticipantTypes.USER;
if (type === USER) {
value3 = undefined;
moduleValue = require(4612) /* metro dependency 4612: useIsSpeaking */;
getIsSpeaking = moduleValue.getIsSpeaking;
object = {};
binding = env0_1;
object.userId = binding;
value5 = true;
object.checkIsMuted = value5;
value6 = Reflect.apply(getIsSpeaking, moduleValue, [object]);
isSoundSharing2 = SpeakingStore.isSoundSharing(binding);
participantByIndex = env0_0.participantByIndex;
get = participantByIndex.get;
id = a1.id;
value7 = Reflect.apply(get, participantByIndex, [id]);
if ((value7 == null ? value3 : value7.type) !== ParticipantTypes.USER) {
if (value6) {
lastSpoke = env0_0.lastSpoke;
binding = env0_1;
Date = global.Date;
lastSpoke[binding] = Date.now();
}
binding = env0_0;
participantByIndex = binding.participantByIndex;
set = participantByIndex.set;
id = a1.id;
object = {};
copyDataProperties(object, a1, value6);
object['speaking'] = value6;
lastSpoke = binding.lastSpoke;
object['lastSpoke'] = lastSpoke[env0_1];
object['soundsharing'] = isSoundSharing2;
Reflect.apply(set, participantByIndex, [id, object]);
r0 = value5;
} else if (value7.speaking !== value6) {
if (value6) {
lastSpoke = env0_0.lastSpoke;
binding = env0_1;
Date = global.Date;
lastSpoke[binding] = Date.now();
}
binding = env0_0;
participantByIndex = binding.participantByIndex;
set = participantByIndex.set;
id = a1.id;
object = {};
copyDataProperties(object, a1, value6);
object['speaking'] = value6;
lastSpoke = binding.lastSpoke;
object['lastSpoke'] = lastSpoke[env0_1];
object['soundsharing'] = isSoundSharing2;
Reflect.apply(set, participantByIndex, [id, object]);
r0 = value5;
} else if (value7.soundsharing === isSoundSharing2) {
r0 = value;
} else {
if (value6) {
lastSpoke = env0_0.lastSpoke;
binding = env0_1;
Date = global.Date;
lastSpoke[binding] = Date.now();
}
binding = env0_0;
participantByIndex = binding.participantByIndex;
set = participantByIndex.set;
id = a1.id;
object = {};
copyDataProperties(object, a1, value6);
object['speaking'] = value6;
lastSpoke = binding.lastSpoke;
object['lastSpoke'] = lastSpoke[env0_1];
object['soundsharing'] = isSoundSharing2;
Reflect.apply(set, participantByIndex, [id, object]);
r0 = value5;
}
return r0;
}
return value;
}
}
function value_39561(a0, a1, a2) { // fn#39561, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3675, offset: 0x010e5331, size: 78 bytes, params: 4, frame: 15
const env0_1 = a1;
const env0_2 = a2;
const r1 = this.participants[a0]?.reduce(_fun39562, false);
return r1 != null && r1;
function _fun39562(a0, a1) { // fn#39562, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:3763, offset: 0x010e537f, size: 99 bytes, params: 3, frame: 17
var r0;
var participantByIndex;
var set;
var id;
var object;
const value = a0;
const type = a1.type;
const STREAM = ParticipantTypes.STREAM;
if (type !== STREAM) {
r0 = value;
} else {
participantByIndex = env0_0.participantByIndex;
set = participantByIndex.set;
id = a1.id;
object = {};
copyDataProperties(object, a1, undefined);
object['maxResolution'] = require;
object['maxFrameRate'] = importDefault;
Reflect.apply(set, participantByIndex, [id, object]);
r0 = true;
}
return r0;
}
}
function value_39565() { // fn#39565, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:4161, offset: 0x010e543a, size: 122 bytes, params: 1, frame: 17
var environment;
var r0;
var uniqBy;
var items2;
var value4;
let value = environment.__proto__;
const embeddedActivitiesStoreBinding = EmbeddedActivitiesStore;
const embeddedActivitiesForChannel = embeddedActivitiesStoreBinding.getEmbeddedActivitiesForChannel(this.channelId);
const selfEmbeddedActivityForChannel = embeddedActivitiesStoreBinding.getSelfEmbeddedActivityForChannel(this.channelId);
if (selfEmbeddedActivityForChannel == null) {
r0 = embeddedActivitiesForChannel;
} else {
value = require(22) /* metro dependency 22 */;
uniqBy = value.uniqBy;
items2 = [];
value4 = arraySpread(items2, embeddedActivitiesForChannel, 0, embeddedActivitiesForChannel);
items2[value4] = selfEmbeddedActivityForChannel;
value4 + 1;
value = Reflect.apply(uniqBy, value, [items2, function(a0) {
return a0.compositeInstanceId;
}]);
r0 = value;
}
return r0;
}
function value_39567() { // fn#39567, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:4405, offset: 0x010e54bf, size: 38 bytes, params: 1, frame: 11
return this._getEmbeddedActivities().map(_fun39568);
function _fun39568(a0, a1) { // fn#39568, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:4458, offset: 0x010e54e5, size: 210 bytes, params: 3, frame: 18
var r3;
const object = {};
let value = environment.__proto__.__proto__;
const ACTIVITY = ParticipantTypes.ACTIVITY;
object.type = ACTIVITY;
const getEmbeddedActivityParticipantIdBinding = getEmbeddedActivityParticipantId;
const value2 = undefined;
object.id = getEmbeddedActivityParticipantIdBinding({applicationId: a0.applicationId,
instanceId: a0.compositeInstanceId});
object.applicationId = a0.applicationId;
const PLAYING = ActivityTypes.PLAYING;
object.activityType = PLAYING;
object.activityUrl = a0.url;
const participants = a0.participants;
const value3 = null;
const r7 = value3 != participants ? participants : [];
const items2 = [];
arraySpread(items2, r7, 0, r7);
object.participants = items2;
value = ChannelStore.getChannel(env0_0.channelId);
if (value3 == value) {
r3 = value2;
} else {
value = value.getGuildId();
r3 = value;
}
object.guildId = value3 != r3 ? r3 : value3;
object.sortKey = a1.toString();
return object;
}
}
function value_39569(a0) { // fn#39569, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:4870, offset: 0x010e55b7, size: 1005 bytes, params: 2, frame: 28
var r8;
var r2;
var r6;
var r12;
var type;
var r14;
var selfVideo;
var has;
var object;
var videoStreamStoreBinding;
var getUserStreamData;
var id;
var property;
var defaultImport;
var mediaEngineStoreBinding;
var isLocalVideoDisabled;
var poppedOutParticipants;
var value20;
var participant;
var ownerId;
var authenticationStoreBinding;
var STREAM;
var object4;
var object5;
const items2 = [];
let value = environment.__proto__;
const user = UserStore.getUser(a0);
const value3 = null;
if (value3 != user) {
var voiceStateStoreBinding = VoiceStateStore;
var voiceStateForChannel = voiceStateStoreBinding.getVoiceStateForChannel(this.channelId, a0);
var voicePlatformForChannel = voiceStateStoreBinding.getVoicePlatformForChannel(this.channelId, a0);
var channel = ChannelStore.getChannel(this.channelId);
var value7 = undefined;
r8 = value3 == channel ? value7 : channel.getGuildId();
var call = this.call;
r2 = value3 == call || value3 == call.ringing ? value7 : call.ringing.includes(a0);
r2 = !r2 ? this.guildRingingUsers.has(a0) : r2;
var r5 = value3 != r2 && r2;
if (value3 != voiceStateForChannel || r5) {
object = {};
object.type = ParticipantTypes.USER;
videoStreamStoreBinding = VideoStreamStore;
copyDataProperties(object, videoStreamStoreBinding.getUserStreamData(a0, r8), undefined);
object['user'] = user;
id = user.id;
object['id'] = id;
object['voiceState'] = voiceStateForChannel;
object['voicePlatform'] = voicePlatformForChannel;
object['speaking'] = (require(4612) /* metro dependency 4612: useIsSpeaking */).getIsSpeaking({userId: a0,
checkIsMuted: true});
property = this.lastSpoke[a0];
object['lastSpoke'] = value3 != property ? property : 0;
object['soundsharing'] = SpeakingStore.isSoundSharing(a0);
object['ringing'] = r5;
defaultImport = importDefault(4617) /* metro dependency 4617: NicknameUtils */;
object['userNick'] = defaultImport.getName(r8, this.channelId, user);
object['userAvatarDecoration'] = (require(4618) /* metro dependency 4618: useAvatarDecoration */).getAvatarDecoration(user,
r8);
mediaEngineStoreBinding = MediaEngineStore;
isLocalVideoDisabled = mediaEngineStoreBinding.isLocalVideoDisabled;
id = user.id;
object['localVideoDisabled'] = Reflect.apply(isLocalVideoDisabled, mediaEngineStoreBinding, [id]);
poppedOutParticipants = this.poppedOutParticipants;
has = poppedOutParticipants.has;
id = user.id;
object['isPoppedOut'] = Reflect.apply(has, poppedOutParticipants, [id]);
items2.push(object);
}
var streamForUser = ApplicationStreamingStore.getStreamForUser(a0, r8);
r5 = value3 != streamForUser ? streamForUser : ApplicationStreamingStore.getActiveStreamForUser(a0, r8);
if (value3 != r5) {
if (r5.channelId === this.channelId) {
value20 = (require(4285) /* metro dependency 4285: StreamKeyUtils */).encodeStreamKey(r5);
participant = this.getParticipant(value20);
ownerId = r5.ownerId;
authenticationStoreBinding = AuthenticationStore;
r12 = ownerId === authenticationStoreBinding.getId() && ApplicationStreamingStore.isSelfStreamHidden(this.channelId);
type = value3 == participant ? value7 : participant.type;
STREAM = ParticipantTypes.STREAM;
if (type !== STREAM) {
r6 = value3;
} else {
if (value3 != participant.maxResolution) {
object4 = {};
copyDataProperties(object4, participant.maxResolution, undefined);
r14 = object4;
} else {
r14 = value7;
}
r6 = {maxResolution: r14, maxFrameRate: participant.maxFrameRate};
}
object5 = {};
videoStreamStoreBinding = VideoStreamStore;
getUserStreamData = videoStreamStoreBinding.getUserStreamData;
STREAM = MediaEngineContextTypes.STREAM;
copyDataProperties(object5, Reflect.apply(getUserStreamData, videoStreamStoreBinding, [a0, r8, STREAM]),
undefined);
copyDataProperties(object5, r6, undefined);
r12 = r12 ? ParticipantTypes.HIDDEN_STREAM : ParticipantTypes.STREAM;
object5['type'] = r12;
object5['id'] = value20;
selfVideo = value3 == voiceStateForChannel ? value7 : voiceStateForChannel.selfVideo;
object5['userVideo'] = value3 != selfVideo && selfVideo;
object5['user'] = user;
value = importDefault(4617) /* metro dependency 4617: NicknameUtils */;
value = value.getName(r8, this.channelId, user);
object5['userNick'] = value;
object5['stream'] = r5;
value = this.poppedOutParticipants.has(value20);
object5['isPoppedOut'] = value;
items2.push(object5);
}
}
}
return items2;
}
}
}
function areParticipantsEqual(a0, a1) { // fn#39571, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:4788:6625, offset: 0x010e59c7, size: 168 bytes, params: 3, frame: 14
var r1;
var r2;
var r3;
var r4;
var r5;
var r8;
var item3;
var value3;
var item5;
var value5;
let iterator = a0[Symbol.iterator]();
const iterator2 = iterator.next;
const value = undefined;
let item2 = Reflect.apply(iterator2, iterator, []);
let item = item2.value;
item2 = item2.done ? undefined : iterator;
const value2 = item2 === value;
if (value2) {
}
if (value2) {
r1 = item2;
r2 = value2;
r3 = value;
} else {
item3 = Reflect.apply(iterator2, item2, []);
item = item3.value;
item3 = item3.done ? undefined : item2;
value3 = item3 === value;
if (value3) {
r1 = item3;
r2 = value3;
r3 = value;
} else {
r1 = item3;
r2 = value3;
r3 = item;
}
}
if (!r2) {
r1.return();
}
iterator = a1[Symbol.iterator]();
const iterator3 = iterator.next;
let item4 = Reflect.apply(iterator3, iterator, []);
item = item4.value;
item4 = item4.done ? undefined : iterator;
const value4 = item4 === value;
if (value4) {
}
if (value4) {
r4 = item4;
r5 = value4;
r8 = value;
} else {
item5 = Reflect.apply(iterator3, item4, []);
item = item5.value;
item5 = item5.done ? undefined : item4;
value5 = item5 === value;
if (value5) {
r4 = item5;
r5 = value5;
r8 = value;
} else {
r4 = item5;
r5 = value5;
r8 = item;
}
}
if (!r5) {
r4.return();
}
return r3 === r8;
}
global.__d(_fun39541, 4610, [6, 7, 1378, 4492, 1226, 4258, 1379, 4259, 4607, 1878, 4609, 4297, 4299, 661, 4291,
4611, 3780, 4612, 22, 4617, 4618, 4285,
2]) /* metro module 4610, dependencies: [6, 7, 1378, 4492, 1226, 4258, 1379, 4259, 4607, 1878, 4609, 4297, 4299, 661, 4291, 4611, 3780, 4612, 22, 4617, 4618, 4285, 2] */;