Files
discord-decomp/sources/modules/rpc/server/commands/channels.tsx
T
2026-07-27 16:20:00 +03:00

516 lines
24 KiB
TypeScript

/* Metro module 13021; source: modules/rpc/server/commands/channels.tsx; dependencies: [1383, 1379, 1867, 3784, 1934, 4297, 4135, 661, 4122, 8076, 8081, 22, 13018, 8079, 4796, 4800, 1230, 8879, 2] */
function _fun99387(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#99387, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:6, offset: 0x021c674d, size: 822 bytes, params: 8, frame: 25
var object2;
let env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
let value = require(1383) /* metro dependency 1383: ChannelRecord */;
const env0_3 = value.isVoiceChannel;
const env0_4 = value.isTextChannel;
const channelStore = importDefault(1379) /* metro dependency 1379: ChannelStore */;
const guildStore = importDefault(1867) /* metro dependency 1867: GuildStore */;
const permissionStore = importDefault(3784) /* metro dependency 3784: PermissionStore */;
const selectedChannelStore = importDefault(1934) /* metro dependency 1934: SelectedChannelStore */;
const voiceStateStore = importDefault(4297) /* metro dependency 4297: VoiceStateStore */;
const RPC_SCOPE_CONFIG = (require(4135) /* metro dependency 4135: Constants */).RPC_SCOPE_CONFIG;
value = require(661) /* metro dependency 661: Constants */;
const env0_10 = value.Routes;
const env0_11 = value.Permissions;
const RPCCommands = value.RPCCommands;
const env0_12 = value.RPCErrors;
object2 = {};
const GET_CHANNEL = RPCCommands.GET_CHANNEL;
let ANY = RPC_SCOPE_CONFIG.ANY;
const OAuth2Scopes = (require(4122) /* metro dependency 4122: OAuth2Scopes */).OAuth2Scopes;
let RPC = OAuth2Scopes.RPC;
const GUILDS = OAuth2Scopes.GUILDS;
let GUILDS_CHANNELS_READ = OAuth2Scopes.GUILDS_CHANNELS_READ;
object2[GET_CHANNEL] = {scope: {[ANY]: [RPC, GUILDS, GUILDS_CHANNELS_READ]}, handler: handler_99388};
const GET_CHANNELS = RPCCommands.GET_CHANNELS;
RPC = OAuth2Scopes.RPC;
object2[GET_CHANNELS] = {scope: RPC, handler: handler_99389};
const GET_CHANNEL_PERMISSIONS = RPCCommands.GET_CHANNEL_PERMISSIONS;
ANY = RPC_SCOPE_CONFIG.ANY;
const GUILDS_MEMBERS_READ = OAuth2Scopes.GUILDS_MEMBERS_READ;
GUILDS_CHANNELS_READ = OAuth2Scopes.GUILDS_CHANNELS_READ;
object2[GET_CHANNEL_PERMISSIONS] = {scope: {[ANY]: [GUILDS_MEMBERS_READ, GUILDS_CHANNELS_READ]},
handler: handler_99393};
const SELECT_VOICE_CHANNEL = RPCCommands.SELECT_VOICE_CHANNEL;
RPC = OAuth2Scopes.RPC;
object2[SELECT_VOICE_CHANNEL] = {scope: RPC, validation: validation_99394, handler: handler_99395};
const GET_SELECTED_VOICE_CHANNEL = RPCCommands.GET_SELECTED_VOICE_CHANNEL;
ANY = RPC_SCOPE_CONFIG.ANY;
RPC = OAuth2Scopes.RPC;
const RPC_VOICE_READ = OAuth2Scopes.RPC_VOICE_READ;
object2[GET_SELECTED_VOICE_CHANNEL] = {scope: {[ANY]: [RPC, RPC_VOICE_READ]}, handler: handler_99400};
const SELECT_TEXT_CHANNEL = RPCCommands.SELECT_TEXT_CHANNEL;
RPC = OAuth2Scopes.RPC;
object2[SELECT_TEXT_CHANNEL] = {scope: RPC, validation: validation_99401, handler: handler_99402};
const CREATE_CHANNEL_INVITE = RPCCommands.CREATE_CHANNEL_INVITE;
RPC = OAuth2Scopes.RPC;
object2[CREATE_CHANNEL_INVITE] = {scope: RPC, handler: function({args}) {
var channel_id = args.channel_id;
var env0_0 = channel_id;
var value = Object.create(null);
value.channel_id = 0;
value = copyDataProperties({}, args, value, channel_id);
value = importDefault(dependencyMap[17]).createInvite(channel_id, value, 'RPC');
return value.catch(_fun99408);
}};
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/rpc/server/commands/channels.tsx');
exports.default = object2;
}
function handler_99388({args, socket}) { // fn#99388, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:420, offset: 0x021c6a83, size: 399 bytes, params: 2, frame: 20
var scopes;
var includes;
const OAuth2Scopes = (require(4122) /* metro dependency 4122: OAuth2Scopes */).OAuth2Scopes;
var transformChannel;
var moduleValue;
var defaultImport2;
const channel_id = args.channel_id;
var value;
const channel = ChannelStore.getChannel(channel_id);
if (channel == null) {
defaultImport2 = importDefault(8076) /* metro dependency 8076: RPCError */;
({}).errorCode = RPCErrors.INVALID_CHANNEL;
value = 'Invalid channel id: ' + channel_id;
value = new defaultImport2();
throw value;
}
if (channel.isPrivate()) {
scopes = socket.authorization.scopes;
includes = scopes.includes;
if (Reflect.apply(includes, scopes, [OAuth2Scopes.RPC])) {
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
return Reflect.apply(transformChannel, value, [channel, moduleValue.hasMessageReadPermission(channel,
socket.application.id, socket.authorization.scopes)]);
}
includes = scopes.includes;
if (Reflect.apply(includes, scopes, [OAuth2Scopes.DM_CHANNELS_READ])) {
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
return Reflect.apply(transformChannel, value, [channel, moduleValue.hasMessageReadPermission(channel,
socket.application.id, socket.authorization.scopes)]);
}
throw new (importDefault(8076) /* metro dependency 8076: RPCError */)({errorCode: RPCErrors.INVALID_PERMISSIONS},
'Invalid scope');
}
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
return Reflect.apply(transformChannel, value, [channel, moduleValue.hasMessageReadPermission(channel,
socket.application.id, socket.authorization.scopes)]);
}
function handler_99389({args}) { // fn#99389, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:944, offset: 0x021c6c12, size: 246 bytes, params: 2, frame: 17
var r7;
var object2;
var defaultImport2;
const guild_id = args.guild_id;
var value;
const defaultImport = importDefault(22) /* metro dependency 22 */;
const value2 = defaultImport.values(ChannelStore.loadAllGuildAndPrivateChannelsFromDisk());
if (guild_id) {
if (GuildStore.getGuild(guild_id) == null) {
defaultImport2 = importDefault(8076) /* metro dependency 8076: RPCError */;
({}).errorCode = RPCErrors.INVALID_GUILD;
value = 'Invalid guild id: ' + guild_id;
value = new defaultImport2();
throw value;
}
value = value2.filter(_fun99390);
r7 = value;
object2 = {};
value = r7.filter(function(a0) {
return PermissionStore.can(Permissions.VIEW_CHANNEL, a0);
});
object2.channels = value.map(_fun99392);
} else {
r7 = value2;
object2 = {};
object2.channels = r7.filter(function(a0) {
return PermissionStore.can(Permissions.VIEW_CHANNEL, a0);
}).map(function({id, name, type}) {
return {id: id, name: name, type: type};
});
}
return object2;
}
function handler_99393() { // fn#99393, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:1430, offset: 0x021c6d66, size: 127 bytes, params: 1, frame: 15
const value2 = (importDefault(13018) /* metro dependency 13018: getCurrentEmbeddedActivityChannel */)();
if (value2 == null) {
throw new (importDefault(8076) /* metro dependency 8076: RPCError */)({errorCode: RPCErrors.INVALID_CHANNEL},
'Invalid channel');
}
const object2 = {};
object2.permissions = PermissionStore.computePermissions(value2);
return object2;
}
function validation_99394(a0) { // fn#99394, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:1650, offset: 0x021c6de5, size: 153 bytes, params: 2, frame: 15
let value = (importDefault(8079) /* metro dependency 8079: createRpcJoiSchemaObject */)(a0);
value = value.required();
const keys = value.keys;
const object2 = {};
object2.channel_id = a0.string().allow(null);
object2.timeout = a0.number().min(0).max(60);
object2.force = a0.boolean();
object2.navigate = a0.boolean();
return Reflect.apply(keys, value, [object2]);
}
function handler_99395({server, socket, args}) { // fn#99395, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:1791, offset: 0x021c6e7e, size: 291 bytes, params: 2, frame: 21
var value;
var voiceChannelId;
const channel_id = args.channel_id;
let timeout = args.timeout;
timeout = timeout === undefined ? 0 : timeout;
let force = args.force;
force = !(force === undefined) && force;
if (args.navigate !== undefined) {
}
if (channel_id) {
voiceChannelId = SelectedChannelStore.getVoiceChannelId();
if (voiceChannelId == null) {
value = server.storeWait(socket, function() {
return ChannelStore.getChannel(channel_id);
}, timeout);
value = value.catch(_fun99397);
value = value.then(_fun99398);
return value.then(_fun99399);
}
if (voiceChannelId === channel_id) {
value = server.storeWait(socket, _fun99396, timeout);
value = value.catch(_fun99397);
value = value.then(_fun99398);
return value.then(_fun99399);
}
if (force === false) {
throw new (importDefault(8076) /* metro dependency 8076: RPCError */)({errorCode: RPCErrors.SELECT_VOICE_FORCE_REQUIRED},
'User is already joined to a voice channel.');
}
value = server.storeWait(socket, _fun99396, timeout);
value = value.catch(_fun99397);
value = value.then(_fun99398);
return value.then(_fun99399);
}
(importDefault(4796) /* metro dependency 4796: SelectedChannelActionCreators */).selectVoiceChannel(null);
return null;
}
function handler_99400({socket}) { // fn#99400, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:3066, offset: 0x021c72c3, size: 140 bytes, params: 2, frame: 19
var r0;
var transformChannel;
var moduleValue;
var value;
const voiceChannelId = SelectedChannelStore.getVoiceChannelId();
const r4 = voiceChannelId != null ? ChannelStore.getChannel(voiceChannelId) : null;
if (r4 != null) {
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
value = Reflect.apply(transformChannel, value, [r4, moduleValue.hasMessageReadPermission(r4,
socket.application.id,
socket.authorization.scopes)]);
r0 = value;
} else {
r0 = null;
}
return r0;
}
function validation_99401(a0) { // fn#99401, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:3340, offset: 0x021c734f, size: 123 bytes, params: 2, frame: 15
let value = (importDefault(8079) /* metro dependency 8079: createRpcJoiSchemaObject */)(a0);
value = value.required();
const keys = value.keys;
const object2 = {};
object2.channel_id = a0.string().allow(null);
object2.timeout = a0.number().min(0).max(60);
return Reflect.apply(keys, value, [object2]);
}
function handler_99402({server, socket, args}) { // fn#99402, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:3450, offset: 0x021c73ca, size: 175 bytes, params: 2, frame: 19
var r0;
var value;
var moduleValue;
const channel_id = args.channel_id;
let timeout = args.timeout;
timeout = timeout === undefined ? 0 : timeout;
if (channel_id) {
value = server.storeWait(socket, function() {
return ChannelStore.getChannel(channel_id);
}, timeout);
value = value.catch(_fun99404);
value = value.then(_fun99405);
value = value.then(_fun99406);
r0 = value;
} else {
moduleValue = require(1230) /* metro dependency 1230: router_utils */;
moduleValue.transitionTo(Routes.ME);
r0 = null;
}
return r0;
}
function handler_99407({args}) { // fn#99407, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:4355, offset: 0x021c7725, size: 105 bytes, params: 2, frame: 16
const channel_id = args.channel_id;
let value = Object.create(null);
value.channel_id = 0;
value = copyDataProperties({}, args, value, channel_id);
value = (importDefault(8879) /* metro dependency 8879: InstantInviteActionCreators */).createInvite(channel_id,
value, 'RPC');
return value.catch(_fun99408);
}
function _fun99390({guild_id}) { // fn#99390, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:1161, offset: 0x021c6d08, size: 26 bytes, params: 2, frame: 2
return guild_id === env0_0.id;
}
function _fun99392({id, name, type}) { // fn#99392, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:1248, offset: 0x021c6d44, size: 34 bytes, params: 2, frame: 4
return {id: id, name: name, type: type};
}
function _fun99397() { // fn#99397, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:2143, offset: 0x021c6fa1, size: 73 bytes, params: 1, frame: 13
const value = environment.__proto__;
const defaultImport = importDefault(8076) /* metro dependency 8076: RPCError */;
const SELECT_CHANNEL_TIMED_OUT = RPCErrors.SELECT_CHANNEL_TIMED_OUT;
throw new defaultImport({errorCode: SELECT_CHANNEL_TIMED_OUT}, 'Request to select voice channel timed out.');
}
function _fun99398(a0) { // fn#99398, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:2261, offset: 0x021c6fea, size: 332 bytes, params: 2, frame: 20
var value;
var items;
var Promise;
var all;
var transformChannel;
var moduleValue;
var hasMessageReadPermission;
var socketBinding;
var defaultImport2;
if (a0 == null) {
value = environment.__proto__;
defaultImport2 = importDefault(8076) /* metro dependency 8076: RPCError */;
({}).errorCode = RPCErrors.INVALID_CHANNEL;
value = 'Invalid channel id: ' + channel_id;
value = new defaultImport2();
throw value;
}
value = environment.__proto__;
if (isVoiceChannel(a0.type)) {
Promise = global.Promise;
all = Promise.all;
items = [global.Promise.resolve(a0)];
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
hasMessageReadPermission = moduleValue.hasMessageReadPermission;
socketBinding = socket;
items[1] = Reflect.apply(transformChannel, value, [a0, Reflect.apply(hasMessageReadPermission, moduleValue, [a0,
socketBinding.application.id, socketBinding.authorization.scopes])]);
return Reflect.apply(all, Promise, [items]);
}
const defaultImport = importDefault(8076) /* metro dependency 8076: RPCError */;
const INVALID_CHANNEL = RPCErrors.INVALID_CHANNEL;
throw new defaultImport({errorCode: INVALID_CHANNEL}, 'Channel is not a voice channel');
}
function _fun99399(a0) { // fn#99399, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:2606, offset: 0x021c7136, size: 397 bytes, params: 2, frame: 19
var r0;
var r1;
var r4;
var item3;
var value3;
var value4;
var moduleValue;
var value6;
var defaultImport;
const iterator = a0[Symbol.iterator]();
const iterator2 = iterator.next;
let item2 = Reflect.apply(iterator2, iterator, []);
let item = item2.value;
item2 = item2.done ? undefined : iterator;
let value = undefined;
const value2 = item2 === value;
const r2 = value2 ? value : item;
if (value2) {
r0 = item2;
r1 = value;
r4 = value2;
} else {
item3 = Reflect.apply(iterator2, item2, []);
item = item3.value;
item3 = item3.done ? undefined : item2;
value3 = item3 === value;
if (value3) {
r0 = item3;
r1 = value;
r4 = value3;
} else {
r0 = item3;
r1 = item;
r4 = value3;
}
}
if (!r4) {
r0.return();
}
if (r1.guild_id) {
value4 = environment.__proto__;
moduleValue = require(4800) /* metro dependency 4800: ChannelUtils */;
if (moduleValue.isChannelFull(r2, VoiceStateStore, GuildStore)) {
value = importDefault(8076) /* metro dependency 8076: RPCError */;
value = new value({errorCode: RPCErrors.INVALID_CHANNEL}, 'Channel is full');
throw value;
}
if (PermissionStore.can(Permissions.CONNECT, r2)) {
value6 = environment.__proto__;
defaultImport = importDefault(4796) /* metro dependency 4796: SelectedChannelActionCreators */;
defaultImport.selectVoiceChannel(r2.id);
if (navigate) {
value = require(1230) /* metro dependency 1230: router_utils */;
value.replaceWith(Routes.CHANNEL(r2.guild_id, r2.id));
}
return r1;
}
value = importDefault(8076) /* metro dependency 8076: RPCError */;
value = new value({errorCode: RPCErrors.INVALID_PERMISSIONS}, 'Connect permission required to join channel');
throw value;
}
defaultImport = importDefault(4796) /* metro dependency 4796: SelectedChannelActionCreators */;
defaultImport.selectVoiceChannel(r2.id);
if (navigate) {
value = require(1230) /* metro dependency 1230: router_utils */;
value.replaceWith(Routes.CHANNEL(r2.guild_id, r2.id));
}
return r1;
}
function _fun99404() { // fn#99404, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:3553, offset: 0x021c7479, size: 73 bytes, params: 1, frame: 13
const value = environment.__proto__;
const defaultImport = importDefault(8076) /* metro dependency 8076: RPCError */;
const SELECT_CHANNEL_TIMED_OUT = RPCErrors.SELECT_CHANNEL_TIMED_OUT;
throw new defaultImport({errorCode: SELECT_CHANNEL_TIMED_OUT}, 'Request to select text channel timed out.');
}
function _fun99405(a0) { // fn#99405, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:3670, offset: 0x021c74c2, size: 332 bytes, params: 2, frame: 20
var value;
var items;
var Promise;
var all;
var transformChannel;
var moduleValue;
var hasMessageReadPermission;
var socketBinding;
var defaultImport2;
if (a0 == null) {
value = environment.__proto__;
defaultImport2 = importDefault(8076) /* metro dependency 8076: RPCError */;
({}).errorCode = RPCErrors.INVALID_CHANNEL;
value = 'Invalid channel id: ' + channel_id;
value = new defaultImport2();
throw value;
}
value = environment.__proto__;
if (isTextChannel(a0.type)) {
Promise = global.Promise;
all = Promise.all;
items = [global.Promise.resolve(a0)];
value = require(8081) /* metro dependency 8081: RPCHelpers */;
transformChannel = value.transformChannel;
moduleValue = require(8081) /* metro dependency 8081: RPCHelpers */;
hasMessageReadPermission = moduleValue.hasMessageReadPermission;
socketBinding = socket;
items[1] = Reflect.apply(transformChannel, value, [a0, Reflect.apply(hasMessageReadPermission, moduleValue, [a0,
socketBinding.application.id, socketBinding.authorization.scopes])]);
return Reflect.apply(all, Promise, [items]);
}
const defaultImport = importDefault(8076) /* metro dependency 8076: RPCError */;
const INVALID_CHANNEL = RPCErrors.INVALID_CHANNEL;
throw new defaultImport({errorCode: INVALID_CHANNEL}, 'Channel is not a text channel');
}
function _fun99406(a0) { // fn#99406, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:4014, offset: 0x021c760e, size: 279 bytes, params: 2, frame: 17
var r0;
var r2;
var r3;
var item3;
var value3;
var value4;
var value6;
const iterator = a0[Symbol.iterator]();
const iterator2 = iterator.next;
let item2 = Reflect.apply(iterator2, iterator, []);
let item = item2.value;
item2 = item2.done ? undefined : iterator;
let value = undefined;
const value2 = item2 === value;
const r1 = value2 ? value : item;
if (value2) {
r0 = value;
r2 = item2;
r3 = value2;
} else {
item3 = Reflect.apply(iterator2, item2, []);
item = item3.value;
item3 = item3.done ? undefined : item2;
value3 = item3 === value;
if (value3) {
r0 = value;
r2 = item3;
r3 = value3;
} else {
r0 = item;
r2 = item3;
r3 = value3;
}
}
if (!r3) {
r2.return();
}
let guild_id = r0.guild_id;
if (guild_id) {
value4 = environment.__proto__;
if (PermissionStore.can(Permissions.VIEW_CHANNEL, r1)) {
guild_id = r0.guild_id;
value6 = environment.__proto__;
if (guild_id) {
value = require(1230) /* metro dependency 1230: router_utils */;
value.replaceWith(Routes.CHANNEL(r0.guild_id, r1.id));
} else {
value = importDefault(4796) /* metro dependency 4796: SelectedChannelActionCreators */;
value.selectPrivateChannel(r1.id);
}
return r0;
}
value = importDefault(8076) /* metro dependency 8076: RPCError */;
value = new value({errorCode: RPCErrors.INVALID_CHANNEL}, 'No permission to see channel');
throw value;
}
if (r0.guild_id) {
value = require(1230) /* metro dependency 1230: router_utils */;
value.replaceWith(Routes.CHANNEL(r0.guild_id, r1.id));
} else {
value = importDefault(4796) /* metro dependency 4796: SelectedChannelActionCreators */;
value.selectPrivateChannel(r1.id);
}
return r0;
}
function _fun99408() { // fn#99408, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:13211:4425, offset: 0x021c778e, size: 105 bytes, params: 1, frame: 15
let value = environment.__proto__;
const defaultImport = importDefault(8076) /* metro dependency 8076: RPCError */;
const INVALID_PERMISSIONS = RPCErrors.INVALID_PERMISSIONS;
value = 'Unable to generate an invite for ' + channel_id + '. Does this user have permissions?';
value = new defaultImport({errorCode: INVALID_PERMISSIONS}, value);
throw value;
}