Files
discord-decomp/modules/user_profile/native/AddOrOpenAppButton.tsx
T
2026-11-01 12:12:55 +02:00

162 lines
6.1 KiB
TypeScript

// Metro module 11988 (f11989).
import { useCallback, useMemo, useState } from "react";
import { getSection } from "../../application_commands/ApplicationCommandIndexStore";
import { AnalyticEvents } from "../../../Constants";
import { AppLauncherRouteName } from "../../app_launcher/native/AppLauncherNativeConstants";
import { jsx } from "react/jsx-runtime";
import useIsAppDM from "../../app_dms/useIsAppDM";
import { installApplication } from "../../../utils/native/ApplicationUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { copy } from "../../../utils/ClipboardUtils.native";
import { getApplicationInstallURL } from "../../applications/getApplicationInstallURL";
import { presentLinkCopied } from "../../toast/native/ToastUtils";
import { PlusSmallIcon } from "../../../design/components/Icon/native/redesign/generated/PlusSmallIcon";
import { intl, t } from "../../../intl/index.native";
import { Button } from "../../../design/components/Button/native/Button.native";
import ApplicationActionCreators from "../../applications/ApplicationActionCreators";
import ChannelActionCreators from "../../../actions/ChannelActionCreators";
import { getBestActiveInput } from "../../../utils/native/ChatInputUtils";
import { KeyboardTypes } from "../../keyboard/native/KeyboardTypes";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
function $mk116349($env) {
return () => {
const bestActiveInput = getBestActiveInput();
if (bestActiveInput != null) {
const r7 = $env;
const r21 = r7[0];
const isGuildInstalled = r21.isGuildInstalled;
bestActiveInput.openCustomKeyboard({
type: KeyboardTypes.APP_LAUNCHER,
context: {
initialRouteName: AppLauncherRouteName.APPLICATION_VIEW,
initiallyExpanded: true,
application: r7[1],
installOnDemand: isGuildInstalled ? !isGuildInstalled : !r21.isUserInstalled
}
});
}
};
}
let OpenAppButton;
let env8232 = {};
const AddAppButton = function AddAppButton(a0) {
let r14, r25, LinkExternalSmallIcon2, callback, callback2;
let application, guildId;
L4: {
application = a0.application;
guildId = a0.guildId;
callback2 = useCallback(() => {
installApplication({
applicationId: application.id,
customInstallUrl: application.customInstallUrl,
installParams: application.installParams,
integrationTypesConfig: application.integrationTypesConfig,
guildId
});
ActionSheetActionCreators.hideActionSheet();
}, [application.customInstallUrl, application.id, application.installParams, application.integrationTypesConfig, guildId]);
callback = useCallback(() => {
copy(getApplicationInstallURL(application));
presentLinkCopied();
}, [application]);
const customInstallUrl = application.customInstallUrl;
if (customInstallUrl != null) {
r25 = dependencyMap;
if (!importDefault(r25[13]).isDiscordUrl(customInstallUrl)) {
LinkExternalSmallIcon2 = require(r25[14]).LinkExternalSmallIcon;
r14 = require;
break L4;
}
}
LinkExternalSmallIcon2 = PlusSmallIcon;
r25 = dependencyMap;
r14 = require;
}
const memo = useMemo(() => [{
name: "longpress",
label: intl.string(t.XWDihq)
}], []);
const callback3 = useCallback((a0) => {
if (a0.nativeEvent.actionName === "longPress") {
copy(getApplicationInstallURL(application));
presentLinkCopied();
}
}, [application]);
return jsx(r14(r25[17]).Button, {
text: r14(r25[16]).intl.string(r14(r25[16]).t.NgXl3C),
onPress: callback2,
onLongPress: callback,
accessibilityActions: memo,
onAccessibilityAction: callback3,
icon: <LinkExternalSmallIcon2 size="sm" color={importDefault(r25[18]).colors.WHITE} />
});
};
OpenAppButton = function OpenAppButton(props) {
const { profileApplication, botUserId, channel } = props;
const [loading, setState] = useState(false);
const callback = useCallback(async () => {
let application2, c27218_1, c27218_2;
L21: {
L17: {
let env30477;
c27218_2 = void 0;
const r12 = env30477 = {
$parent: env8232
};
c27218_1 = r12;
env30477[0] = void 0;
env30477[1] = void 0;
const r33 = (0, getSection)({
type: "channel",
channel
}, profileApplication.id);
env30477[0] = r33;
if (r33.descriptor?.application == null) {
setState(true);
}
const application3 = r33.descriptor?.application;
application2 = application3;
if (application3 == null) {
application2 = await ApplicationActionCreators.fetchApplication(profileApplication.id);
env30477[1] = application2;
(0, setState)(false);
if (env30477[0] == null) {
break L21;
}
ActionSheetActionCreators.hideActionSheet();
await ChannelActionCreators.openPrivateChannel({
recipientIds: botUserId
});
} else {
env30477[1] = application2;
(0, setState)(false);
if (env30477[0] == null) {
break L17;
}
ActionSheetActionCreators.hideActionSheet();
await ChannelActionCreators.openPrivateChannel({
recipientIds: botUserId
});
}
setTimeout($mk116349(c27218_1), 0);
AnalyticsUtils.track(AnalyticEvents.APP_PROFILE_OPEN_APP_BUTTON_CLICKED, {
application_id: env30477[1].id
});
break L21;
}
return void 0;
}
}, [botUserId, channel, profileApplication.id]);
return <Button text={intl.string(t["Cia+A8"])} loading={loading} onPress={callback} />;
};
export default function AddOrOpenAppButton({ application: application3, botUserId: botUserId2, channel: channel2, guildId: guildId2 }) {
return useIsAppDM(channel2) && channel2 != null ? (0, jsx)(OpenAppButton, {
profileApplication: application3,
botUserId: botUserId2,
channel: channel2
}) : (0, jsx)(AddAppButton, {
application: application3,
guildId: guildId2
});
};