char-fork/llama.cpp

git clone https://git.t4t.associates/char-fork/llama.cpp

Aleksander Grygierui: Stores architecture improvements (#26910)094e53db1

char/aliceai-t5-moe
1.3 KiB48 linesraw
1import { afterNavigate, beforeNavigate } from '$app/navigation';
2import { draftMessagesStore } from '$lib/stores';
3import { onMount } from 'svelte';
4
5interface UseDraftMessagesOptions {
6	getChatId: () => string | undefined;
7	getMessage: () => string;
8	getFiles: () => ChatUploadedFile[];
9	setMessage: (message: string) => void;
10	setFiles: (files: ChatUploadedFile[]) => void;
11	getInitialMessage: () => string;
12}
13
14export function useDraftMessages(options: UseDraftMessagesOptions) {
15	onMount(() => {
16		const chatId = options.getChatId();
17		const draft = draftMessagesStore.getDraftMessage(chatId);
18
19		if ((draft.message || draft.files.length > 0) && !options.getInitialMessage()) {
20			options.setMessage(draft.message);
21			options.setFiles(draft.files);
22		}
23	});
24
25	beforeNavigate(() => {
26		const chatId = options.getChatId();
27
28		draftMessagesStore.saveDraftMessage(chatId, options.getMessage(), options.getFiles());
29	});
30
31	afterNavigate((navigation) => {
32		if (navigation?.from != null) {
33			const chatId = options.getChatId();
34			const draft = draftMessagesStore.getDraftMessage(chatId);
35
36			options.setMessage(draft.message);
37			options.setFiles(draft.files);
38		}
39	});
40
41	function clearDraft() {
42		const chatId = options.getChatId();
43
44		draftMessagesStore.clearDraftMessage(chatId);
45	}
46
47	return { clearDraft };
48}