mirror of
				https://github.com/open-webui/open-webui
				synced 2025-06-26 18:26:48 +00:00 
			
		
		
		
	refac
This commit is contained in:
		
							parent
							
								
									403295600f
								
							
						
					
					
						commit
						ec3b8fab5b
					
				@ -339,16 +339,17 @@ def get_event_emitter(request_info, update_db=True):
 | 
			
		||||
                    request_info["message_id"],
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
                content = message.get("content", "")
 | 
			
		||||
                content += event_data.get("data", {}).get("content", "")
 | 
			
		||||
                if message:
 | 
			
		||||
                    content = message.get("content", "")
 | 
			
		||||
                    content += event_data.get("data", {}).get("content", "")
 | 
			
		||||
 | 
			
		||||
                Chats.upsert_message_to_chat_by_id_and_message_id(
 | 
			
		||||
                    request_info["chat_id"],
 | 
			
		||||
                    request_info["message_id"],
 | 
			
		||||
                    {
 | 
			
		||||
                        "content": content,
 | 
			
		||||
                    },
 | 
			
		||||
                )
 | 
			
		||||
                    Chats.upsert_message_to_chat_by_id_and_message_id(
 | 
			
		||||
                        request_info["chat_id"],
 | 
			
		||||
                        request_info["message_id"],
 | 
			
		||||
                        {
 | 
			
		||||
                            "content": content,
 | 
			
		||||
                        },
 | 
			
		||||
                    )
 | 
			
		||||
 | 
			
		||||
            if "type" in event_data and event_data["type"] == "replace":
 | 
			
		||||
                content = event_data.get("data", {}).get("content", "")
 | 
			
		||||
 | 
			
		||||
