TdAI / llama.cpp /tools /ui /src /lib /hooks /use-draft-messages.svelte.ts
tda45's picture
Upload folder using huggingface_hub (part 8)
15c3607 verified
Raw
History Blame Contribute Delete
1.33 kB
import { onMount } from 'svelte';
import { afterNavigate, beforeNavigate } from '$app/navigation';
import { draftMessagesStore } from '$lib/stores/draft-messages.svelte';
interface UseDraftMessagesOptions {
getChatId: () => string | undefined;
getMessage: () => string;
getFiles: () => ChatUploadedFile[];
setMessage: (message: string) => void;
setFiles: (files: ChatUploadedFile[]) => void;
getInitialMessage: () => string;
}
export function useDraftMessages(options: UseDraftMessagesOptions) {
onMount(() => {
const chatId = options.getChatId();
const draft = draftMessagesStore.getDraftMessage(chatId);
if ((draft.message || draft.files.length > 0) && !options.getInitialMessage()) {
options.setMessage(draft.message);
options.setFiles(draft.files);
}
});
beforeNavigate(() => {
const chatId = options.getChatId();
draftMessagesStore.saveDraftMessage(chatId, options.getMessage(), options.getFiles());
});
afterNavigate((navigation) => {
if (navigation?.from != null) {
const chatId = options.getChatId();
const draft = draftMessagesStore.getDraftMessage(chatId);
options.setMessage(draft.message);
options.setFiles(draft.files);
}
});
function clearDraft() {
const chatId = options.getChatId();
draftMessagesStore.clearDraftMessage(chatId);
}
return { clearDraft };
}