diff --git a/frontend/src/lib/components/EditAdventure.svelte b/frontend/src/lib/components/EditAdventure.svelte
index 8a69756..099d269 100644
--- a/frontend/src/lib/components/EditAdventure.svelte
+++ b/frontend/src/lib/components/EditAdventure.svelte
@@ -22,6 +22,7 @@
import Attachment from '~icons/mdi/attachment';
import PointSelectionModal from './PointSelectionModal.svelte';
import Earth from '~icons/mdi/earth';
+ import Wikipedia from '~icons/mdi/wikipedia';
onMount(async () => {
modal = document.getElementById('my_modal_1') as HTMLDialogElement;
@@ -42,6 +43,14 @@
}
}
+ async function generateDesc() {
+ let res = await fetch(`/api/generate/desc/?name=${adventureToEdit.name}`);
+ let data = await res.json();
+ if (data.extract) {
+ adventureToEdit.description = data.extract;
+ }
+ }
+
async function handleSubmit(event: Event) {
event.preventDefault();
const form = event.target as HTMLFormElement;
@@ -166,13 +175,9 @@
bind:value={adventureToEdit.description}
class="input input-bordered w-full max-w-xs mt-1 mb-2"
/>
-
+
diff --git a/frontend/src/lib/components/NewAdventure.svelte b/frontend/src/lib/components/NewAdventure.svelte
index f53d8cb..edf23cb 100644
--- a/frontend/src/lib/components/NewAdventure.svelte
+++ b/frontend/src/lib/components/NewAdventure.svelte
@@ -8,6 +8,8 @@
export let type: string = 'visited';
+ import Wikipedia from '~icons/mdi/wikipedia';
+
let newAdventure: Adventure = {
id: NaN,
type: type,
@@ -49,6 +51,14 @@
}
}
+ async function generateDesc() {
+ let res = await fetch(`/api/generate/desc/?name=${newAdventure.name}`);
+ let data = await res.json();
+ if (data.extract) {
+ newAdventure.description = data.extract;
+ }
+ }
+
async function handleSubmit(event: Event) {
event.preventDefault();
const form = event.target as HTMLFormElement;
@@ -179,6 +189,9 @@
bind:value={newAdventure.description}
class="input input-bordered w-full max-w-xs mt-1 mb-2"
/>
+
diff --git a/frontend/src/routes/api/[...path]/+server.ts b/frontend/src/routes/api/[...path]/+server.ts
new file mode 100644
index 0000000..e6333ce
--- /dev/null
+++ b/frontend/src/routes/api/[...path]/+server.ts
@@ -0,0 +1,46 @@
+const PUBLIC_SERVER_URL = process.env['PUBLIC_SERVER_URL'];
+const endpoint = PUBLIC_SERVER_URL || 'http://localhost:8000';
+import { json } from '@sveltejs/kit';
+
+/** @type {import('./$types').RequestHandler} */
+export async function GET({ url, params, request, fetch, cookies }) {
+ return handleRequest(url, params, request, fetch, cookies);
+}
+
+/** @type {import('./$types').RequestHandler} */
+export async function POST({ url, params, request, fetch, cookies }) {
+ return handleRequest(url, params, request, fetch, cookies);
+}
+
+// Implement other HTTP methods as needed (PUT, DELETE, etc.)
+
+async function handleRequest(url: any, params: any, request: any, fetch: any, cookies: any) {
+ const path = params.path;
+ const targetUrl = `${endpoint}/api/${path}${url.search}&format=json`;
+
+ const headers = new Headers(request.headers);
+
+ const authCookie = cookies.get('auth');
+
+ if (authCookie) {
+ headers.set('Cookie', `${authCookie}`);
+ }
+
+ try {
+ const response = await fetch(targetUrl, {
+ method: request.method,
+ headers: headers,
+ body: request.method !== 'GET' && request.method !== 'HEAD' ? await request.text() : undefined
+ });
+
+ const responseData = await response.text();
+
+ return new Response(responseData, {
+ status: response.status,
+ headers: response.headers
+ });
+ } catch (error) {
+ console.error('Error forwarding request:', error);
+ return json({ error: 'Internal Server Error' }, { status: 500 });
+ }
+}