Spaces:
Running
Running
File size: 2,391 Bytes
e3c83d9 3b05d51 67577d7 98051f8 ffb0dba 3b05d51 ef7aeda 01b06a3 ad37578 98051f8 e3c83d9 3b05d51 ef7aeda 3b05d51 3c110ed 3b05d51 ffb0dba 3b05d51 ef7aeda 231a23d ffb0dba ef7aeda 3b05d51 af319d7 ad37578 af319d7 e3c83d9 e68d3eb af319d7 5d291ff 770735d ef7aeda af319d7 ef7aeda c202241 01b06a3 3c110ed 67577d7 af319d7 |
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 80 81 82 83 84 85 86 87 88 |
<script lang="ts">
import { goto } from "$app/navigation";
import { base } from "$app/paths";
import { page } from "$app/stores";
import { PUBLIC_APP_DISCLAIMER } from "$env/static/public";
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,
model: data.model,
}),
});
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
{loading}
shared={true}
messages={data.messages}
searches={data.searches}
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))}
models={data.models}
currentModel={findCurrentModel(data.models, data.model)}
settings={data.settings}
loginRequired={!$page.error &&
(data.requiresLogin
? !data.user
: !data.settings.ethicsModalAcceptedAt && !!PUBLIC_APP_DISCLAIMER)}
/>
|