Skip to content

Commit b740b9e

Browse files
committed
fix: test
1 parent 96c241e commit b740b9e

File tree

7 files changed

+79
-87
lines changed

7 files changed

+79
-87
lines changed

src/data/api/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ async function announcements(options: GetAnnouncementsOptions = {}): Promise<Ann
150150
return { announcements };
151151
}
152152

153-
async function get_announcement_by_id(id: number): Promise<{ announcement: ResponseAnnouncement }> {
153+
export async function get_announcement_by_id(id: number): Promise<{ announcement: ResponseAnnouncement }> {
154154
return { announcement: (await get_json(`announcements/${id}`)) as ResponseAnnouncement };
155155
}
156156

src/routes/+error.svelte

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/routes/+layout.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export const prerender = true;
1+
export const prerender = 'auto';

src/routes/announcements/[slug]/+layout.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import { error } from '@sveltejs/kit';
2+
import type { PageServerLoad, EntryGenerator } from './$types';
3+
import { createQuery, useQueryClient } from '@tanstack/svelte-query';
4+
import { get_announcement_by_id, queries } from '$data/api';
5+
6+
export const prerender = false; // Temporarily disable
7+
export const ssr = true;
8+
9+
// This tells SvelteKit which dynamic routes to prerender
10+
export const entries: EntryGenerator = async ({ fetch }) => {
11+
try {
12+
console.log('Generating entries for prerendering...');
13+
const response = await fetch('/api/announcements');
14+
15+
if (!response.ok) {
16+
console.warn('Failed to fetch announcements for prerendering');
17+
return [];
18+
}
19+
20+
const data = await response.json();
21+
22+
const entries = data.announcements.map((announcement: any) => {
23+
const slug = announcement.title
24+
.toLowerCase()
25+
.replace(/[^a-z0-9]+/g, '-')
26+
.replace(/^-+|-+$/g, '');
27+
28+
console.log(`Generated entry: ${announcement.id}-${slug}`);
29+
return { slug: `${announcement.id}-${slug}` };
30+
});
31+
32+
// Always include the create route
33+
entries.push({ slug: 'create' });
34+
35+
return entries;
36+
} catch (error) {
37+
console.warn('Error generating entries:', error);
38+
return [{ slug: 'create' }]; // At least include create route
39+
}
40+
};
41+
42+
export const load: PageServerLoad = async ({ params, fetch }) => {
43+
console.log('=== SERVER LOAD CALLED ===', params.slug);
44+
45+
const announcementId = 14;
46+
console.log('Parsed announcementId:', announcementId);
47+
48+
if (!announcementId || announcementId === 'create') {
49+
console.log('Returning isCreating: true');
50+
return { isCreating: true };
51+
}
52+
53+
try {
54+
console.log('Fetching announcement...');
55+
const response = await get_announcement_by_id(announcementId);
56+
console.log('Successfully loaded announcement:', response.announcement?.title);
57+
58+
return {
59+
isCreating: false,
60+
announcement: response.announcement,
61+
announcementId: announcementId
62+
};
63+
} catch (err) {
64+
// console.log('Caught error:', err);
65+
// throw error(404, 'Announcement not found');
66+
}
67+
};
Lines changed: 6 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,17 @@
11
<script lang="ts">
22
import { fly } from 'svelte/transition';
33
import { quintOut } from 'svelte/easing';
4-
import { createQuery } from '@tanstack/svelte-query';
5-
import { queries } from '$data/api';
6-
import { page } from '$app/stores';
74
import Announcement from './Announcement.svelte';
8-
import Query from '$lib/components/Query.svelte';
9-
import { browser } from '$app/environment';
10-
import { onMount } from 'svelte';
5+
import type { PageData } from './$types';
116
12-
let announcementIdNumber: number | undefined = undefined;
13-
let isCreating: boolean = false;
7+
// Get data from your server load function
8+
export let data: PageData;
149
15-
$: {
16-
const lastSegment = $page.url.pathname.split('/').pop();
17-
isCreating = lastSegment === 'create';
18-
announcementIdNumber = isCreating ? undefined : Number(lastSegment.split('-')[0]);
19-
}
10+
console.log('Page component received data:', data);
2011
21-
$: query =
22-
isReady && browser && announcementIdNumber
23-
? createQuery(queries.announcementById(announcementIdNumber))
24-
: null;
25-
26-
$: announcement = $query?.data?.announcement || undefined;
27-
28-
$: slug = announcement?.title
29-
? announcement.title
30-
.toLowerCase()
31-
.replace(/[^a-z0-9]+/g, '-')
32-
.replace(/^-+|-+$/g, '')
33-
: '';
34-
35-
$: {
36-
const slugPathname = `/announcements/${announcementIdNumber}-${slug}`;
37-
if (slug && $page.url.pathname !== slugPathname) {
38-
window.history.replaceState(null, '', slugPathname);
39-
}
40-
}
41-
42-
let isReady = false;
43-
44-
onMount(() => {
45-
isReady = true;
46-
});
12+
$: ({ isCreating, announcement, announcementId } = data);
4713
</script>
4814

4915
<main class="wrapper" in:fly={{ y: 10, easing: quintOut, duration: 750 }}>
50-
{#if !isReady}
51-
<div></div>
52-
{:else}
53-
<Query {query}>...</Query>
54-
{/if}
16+
<Announcement {isCreating} {announcement} {announcementId} />
5517
</main>

svelte.config.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ const config = {
88
kit: {
99
// adapter-static has vercel detection, but that does not let you set a custom 404 page easily.
1010
// Instead, we have to use a wrapper that generates a vercel config if on vercel...
11-
adapter: adapter({
12-
pages: 'public',
13-
fallback: '404.html'
14-
}),
11+
adapter: adapter({}),
12+
prerender: {
13+
entries: ['*'] // This should be fine
14+
},
1515
env: {
1616
publicPrefix: 'RV'
1717
},

0 commit comments

Comments
 (0)