Browse Source

feat: messages refac

Timothy J. Baek 1 year ago
parent
commit
b916f1b07d

+ 11 - 0
src/lib/components/chat/Messages.svelte

@@ -96,7 +96,17 @@
 	};
 
 	const confirmEditResponseMessage = async (messageId, content) => {
+		history.messages[messageId].originalContent = history.messages[messageId].content;
 		history.messages[messageId].content = content;
+
+		await tick();
+
+		await updateChatById(localStorage.token, chatId, {
+			messages: messages,
+			history: history
+		});
+
+		await chats.set(await getChatList(localStorage.token));
 	};
 
 	const rateMessage = async (messageId, rating) => {
@@ -225,6 +235,7 @@
 				{:else}
 					<ResponseMessage
 						{message}
+						modelfiles={selectedModelfiles}
 						siblings={history.messages[message.parentId]?.childrenIds ?? []}
 						isLastMessage={messageIdx + 1 === messages.length}
 						{confirmEditResponseMessage}

+ 3 - 10
src/lib/components/chat/Messages/ResponseMessage.svelte

@@ -26,8 +26,6 @@
 	export let copyToClipboard: Function;
 	export let regenerateResponse: Function;
 
-	let selectedModelfile = '';
-
 	let edit = false;
 	let editedContent = '';
 
@@ -42,19 +40,14 @@
 		await tick();
 
 		if (tooltipInstance) {
-			console.log(tooltipInstance);
 			tooltipInstance[0].destroy();
 		}
 
-		console.log('rendering message');
-
 		renderLatex();
 		hljs.highlightAll();
 		createCopyCodeBlockButton();
 
 		if (message.info) {
-			console.log(message);
-
 			tooltipInstance = tippy(`#info-${message.id}`, {
 				content: `<span class="text-xs" id="tooltip-${message.id}">token/s: ${
 					`${
@@ -214,12 +207,12 @@
 </script>
 
 <div class=" flex w-full message-{message.id}">
-	<ProfileImage src={selectedModelfile?.imageUrl ?? '/favicon.png'} />
+	<ProfileImage src={modelfiles[message.model]?.imageUrl ?? '/favicon.png'} />
 
 	<div class="w-full overflow-hidden">
 		<Name>
-			{#if selectedModelfile}
-				{selectedModelfile.title}
+			{#if message.model in modelfiles}
+				{modelfiles[message.model]?.title}
 			{:else}
 				Ollama <span class=" text-gray-500 text-sm font-medium"
 					>{message.model ? ` ${message.model}` : ''}</span

+ 12 - 1
src/routes/(app)/c/[id]/+page.svelte

@@ -31,6 +31,17 @@
 			? $modelfiles.filter((modelfile) => modelfile.tagName === selectedModels[0])[0]
 			: null;
 
+	let selectedModelfiles = {};
+	$: selectedModelfiles = selectedModels.reduce((a, tagName, i, arr) => {
+		const modelfile =
+			$modelfiles.filter((modelfile) => modelfile.tagName === tagName)?.at(0) ?? undefined;
+
+		return {
+			...a,
+			...(modelfile && { [tagName]: modelfile })
+		};
+	}, {});
+
 	let chat = null;
 
 	let title = '';
@@ -643,7 +654,7 @@
 				<Messages
 					chatId={$chatId}
 					{selectedModels}
-					{selectedModelfile}
+					{selectedModelfiles}
 					bind:history
 					bind:messages
 					bind:autoScroll