Files
discord-decomp/sources/modules/polls/native/PollAnswerInput.tsx
T
2026-07-27 16:20:00 +03:00

216 lines
12 KiB
TypeScript

/* Metro module 11746; source: modules/polls/native/PollAnswerInput.tsx; dependencies: [31, 27, 1379, 4645, 7217, 1881, 33, 4501, 697, 11747, 1244, 7149, 5278, 1305, 8529, 7879, 4080, 11748, 1962, 7951, 7972, 4072, 11751, 2] */
function _fun90028(global, require, importDefault, importAll, module, exports, dependencyMap) { // fn#90028, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:6, offset: 0x020271e5, size: 576 bytes, params: 8, frame: 23
var object3;
const env0_0 = require;
const Object = global.Object;
Object.defineProperty(exports, '__esModule', {value: true});
const env0_3 = importAll(31) /* metro dependency 31 */;
let value = require(27) /* metro dependency 27 */;
const env0_4 = value.Keyboard;
const env0_5 = value.TouchableOpacity;
const env0_6 = value.View;
const channelStore = importDefault(1379) /* metro dependency 1379: ChannelStore */;
const env0_8 = (require(4645) /* metro dependency 4645: DraftStore */).DraftType;
value = require(7217) /* metro dependency 7217: PollsConstants */;
const env0_9 = value.MAX_POLL_ANSWER_LENGTH;
const env0_10 = value.POLL_CREATION_IMAGE_INPUT_ACTION_SHEET_KEY;
const env0_11 = (require(1881) /* metro dependency 1881: EmojiConstants */).EmojiIntention;
value = require(33) /* metro dependency 33 */;
const env0_12 = value.jsx;
const env0_13 = value.jsxs;
const env0_14 = value.Fragment;
value = require(4501) /* metro dependency 4501: createStyles */;
const createStyles = value.createStyles;
object3 = {defaultContainer: {'flexDirection': 'row', 'alignItems': 'center'}};
const object4 = {'flexDirection': 'row', 'alignItems': 'center', 'backgroundColor': null, 'borderRadius': null,
'flex': 1, 'overflow': 'hidden'};
const INPUT_BACKGROUND_DEFAULT = (importDefault(697) /* metro dependency 697: native */).colors.INPUT_BACKGROUND_DEFAULT;
object4.backgroundColor = INPUT_BACKGROUND_DEFAULT;
object4.borderRadius = (importDefault(697) /* metro dependency 697: native */).radii.lg;
object3.defaultImageAndTextContainer = object4;
object3.cannotRemove = {marginRight: 30};
object3.defaultImageContainer = {'width': 60, 'height': 48, 'justifyContent': 'center', 'alignItems': 'center'};
object3.pollAnswerTextInput = {'flex': 1, 'paddingStart': 0};
const TEXT_MUTED = (importDefault(697) /* metro dependency 697: native */).colors.TEXT_MUTED;
object3.defaultRemoveButtonContainer = {'paddingLeft': 6, 'height': 48, 'justifyContent': 'center',
color: TEXT_MUTED};
object3.uploadContainer = {alignItems: 'flex-start'};
const BORDER_FEEDBACK_CRITICAL = (importDefault(697) /* metro dependency 697: native */).colors.BORDER_FEEDBACK_CRITICAL;
object3.errorInput = {borderColor: BORDER_FEEDBACK_CRITICAL, borderWidth: 2};
const env0_15 = Reflect.apply(createStyles, value, [object3]);
(require(2) /* metro dependency 2 */).fileFinishedImporting('modules/polls/native/PollAnswerInput.tsx');
exports.default = PollAnswerInput;
}
function ImageInput({channelId, localCreationAnswerId, image, iconSrc, openExpressionPicker, emojiSize, containerStyle, imageSize, answerIndex, openImageInputActionSheet}) { // fn#90029, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:998, offset: 0x02027425, size: 450 bytes, params: 2, frame: 30
emojiSize = emojiSize === undefined ? 24 : emojiSize;
const styles = useStyles();
const {renderImage, upload,
setUploadSize} = (importDefault(11747) /* metro dependency 11747: useRenderPollAnswerImage */)(channelId,
localCreationAnswerId, image, imageSize, emojiSize);
const env0_3 = setUploadSize;
const value5 = env0_3.useMemo(_fun90030, [image, upload, answerIndex]);
const value6 = env0_3.useCallback(function(a0) {
setUploadSize(a0.nativeEvent.layout.width);
}, [setUploadSize]);
let r4 = upload != null || image?.emoji != null;
const r15 = r4 ? openImageInputActionSheet : openExpressionPicker;
const r14 = r4 ? undefined : openImageInputActionSheet;
const PressableOpacity = (require(5278) /* metro dependency 5278: Pressables */).PressableOpacity;
const r6 = imageSize == null ? value6 : undefined;
const items2 = [containerStyle];
items2[1] = upload != null && styles.uploadContainer;
if (r4) {
r4 = <View>{renderImage}</View>;
} else {
const Icon = (require(1305) /* metro dependency 1305: native */).Icon;
r4 = <Icon source={iconSrc} />;
}
return (
<PressableOpacity
accessibilityRole="button"
accessibilityLabel={value5}
onPress={r15}
onLongPress={r14}
onLayout={r6}
style={items2}
>
{r4}
</PressableOpacity>
);
}
function PollAnswerInput({answer, index, inputRef, channelId, onAnswerTextChange, onAnswerEmojiSelect, canRemoveAnswer, onRemoveAnswer, onRemoveAnswerImage, onSubmitEditing, error}) { // fn#90032, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:2039, offset: 0x02027750, size: 1002 bytes, params: 2, frame: 37
var r10;
var object;
var defaultRemoveButtonContainer;
var Icon;
var value;
const styles = useStyles();
const image = answer.image;
let localCreationAnswerId = answer.localCreationAnswerId;
const closure = function() {
var value3 = ChannelStore.getChannel(channelId);
if (value3 != null) {
Keyboard.dismiss();
require(dependencyMap[14]).openEmojiPickerActionSheet({channel: value3, onPressEmoji: _fun90034,
pickerIntention: EmojiIntention.POLLS, startExpanded: false, autoFocus: false});
}
};
const handleSaveAltText = function(a0) {
var defaultImport = importDefault(dependencyMap[15]);
var channelIdBinding = channelId;
var localCreationAnswerId = answer.localCreationAnswerId;
var Poll = DraftType.Poll;
defaultImport.update(channelIdBinding, localCreationAnswerId, Poll, {description: a0});
};
let r5 = error != null && error.length > 0;
const jsxRuntimeEnv0_14Binding = jsxRuntimeEnv0_14;
const items3 = [styles.defaultContainer];
items3[1] = !canRemoveAnswer && styles.cannotRemove;
const items2 = [styles.defaultImageAndTextContainer];
items2[1] = r5 && styles.errorInput;
const imageInput = <ImageInput channelId={channelId} localCreationAnswerId={localCreationAnswerId} image={image} openExpressionPicker={closure} openImageInputActionSheet={openImageInputActionSheet} iconSrc={importDefault(7951) /* metro dependency 7951 */} containerStyle={styles.defaultImageContainer} imageSize={48} answerIndex={index} />;
const FormInput = (require(7972) /* metro dependency 7972: native */).FormInput;
const formInputProps = {'ref': null, 'textAlignVertical': 'center', 'showTopContainer': false, 'showBorder': false,
ref: inputRef};
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
const string = intl.string;
const NNHVlv = (require(1244) /* metro dependency 1244: indexNative */).t.NNHVlv;
formInputProps.placeholder = Reflect.apply(string, intl, [NNHVlv]);
formInputProps.onChange = function(a0) {
return onAnswerTextChange({text: a0, index: index, localCreationAnswerId: localCreationAnswerId});
};
formInputProps.onSubmitEditing = onSubmitEditing;
formInputProps.blurOnSubmit = false;
formInputProps.style = styles.pollAnswerTextInput;
formInputProps.textContentType = 'none';
formInputProps.accessibilityLabel = intl.formatToPlainString((require(1244) /* metro dependency 1244: indexNative */).t['3+V8G9'],
{answerNumber: index + 1});
formInputProps.accessibilityHint = r5 ? intl.formatToPlainString((require(1244) /* metro dependency 1244: indexNative */).t.jnq5Ho,
{errorMessage: error}) : undefined;
formInputProps.maxLength = MAX_POLL_ANSWER_LENGTH;
formInputProps.returnKeyType = 'next';
formInputProps.required = true;
formInputProps.autoCorrect = true;
formInputProps['aria-invalid'] = error;
const view = <View style={items2}>{imageInput}<FormInput {...formInputProps} /></View>;
if (canRemoveAnswer) {
object = {onPress: function() {
return onRemoveAnswer(index);
}, accessibilityRole: 'button'};
defaultRemoveButtonContainer = styles.defaultRemoveButtonContainer;
object.style = defaultRemoveButtonContainer;
object.accessibilityLabel = intl.formatToPlainString((require(1244) /* metro dependency 1244: indexNative */).t['22fjEc'],
{answerNumber: index + 1});
Icon = (require(1305) /* metro dependency 1305: native */).Icon;
var iconProps = {size: (require(1305) /* metro dependency 1305: native */).Icon.Sizes.MEDIUM,
source: importDefault(4072) /* metro dependency 4072 */};
defaultRemoveButtonContainer = styles.defaultRemoveButtonContainer;
iconProps.color = defaultRemoveButtonContainer.color;
r10 = <TouchableOpacity {...object}><Icon {...iconProps} /></TouchableOpacity>;
} else {
r10 = canRemoveAnswer;
}
const view2 = <View style={items3}>{view}{r10}</View>;
if (r5) {
value = importDefault(11751) /* metro dependency 11751: PollCreationInputError */;
value = ((Component) => <Component message={error} />)(value);
r5 = value;
}
return (
<>
{view2}
{r5}
</>
);
}
function _fun90030() { // fn#90030, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:1273, offset: 0x020275e7, size: 361 bytes, params: 1, frame: 19
var r8;
const intl = (require(1244) /* metro dependency 1244: indexNative */).intl;
var formatToPlainString;
const t = (require(1244) /* metro dependency 1244: indexNative */).t;
var object2;
var value5;
var vcC7Qn;
var value6;
if (image?.emoji != null) {
value6 = environment.__proto__;
return intl.formatToPlainString(t.vcC7Qn, {imageName: image.emoji.name, answerNumber: answerIndex + 1});
}
if (upload != null) {
r8 = upload.item.filename ?? '';
value5 = environment.__proto__;
formatToPlainString = intl.formatToPlainString;
vcC7Qn = t.vcC7Qn;
object2 = {};
object2.imageName = (require(7149) /* metro dependency 7149: PollsUtils */).filterOutUUID(r8);
object2.answerNumber = answerIndex + 1;
return Reflect.apply(formatToPlainString, intl, [vcC7Qn, object2]);
}
return intl.formatToPlainString(t.ieNrxk, {answerNumber: answerIndex + 1});
}
function PollAnswerInputOpenExpressionPicker() { // fn#90033, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:2300, owner: PollAnswerInput.openExpressionPicker, offset: 0x02027b3a, size: 128 bytes, params: 1, frame: 13
const channel = ChannelStore.getChannel(channelId);
if (channel != null) {
Keyboard.dismiss();
(require(8529) /* metro dependency 8529: openEmojiPickerActionSheet */).openEmojiPickerActionSheet({channel: channel,
onPressEmoji: function(a0) {
onAnswerEmojiSelect(a0, index);
}, pickerIntention: EmojiIntention.POLLS, startExpanded: false, autoFocus: false});
}
}
function openImageInputActionSheet() { // fn#90036, source: /ci/build/discord/discord/discord_android_rn/android/app/src/main/assets/index.android.bundle:11932:2869, owner: PollAnswerInput.openImageInputActionSheet, offset: 0x02027c21, size: 135 bytes, params: 1, frame: 18
const defaultImport = importDefault(dependencyMap[16]);
defaultImport.openLazy(require(dependencyMap[18])(dependencyMap[17], dependencyMap.paths),
POLL_CREATION_IMAGE_INPUT_ACTION_SHEET_KEY, {channelId: channelId, index: index, answer: answer,
onSaveAltText: handleSaveAltText, onRemoveAnswerImage: onRemoveAnswerImage,
openExpressionPicker: openExpressionPicker_90033});
}