From 9675ae0ac25bb17fc1a6ad9b45e8061b94516810 Mon Sep 17 00:00:00 2001 From: BFlat Date: Fri, 23 Feb 2024 13:45:42 +0700 Subject: [PATCH] sd prompts and copying function --- .../src/v2/view/pages/media/MediaPage.tsx | 75 +++++++++++++++++-- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/packages/fakeyou.com/src/v2/view/pages/media/MediaPage.tsx b/packages/fakeyou.com/src/v2/view/pages/media/MediaPage.tsx index c041caf518..eafc6fbab6 100644 --- a/packages/fakeyou.com/src/v2/view/pages/media/MediaPage.tsx +++ b/packages/fakeyou.com/src/v2/view/pages/media/MediaPage.tsx @@ -18,6 +18,7 @@ import { faFileCircleXmark, faArrowRightArrowLeft, faVideoPlus, + faCopy, } from "@fortawesome/pro-solid-svg-icons"; import Accordion from "components/common/Accordion"; import DataTable from "components/common/DataTable"; @@ -44,7 +45,7 @@ export default function MediaPage() { const ratings = useRatings(); const { media: mediaFile, - // prompt, + prompt, remove, status, } = useMedia({ @@ -59,6 +60,8 @@ export default function MediaPage() { const timeCreated = moment(mediaFile?.created_at || "").fromNow(); const dateCreated = moment(mediaFile?.created_at || "").format("LLL"); const [buttonLabel, setButtonLabel] = useState("Copy"); + const [copyPositiveButtonText, setCopyPositiveButtonText] = useState("Copy"); + const [copyNegativeButtonText, setCopyNegativeButtonText] = useState("Copy"); useEffect(() => { if (batchToken) { @@ -86,6 +89,19 @@ export default function MediaPage() { const deleteMedia = () => remove(!!user?.can_ban_users); + const copyToClipboard = async ( + text: string, + setButtonText: React.Dispatch> + ) => { + try { + await navigator.clipboard.writeText(text); + setButtonText("Copied!"); + setTimeout(() => setButtonText("Copy"), 2000); // Change back after 2 seconds + } catch (err) { + console.error("Failed to copy: ", err); + } + }; + function renderMediaComponent(mediaFile: MediaFile) { switch (mediaFile.media_type) { case MediaFileType.Audio: @@ -126,10 +142,59 @@ export default function MediaPage() { } return ( - + <> + + {prompt?.maybe_positive_prompt && ( + +
+
Prompt
+
+
+

{prompt.maybe_positive_prompt}

+
+ + {prompt?.maybe_negative_prompt && ( + <> +
+
+ Negative Prompt +
+
+
+

{prompt.maybe_negative_prompt}

+
+ + )} +
+ )} + ); case MediaFileType.BVH: const bvhUrl = bucketConfig.getGcsUrl(mediaFile.public_bucket_path);