Skip to content

Commit 9da13b2

Browse files
authored
Merge pull request #43 from iceljc/features/use-last-sent-message
Features/use last sent message
2 parents 61d615d + fefc241 commit 9da13b2

File tree

4 files changed

+52
-2
lines changed

4 files changed

+52
-2
lines changed

src/lib/common/PlainPagination.svelte

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@
4242
<div class="d-flex justify-content-center">
4343
<nav aria-label="Page navigation example" id="pagination-element" class="mb-0">
4444
<div class="pagination-block pagination pagination-rounded">
45+
<Link class={`page-link outline-none ${disableBackward ? 'disabled' : ''}`} id="page-first" on:click={(e) => { handlePageTo(e, firstPage); }}>
46+
<i class="bx bx-chevrons-left align-middle" />
47+
</Link>
4548
<Link class={`page-link outline-none ${disableBackward ? 'disabled' : ''}`} id="page-prev" on:click={(e) => { handlePageTo(e, pagination.page - 1); }}>
4649
<i class="bx bx-chevron-left align-middle" />
4750
</Link>
@@ -55,6 +58,9 @@
5558
<Link class={`page-link outline-none ${disableForward ? 'disabled' : ''}`} id="page-next" on:click={(e) => { handlePageTo(e, pagination.page + 1); }}>
5659
<i class="bx bx-chevron-right align-middle" />
5760
</Link>
61+
<Link class={`page-link outline-none ${disableForward ? 'disabled' : ''}`} id="page-last" on:click={(e) => { handlePageTo(e, totalPages); }}>
62+
<i class="bx bx-chevrons-right align-middle" />
63+
</Link>
5864
</div>
5965
</nav>
6066
</div>

src/lib/helpers/enums.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
const userRole = {
2+
System: "system",
3+
User: "user",
4+
Function: "function",
5+
Assistant: "assistant"
6+
};
7+
8+
export const UserRole = Object.freeze(userRole);

src/routes/chat/[agentId]/[conversationId]/chat-box.svelte

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import StateLog from './state-log.svelte';
2929
import StateModal from './state-modal.svelte';
3030
import DialogModal from '$lib/common/DialogModal.svelte';
31+
import { UserRole } from '$lib/helpers/enums';
3132
3233
const options = {
3334
scrollbars: {
@@ -46,6 +47,7 @@
4647
let text = "";
4748
let editText = "";
4849
let truncateMsgId = "";
50+
let prevSentMsg = "";
4951
5052
/** @type {import('$types').AgentModel} */
5153
export let agent;
@@ -74,6 +76,7 @@
7476
7577
onMount(async () => {
7678
dialogs = await GetDialogs(params.conversationId);
79+
getLatestSentMessage(dialogs);
7780
7881
signalr.onMessageReceivedFromClient = onMessageReceivedFromClient;
7982
signalr.onMessageReceivedFromCsr = onMessageReceivedFromCsr;
@@ -90,6 +93,13 @@
9093
refresh();
9194
});
9295
96+
/** @param {import('$types').ChatResponseModel[]} dialogs */
97+
function getLatestSentMessage(dialogs) {
98+
const latestDialog = dialogs.findLast(x => x.sender?.role !== UserRole.Assistant);
99+
prevSentMsg = latestDialog?.text || "";
100+
}
101+
102+
93103
/** @param {import('$types').ChatResponseModel} message */
94104
function onMessageReceivedFromClient(message) {
95105
dialogs.push(message);
@@ -165,7 +175,16 @@
165175
166176
/** @param {any} e */
167177
async function onSendMessage(e) {
168-
if ((e.key === 'Enter' && (!!e.shiftKey || !!e.ctrlKey)) || e.key !== 'Enter') return;
178+
if (!!!text && e.key === 'ArrowUp') {
179+
text = prevSentMsg;
180+
return;
181+
}
182+
183+
if ((e.key === 'Enter' && (!!e.shiftKey || !!e.ctrlKey)) || e.key !== 'Enter') {
184+
return;
185+
}
186+
187+
prevSentMsg = text;
169188
await sendMessageToHub(params.agentId, params.conversationId, text);
170189
}
171190

vite.config.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { sveltekit } from '@sveltejs/kit/vite';
22
import { defineConfig } from 'vite';
33

44
export default defineConfig({
5-
plugins: [sveltekit()],
5+
// @ts-ignore
6+
plugins: [sveltekit(), AutoRefreshHmr()],
67
ssr: {
78
noExternal: ['@popperjs/core']
89
},
@@ -20,3 +21,19 @@ export default defineConfig({
2021
host: "0.0.0.0",
2122
}
2223
});
24+
25+
function AutoRefreshHmr() {
26+
return {
27+
name: 'auto-refresh',
28+
enforce: 'post',
29+
// @ts-ignore
30+
handleHotUpdate({ file, server }) {
31+
if (file.endsWith('.svelte') || file.endsWith('.js')) {
32+
server.ws.send({
33+
type: 'full-reload',
34+
path: '*'
35+
});
36+
}
37+
}
38+
};
39+
}

0 commit comments

Comments
 (0)