File size: 980 Bytes
ef5513c
1b66f8d
 
 
 
 
 
 
 
 
 
 
 
 
c8d90f4
1b66f8d
c8d90f4
1b66f8d
 
 
c8d90f4
 
1b66f8d
743240e
1b66f8d
 
ef5513c
1b66f8d
 
 
 
 
ef5513c
 
 
1b66f8d
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
<script lang="ts">
	import { goto, invalidate, invalidateAll } from '$app/navigation';
	import ChatWindow from '$lib/components/chat/ChatWindow.svelte';
	import { pendingMessage } from '$lib/stores/pendingMessage';

	let loading = false;

	async function createConversation(message: string) {
		try {
			loading = true;
			const res = await fetch('/conversation', {
				method: 'POST',
				headers: {
					'Content-Type': 'application/json'
				}
			});

			if (!res.ok) {
				alert('Error while creating conversation: ' + (await res.text()));
				return;
			}

			const { conversationId } = await res.json();

			// Ugly hack to use a store as temp storage, feel free to improve ^^
			pendingMessage.set(message);

			// invalidateAll to update list of conversations
			await goto(`/conversation/${conversationId}`, { invalidateAll: true });
		} finally {
			loading = false;
		}
	}
</script>

<ChatWindow on:message={(ev) => createConversation(ev.detail)} disabled={loading} />