decord/beta/source/modules/icymi/native/ICYMIShareModal.tsx
2026-10-01 14:13:23 +00:00

544 lines
21 KiB
TypeScript

// Module ID: 16141
// Function ID: 16142
// Name: ICYMIShareModal
// Dependencies: [32, 5, 19, 17, 2045, 5200, 5199, 1074, 10320, 4829, 21, 4836, 576, 9065, 1115, 16142, 4528, 1479, 4688, 7297, 16143, 5437, 4652, 4540, 6402, 11189, 11201, 5281, 5039, 10444, 1370, 7095, 8608, 1255, 5440, 6876, 8610, 1613, 1364, 5943, 7288, 5936, 10447, 2]
// Exports: GameShareModal, GuildEventShareModal
// Module 16141 (ICYMIShareModal)
import react_native from "react-native" /* 17 */;
import nativeDefault from "native" /* 576 */;
import Constants from "Constants" /* 1074 */;
import intl3 from "intl" /* 1115 */;
import PlatformUtils from "PlatformUtils" /* 1364 */;
import useWindowDimensionsDefault from "useWindowDimensions" /* 1479 */;
import ToastActionCreatorsDefault from "ToastActionCreators" /* 4528 */;
import native from "native" /* 4540 */;
import client_themes_ClientThemesUtils from "client_themes/ClientThemesUtils" /* 4652 */;
import useColorThemeBackgroundDefault from "useColorThemeBackground" /* 4688 */;
import MessageConstants from "MessageConstants" /* 4829 */;
import DraftStore from "DraftStore" /* 5200 */;
import ThemedGradientDefault from "ThemedGradient" /* 5437 */;
import useSafeAreaInsetsKeyboardAwareDefault from "useSafeAreaInsetsKeyboardAware" /* 6402 */;
import HeaderShared from "HeaderShared" /* 7288 */;
import ClientThemesOverrides from "ClientThemesOverrides" /* 7297 */;
import ShareEventUtils from "ShareEventUtils" /* 9065 */;
import UserRowConstants from "UserRowConstants" /* 10320 */;
import useShareChatInputActions from "useShareChatInputActions" /* 11189 */;
import captureScreenDefault from "captureScreen" /* 16143 */;
import _slicedToArray from "_slicedToArray" /* 32 */;
import _asyncToGenerator from "_asyncToGenerator" /* 5 */;
import react from "react" /* 19 */;
import ChannelStore from "ChannelStore" /* 2045 */;
import UploadAttachmentStore from "UploadAttachmentStore" /* 5199 */;
import Fragment from "Fragment" /* 21 */;
import createStyles_mod from "createStyles" /* 4836 */;
import size from "module_2" /* 2 */;
const require = globalThis.__r;
let c1, c2, c3, c5, c6, closure_3, uploads;
let closure_14;
let map1;
let obj2;
let obj3;
let obj4;
let obj5;
let obj6;
let tmp5;
const ShareChatInputDefault = tmp5(11201);
function Screenshot(setUri) {
let items1;
let items2;
let items3;
let obj3;
let obj4;
let obj5;
let obj7;
let obj9;
let tmp6;
setUri = setUri.setUri;
const render = setUri.render;
const tmp = closure_15();
const ref = react.useRef(null);
const items = [setUri];
const effect = react.useEffect(() => {
const timerId = setTimeout(() => {
const current = ref.current;
let nextPromise;
if (current != null) {
const capture = current.capture;
if (capture != null) {
const captureResult = capture();
nextPromise = captureResult.then((result) => {
closure_1_0(result);
});
}
}
return nextPromise;
}, 500);
}, items);
const width = useWindowDimensionsDefault().width;
const tmp4 = useColorThemeBackgroundDefault();
const obj2 = { style: { position: "absolute", top: -1000, overflow: "hidden" }, children: map1(View, obj3) };
obj3 = { style: items1, children: map1(tmp6, obj4) };
items1 = [tmp.preview, { width }];
const obj = ClientThemesOverrides;
const clientThemesOverride = obj.useClientThemesOverride();
obj4 = { ref, options: { fileName: "icymi_content", format: "png", quality: 1 }, children: authStore2(View, obj5) };
obj5 = { style: tmp.base, children: items2 };
const obj6 = { absolute: true, wide: true, tall: true, mix: true, mixAmount: obj7 };
obj7 = { dark: client_themes_ClientThemesUtils.OverlayOpacity.LEVEL_7, light: client_themes_ClientThemesUtils.OverlayOpacity.LEVEL_8 };
tmp6 = captureScreenDefault;
const tmp7 = ThemedGradientDefault;
items2 = [map1(tmp7, obj6), ];
const obj8 = { gradient: tmp4, children: map1(View, obj9) };
obj9 = { style: items3, children: render() };
items3 = [tmp.contentContainer, clientThemesOverride];
const ThemeContextProvider = native.ThemeContextProvider;
items2[1] = map1(ThemeContextProvider, obj8);
return map1(View, obj2);
}
function GravityShareFooter(arg0) {
let count;
let handleMessageBlur;
let handleMessageFocus;
let handlePressEmoji;
let handleSelectionChange;
let isSending;
let items2;
let onSend;
let stringResult;
let textInputRef;
let tmp17;
({ count, isSending, onSend } = arg0);
const tmp = closure_15();
let closure_1 = tmp;
const tmp2 = _slicedToArray(react.useState(""), 2);
const first = tmp2[0];
const insets = useSafeAreaInsetsKeyboardAwareDefault({ includeKeyboardHeight: true }).insets;
const obj = useShareChatInputActions;
const shareChatInputActions = obj.useShareChatInputActions(tmp4);
const items = [first, onSend];
({ textInputRef, handleSelectionChange, handleMessageFocus, handleMessageBlur, handlePressEmoji } = shareChatInputActions);
const callback = react.useCallback(() => {
onSend(first);
}, items);
if (count <= 1) {
const intl2 = tmp7(1115).intl;
stringResult = intl2.string(tmp7(1115).t.TXNS7S);
} else {
const intl = tmp7(1115).intl;
const obj2 = { count };
stringResult = intl.formatToPlainString(tmp7(1115).t.jWtYUm, obj2);
}
const items1 = [tmp.footer, insets.bottom];
let tmp14Result = null;
if (0 !== count) {
const obj3 = { style: tmp11, children: items2 };
const obj4 = { inputRef: textInputRef, text: first, onChange: tmp2[1], onSelectionChange: handleSelectionChange, onFocus: handleMessageFocus, onBlur: handleMessageBlur, onPressEmoji: handlePressEmoji, onSend: callback, disabled: isSending };
items2 = [map1(ShareChatInputDefault, obj4), ];
const obj5 = { variant: "primary", size: "md", text: stringResult, disabled: 0 === count, onPress: tmp17, loading: isSending };
tmp17 = undefined;
const Button = tmp7(5281).Button;
const tmp14 = authStore2;
const tmp15 = View;
const tmp16 = map1;
if (!isSending) {
tmp17 = callback;
}
items2[1] = tmp16(Button, obj5);
tmp14Result = tmp14(tmp15, obj3);
}
return tmp14Result;
}
class ICYMIShareModal {
constructor(title) {
let c7;
let closure_6;
let first;
let first1;
let items1;
let num;
let render;
let sum;
let tmp14Result;
let tmp2;
let tmp6;
title = title.title;
({ linkText: importDefault, render } = title);
({ forwardToChannel: _slicedToArray, onShare: _asyncToGenerator } = title);
first = undefined;
closure_6 = undefined;
c7 = undefined;
let obj = function _handleSendForwards() {
obj = _asyncToGenerator(async (arg0, value) => {
let closure_1;
let closure_0 = arg0;
if (c4 === 2) {
c4 = 3;
const str = "Generator functions may not be called on executing generators";
throw new TypeError("Generator functions may not be called on executing generators");
} else {
let tmp13 = value;
if (tmp4 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
let obj2 = { value, done: true };
return obj2;
} else {
return { value: "HermesInternal", done: null };
}
} else {
try {
let closure_2;
c4 = 2;
if (0 === c3) {
if (arg0 === 1) {
c4 = 3;
throw value;
} else if (arg0 === 2) {
c4 = 3;
let obj3 = { value, done: true };
return obj3;
} else {
closure_2 = tmp;
const flag = true;
const tmp31 = closure_2_6(true);
let tmp7 = null == render;
if (!tmp7) {
tmp7 = null != closure_2_7;
}
if (tmp7) {
const tmp8 = globalThis;
const tmp10 = closure_0;
c3 = 1;
c4 = 1;
let obj4 = { value: Promise.all(first.map(closure_0(closure_2[29]).getOrResolveChannelIdFromDestinationId)), done: false };
return obj4;
}
}
} else if (arg0 === 1) {
c4 = 3;
throw value;
} else if (arg0 === 2) {
c4 = 3;
obj = { value, done: true };
return obj;
} else {
const mapped = value.map((item) => channel.getChannel(item));
const found = mapped.filter(closure_0(closure_2[30]).isNotNullish);
const item = found.forEach((() => {
closure_0 = c4(function*(arg0, value) {
let obj5;
let obj7;
closure_0 = arg0;
if (c1 === 2) {
c1 = 3;
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp2 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
const obj3 = { value, done: true };
return obj3;
} else {
return { value: "HermesInternal", done: null };
}
} else {
try {
c1 = 2;
if (0 === c2) {
if (arg0 === 1) {
c1 = 3;
throw value;
} else if (arg0 === 2) {
c1 = 3;
const obj4 = { value, done: true };
return obj4;
} else {
if (null != closure_0) {
let combined;
if (closure_0.trim().length > 0) {
const _HermesInternal = HermesInternal;
combined = "" + str4 + "\n\n" + closure_2_1;
}
let obj2 = tmp2(closure_3_2[31]);
const parsed = obj2.parse(tmp31, combined);
if (null == closure_2_3) {
const tmp13 = null != closure_2_2 && null != originalUri;
uploads = undefined;
if (tmp13) {
const obj6 = { channelId: closure_0.id, file: obj7, draftType: closure_3_8.ChannelMessage };
obj7 = { uri: originalUri, originalUri, id: obj5.v4(), platform: closure_3_0(closure_3_2[34]).UploadPlatform.REACT_NATIVE };
const addFile = tmp2(closure_3_2[32]).addFile;
const tmp7Result = tmp2(closure_3_2[32]);
obj5 = closure_3_0(closure_3_2[33]);
addFile(obj6);
uploads = uploads.getUploads(tmp31.id, closure_3_8.ChannelMessage);
const tmp7Result3 = tmp2(closure_3_2[32]);
tmp7Result3.clearAll(closure_0.id, closure_3_8.ChannelMessage);
}
const tmp7Result4 = tmp2(closure_3_2[35]);
const obj8 = {
location: constants.ICYMI,
attachmentsToUpload: uploads,
onAttachmentUploadError(file, code, reason) {
obj = closure_2_0(closure_2_2[36]);
const obj2 = { file, guildId: guildId.getGuildId(), analyticsLocations: [], code, reason };
const result = obj.handleUploadMessageAttachmentsErrors(obj2);
}
};
c2 = 1;
c1 = 1;
const obj9 = { value: tmp7Result4.sendMessage(closure_0.id, parsed, false, obj8), done: false };
return obj9;
} else {
tmp10(closure_0);
}
}
combined = closure_2_1;
}
} else if (arg0 === 1) {
c1 = 3;
throw value;
} else if (arg0 === 2) {
c1 = 3;
obj = { value, done: true };
return obj;
}
c1 = 3;
return { value: "HermesInternal", done: null };
} catch (tmp27) {
c1 = 3;
throw tmp27;
}
}
});
return function(arg0) {
return closure_0(...arguments);
};
})());
const arr3 = tmp2(closure_2[28]);
arr3.pop();
if (null != closure_130_4) {
const tmp27 = closure_130_4;
const tmp28 = closure_130_4();
}
}
c4 = 3;
return { value: "HermesInternal", done: null };
} catch (tmp12) {
c4 = 3;
throw tmp12;
}
}
}
});
return obj(...arguments);
};
const originDestinationId = title.originDestinationId;
[first, tmp2] = first.useState([]);
const length = first.length;
[first1, closure_6] = first.useState(false);
let tmp5 = _slicedToArray(first.useState(null), 2);
[c7, tmp6] = tmp5;
const callback = first.useCallback(() => {
const arr = require("ModalActionCreators");
arr.pop();
}, []);
let tmp8 = closure_15();
let tmp10 = render;
const rect = require("useSafeAreaInsets")();
let height = require("useWindowDimensions")().height;
const items = [rect.bottom, height];
obj = {
style: first.useMemo(() => {
height = "100%";
obj = PlatformUtils;
if (obj.isAndroid()) {
height = height + rect.bottom;
}
return { height };
}, items),
children: items1
};
let tmp13 = closure_13;
const tmp12 = closure_6;
let tmp14 = title;
let obj4 = {
title,
headerTitle() {
obj = { title };
return map1(HeaderShared.GenericHeaderTitle, obj);
},
headerTitleAlign: "center",
headerStatusBarHeight: num + tmp9(tmp10[12]).space.PX_8,
headerLeft: tmp14Result.getHeaderCloseButton(callback),
headerLeftContainerStyle: null,
headerRightContainerStyle: null
};
const Header = title(render[39]).Header;
let obj3 = title(render[38]);
num = 0;
const tmp11 = closure_14;
if (!obj3.isIOS()) {
num = rect.top;
}
({ headerLeftContainer: obj2.headerLeftContainerStyle, headerRightContainer: obj2.headerRightContainerStyle } = tmp8);
tmp14Result = tmp14(tmp10[41]);
items1 = [tmp13(Header, obj4), , , ];
let tmp13Result = null != render;
if (tmp13Result) {
let obj5 = { render, setUri: tmp6 };
tmp13Result = tmp13(Screenshot, obj5);
}
items1[1] = tmp13Result;
let obj6 = { rowMode: UserRowModes.TOGGLE, onSelectedDestinationChange: tmp2, originDestination: originDestinationId, insetEnd: sum + tmp9(tmp10[12]).space.PX_96, disableGradient: true, disableStickySections: true };
const tmp9Result = require("SearchableDestinationList");
sum = rect.bottom + tmp9(tmp10[12]).space.PX_8;
items1[2] = tmp13(tmp9Result, obj6);
let obj7 = {
count: length,
isSending: first1,
onSend: function handleSendForwards(arg0) {
return obj(...arguments);
}
};
items1[3] = tmp13(GravityShareFooter, obj7);
return tmp11(tmp12, obj);
}
}
const View = react_native.View;
const DraftType = DraftStore.DraftType;
const AbortCodes = Constants.AbortCodes;
const UserRowModes = UserRowConstants.UserRowModes;
const MessageSendLocation = MessageConstants.MessageSendLocation;
({ jsx: map1, jsxs: closure_14 } = Fragment);
let createStyles = createStyles_mod;
let obj = { headerLeftContainer: obj2, headerRightContainer: obj3, preview: obj4, base: { position: "relative" }, contentContainer: obj5, footer: obj6 };
obj2 = { paddingLeft: nativeDefault.space.PX_16 };
createStyles = createStyles.createStyles;
obj3 = { paddingRight: nativeDefault.space.PX_16 };
obj4 = { borderRadius: nativeDefault.radii.md, overflow: "hidden", borderWidth: 1, borderColor: nativeDefault.colors.BORDER_STRONG };
obj5 = { backgroundColor: nativeDefault.colors.BACKGROUND_BASE_LOW };
obj6 = { display: "flex", flexDirection: "row", alignItems: "flex-end", paddingHorizontal: nativeDefault.space.PX_16, paddingVertical: nativeDefault.space.PX_12, gap: nativeDefault.space.PX_12, backgroundColor: nativeDefault.colors.BACKGROUND_BASE_LOW, borderTopWidth: 1, borderTopColor: nativeDefault.colors.BORDER_SUBTLE };
let closure_15 = createStyles(obj);
let result = size.fileFinishedImporting("modules/icymi/native/ICYMIShareModal.tsx");
export default ICYMIShareModal;
export const GuildEventShareModal = function GuildEventShareModal(event) {
let intl;
let result;
let tmp4;
event = event.event;
const obj3 = { title: intl.string(intl3.t["7TVSLK"]), originDestinationId: tmp4, linkText: result };
const obj = ShareEventUtils;
const obj2 = { guildId: event.guild_id, guildEventId: event.id };
result = obj.SHARE_EVENT_DETAILS_LINK(obj2);
intl = intl3.intl;
tmp4 = undefined;
const tmp2 = map1;
const tmp3 = ICYMIShareModal;
if (null != event.channel_id) {
tmp4 = { type: "channel", id: event.channel_id };
const obj4 = { type: "channel", id: event.channel_id };
}
return tmp2(tmp3, obj3);
};
export const GameShareModal = function GameShareModal(content) {
let intl;
content = content.content;
let obj = {
title: intl.string(content(1115).t["59CWHK"]),
linkText: "",
forwardToChannel: function() {
return closure_0(...arguments);
}
};
intl = content(1115).intl;
let closure_0 = _asyncToGenerator(async (arg0, value) => {
let obj3;
if (c6 === 2) {
c6 = 3;
throw new TypeError("Generator functions may not be called on executing generators");
} else if (tmp3 === 3) {
if (arg0 === 1) {
throw value;
} else if (arg0 === 2) {
const obj2 = { value, done: true };
return obj2;
} else {
return { value: "HermesInternal", done: null };
}
} else {
let c4;
try {
let closure_1;
let entry;
c6 = 2;
if (0 === c5) {
if (arg0 === 1) {
c6 = 3;
throw value;
} else if (arg0 === 2) {
c6 = 3;
const obj4 = { value, done: true };
return obj4;
} else {
let closure_2 = tmp;
closure_1 = tmp4;
entry = undefined;
c4 = 1;
const obj5 = { channel: entry, content: "", entry, whenReady: false, doNotNotifyOnError: true, location: constants2.ICYMI };
c5 = 2;
c6 = 1;
const obj6 = { value: obj3.sendMessageWithEmbed(obj5), done: false };
obj3 = entry(dependencyMap[15]);
return obj6;
}
} else {
if (1 === c5) {
let stringResult;
c4 = 0;
closure_1 = closure_3;
const tmp9 = null != closure_1.body && closure_1.body.code === constants.CONTENT_INVENTORY_ENTRY_INVALID_PERMISSION;
entry = tmp9;
const open = ToastActionCreatorsDefault.open;
const intl = entry(dependencyMap[14]).intl;
const string = intl.string;
const t = entry(dependencyMap[14]).t;
if (entry) {
stringResult = string(t.BC5vfD);
} else {
stringResult = string(t.F8FvUy);
}
const obj7 = { key: "FORWARD_CONTENT_INVENTORY_ENTRY_ERROR", content: stringResult };
open(obj7);
} else if (arg0 === 1) {
c6 = 3;
throw value;
} else if (arg0 === 2) {
c4 = 0;
c6 = 3;
const obj = { value, done: true };
return obj;
} else {
c4 = 0;
}
c6 = 3;
return { value: "HermesInternal", done: null };
}
} catch (tmp32) {
closure_3 = tmp32;
if (0 === c4) {
c6 = 3;
throw tmp32;
} else {
c5 = 1;
}
}
}
});
return closure_13(ICYMIShareModal, obj);
};