129 lines
6.3 KiB
TypeScript
129 lines
6.3 KiB
TypeScript
// Metro module 13748 (f13749).
|
|
import { useCallback } from "react";
|
|
import GuildMemberStore from "../../../stores/GuildMemberStore";
|
|
import UserStore from "../../../stores/UserStore";
|
|
import { AnalyticsObjects, AnalyticsSections, UpsellTypes } from "../../../Constants";
|
|
import { PremiumUpsellTypes } from "../../premium/PremiumConstants";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { useStateFromStores } from "../../../_bundle/Module589";
|
|
import useAnalyticsLocations from "../../app_analytics/useAnalyticsLocations";
|
|
import AnalyticsLocation from "../../app_analytics/AnalyticsLocation";
|
|
import usePendingAvatarSettings from "../../user_profile/hooks/usePendingAvatarSettings";
|
|
import useUploadAvatar from "../../user_profile/hooks/native/useUploadAvatar";
|
|
import { getPendingAvatarSrc } from "../../recent_avatars/RecentAvatarUtils";
|
|
import PremiumUtils from "../../../utils/PremiumUtils";
|
|
import * as _ProfileCustomizationUtils from "../../profile_customization/ProfileCustomizationUtils";
|
|
import PremiumUpsellUtils from "../../../utils/native/PremiumUpsellUtils";
|
|
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
|
|
import { ProfileAssetType, GIFSelectionContext } from "../../user_profile/native/ProfileGIFSelectActionSheet";
|
|
import { openAvatarDecorationActionSheet } from "../../collectibles/avatar_decorations/native/AvatarDecorationUtils";
|
|
import { PressableOpacity } from "../../../design/void/Pressables/native/Pressables";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import HeaderAvatar from "../../profile_customization/native/HeaderAvatar";
|
|
import EditIcon from "../../profile_customization/native/EditIcon";
|
|
const useStyles = createStyles({
|
|
editAvatarIcon: {
|
|
position: "absolute",
|
|
right: 0
|
|
}
|
|
});
|
|
export default function EditGuildIdentityAvatar(props) {
|
|
let stateFromStores2, analyticsLocations, setPendingAvatar, handleUploadAvatarSelect, canUsePremiumGuildMemberProfile, showAnimatedAvatarUpsell, showRemoveAvatar, avatarDecoration;
|
|
const { userId, guildId, disabled, disableStatus = true, style, statusStyle, avatarStyle } = props;
|
|
stateFromStores2 = void 0;
|
|
analyticsLocations = void 0;
|
|
setPendingAvatar = void 0;
|
|
handleUploadAvatarSelect = void 0;
|
|
canUsePremiumGuildMemberProfile = void 0;
|
|
showAnimatedAvatarUpsell = void 0;
|
|
showRemoveAvatar = void 0;
|
|
avatarDecoration = void 0;
|
|
const styles = useStyles();
|
|
const stateFromStores = useStateFromStores([UserStore], () => UserStore.getCurrentUser());
|
|
stateFromStores2 = useStateFromStores([GuildMemberStore], () => stateFromStores != null ? GuildMemberStore.getMember(guildId, stateFromStores?.id) : null);
|
|
analyticsLocations = useAnalyticsLocations(AnalyticsLocation.EDIT_AVATAR).analyticsLocations;
|
|
const pendingAvatarSettings = usePendingAvatarSettings({
|
|
guildId,
|
|
analyticsLocations
|
|
});
|
|
const { pendingAvatar, pendingAvatarDecoration } = pendingAvatarSettings;
|
|
setPendingAvatar = pendingAvatarSettings.setPendingAvatar;
|
|
handleUploadAvatarSelect = useUploadAvatar({
|
|
guildId,
|
|
analyticsLocations
|
|
});
|
|
const pendingAvatarSrc = getPendingAvatarSrc({
|
|
userId,
|
|
image: pendingAvatar
|
|
});
|
|
canUsePremiumGuildMemberProfile = PremiumUtils.canUsePremiumGuildMemberProfile(stateFromStores);
|
|
showAnimatedAvatarUpsell = !PremiumUtils.canUseAnimatedAvatar(stateFromStores);
|
|
showRemoveAvatar = _ProfileCustomizationUtils.showRemoveAvatar(pendingAvatar, stateFromStores2?.avatar);
|
|
let r26 = pendingAvatarDecoration;
|
|
if (r26 === void 0) {
|
|
r26 = stateFromStores2?.avatarDecoration;
|
|
}
|
|
avatarDecoration = r26;
|
|
const callback = useCallback(() => {
|
|
if (stateFromStores2 != null && stateFromStores != null) {
|
|
if (canUsePremiumGuildMemberProfile) {
|
|
ActionSheetActionCreators.openLazy(import("../../user_profile/native/ChangeAvatarActionSheet"), "Change Avatar", {
|
|
handleUploadAvatarSelect,
|
|
handleRemoveAvatarSelect: function handleRemoveAvatarSelect() {
|
|
ActionSheetActionCreators.hideActionSheet();
|
|
setPendingAvatar(null);
|
|
},
|
|
handleUploadGIFAvatarSelect: function handleUploadGIFAvatarSelect() {
|
|
ActionSheetActionCreators.hideActionSheet();
|
|
ActionSheetActionCreators.openLazy(import("../../user_profile/native/ProfileGIFSelectActionSheet"), "Select GIF Avatar", {
|
|
profileAssetType: ProfileAssetType.AVATAR,
|
|
selectionContext: GIFSelectionContext.PROFILE_EDIT,
|
|
guildId
|
|
});
|
|
},
|
|
handleEditAvatarDecorationSelect: function handleEditAvatarDecorationSelect() {
|
|
if (stateFromStores != null) {
|
|
openAvatarDecorationActionSheet({
|
|
user: stateFromStores,
|
|
guildId,
|
|
currentAvatarDecoration: avatarDecoration,
|
|
analyticsLocations
|
|
});
|
|
}
|
|
},
|
|
showAnimatedAvatarUpsell,
|
|
showRemoveAvatar
|
|
});
|
|
} else {
|
|
PremiumUpsellUtils.handleShowUpsellAlert({
|
|
initialUpsellKey: UpsellTypes.PREMIUM_GUILD_PROFILE,
|
|
analyticsLocation: {
|
|
section: AnalyticsSections.PREMIUM_GUILD_MEMBER_PROFILE,
|
|
object: AnalyticsObjects.EDIT_GUILD_PROFILE_AVATAR
|
|
},
|
|
analyticsLocations,
|
|
analyticsProperties: {
|
|
type: PremiumUpsellTypes.PREMIUM_GUILD_IDENTITY_MODAL
|
|
}
|
|
});
|
|
}
|
|
}
|
|
}, [guildId, stateFromStores2, stateFromStores, canUsePremiumGuildMemberProfile, showAnimatedAvatarUpsell, showRemoveAvatar, avatarDecoration, analyticsLocations, handleUploadAvatarSelect, setPendingAvatar]);
|
|
const r77 = stateFromStores == null;
|
|
let r78 = null;
|
|
if (!r77) {
|
|
const props2 = {
|
|
style,
|
|
disabled,
|
|
onPress: callback,
|
|
accessibilityRole: "button",
|
|
accessibilityLabel: intl.string(t["70lEQe"]),
|
|
children: null
|
|
};
|
|
const r97 = pendingAvatar === null;
|
|
props2.children = [<HeaderAvatar user={stateFromStores} guildId={r97 ? void 0 : guildId} pendingAvatarSrc={r97 ? void 0 : pendingAvatarSrc} pendingAvatarDecoration={pendingAvatarDecoration} statusStyle={statusStyle} disableStatus={disableStatus} style={avatarStyle} />, disabled ? !disabled : <EditIcon style={styles.editAvatarIcon} />];
|
|
r78 = <PressableOpacity {...props2} />;
|
|
}
|
|
return r78;
|
|
};
|