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}