diff --git a/src/equicordplugins/profileSets/components/presetManager.tsx b/src/equicordplugins/profileSets/components/presetManager.tsx index 7207a7525..1ca693ada 100644 --- a/src/equicordplugins/profileSets/components/presetManager.tsx +++ b/src/equicordplugins/profileSets/components/presetManager.tsx @@ -7,7 +7,7 @@ import { Button } from "@components/Button"; import { Heading } from "@components/Heading"; import { classes } from "@utils/misc"; -import { openModal,React, SelectedGuildStore, TextInput, useStateFromStores } from "@webpack/common"; +import { openModal, React, SelectedGuildStore, TextInput, useStateFromStores } from "@webpack/common"; import { cl, settings } from "../index"; import { exportPresets, ImportDecision, importPresets, savePreset } from "../utils/actions"; diff --git a/src/equicordplugins/profileSets/utils/profile.ts b/src/equicordplugins/profileSets/utils/profile.ts index 51767124c..48c023a97 100644 --- a/src/equicordplugins/profileSets/utils/profile.ts +++ b/src/equicordplugins/profileSets/utils/profile.ts @@ -57,6 +57,21 @@ function setPendingChanges(payload: Record, guildId?: string) { dispatch("USER_PROFILE_SETTINGS_SET_PENDING_CHANGES", guildId ? { guildId, ...payload } : payload); } +function openProfileImagePreview( + uploadType: "AVATAR" | "BANNER", + image: Extract, + guildId?: string +) { + dispatch("PROFILE_CUSTOMIZATION_OPEN_PREVIEW_MODAL", { + image, + file: {}, + uploadType, + guildId, + analyticsSource: guildId ? "user settings guild profile" : "user settings user profile", + isTryItOut: false + }); +} + function isNonEmptyString(value: unknown): value is string { return typeof value === "string" && value.length > 0; } @@ -339,7 +354,14 @@ export async function loadPresetAsPending(preset: ProfilePreset, guildId?: strin description: `profilesets-${preset.name ?? "preset"}` } : avatarValue; - setPending({ pendingAvatar: avatarPayload }); + const avatarImageUri = avatarPayload != null && "imageUri" in Object(avatarPayload) + ? (avatarPayload as { imageUri?: unknown; }).imageUri + : null; + if (isNonEmptyString(avatarImageUri)) { + openProfileImagePreview("AVATAR", { ...Object(avatarPayload), imageUri: avatarImageUri }, guildId); + } else { + setPending({ pendingAvatar: avatarPayload }); + } } } @@ -351,7 +373,15 @@ export async function loadPresetAsPending(preset: ProfilePreset, guildId?: strin description: `profilesets-${preset.name ?? "preset"}` } : preset.bannerDataUrl; - setPending({ pendingBanner: bannerPayload }); + + const bannerImageUri = bannerPayload != null && "imageUri" in Object(bannerPayload) + ? (bannerPayload as { imageUri?: unknown; }).imageUri + : null; + if (isNonEmptyString(bannerImageUri)) { + openProfileImagePreview("BANNER", { ...Object(bannerPayload), imageUri: bannerImageUri }, guildId); + } else { + setPending({ pendingBanner: bannerPayload }); + } } if (!options.skipBio && preset?.bio !== current?.bio) {