144 lines
5.5 KiB
TypeScript
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>;
|
|
};
|