forked from open-webui/open-webui
		
	
						commit
						74da8ebf5b
					
				
					 5 changed files with 34 additions and 18 deletions
				
			
		|  | @ -1,3 +1,3 @@ | ||||||
| <div class=" self-center font-bold mb-0.5 capitalize"> | <div class=" self-center font-bold mb-0.5 capitalize line-clamp-1"> | ||||||
| 	<slot /> | 	<slot /> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
|  | 	import dayjs from 'dayjs'; | ||||||
| 	import { marked } from 'marked'; | 	import { marked } from 'marked'; | ||||||
| 
 | 
 | ||||||
| 	import tippy from 'tippy.js'; | 	import tippy from 'tippy.js'; | ||||||
|  | @ -219,6 +220,12 @@ | ||||||
| 					>{message.model ? ` ${message.model}` : ''}</span | 					>{message.model ? ` ${message.model}` : ''}</span | ||||||
| 				> | 				> | ||||||
| 			{/if} | 			{/if} | ||||||
|  | 
 | ||||||
|  | 			{#if message.timestamp} | ||||||
|  | 				<span class=" invisible group-hover:visible text-gray-400 text-xs font-medium"> | ||||||
|  | 					{dayjs(message.timestamp * 1000).format('DD/MM/YYYY HH:MM')} | ||||||
|  | 				</span> | ||||||
|  | 			{/if} | ||||||
| 		</Name> | 		</Name> | ||||||
| 
 | 
 | ||||||
| 		{#if message.content === ''} | 		{#if message.content === ''} | ||||||
|  |  | ||||||
|  | @ -1,4 +1,6 @@ | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
|  | 	import dayjs from 'dayjs'; | ||||||
|  | 
 | ||||||
| 	import { tick } from 'svelte'; | 	import { tick } from 'svelte'; | ||||||
| 	import Name from './Name.svelte'; | 	import Name from './Name.svelte'; | ||||||
| 	import ProfileImage from './ProfileImage.svelte'; | 	import ProfileImage from './ProfileImage.svelte'; | ||||||
|  | @ -61,6 +63,12 @@ | ||||||
| 				{:else} | 				{:else} | ||||||
| 					You | 					You | ||||||
| 				{/if} | 				{/if} | ||||||
|  | 
 | ||||||
|  | 				{#if message.timestamp} | ||||||
|  | 					<span class=" invisible group-hover:visible text-gray-400 text-xs font-medium"> | ||||||
|  | 						{dayjs(message.timestamp * 1000).format('DD/MM/YYYY HH:MM')} | ||||||
|  | 					</span> | ||||||
|  | 				{/if} | ||||||
| 			</Name> | 			</Name> | ||||||
| 		</div> | 		</div> | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -145,7 +145,8 @@ | ||||||
| 				role: 'user', | 				role: 'user', | ||||||
| 				user: _user ?? undefined, | 				user: _user ?? undefined, | ||||||
| 				content: userPrompt, | 				content: userPrompt, | ||||||
| 				files: files.length > 0 ? files : undefined | 				files: files.length > 0 ? files : undefined, | ||||||
|  | 				timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
| 			// Add message to history and Set currentId to messageId | 			// Add message to history and Set currentId to messageId | ||||||
|  | @ -256,7 +257,8 @@ | ||||||
| 			childrenIds: [], | 			childrenIds: [], | ||||||
| 			role: 'assistant', | 			role: 'assistant', | ||||||
| 			content: '', | 			content: '', | ||||||
| 			model: model | 			model: model, | ||||||
|  | 			timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		// Add message to history and Set currentId to messageId | 		// Add message to history and Set currentId to messageId | ||||||
|  | @ -446,7 +448,8 @@ | ||||||
| 			childrenIds: [], | 			childrenIds: [], | ||||||
| 			role: 'assistant', | 			role: 'assistant', | ||||||
| 			content: '', | 			content: '', | ||||||
| 			model: model | 			model: model, | ||||||
|  | 			timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		history.messages[responseMessageId] = responseMessage; | 		history.messages[responseMessageId] = responseMessage; | ||||||
|  |  | ||||||
|  | @ -135,8 +135,7 @@ | ||||||
| 	// Ollama functions | 	// Ollama functions | ||||||
| 	////////////////////////// | 	////////////////////////// | ||||||
| 
 | 
 | ||||||
| 	const submitPrompt = async (userPrompt, user) => { | 	const submitPrompt = async (userPrompt, _user = null) => { | ||||||
| 		console.log(userPrompt, user); |  | ||||||
| 		console.log('submitPrompt', $chatId); | 		console.log('submitPrompt', $chatId); | ||||||
| 
 | 
 | ||||||
| 		if (selectedModels.includes('')) { | 		if (selectedModels.includes('')) { | ||||||
|  | @ -163,8 +162,10 @@ | ||||||
| 				parentId: messages.length !== 0 ? messages.at(-1).id : null, | 				parentId: messages.length !== 0 ? messages.at(-1).id : null, | ||||||
| 				childrenIds: [], | 				childrenIds: [], | ||||||
| 				role: 'user', | 				role: 'user', | ||||||
|  | 				user: _user ?? undefined, | ||||||
| 				content: userPrompt, | 				content: userPrompt, | ||||||
| 				files: files.length > 0 ? files : undefined | 				files: files.length > 0 ? files : undefined, | ||||||
|  | 				timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 			}; | 			}; | ||||||
| 
 | 
 | ||||||
| 			// Add message to history and Set currentId to messageId | 			// Add message to history and Set currentId to messageId | ||||||
|  | @ -200,15 +201,7 @@ | ||||||
| 					await chatId.set('local'); | 					await chatId.set('local'); | ||||||
| 				} | 				} | ||||||
| 				await tick(); | 				await tick(); | ||||||
| 			} else if (chat.chat["models"] != selectedModels) { |  | ||||||
| 				// If model is not saved in DB, then save selectedmodel when message is sent |  | ||||||
| 
 |  | ||||||
| 				chat = await updateChatById(localStorage.token, $chatId, { |  | ||||||
| 						models: selectedModels |  | ||||||
| 					}); |  | ||||||
| 				await chats.set(await getChatList(localStorage.token)); |  | ||||||
| 			} | 			} | ||||||
| 			 |  | ||||||
| 			// Reset chat input textarea | 			// Reset chat input textarea | ||||||
| 			prompt = ''; | 			prompt = ''; | ||||||
| 			files = []; | 			files = []; | ||||||
|  | @ -282,7 +275,8 @@ | ||||||
| 			childrenIds: [], | 			childrenIds: [], | ||||||
| 			role: 'assistant', | 			role: 'assistant', | ||||||
| 			content: '', | 			content: '', | ||||||
| 			model: model | 			model: model, | ||||||
|  | 			timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		// Add message to history and Set currentId to messageId | 		// Add message to history and Set currentId to messageId | ||||||
|  | @ -472,7 +466,8 @@ | ||||||
| 			childrenIds: [], | 			childrenIds: [], | ||||||
| 			role: 'assistant', | 			role: 'assistant', | ||||||
| 			content: '', | 			content: '', | ||||||
| 			model: model | 			model: model, | ||||||
|  | 			timestamp: Math.floor(Date.now() / 1000) // Unix epoch | ||||||
| 		}; | 		}; | ||||||
| 
 | 
 | ||||||
