File size: 2,102 Bytes
fc15a4c 0bfcf81 5da61b4 fe2328e 0bfcf81 4a6603b 2606dde 2804c18 5da61b4 fc15a4c 0bfcf81 4a6603b 0bfcf81 fe2328e 0bfcf81 4a6603b 34857c4 fe2328e 4a6603b 0bfcf81 9405a81 2804c18 9405a81 fc15a4c b56bba1 9405a81 4a6603b 9405a81 4a6603b 9405a81 2606dde 9405a81 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
<script lang="ts">
import { goto } from "$app/navigation";
import { base } from "$app/paths";
import { page } from "$app/stores";
import ChatWindow from "$lib/components/chat/ChatWindow.svelte";
import { ERROR_MESSAGES, error } from "$lib/stores/errors";
import { pendingMessage } from "$lib/stores/pendingMessage";
import { pendingMessageIdToRetry } from "$lib/stores/pendingMessageIdToRetry";
import { findCurrentModel } from "$lib/utils/models";
import { share } from "$lib/utils/share";
import type { PageData } from "./$types";
export let data: PageData;
let loading = false;
async function createConversation() {
try {
loading = true;
const res = await fetch(`${base}/conversation`, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
fromShare: $page.params.id,
}),
});
if (!res.ok) {
error.set("Error while creating conversation, try again.");
console.error("Error while creating conversation: " + (await res.text()));
return;
}
const { conversationId } = await res.json();
return conversationId;
} catch (err) {
error.set(ERROR_MESSAGES.default);
console.error(String(err));
throw err;
}
}
async function shareConversation() {
const url = `${window.location.origin}${window.location.pathname}`;
share(url, data.title);
}
</script>
<svelte:head>
<title>{data.title}</title>
</svelte:head>
<ChatWindow
on:message={(ev) =>
createConversation()
.then((convId) => {
$pendingMessage = ev.detail;
return goto(`${base}/conversation/${convId}`, { invalidateAll: true });
})
.finally(() => (loading = false))}
on:share={shareConversation}
on:retry={(ev) =>
createConversation()
.then((convId) => {
$pendingMessageIdToRetry = ev.detail.id;
$pendingMessage = ev.detail.content;
return goto(`${base}/conversation/${convId}`, { invalidateAll: true });
})
.finally(() => (loading = false))}
messages={data.messages}
currentModel={findCurrentModel(data.models, data.model)}
settings={data.settings}
{loading}
/>
|