Mask UI blocking when loading large chat session
This commit is contained in:
parent
cff9998682
commit
ca0627306f
|
@ -10,11 +10,10 @@
|
||||||
submitExitingPromptsNow,
|
submitExitingPromptsNow,
|
||||||
continueMessage,
|
continueMessage,
|
||||||
getMessage,
|
getMessage,
|
||||||
|
currentChatMessages,
|
||||||
|
setCurrentChat,
|
||||||
|
|
||||||
currentChatId,
|
currentChatId
|
||||||
|
|
||||||
currentChatMessages
|
|
||||||
|
|
||||||
|
|
||||||
} from './Storage.svelte'
|
} from './Storage.svelte'
|
||||||
import {
|
import {
|
||||||
|
@ -99,6 +98,7 @@
|
||||||
|
|
||||||
$: onStateChange($checkStateChange, $showSetChatSettings, $submitExitingPromptsNow, $continueMessage)
|
$: onStateChange($checkStateChange, $showSetChatSettings, $submitExitingPromptsNow, $continueMessage)
|
||||||
|
|
||||||
|
setCurrentChat(0)
|
||||||
// Make sure chat object is ready to go
|
// Make sure chat object is ready to go
|
||||||
updateChatSettings(chatId)
|
updateChatSettings(chatId)
|
||||||
|
|
||||||
|
@ -112,8 +112,7 @@
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
if (!chat) return
|
if (!chat) return
|
||||||
|
|
||||||
$currentChatId = chatId
|
setCurrentChat(chatId)
|
||||||
$currentChatMessages = chat.messages
|
|
||||||
|
|
||||||
chatRequest = new ChatRequest()
|
chatRequest = new ChatRequest()
|
||||||
chatRequest.setChat(chat)
|
chatRequest.setChat(chat)
|
||||||
|
@ -355,9 +354,9 @@
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<Messages messages={$currentChatMessages} chatId={chatId} />
|
<Messages messages={$currentChatMessages} chatId={chatId} chat={chat} />
|
||||||
|
|
||||||
{#if chatRequest.updating === true}
|
{#if chatRequest.updating === true || $currentChatId === 0}
|
||||||
<article class="message is-success assistant-message">
|
<article class="message is-success assistant-message">
|
||||||
<div class="message-body content">
|
<div class="message-body content">
|
||||||
<span class="is-loading" ></span>
|
<span class="is-loading" ></span>
|
||||||
|
@ -366,7 +365,7 @@
|
||||||
</article>
|
</article>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if $currentChatMessages.length === 0 || ($currentChatMessages.length === 1 && $currentChatMessages[0].role === 'system')}
|
{#if $currentChatId !== 0 && ($currentChatMessages.length === 0 || ($currentChatMessages.length === 1 && $currentChatMessages[0].role === 'system'))}
|
||||||
<Prompts bind:input />
|
<Prompts bind:input />
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Code from './Code.svelte'
|
import Code from './Code.svelte'
|
||||||
import { afterUpdate, createEventDispatcher, onMount } from 'svelte'
|
import { afterUpdate, createEventDispatcher, onMount } from 'svelte'
|
||||||
import { deleteMessage, chatsStorage, deleteSummaryMessage, truncateFromMessage, submitExitingPromptsNow, continueMessage, updateMessages } from './Storage.svelte'
|
import { deleteMessage, deleteSummaryMessage, truncateFromMessage, submitExitingPromptsNow, continueMessage, updateMessages } from './Storage.svelte'
|
||||||
import { getPrice } from './Stats.svelte'
|
import { getPrice } from './Stats.svelte'
|
||||||
import SvelteMarkdown from 'svelte-markdown'
|
import SvelteMarkdown from 'svelte-markdown'
|
||||||
import type { Message, Model, Chat } from './Types.svelte'
|
import type { Message, Model, Chat } from './Types.svelte'
|
||||||
|
@ -14,9 +14,8 @@
|
||||||
|
|
||||||
export let message:Message
|
export let message:Message
|
||||||
export let chatId:number
|
export let chatId:number
|
||||||
|
export let chat:Chat
|
||||||
|
|
||||||
|
|
||||||
$: chat = $chatsStorage.find((chat) => chat.id === chatId) as Chat
|
|
||||||
$: chatSettings = chat.settings
|
$: chatSettings = chat.settings
|
||||||
|
|
||||||
const isError = message.role === 'error'
|
const isError = message.role === 'error'
|
||||||
|
@ -49,7 +48,7 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
afterUpdate(() => {
|
afterUpdate(() => {
|
||||||
if (message.content.slice(-5).includes('```')) refreshCounter++
|
if (message.streaming && message.content.slice(-5).includes('```')) refreshCounter++
|
||||||
})
|
})
|
||||||
|
|
||||||
const edit = () => {
|
const edit = () => {
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
// Iterate messages
|
// Iterate messages
|
||||||
import type { Message, Chat } from './Types.svelte'
|
import type { Message, Chat } from './Types.svelte'
|
||||||
import { chatsStorage, globalStorage } from './Storage.svelte'
|
import { globalStorage } from './Storage.svelte'
|
||||||
import EditMessage from './EditMessage.svelte'
|
import EditMessage from './EditMessage.svelte'
|
||||||
|
|
||||||
export let messages : Message[]
|
export let messages : Message[]
|
||||||
export let chatId: number
|
export let chatId: number
|
||||||
|
export let chat: Chat
|
||||||
|
|
||||||
$: chat = $chatsStorage.find((chat) => chat.id === chatId) as Chat
|
|
||||||
$: chatSettings = chat.settings
|
$: chatSettings = chat.settings
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#each messages as message, i}
|
{#each messages as message, i}
|
||||||
{#if !((message.summarized) && $globalStorage.hideSummarized) && !(i === 0 && message.role === 'system' && !chatSettings.useSystemPrompt)}
|
{#if !((message.summarized) && $globalStorage.hideSummarized) && !(i === 0 && message.role === 'system' && !chatSettings.useSystemPrompt)}
|
||||||
{#key message.uuid}<EditMessage bind:message={message} chatId={chatId} />{/key}
|
<EditMessage bind:message={message} chatId={chatId} chat={chat} />
|
||||||
{/if}
|
{/if}
|
||||||
{/each}
|
{/each}
|
||||||
|
|
|
@ -222,6 +222,19 @@
|
||||||
return getChat(chatId).messages
|
return getChat(chatId).messages
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let setChatTimer: any
|
||||||
|
export const setCurrentChat = (chatId: number) => {
|
||||||
|
clearTimeout(setChatTimer)
|
||||||
|
if (!chatId) {
|
||||||
|
currentChatId.set(0)
|
||||||
|
currentChatMessages.set([])
|
||||||
|
}
|
||||||
|
setChatTimer = setTimeout(() => {
|
||||||
|
currentChatId.set(chatId)
|
||||||
|
currentChatMessages.set(getChat(chatId).messages)
|
||||||
|
}, 10)
|
||||||
|
}
|
||||||
|
|
||||||
let setMessagesTimer: any
|
let setMessagesTimer: any
|
||||||
export const setMessages = (chatId: number, messages: Message[]) => {
|
export const setMessages = (chatId: number, messages: Message[]) => {
|
||||||
if (get(currentChatId) === chatId) {
|
if (get(currentChatId) === chatId) {
|
||||||
|
|
Loading…
Reference in New Issue