From 2a6d2392a06a987a55ee966209ac6399b4fc142d Mon Sep 17 00:00:00 2001 From: Silentoplayz <50341825+Silentoplayz@users.noreply.github.com> Date: Tue, 3 Jun 2025 17:19:24 -0400 Subject: [PATCH] fix: append (Clone) to cloned prompt title and clone to prompt id --- src/lib/components/workspace/Prompts.svelte | 12 ++++++++-- .../workspace/Prompts/PromptEditor.svelte | 3 ++- .../workspace/prompts/create/+page.svelte | 24 ++++++++++++++----- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/src/lib/components/workspace/Prompts.svelte b/src/lib/components/workspace/Prompts.svelte index ae01d7c7c..b1698b286 100644 --- a/src/lib/components/workspace/Prompts.svelte +++ b/src/lib/components/workspace/Prompts.svelte @@ -22,7 +22,7 @@ import ChevronRight from '../icons/ChevronRight.svelte'; import Spinner from '../common/Spinner.svelte'; import Tooltip from '../common/Tooltip.svelte'; - import { capitalizeFirstLetter } from '$lib/utils'; + import { capitalizeFirstLetter, slugify } from '$lib/utils'; import XMark from '../icons/XMark.svelte'; const i18n = getContext('i18n'); @@ -68,7 +68,15 @@ }; const cloneHandler = async (prompt) => { - sessionStorage.prompt = JSON.stringify(prompt); + const clonedPrompt = { ...prompt }; + + clonedPrompt.title = `${clonedPrompt.title} (Clone)`; + const baseCommand = clonedPrompt.command.startsWith('/') + ? clonedPrompt.command.substring(1) + : clonedPrompt.command; + clonedPrompt.command = slugify(`${baseCommand} clone`); + + sessionStorage.prompt = JSON.stringify(clonedPrompt); goto('/workspace/prompts/create'); }; diff --git a/src/lib/components/workspace/Prompts/PromptEditor.svelte b/src/lib/components/workspace/Prompts/PromptEditor.svelte index b3c1a6a72..b317c0d26 100644 --- a/src/lib/components/workspace/Prompts/PromptEditor.svelte +++ b/src/lib/components/workspace/Prompts/PromptEditor.svelte @@ -13,6 +13,7 @@ export let onSubmit: Function; export let edit = false; export let prompt = null; + export let clone = false; const i18n = getContext('i18n'); @@ -68,8 +69,8 @@ if (prompt) { title = prompt.title; await tick(); - command = prompt.command.at(0) === '/' ? prompt.command.slice(1) : prompt.command; + hasManualEdit = true; content = prompt.content; accessControl = prompt?.access_control === undefined ? {} : prompt?.access_control; diff --git a/src/routes/(app)/workspace/prompts/create/+page.svelte b/src/routes/(app)/workspace/prompts/create/+page.svelte index c49420027..2fa25de6b 100644 --- a/src/routes/(app)/workspace/prompts/create/+page.svelte +++ b/src/routes/(app)/workspace/prompts/create/+page.svelte @@ -9,14 +9,22 @@ import { createNewPrompt, getPrompts } from '$lib/apis/prompts'; import PromptEditor from '$lib/components/workspace/Prompts/PromptEditor.svelte'; - let prompt = null; + let prompt: { + title: string; + command: string; + content: string; + access_control: any | null; + } | null = null; + + let clone = false; + const onSubmit = async (_prompt) => { - const prompt = await createNewPrompt(localStorage.token, _prompt).catch((error) => { + const res = await createNewPrompt(localStorage.token, _prompt).catch((error) => { toast.error(`${error}`); return null; }); - if (prompt) { + if (res) { toast.success($i18n.t('Prompt created successfully')); await prompts.set(await getPrompts(localStorage.token)); @@ -33,8 +41,9 @@ ) return; const _prompt = JSON.parse(event.data); - console.log(_prompt); + console.log('Received prompt via window message:', _prompt); + clone = true; prompt = { title: _prompt.title, command: _prompt.command, @@ -49,18 +58,21 @@ if (sessionStorage.prompt) { const _prompt = JSON.parse(sessionStorage.prompt); + sessionStorage.removeItem('prompt'); + console.log('Received prompt via sessionStorage:', _prompt); + + clone = true; prompt = { title: _prompt.title, command: _prompt.command, content: _prompt.content, access_control: null }; - sessionStorage.removeItem('prompt'); } }); {#key prompt} - + {/key}