| 		history.messages[responseMessageId] = responseMessage; | 		history.messages[responseMessageId] = responseMessage; | ||||||
|  | @ -703,7 +698,10 @@ | ||||||
| 	<div class="min-h-screen w-full flex justify-center"> | 	<div class="min-h-screen w-full flex justify-center"> | ||||||
| 		<div class=" py-2.5 flex flex-col justify-between w-full"> | 		<div class=" py-2.5 flex flex-col justify-between w-full"> | ||||||
| 			<div class="max-w-2xl mx-auto w-full px-3 md:px-0 mt-10"> | 			<div class="max-w-2xl mx-auto w-full px-3 md:px-0 mt-10"> | ||||||
| 				<ModelSelector bind:selectedModels disabled={messages.length > 0 && !selectedModels.includes('')} /> | 				<ModelSelector | ||||||
|  | 					bind:selectedModels | ||||||
|  | 					disabled={messages.length > 0 && !selectedModels.includes('')} | ||||||
|  | 				/> | ||||||
| 			</div> | 			</div> | ||||||
| 
 | 
 | ||||||
| 			<div class=" h-full mt-10 mb-32 w-full flex flex-col"> | 			<div class=" h-full mt-10 mb-32 w-full flex flex-col"> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Jaeryang Baek
						Timothy Jaeryang Baek