@ -537,8 +537,15 @@ async def chat_image_generation_handler(
 | 
			
		||||
        for image in images:
 | 
			
		||||
            await __event_emitter__(
 | 
			
		||||
                {
 | 
			
		||||
                    "type": "message",
 | 
			
		||||
                    "data": {"content": f"\n"},
 | 
			
		||||
                    "type": "files",
 | 
			
		||||
                    "data": {
 | 
			
		||||
                        "files": [
 | 
			
		||||
                            {
 | 
			
		||||
                                "type": "image",
 | 
			
		||||
                                "url": image["url"],
 | 
			
		||||
                            }
 | 
			
		||||
                        ]
 | 
			
		||||
                    },
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -262,6 +262,21 @@
 | 
			
		||||
					} else {
 | 
			
		||||
						message.statusHistory = [data];
 | 
			
		||||
					}
 | 
			
		||||
				} else if (type === 'chat:completion') {
 | 
			
		||||
					chatCompletionEventHandler(data, message, event.chat_id);
 | 
			
		||||
				} else if (type === 'chat:message:delta' || type === 'message') {
 | 
			
		||||
					message.content += data.content;
 | 
			
		||||
				} else if (type === 'chat:message' || type === 'replace') {
 | 
			
		||||
					message.content = data.content;
 | 
			
		||||
				} else if (type === 'chat:message:files' || type === 'files') {
 | 
			
		||||
					message.files = data.files;
 | 
			
		||||
				} else if (type === 'chat:title') {
 | 
			
		||||
					chatTitle.set(data);
 | 
			
		||||
					currentChatPage.set(1);
 | 
			
		||||
					await chats.set(await getChatList(localStorage.token, $currentChatPage));
 | 
			
		||||
				} else if (type === 'chat:tags') {
 | 
			
		||||
					chat = await getChatById(localStorage.token, $chatId);
 | 
			
		||||
					allTags.set(await getAllTags(localStorage.token));
 | 
			
		||||
				} else if (type === 'source' || type === 'citation') {
 | 
			
		||||
					if (data?.type === 'code_execution') {
 | 
			
		||||
						// Code execution; update existing code execution by ID, or add new one.
 | 
			
		||||
@ -288,19 +303,19 @@
 | 
			
		||||
							message.sources = [data];
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				} else if (type === 'chat:completion') {
 | 
			
		||||
					chatCompletionEventHandler(data, message, event.chat_id);
 | 
			
		||||
				} else if (type === 'chat:title') {
 | 
			
		||||
					chatTitle.set(data);
 | 
			
		||||
					currentChatPage.set(1);
 | 
			
		||||
					await chats.set(await getChatList(localStorage.token, $currentChatPage));
 | 
			
		||||
				} else if (type === 'chat:tags') {
 | 
			
		||||
					chat = await getChatById(localStorage.token, $chatId);
 | 
			
		||||
					allTags.set(await getAllTags(localStorage.token));
 | 
			
		||||
				} else if (type === 'chat:message:delta' || type === 'message') {
 | 
			
		||||
					message.content += data.content;
 | 
			
		||||
				} else if (type === 'chat:message' || type === 'replace') {
 | 
			
		||||
					message.content = data.content;
 | 
			
		||||
				} else if (type === 'notification') {
 | 
			
		||||
					const toastType = data?.type ?? 'info';
 | 
			
		||||
					const toastContent = data?.content ?? '';
 | 
			
		||||
 | 
			
		||||
					if (toastType === 'success') {
 | 
			
		||||
						toast.success(toastContent);
 | 
			
		||||
					} else if (toastType === 'error') {
 | 
			
		||||
						toast.error(toastContent);
 | 
			
		||||
					} else if (toastType === 'warning') {
 | 
			
		||||
						toast.warning(toastContent);
 | 
			
		||||
					} else {
 | 
			
		||||
						toast.info(toastContent);
 | 
			
		||||
					}
 | 
			
		||||
				} else if (type === 'confirmation') {
 | 
			
		||||
					eventCallback = cb;
 | 
			
		||||
 | 
			
		||||
@ -333,19 +348,6 @@
 | 
			
		||||
					eventConfirmationMessage = data.message;
 | 
			
		||||
					eventConfirmationInputPlaceholder = data.placeholder;
 | 
			
		||||
					eventConfirmationInputValue = data?.value ?? '';
 | 
			
		||||
				} else if (type === 'notification') {
 | 
			
		||||
					const toastType = data?.type ?? 'info';
 | 
			
		||||
					const toastContent = data?.content ?? '';
 | 
			
		||||
 | 
			
		||||
					if (toastType === 'success') {
 | 
			
		||||
						toast.success(toastContent);
 | 
			
		||||
					} else if (toastType === 'error') {
 | 
			
		||||
						toast.error(toastContent);
 | 
			
		||||
					} else if (toastType === 'warning') {
 | 
			
		||||
						toast.warning(toastContent);
 | 
			
		||||
					} else {
 | 
			
		||||
						toast.info(toastContent);
 | 
			
		||||
					}
 | 
			
		||||
				} else {
 | 
			
		||||
					console.log('Unknown message type', data);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
@ -47,6 +47,7 @@
 | 
			
		||||
	import CodeExecutions from './CodeExecutions.svelte';
 | 
			
		||||
	import ContentRenderer from './ContentRenderer.svelte';
 | 
			
		||||
	import { KokoroWorker } from '$lib/workers/KokoroWorker';
 | 
			
		||||
	import FileItem from '$lib/components/common/FileItem.svelte';
 | 
			
		||||
 | 
			
		||||
	interface MessageType {
 | 
			
		||||
		id: string;
 | 
			
		||||
@ -613,18 +614,6 @@
 | 
			
		||||
			</Name>
 | 
			
		||||
 | 
			
		||||
			<div>
 | 
			
		||||
				{#if message?.files && message.files?.filter((f) => f.type === 'image').length > 0}
 | 
			
		||||
					<div class="my-2.5 w-full flex overflow-x-auto gap-2 flex-wrap">
 | 
			
		||||
						{#each message.files as file}
 | 
			
		||||
							<div>
 | 
			
		||||
								{#if file.type === 'image'}
 | 
			
		||||
									<Image src={file.url} alt={message.content} />
 | 
			
		||||
								{/if}
 | 
			
		||||
							</div>
 | 
			
		||||
						{/each}
 | 
			
		||||
					</div>
 | 
			
		||||
				{/if}
 | 
			
		||||
 | 
			
		||||
				<div class="chat-{message.role} w-full min-w-full markdown-prose">
 | 
			
		||||
					<div>
 | 
			
		||||
						{#if (message?.statusHistory ?? [...(message?.status ? [message?.status] : [])]).length > 0}
 | 
			
		||||
@ -703,6 +692,27 @@
 | 
			
		||||
							{/if}
 | 
			
		||||
						{/if}
 | 
			
		||||
 | 
			
		||||
						{#if message?.files && message.files?.filter((f) => f.type === 'image').length > 0}
 | 
			
		||||
							<div class="my-1 w-full flex overflow-x-auto gap-2 flex-wrap">
 | 
			
		||||
								{#each message.files as file}
 | 
			
		||||
									<div>
 | 
			
		||||
										{#if file.type === 'image'}
 | 
			
		||||
											<Image src={file.url} alt={message.content} />
 | 
			
		||||
										{:else}
 | 
			
		||||
											<FileItem
 | 
			
		||||
												item={file}
 | 
			
		||||
												url={file.url}
 | 
			
		||||
												name={file.name}
 | 
			
		||||
												type={file.type}
 | 
			
		||||
												size={file?.size}
 | 
			
		||||
												colorClassName="bg-white dark:bg-gray-850 "
 | 
			
		||||
											/>
 | 
			
		||||
										{/if}
 | 
			
		||||
									</div>
 | 
			
		||||
								{/each}
 | 
			
		||||
							</div>
 | 
			
		||||
						{/if}
 | 
			
		||||
 | 
			
		||||
						{#if edit === true}
 | 
			
		||||
							<div class="w-full bg-gray-50 dark:bg-gray-800 rounded-3xl px-5 py-3 my-2">
 | 
			
		||||
								<textarea
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user