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

144 lines
5.5 KiB
TypeScript

// Metro module 15724 (f15725).
import { useCallback } from "react";
import { View } from "react-native";
import RelationshipStore from "../../../stores/RelationshipStore";
import { AnalyticsPages, RelationshipTypes } from "../../../Constants";
import { BLOCK_CONFIRMATION_ACTION_SHEET_KEY } from "../../relationships/native/RestrictionConfirmationConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useDMMessageToReport } from "../../messages/useDMMessageToReport";
import { useStateFromStores } from "../../../_bundle/Module589";
import RelationshipActionCreators from "../../../actions/RelationshipActionCreators";
import PeopleUtils from "../../people/PeopleUtils";
import { confirmRemoveFriend } from "../../user_profile/native/UserProfileAlertUtils";
import UserUtils from "../../../utils/UserUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { showReportModalForFirstDM } from "../../in_app_reports/ReportModals";
import ChannelActionCreators from "../../../actions/ChannelActionCreators";
import { Button } from "../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../intl/index.native";
import { Text } from "../../../design/components/Text/native/Text";
const useStyles = createStyles({
container: {
gap: Module712.space.PX_8,
marginVertical: Module712.space.PX_12
},
buttonRow: {
flexDirection: "row",
flexWrap: "wrap",
gap: Module712.space.PX_8
}
});
export default function RestrictedMessagePreviewActions(props) {
let r85, r105, r106, r107;
const { channel, user } = props;
const styles = useStyles();
const dMMessageToReport = useDMMessageToReport(channel, user.id, user.bot === true);
const { message, isReportable, isLoaded } = dMMessageToReport;
const stateFromStores = useStateFromStores([RelationshipStore], () => RelationshipStore.getRelationshipType(user.id), [user.id]);
const callback3 = useCallback(() => {
RelationshipActionCreators.addRelationship({
userId: user.id,
context: {
location: AnalyticsPages.DM_CHANNEL
}
});
}, [user.id]);
const callback4 = useCallback(() => {
PeopleUtils.maybeConfirmFriendRequestAccept({
userId: user.id,
location: AnalyticsPages.DM_CHANNEL
});
}, [user.id]);
const callback = useCallback(() => {
RelationshipActionCreators.cancelFriendRequest(user.id, {
location: AnalyticsPages.DM_CHANNEL
});
}, [user.id]);
const callback5 = useCallback(() => {
confirmRemoveFriend({
userDisplayName: UserUtils.getName(user),
onConfirm: () => {
RelationshipActionCreators.removeFriend(user.id, {
location: AnalyticsPages.DM_CHANNEL
});
}
});
}, [user]);
const callback2 = useCallback(() => {
ActionSheetActionCreators.openLazy(import("../../relationships/native/BlockConfirmationActionSheet"), BLOCK_CONFIRMATION_ACTION_SHEET_KEY, {
userId: user.id,
channelId: channel.id
});
}, [user.id, channel.id]);
const callback6 = useCallback(() => {
RelationshipActionCreators.unblockUser(user.id, {
location: AnalyticsPages.DM_CHANNEL
});
}, [user.id]);
const callback7 = useCallback(() => {
if (message != null) {
showReportModalForFirstDM(message, () => {
ChannelActionCreators.closePrivateChannel(channel.id, true);
});
}
}, [message, channel.id]);
const r74 = stateFromStores !== RelationshipTypes.BLOCKED ? <Button size="sm" variant="secondary" text={intl.string(t.l4Emac)} onPress={callback2} /> : null;
L6: {
r85 = null;
if (isReportable) {
if (message == null) {
r85 = null;
if (isLoaded) {
break L6;
}
}
r85 = <Button size="sm" variant="destructive" text={intl.string(t.HHZmDn)} disabled={message == null} onPress={callback7} />;
}
}
if (RelationshipTypes.NONE === stateFromStores) {
const bot = user.bot;
r105 = null;
r106 = null;
r107 = null;
if (!bot) {
r106 = <Button size="sm" variant="active" text={intl.string(t["PMsq/b"])} onPress={callback3} />;
r105 = null;
r107 = null;
}
} else if (RelationshipTypes.PENDING_INCOMING === stateFromStores) {
r107 = intl.format(t.uIomXw, {
username: UserUtils.getName(user)
});
r106 = <Button size="sm" variant="active" text={intl.string(t["+WbSn5"])} onPress={callback4} />;
r105 = <Button size="sm" variant="secondary" text={intl.string(t.rQSndv)} onPress={callback} />;
} else if (RelationshipTypes.FRIEND === stateFromStores) {
r106 = <Button size="sm" variant="secondary" text={intl.string(t.cvSt1J)} onPress={callback5} />;
r105 = null;
r107 = null;
} else if (RelationshipTypes.PENDING_OUTGOING === stateFromStores) {
r106 = <Button size="sm" variant="active" text={intl.string(t.xMH6vD)} disabled onPress={void 0} />;
r105 = null;
r107 = null;
} else {
const BLOCKED = RelationshipTypes.BLOCKED;
r105 = null;
r106 = null;
r107 = null;
if (BLOCKED === stateFromStores) {
r106 = <Button size="sm" variant="secondary" text={intl.string(t.XyHpKH)} onPress={callback6} />;
r105 = null;
r107 = null;
}
}
return <View style={styles.container}>
{r107 != null && <Text variant="text-sm/normal" color="text-default">{r107}</Text>}
<View style={styles.buttonRow}>
{r106}
{r105}
{r74}
{r85}
</View>
</View>;
};