/* Metro module 7149; source: modules/polls/PollsUtils.tsx; dependencies: [1379, 7150, 4814, 3784, 3793, 7217, 661, 491, 566, 5225, 672, 1862, 4634, 1244, 7152, 22, 4617, 2] */ import ChannelStore from '../../stores/ChannelStore.tsx'; /* Metro dependency 1379 */ import PermissionStore from '../../stores/PermissionStore.tsx'; /* Metro dependency 3784 */ import RelationshipStore from '../../stores/RelationshipStore.tsx'; /* Metro dependency 3793 */ import MessageStore from '../../stores/MessageStore.tsx'; /* Metro dependency 4814 */ import MessageReactionsStore from '../../stores/MessageReactionsStore.tsx'; /* Metro dependency 7150 */ import * as FileImportTrackerModule from '../../by-id/module-00002-FileImportTracker.js'; /* Metro dependency 2 */ import * as Module00491Module from '../../by-id/module-00491.js'; /* Metro dependency 491 */ import * as FluxModule from '../../external/discord_common/js/packages/flux/index.tsx'; /* Metro dependency 566 */ import * as IndexNativeModule from '../../intl/index.native.tsx'; /* Metro dependency 1244 */ import * as UseMessageAuthorModule from '../messages/useMessageAuthor.tsx'; /* Metro dependency 4634 */ import * as MessageReactionsTypesModule from '../messages/MessageReactionsTypes.tsx'; /* Metro dependency 7152 */ import * as PollsConstantsModule from './PollsConstants.tsx'; /* Metro dependency 7217 */ function _fun57179(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#57179, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:6, offset: 0x013de7bf, size: 490 bytes, params: 8, frame: 24 let env0_0 = require; const _arrayLikeToArray_57182 = function(a0, a1) { var r0; var r1; var r2; var value3; var length; var value5; var value = undefined; var value2 = value == null; reducibleJoin2: while (true) { if (value2) { r0 = value2; break reducibleJoin2; } value3 = value > a0.length; r0 = value3; break reducibleJoin2; } reducibleJoin4: while (true) { if (r0) { length = a0.length; r1 = length; break reducibleJoin4; } r1 = value; break reducibleJoin4; } value = (0, global.Array)(r1); var value4 = 0; if (value4 < r1) { r2 = value4; reducibleLoop5: while (true) { value[r2] = a0[r2]; value5 = typeof r2 === 'bigint' ? r2 + 1n : +r2 + 1; if (value5 < r1) { r2 = value5; continue reducibleLoop5; } break reducibleLoop5; } } return value; }; const generateLocalCreationAnswerId2 = generateLocalCreationAnswerId; const closure2 = function({text}) { var r1; r1 = text?.trim(); return r1 != null && r1.length > 0; }; const closure3 = function(a0) { var Date = global.Date; var Date2 = global.Date; var value = Date2.now(); var HOUR = importDefault(dependencyMap[10]).Millis.HOUR; value += a0 * HOUR; value = new Date(value); return value.toISOString(); }; const getSampleOfVoterUsernamesForAnswer2 = getSampleOfVoterUsernamesForAnswer; const formatVoterTooltipText2 = formatVoterTooltipText; const Object = global.Object; Object.defineProperty(exports, '__esModule', {value: true}); let value = PollsConstantsModule; const env0_8 = value.POLL_RESULT_MESSAGE_POLL_TITLE_MAX_VISIBLE_CHARS; const env0_9 = value.VOTES_TOOLTIP_MAX_USERS; value = require(661) /* metro dependency 661: Constants */; const env0_10 = value.ChannelTypesSets; const env0_11 = value.Permissions; (FileImportTrackerModule).fileFinishedImporting('modules/polls/PollsUtils.tsx'); exports.generateEmptyPollAnswer = function() { var object = {text: undefined, image: undefined}; object.localCreationAnswerId = generateLocalCreationAnswerId(); return object; }; exports.generateLocalCreationAnswerId = generateLocalCreationAnswerId2; exports.filterOutUUID = function(a0) { return a0.replace(RegExp('\\b[a-f\\d]{8}-(?:[a-f\\d]{4}-){3}[a-f\\d]{12}-\\b', 'i'), ''); }; exports.hasNonVoteReactions = hasNonVoteReactions; exports.useCanPostPollsInChannel = function(a0) { var env0_0 = a0; return require(dependencyMap[8]).useStateFromStores([PermissionStore], _fun57196); }; exports.isPollCreationEmpty = function(a0, a1) { var r0; var value = a0.length === 0; if (value) { value = a1.find(_fun57198); value = value == null; r0 = value; } else { r0 = value; } return r0; }; exports.isAnswerFilled = closure2; exports.isIncompleteAnswer = function(a0) { var r2; r2 = a0.text?.trim(); return a0.image != null && (r2 == null || r2.length === 0); }; exports.createPollExpiryTimestamp = closure3; exports.createPollServerDataFromCreateRequest = createPollServerDataFromCreateRequest; exports.getPollReplyPreview = function({poll}) { return (poll == null || poll.question == null ? undefined : poll.question.text) ?? ''; }; exports.getPollResultsReplyPreview = getPollResultsReplyPreview; exports.getPollResultsReplyPreviewMobile = getPollResultsReplyPreviewMobile; exports.getTotalVotes = function(a0) { return a0.reduce(_fun57206, 0); }; exports.getSampleOfVoterUsernamesForAnswer = getSampleOfVoterUsernamesForAnswer2; exports.formatVoterTooltipText = formatVoterTooltipText2; exports.getPollAnswerVotesTooltipText = getPollAnswerVotesTooltipText; exports.formatPollResultNotificationCenterText = formatPollResultNotificationCenterText; function _createForOfIteratorHelperLoose_57180(a0, a1) { // fn#57180, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:290, offset: 0x013de9a9, size: 370 bytes, params: 3, frame: 20 var r6; var r9; var r5; var value3; var regexp; const env0_0 = a0; const Symbol = global.Symbol; let value = typeof Symbol !== 'undefined'; let r1 = value && a0[global.Symbol.iterator]; r1 = !r1 ? a0['@@iterator'] : r1; if (r1) { value = r1.call(a0); return value.next.bind(value); } const Array = global.Array; if (Array.isArray(a0)) { if (r1) { } return _fun57181; } value = undefined; if (a0) { if (typeof a0 === 'string') { value = _arrayLikeToArray_57182(a0, value); r5 = value; } else { value3 = ({}).toString.call(a0).slice(8, -1); r6 = value3 === 'Object' && a0.constructor; r9 = r6 ? a0.constructor.name : value3; if (r9 === 'Map') { r6 = global.Array.from(a0); } else if (r9 === 'Set') { r6 = global.Array.from(a0); } else if (r9 === 'Arguments') { value = _arrayLikeToArray_57182(a0, value); r6 = value; } else { regexp = RegExp('^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$', ''); if (regexp.test(r9)) { value = _arrayLikeToArray_57182(a0, value); r6 = value; } else { r6 = value; } } r5 = r6; } } else { r5 = value; } if (r5) { if (r5) { } return _fun57181; } const TypeError = global.TypeError; throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.'); function _fun57181() { // fn#57181, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:861, offset: 0x00c39d73, size: 69 bytes, params: 1, frame: 5 return env0_1 >= env0_0.length ? {done: true} : {done: false, value: env0_0[typeof env0_1 === 'bigint' ? env0_1 : +env0_1]}; } } function generateLocalCreationAnswerId() { // fn#57183, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:1200, offset: 0x013deb1b, size: 37 bytes, params: 1, frame: 11 return (Module00491Module).v4(); } function getPollResultsPollName({embeds}, a1) { // fn#57186, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:1460, offset: 0x013debd8, size: 137 bytes, params: 3, frame: 16 var rawValue; var r0; var fields; var value2; const property = embeds[0]; let value = undefined; if (property == null) { rawValue = value; } else { fields = property.fields; if (fields == null) { rawValue = value; } else { value2 = fields.find(function(a0) { return a0.rawName === 'poll_question_text'; }); rawValue = value2 == null ? value : value2.rawValue; } } const r3 = rawValue ?? ''; if (a1 == null) { r0 = r3; } else { value = require(1862) /* metro dependency 1862: StringUtils */; value = value.truncateText(r3, a1); r0 = value; } return r0; } function getSampleOfVoterUsernamesForAnswer(a0, a1) { // fn#57188, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:1684, offset: 0x013dec76, size: 291 bytes, params: 3, frame: 23 var r2; let value = a0.getChannelId(); const messageReactionsStoreBinding = MessageReactionsStore; const getReactions = messageReactionsStoreBinding.getReactions; const id = a0.id; const value3 = undefined; const ReactionTypes = (MessageReactionsTypesModule).ReactionTypes; const VOTE = ReactionTypes.VOTE; const value4 = Reflect.apply(getReactions, messageReactionsStoreBinding, [value, id, {'id': null, 'name': '', 'animated': false, id: a1}, VOTES_TOOLTIP_MAX_USERS, VOTE]); value = ChannelStore.getChannel(value); const value5 = null; if (value5 == value) { r2 = value5; } else if (value.isPrivate()) { r2 = value5; } else { value = value.getGuildId(); r2 = value; } value = importDefault(22) /* metro dependency 22 */; const Array = global.Array; const from = Array.from; r2 = value5 == value4 ? value3 : value4.values(); r2 = value5 == r2 ? [] : r2; value = value(Reflect.apply(from, Array, [r2])); value = value.reject(function(a0) { return RelationshipStore.isBlockedOrIgnored(a0.id); }); value = value.take(VOTES_TOOLTIP_MAX_USERS); value = value.map(_fun57190); return value.value(); function _fun57190(a0) { // fn#57190, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:2027, offset: 0x013dedb5, size: 72 bytes, params: 2, frame: 17 const value = environment.__proto__; return (importDefault(4617) /* metro dependency 4617: NicknameUtils */).getName(env0_1, env0_0?.id, a0); } } function formatVoterTooltipText(a0, a1) { // fn#57191, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:2082, offset: 0x013dedfd, size: 625 bytes, params: 3, frame: 22 const intl = (IndexNativeModule).intl; const t = (IndexNativeModule).t; const Math = global.Math; const value = Math.max(0, a1 - a0.length); return a0.length === 1 ? value > 0 ? intl.formatToPlainString(t['SV/iZn'], {a: a0[0], n: value}) : a0[0] : a0.length === 2 ? value > 0 ? intl.formatToPlainString(t.YBnZK0, {a: a0[0], b: a0[1], n: value}) : intl.formatToPlainString(t['O5+f5c'], {a: a0[0], b: a0[1]}) : a0.length === 3 ? value > 0 ? intl.formatToPlainString(t['ThXp+N'], {a: a0[0], b: a0[1], c: a0[2], n: value}) : intl.formatToPlainString(t['0UzBM3'], {a: a0[0], b: a0[1], c: a0[2]}) : intl.formatToPlainString(t.yVX6kE, {n: value}); } function hasNonVoteReactions({reactions}) { // fn#57194, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3072, offset: 0x013df0af, size: 77 bytes, params: 2, frame: 14 var value3; var me_vote; var value4; const value = _createForOfIteratorHelperLoose_57180(reactions); const value2 = value(); let done = value2.done; if (done) { return false; } let r1 = value2; loopExit1: while (true) { value3 = r1.value; me_vote = value3.me_vote; if (me_vote == null) { break loopExit1; } value4 = value(); done = value4.done; if (done) { return false; } r1 = value4; continue; } return true; } function useCanPostPollsInChannel(a0) { // fn#57195, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3249, offset: 0x013df0fc, size: 64 bytes, params: 2, frame: 14 const env0_0 = a0; return (FluxModule).useStateFromStores([PermissionStore], _fun57196); function _fun57196() { // fn#57196, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3326, offset: 0x013df13c, size: 204 bytes, params: 1, frame: 18 var r1; var value5; var POLLS; var value6; var isPrivate2; let r0 = env0_0 != null && env0_0.id !== (require(5225) /* metro dependency 5225: FakePlaceholderPrivateChannel */).FAKE_PLACEHOLDER_PRIVATE_CHANNEL_ID; if (r0) { value5 = environment.__proto__; POLLS = ChannelTypesSets.POLLS; value6 = POLLS.has(env0_0.type); if (value6) { isPrivate2 = env0_0.isPrivate(); r1 = isPrivate2 ? !!isPrivate2 : PermissionStore.can(Permissions.SEND_MESSAGES, env0_0) && PermissionStore.can(Permissions.SEND_POLLS, env0_0); } else { r1 = !!value6; } r0 = r1; } return r0; } } function isPollCreationEmpty({length}, a1) { // fn#57197, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3510, offset: 0x013df208, size: 46 bytes, params: 3, frame: 12 var r0; let value = length === 0; if (value) { value = a1.find(function(a0) { return isAnswerFilled(a0); }); value = value == null; r0 = value; } else { r0 = value; } return r0; function _fun57198(a0) { // fn#57198, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3579, offset: 0x00eed705, size: 19 bytes, params: 2, frame: 11 return isAnswerFilled(a0); } } function createPollServerDataFromCreateRequest(a0) { // fn#57200, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3873, offset: 0x013df277, size: 132 bytes, params: 2, frame: 16 var r6; var r2; var r3; var value; var answers; var object; if (a0 != null) { value = undefined; if (a0 == null) { r2 = value; } else { answers = a0.answers; if (answers == null) { r2 = value; r6 = answers; } else { r2 = answers.map(_fun57201); r6 = answers; } } r3 = (a0 == null ? value : a0.duration) != null ? createPollExpiryTimestamp(a0.duration) : '0'; object = {}; copyDataProperties(object, a0, r6); object['expiry'] = r3; object['answers'] = r2; return object; } } function getPollResultsReplyPreview(a0) { // fn#57203, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:4448, offset: 0x013df3bd, size: 120 bytes, params: 2, frame: 17 const messageAuthor = (UseMessageAuthorModule).getMessageAuthor(a0); const pollResultsPollName = getPollResultsPollName(a0, POLL_RESULT_MESSAGE_POLL_TITLE_MAX_VISIBLE_CHARS); const intl = (IndexNativeModule).intl; const format = intl.format; const Vn97Ka = (IndexNativeModule).t.Vn97Ka; return Reflect.apply(format, intl, [Vn97Ka, {username: messageAuthor.nick, title: pollResultsPollName}]); } function getPollResultsReplyPreviewMobile(a0) { // fn#57204, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:4665, offset: 0x013df435, size: 136 bytes, params: 2, frame: 17 var pollResultsPollName; var messageAuthor; var intl; if ('author' in a0) { messageAuthor = (require(4634) /* metro dependency 4634: useMessageAuthor */).getMessageAuthor(a0); pollResultsPollName = getPollResultsPollName(a0, POLL_RESULT_MESSAGE_POLL_TITLE_MAX_VISIBLE_CHARS); intl = (require(1244) /* metro dependency 1244: indexNative */).intl; return intl.formatToParts((require(1244) /* metro dependency 1244: indexNative */).t.Vn97Ka, {username: messageAuthor.nick, title: pollResultsPollName}); } return null; } function getTotalVotes(a0) { // fn#57205, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:4907, offset: 0x013df4bd, size: 26 bytes, params: 2, frame: 13 return a0.reduce(function(a0, {count_details}) { return a0 + (count_details?.vote ?? 0); }, 0); } function getPollAnswerVotesTooltipText(a0, a1, a2) { // fn#57207, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:5192, offset: 0x013df506, size: 154 bytes, params: 4, frame: 18 const message = MessageStore.getMessage(a1, a0); if (message == null) { return ''; } const value3 = ''; const reaction = message.getReaction({'id': null, 'name': '', 'animated': false, id: a2}); const vote = reaction == null || reaction.count_details == null ? undefined : reaction.count_details.vote; const value6 = 0; const r3 = vote ?? value6; const sampleOfVoterUsernamesForAnswer = getSampleOfVoterUsernamesForAnswer(message, a2); return value6 === sampleOfVoterUsernamesForAnswer.length ? value3 : formatVoterTooltipText(sampleOfVoterUsernamesForAnswer, r3); } function formatPollResultNotificationCenterText(a0) { // fn#57208, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:5535, offset: 0x013df5a0, size: 377 bytes, params: 2, frame: 19 const intl = (IndexNativeModule).intl; const t = (IndexNativeModule).t; const questionText = a0.questionText; const victorAnswerText = a0.victorAnswerText; const victorAnswerVotes = a0.victorAnswerVotes; const victorAnswerId = a0.victorAnswerId; const totalVotes = a0.totalVotes; const totalVotes2 = a0.totalVotes; const value = 0; const r9 = totalVotes2 > value ? global.Math.round(victorAnswerVotes / totalVotes * 100) : value; return value === totalVotes ? intl.formatToPlainString(t['8anM0l'], {questionText: questionText}) : victorAnswerId != null ? intl.formatToPlainString(t['8yEgvE'], {questionText: questionText, victorAnswerText: victorAnswerText, percentage: '' + r9 + '%'}) : intl.formatToPlainString(t.XVk6Zv, {questionText: questionText, percentage: '' + r9 + '%'}); } } function _fun57201(a0, a1) { // fn#57201, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:3990, offset: 0x013df2fb, size: 138 bytes, params: 3, frame: 16 var r6; var r3; var name; const poll_media = a0.poll_media; let value = undefined; const emoji = poll_media == null ? value : poll_media.emoji; const object = {}; copyDataProperties(object, a0.poll_media, r6); if (emoji != null) { name = emoji.name; value = name != null; r3 = {id: emoji.id, name: value ? name : ''}; r6 = value; } else { r3 = value; } object['emoji'] = r3; const object3 = {}; copyDataProperties(object3, a0, r6); object3['answer_id'] = a1 + 1; object3['poll_media'] = object; return object3; } function _fun57206(a0, {count_details}) { // fn#57206, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:7327:4950, offset: 0x013df4d7, size: 47 bytes, params: 3, frame: 4 return a0 + (count_details?.vote ?? 0); } global.__d(_fun57179, 7149, [1379, 7150, 4814, 3784, 3793, 7217, 661, 491, 566, 5225, 672, 1862, 4634, 1244, 7152, 22, 4617, 2]) /* metro module 7149, dependencies: [1379, 7150, 4814, 3784, 3793, 7217, 661, 491, 566, 5225, 672, 1862, 4634, 1244, 7152, 22, 4617, 2] */;