This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,127 @@
// Metro module 10191 (f10192).
import * as Module19 from "react";
import { useMemo, useCallback } from "react";
import { View } from "react-native";
import { createChannelRecordFromInvite } from "../../../records/ChannelRecord";
import { Routes } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { useGetOrFetchApplication } from "../../applications/useGetOrFetchApplications";
import { useCanUnlinkLobbyChannel } from "../../lobbies/LobbyUtils";
import useShowUnlinkChannelAlert from "../../integration_settings/native/useShowUnlinkChannelAlert";
import AlertActionCreators from "../../../actions/native/AlertActionCreators";
import { intl, t } from "../../../intl/index.native";
import { ArrowSmallRightIcon } from "../../../design/components/Icon/native/redesign/generated/ArrowSmallRightIcon";
import { transitionTo } from "../../routing/router_utils";
import InstantInviteIcons from "./InstantInviteIcons";
import { Card } from "../../../design/components/Card/native/Card.native";
import { Stack } from "../../../design/components/Stack/native/Stack.native";
import GameIcon, { GameIconSizes } from "../../game_detection/native/GameIcon";
import { Text } from "../../../design/components/Text/native/Text";
import { ContextMenu } from "../../../design/components/ContextMenu/native/ContextMenu.native";
import { IconButton } from "../../../design/components/Button/native/IconButton.native";
import { InstantInviteDetails } from "./InstantInviteCode";
import DetailedGuildIdentityUserRow from "../../guild_settings/native/DetailedGuildIdentityUserRow";
import { useInviteActions } from "./InstantInviteUtils";
import InviteRolesDisplay from "../../instant_invite/native/InviteRolesDisplay";
import InstantInviteUsesLabel from "./InstantInviteUsesLabel";
const useStyles = createStyles({
creatorWrapper: {
marginLeft: -16,
marginBottom: -16,
marginTop: 8,
flex: 1
},
gameWrapper: {
flex: 1,
flexDirection: "row",
alignItems: "center",
gap: 8
},
gameText: {
flex: 1
}
});
const r38 = Module19.memo(function({ invite, onInviteRevoked }) {
const styles = useStyles();
const { uses, maxUses } = invite;
const id = invite.guild?.id;
const memo2 = useMemo(() => createChannelRecordFromInvite(invite.channel), [invite]);
const inviteActions = useInviteActions({
invite,
onInviteRevoked
});
const memo = useMemo(() => invite.roles.map((role) => role.id), [invite.roles]);
let r36 = memo.length > 0 && id != null;
const r57 = [<Stack direction="horizontal" justify="space-between">
<Text variant="text-lg/bold" tabularNumbers>{invite.code}</Text>
<ContextMenu items={inviteActions}>
{({ ref, ...props }) => <IconButton size="sm" variant="secondary" icon={InstantInviteIcons.more} accessibilityLabel={intl.string(t.DEoVWZ)} ref={ref} {...props} />}
</ContextMenu>
</Stack>, <InstantInviteDetails channel={memo2} expiresAt={invite.getExpiresAt()} />, , ,];
if (r36) {
r36 = <InviteRolesDisplay roleIds={memo} guildId={id} />;
}
r57[2] = r36;
r57[3] = <Stack direction="horizontal" align="flex-end">
<View style={styles.creatorWrapper}>
{invite.inviter?.id != null ? <DetailedGuildIdentityUserRow start end userId={invite.inviter?.id} guildId={id} /> : null}
</View>
<InstantInviteUsesLabel uses={uses} maxUses={maxUses} />
</Stack>;
return <Card>{r57}</Card>;
});
export default r38;
export function LinkedChannelInvite(props) {
const channel = props.channel;
const styles = useStyles();
const linked_by = channel.linkedLobby?.linked_by;
const getOrFetchApplication = useGetOrFetchApplication(channel.linkedLobby?.application_id);
const canUnlinkLobbyChannel = useCanUnlinkLobbyChannel(channel);
const id = channel.id;
let r35 = getOrFetchApplication?.name;
if (r35 == null) {
r35 = "";
}
const showUnlinkChannelAlert = useShowUnlinkChannelAlert(id, r35);
let c17756_2 = showUnlinkChannelAlert;
const callback = useCallback(() => {
if (canUnlinkLobbyChannel) {
c17756_2();
} else {
AlertActionCreators.show({
title: intl.string(t.JmUENg),
body: intl.string(t.SrvsML)
});
}
}, [canUnlinkLobbyChannel, showUnlinkChannelAlert]);
return <Card>
<Stack direction="horizontal" justify="space-between">
<View style={styles.gameWrapper}>
<GameIcon game={getOrFetchApplication} size={GameIconSizes.SIZE_24} />
<Text ellipsizeMode="tail" lineClamp={1} variant="text-lg/bold" style={styles.gameText}>
{getOrFetchApplication?.name}
</Text>
</View>
<ContextMenu items={useMemo(() => [{
label: intl.string(t.aW2YlJ),
IconComponent: ArrowSmallRightIcon,
action: () => {
transitionTo(Routes.CHANNEL(channel.guild_id, channel.id));
}
}, {
label: intl.string(t.JmUENg),
iconSource: InstantInviteIcons.revoke,
variant: "destructive",
action: callback
}], [channel.guild_id, channel.id, callback])}>
{({ ref, ...props }) => <IconButton size="sm" variant="secondary" icon={InstantInviteIcons.more} accessibilityLabel={intl.string(t.DEoVWZ)} ref={ref} {...props} />}
</ContextMenu>
</Stack>
<InstantInviteDetails channel={channel} />
<Stack direction="horizontal" align="flex-end">
<View style={styles.creatorWrapper}>
{linked_by != null ? <DetailedGuildIdentityUserRow start end userId={linked_by} guildId={channel.guild_id} /> : null}
</View>
</Stack>
</Card>;
}
@@ -0,0 +1,61 @@
// Metro module 10201 (f10202).
import { useMemo } from "react";
import { View } from "react-native";
import { createChannelRecordFromInvite } from "../../../records/ChannelRecord";
import RelationshipStore from "../../../stores/RelationshipStore";
import UserStore from "../../../stores/UserStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { getSimpleChannelIconComponent } from "../../../utils/native/ChannelUtils";
import { TextIcon } from "../../../design/components/Icon/native/redesign/generated/TextIcon";
import { Stack } from "../../../design/components/Stack/native/Stack.native";
import { Text } from "../../../design/components/Text/native/Text";
import { computeChannelName } from "../../channel/useChannelName";
import { ClockIcon } from "../../../design/components/Icon/native/redesign/generated/ClockIcon";
import { intl, t } from "../../../intl/index.native";
import CountDown from "../../../components_native/common/CountDown";
let useStyles;
const InstantInviteDetails = function InstantInviteDetails(props) {
const { channel, expiresAt } = props;
const styles = useStyles();
let Component = getSimpleChannelIconComponent(channel);
if (Component == null) {
Component = TextIcon;
}
return <Stack>
<Stack direction="horizontal" align="center">
<Component color="icon-subtle" size="xs" />
<Text variant="text-md/semibold" color="text-subtle" style={styles.channel} lineClamp={1}>
{computeChannelName(channel, UserStore, RelationshipStore, false)}
</Text>
</Stack>
{expiresAt != null && <Stack direction="horizontal" align="center">
<ClockIcon size="xs" color="icon-subtle" />
<Text variant="text-md/semibold" color="text-subtle">
{intl.string(t.aTABYx)}
</Text>
<CountDown style={styles.time} deadline={expiresAt} />
</Stack>}
</Stack>;
};
useStyles = createStyles({
flex: {
flex: 1
},
channel: {
flex: 0
},
time: {
color: Module712.colors.TEXT_FEEDBACK_POSITIVE
}
});
export default function InstantInviteCode(props) {
const invite = props.invite;
return <View style={useStyles().flex}>
<Stack>
<Text variant="text-lg/bold" tabularNumbers>{invite.code}</Text>
<InstantInviteDetails channel={useMemo(() => createChannelRecordFromInvite(invite.channel), [invite.channel])} expiresAt={invite.getExpiresAt()} />
</Stack>
</View>;
};
export { InstantInviteDetails };
@@ -0,0 +1,43 @@
// Metro module 10196 (f10197).
import { Platform } from "react-native";
import * as _Module10197 from "../../../_bundle/Module10197";
import * as _Module10198 from "../../../_bundle/Module10198";
import * as _Module10199 from "../../../_bundle/Module10199";
import * as _Module10200 from "../../../_bundle/Module10200";
Platform;
const r14 = Object;
const r16 = {};
Object.defineProperty(r16, "more", {
get: function() {
return _Module10197;
},
set: void 0,
enumerable: true,
configurable: true
});
Object.defineProperty(r16, "share", {
get: function() {
return _Module10198;
},
set: void 0,
enumerable: true,
configurable: true
});
Object.defineProperty(r16, "revoke", {
get: function() {
return _Module10199;
},
set: void 0,
enumerable: true,
configurable: true
});
Object.defineProperty(r16, "copy", {
get: function() {
return _Module10200;
},
set: void 0,
enumerable: true,
configurable: true
});
const r25 = r14.freeze(r16);
export default r25;
@@ -0,0 +1,22 @@
// Metro module 15649 (f15650).
import { memo, useCallback } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import InstantInvite, { LinkedChannelInvite } from "./InstantInvite";
const useStyles = createStyles({
container: {
position: "absolute",
opacity: 0
}
});
const r29 = memo(function InstantInviteSelfMeasurer(props) {
const { containerStyle, item, onMeasured, type = "height" } = props;
let c22286_1 = type;
return <View style={[containerStyle, useStyles().container]} onLayout={useCallback((a0) => {
const layout = a0.nativeEvent.layout;
onMeasured(c22286_1 === "height" ? layout.height : layout.width);
}, [onMeasured, type])} pointerEvents="none" importantForAccessibility="no-hide-descendants" accessibilityElementsHidden accessible={false}>
{item.type === "invite" ? <InstantInvite invite={item.data} /> : <LinkedChannelInvite channel={item.data} />}
</View>;
});
export default r29;
@@ -0,0 +1,9 @@
// Metro module 10208 (f10209).
import { Text } from "../../../design/components/Text/native/Text";
export default function InstantInviteUsesLabel(props) {
const { uses, maxUses } = props;
return <Text variant="text-md/semibold" color="text-default" style={props.style}>
{"Uses: "}
{maxUses !== 0 ? `${uses}/${maxUses}` : uses}
</Text>;
};
@@ -0,0 +1,100 @@
// Metro module 10203 (f10204).
import ChannelStore from "../../../stores/ChannelStore";
import UserStore from "../../../stores/UserStore";
import { InstantInviteSources } from "../../../Constants";
import { intl, t } from "../../../intl/index.native";
import InstantInviteIcons from "./InstantInviteIcons";
import Module10204 from "../../../_bundle/Module10204";
import { showShareActionSheet } from "../../action_sheet/native/showShareActionSheet";
import getInviteURL from "../../instant_invite/getInviteURL";
import { copy } from "../../../utils/ClipboardUtils.native";
import { presentCopiedToClipboard } from "../../toast/native/ToastUtils";
import { handleCopy } from "../../instant_invite/native/InstantInviteUtils";
import InstantInviteActionCreators from "../../../actions/InstantInviteActionCreators";
import ToastActionCreators from "../../toast/native/ToastActionCreators";
export function useInviteActions({ invite, onInviteRevoked }) {
let c17761_2;
c17761_2 = void 0;
const channel = ChannelStore.getChannel(invite.channel.id);
const isPrivate = channel == null ? void 0 : channel.isPrivate();
const r28 = {
label: intl.string(t.RDE0Sc),
iconSource: InstantInviteIcons.share,
action: () => {
Module10204(() => {
const url = isPrivate ? void 0 : getInviteURL(invite.code);
let message = void 0;
if (isPrivate) {
const r27 = t["+zWvOQ"];
let username = UserStore.getCurrentUser()?.username;
if (username == null) {
username = "";
}
message = intl.formatToPlainString(r27, {
username,
link: getInviteURL(invite.code)
});
}
return showShareActionSheet({
url,
message
}, isPrivate ? InstantInviteSources.GROUP_DM : "Guild Instant Invite");
});
}
};
const r42 = {
label: intl.string(t.OpuAlK),
iconSource: InstantInviteIcons.copy,
action: () => {
if (isPrivate) {
handleCopy(invite.code, invite.channel, InstantInviteSources.GROUP_DM, false);
} else {
copy(getInviteURL(invite.code));
presentCopiedToClipboard();
}
}
};
const r59 = {
label: intl.string(t.v6Yazx),
iconSource: InstantInviteIcons.revoke,
variant: "destructive",
action: null
};
c17761_2 = async () => {
let c26634_3 = 0;
L12: {
try {
c26634_3 = 1;
await InstantInviteActionCreators.revokeInvite(invite);
if (onInviteRevoked != null) {
onInviteRevoked(invite);
}
c26634_3 = 0;
} catch ($e) {
let r7 = $e;
if (c26634_3 !== 0) {
while (true) {
try {
c26634_3 = 0;
ToastActionCreators.open({
key: "ERROR_ANOTHER_TRY",
content: intl.string(t.CKsXk3)
});
break L12;
} catch ($e) {
r7 = $e;
if (c26634_3 === 0) {
break;
}
}
}
}
throw r7;
}
}
};
r59.action = function() {
return c17761_2.apply(this, arguments);
};
return [r28, r42, r59];
}