diff --git a/src/lib/ChatScreens/DefaultChatScreen.svelte b/src/lib/ChatScreens/DefaultChatScreen.svelte index 8449ee70..9fe92edd 100644 --- a/src/lib/ChatScreens/DefaultChatScreen.svelte +++ b/src/lib/ChatScreens/DefaultChatScreen.svelte @@ -29,11 +29,11 @@ import PlaygroundMenu from '../Playground/PlaygroundMenu.svelte'; import { ConnectionOpenStore } from 'src/ts/sync/multiuser'; import { coldStorageHeader, preLoadChat } from 'src/ts/process/coldstorage.svelte'; + import LazyPortal from '../UI/GUI/LazyPortal.svelte'; let messageInput:string = $state('') let messageInputTranslate:string = $state('') let openMenu = $state(false) - let loadPages = $state(30) let autoMode = $state(false) let rerolls:Message[][] = [] let rerollid = -1 @@ -42,6 +42,23 @@ let currentCharacter:character|groupChat = $state(DBState.db.characters[$selectedCharID]) let toggleStickers:boolean = $state(false) let fileInput:string[] = $state([]) + let blocks = $state(new Uint8Array(500) )//hacky hacky + let blockEle:HTMLElement[] = [] + let root: HTMLElement = $state(null) + + for(let i=0;i<500;i++){ + blockEle.push(null) + } + + $effect(() => { + if(blocks.length-10 < DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length){ + blocks = new Uint8Array(blocks.length + 500) + for(let i=0;i<500;i++){ + blockEle.push(null) + } + } + + }) async function send(){ return sendMain(false) @@ -365,7 +382,6 @@ async function screenShot(){ try { - loadPages = Infinity const html2canvas = await import('html-to-image'); const chats = document.querySelectorAll('.default-chat-screen .risu-chat') alertWait("Taking screenShot...") @@ -412,7 +428,6 @@ mergedCanvas.remove(); } alertNormal(language.screenshotSaved) - loadPages = 10 } catch (error) { console.error(error) alertError("Error while taking screenshot") @@ -435,13 +450,7 @@ {/if} {:else} -
{ - //@ts-ignore - const scrolled = (e.target.scrollHeight - e.target.clientHeight + e.target.scrollTop) - if(scrolled < 100 && DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length > loadPages){ - loadPages += 15 - } - }}> +
{/if} + {#each blocks as block, i} +
+ +
+ {/each} + {#if DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message?.[0]?.data?.startsWith(coldStorageHeader) } {#await preLoadChat($selectedCharID, DBState.db.characters[$selectedCharID].chatPage)}
@@ -658,103 +676,108 @@
{/await} {:else} - {#each messageForm(DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message, loadPages) as chat, i} - {#if chat.role === 'char'} - {#if DBState.db.characters[$selectedCharID].type !== 'group'} - + + {#each DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message as chat, i} + + {#if chat.role === 'char'} + {#if DBState.db.characters[$selectedCharID].type !== 'group'} + + {:else} + + {/if} {:else} {/if} - {:else} - - {/if} + {/each} - {#if DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage].message.length <= loadPages} - {#if DBState.db.characters[$selectedCharID].type !== 'group' } - 0} - largePortrait={DBState.db.characters[$selectedCharID].largePortrait} - firstMessage={true} - onReroll={() => { - const cha = DBState.db.characters[$selectedCharID] - const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] - if(cha.type !== 'group'){ - if (chat.fmIndex >= (cha.alternateGreetings.length - 1)){ - chat.fmIndex = -1 - } - else{ - chat.fmIndex += 1 - } - } - DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat - }} - unReroll={() => { - const cha = DBState.db.characters[$selectedCharID] - const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] - if(cha.type !== 'group'){ - if (chat.fmIndex === -1){ - chat.fmIndex = (cha.alternateGreetings.length - 1) - } - else{ - chat.fmIndex -= 1 - } - } - DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat - }} - isLastMemory={false} + - /> - {#if !DBState.db.characters[$selectedCharID].removedQuotes && DBState.db.characters[$selectedCharID].creatorNotes.length >= 2} - { - const cha = DBState.db.characters[$selectedCharID] - if(cha.type !== 'group'){ - cha.removedQuotes = true - } - DBState.db.characters[$selectedCharID] = cha - }} /> + {#if DBState.db.characters[$selectedCharID].type !== 'group' } + 0} + largePortrait={DBState.db.characters[$selectedCharID].largePortrait} + firstMessage={true} + onReroll={() => { + const cha = DBState.db.characters[$selectedCharID] + const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] + if(cha.type !== 'group'){ + if (chat.fmIndex >= (cha.alternateGreetings.length - 1)){ + chat.fmIndex = -1 + } + else{ + chat.fmIndex += 1 + } + } + DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat + }} + unReroll={() => { + const cha = DBState.db.characters[$selectedCharID] + const chat = DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] + if(cha.type !== 'group'){ + if (chat.fmIndex === -1){ + chat.fmIndex = (cha.alternateGreetings.length - 1) + } + else{ + chat.fmIndex -= 1 + } + } + DBState.db.characters[$selectedCharID].chats[DBState.db.characters[$selectedCharID].chatPage] = chat + }} + isLastMemory={false} + + /> + {#if !DBState.db.characters[$selectedCharID].removedQuotes && DBState.db.characters[$selectedCharID].creatorNotes.length >= 2} + { + const cha = DBState.db.characters[$selectedCharID] + if(cha.type !== 'group'){ + cha.removedQuotes = true + } + DBState.db.characters[$selectedCharID] = cha + }} /> + {/if} {/if} - {/if} - {/if} + + {/if} diff --git a/src/lib/UI/GUI/LazyPortal.svelte b/src/lib/UI/GUI/LazyPortal.svelte new file mode 100644 index 00000000..b22152d5 --- /dev/null +++ b/src/lib/UI/GUI/LazyPortal.svelte @@ -0,0 +1,65 @@ + \ No newline at end of file diff --git a/src/ts/parser.svelte.ts b/src/ts/parser.svelte.ts index 2aeca4a2..20b20a58 100644 --- a/src/ts/parser.svelte.ts +++ b/src/ts/parser.svelte.ts @@ -1708,6 +1708,12 @@ function basicMatcher (p1:string,matcherArg:matcherArg,vars:{[key:string]:string } return total.toString() } + case 'fromhex':{ + return Number.parseInt(arra[1], 16).toString() + } + case 'tohex':{ + return Number.parseInt(arra[1]).toString(16) + } } } if(p1.startsWith('random')){