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

80 lines
4.6 KiB
TypeScript

// Metro module 11978 (f11979).
import { useCallback } from "react";
import { View } from "react-native";
import { PROFILE_CONTENT_WITHOUT_STATUS_TOP_PADDING, UserProfileThemeTypes } from "../../user_profile/native/Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import useDisplayProfile from "../../user_profile/hooks/useDisplayProfile";
import useBadges from "../../user_profile/hooks/useBadges";
import useProfileTheme from "../../user_profile/hooks/useProfileTheme";
import UserProfileSharedStyles from "../../user_profile/native/UserProfileSharedStyles";
import { useUserProfileColors } from "../../user_profile/hooks/native/useUserProfileColors";
import { dismissKeyboard } from "../../../utils/native/ChatInputUtils";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { ThemeContextProvider } from "../../../_bundle/Module3901";
import UserProfileBanner from "../../user_profile/native/UserProfileBanner";
import UserProfileAvatar from "../../user_profile/native/UserProfileAvatar";
import UserProfileGradientContainer from "../../user_profile/native/UserProfileGradientContainer";
import UserProfileCustomStatusBubble from "../../user_profile/native/UserProfileCustomStatusBubble";
import UserProfilePrimaryInfo from "../../user_profile/native/UserProfilePrimaryInfo";
import ProfileEffect from "../../collectibles/profile_effects/native/ProfileEffect";
const useStyles = createStyles((a0) => ({
profileContainer: {
flex: 1,
position: "relative",
overflow: "hidden",
width: 323,
maxHeight: 301,
borderWidth: a0 ? void 0 : 1,
borderColor: a0 ? Module712.colors.BORDER_MUTED : Module712.colors.BACKGROUND_SURFACE_HIGH,
borderRadius: Module712.radii.lg,
...Module712.shadows.SHADOW_HIGH
},
profileEffect: {
zIndex: 1
}
}));
export default function CustomStatusPreview(props) {
const { user, pendingStatusText, pendingStatusEmoji, placeholderText } = props;
const displayProfile = useDisplayProfile(user.id);
const badges = useBadges(displayProfile);
const profileTheme = useProfileTheme({
user,
displayProfile
});
const { theme, primaryColor, secondaryColor } = profileTheme;
const hasCustomProfileTheme = primaryColor != null;
const styles = useStyles(hasCustomProfileTheme);
const styles2 = UserProfileSharedStyles();
const userProfileColors = useUserProfileColors({
theme,
primaryColor,
secondaryColor
});
const { gradientFallbackBackground, avatarBackground, containerBackground } = userProfileColors;
const callback = useCallback(() => {
dismissKeyboard();
ActionSheetActionCreators.openLazy(import("../../user_profile/native/UserProfileCustomStatusActionSheet"), "UserProfileCustomStatusActionSheet", {
user,
previewText: pendingStatusText,
previewEmoji: pendingStatusEmoji
}, "stack");
}, [user, pendingStatusText, pendingStatusEmoji]);
const r64 = [<UserProfileBanner user={user} displayProfile={displayProfile} bannerHeight={132} disableInteraction />, , ,];
const r68 = [<UserProfileAvatar user={user} backgroundColor={avatarBackground} disableStatus />, ,];
const containerStyle = [styles2.profileContentWrapper, styles2.profileContent, ,];
const r1 = pendingStatusText !== "" || pendingStatusEmoji !== null || placeholderText !== "";
containerStyle[2] = r1 ? !r1 : {
paddingTop: PROFILE_CONTENT_WITHOUT_STATUS_TOP_PADDING
};
r68[1] = <UserProfileGradientContainer fallbackBackground={gradientFallbackBackground} primaryColor={primaryColor} secondaryColor={primaryColor} containerStyle={containerStyle}>
<UserProfileCustomStatusBubble hasCustomProfileTheme={hasCustomProfileTheme} style={styles2.customStatusBubble} emojiOnlyStyle={styles2.emojiOnlyCustomStatusBubble} onPressTruncatedStatus={callback} previewEmoji={pendingStatusEmoji} previewText={pendingStatusText} placeholderText={placeholderText} />
<UserProfilePrimaryInfo user={user} themeType={UserProfileThemeTypes.PREVIEW} pronouns={displayProfile?.pronouns} badges={badges} badgeContainerBackground={containerBackground} showBadgeToastOnPress={false} />
</UserProfileGradientContainer>;
r64[1] = <View>{r68}</View>;
r64[2] = displayProfile?.profileEffect != null && <ProfileEffect skuId={displayProfile == null ? void 0 : displayProfile.profileEffect.skuId} style={styles.profileEffect} />;
return <ThemeContextProvider theme={theme} primaryColor={primaryColor} secondaryColor={secondaryColor}>
<View style={[styles.profileContainer]}>{r64}</View>
</ThemeContextProvider>;
};