Skip to content

Commit c5a5f5b

Browse files
committed
migrate some more stuff
1 parent 36646bc commit c5a5f5b

File tree

10 files changed

+71
-46
lines changed

10 files changed

+71
-46
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { getRequestEvent, query } from '$app/server';
2+
import * as session from '$lib/db/session';
3+
4+
export const get_user = query(() => {
5+
const { request } = getRequestEvent();
6+
return session.from_cookie(request.headers.get('cookie'));
7+
});

apps/svelte.dev/src/routes/(authed)/apps/+page.server.js

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

apps/svelte.dev/src/routes/(authed)/apps/+page.svelte

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import { ago } from '$lib/time';
44
import { goto, invalidateAll } from '$app/navigation';
55
import { get_app_context } from '../app-context.js';
6-
7-
let { data } = $props();
6+
import { get_user } from '$lib/remote/auth.remote.js';
7+
import { get_gists } from './data.remote.js';
8+
import { page } from '$app/state';
89
910
const { login, logout } = get_app_context();
1011
@@ -14,6 +15,17 @@
1415
let selected: string[] = $state([]);
1516
const selecting = $derived(selected.length > 0);
1617
18+
const user = $derived(await get_user());
19+
20+
const search = page.url.searchParams.get('search') ?? '';
21+
22+
const { gists, next } = $derived(
23+
await get_gists({
24+
search,
25+
offset: parseInt(page.url.searchParams.get('offset') ?? '0')
26+
})
27+
);
28+
1729
async function destroy_selected() {
1830
const confirmed = confirm(
1931
`Are you sure you want to delete ${selected.length} ${
@@ -54,17 +66,17 @@
5466
</svelte:head>
5567

5668
<div class="apps">
57-
{#if data.user}
69+
{#if user}
5870
<header>
5971
<h1>Your apps</h1>
6072
<div class="user">
6173
<img
6274
class="avatar"
63-
alt="{data.user.github_name || data.user.github_login} avatar"
64-
src={data.user.github_avatar_url}
75+
alt="{user.github_name || user.github_login} avatar"
76+
src={user.github_avatar_url}
6577
/>
6678
<span>
67-
{data.user.github_name || data.user.github_login}
79+
{user.github_name || user.github_login}
6880
(<a onclick={(e) => (e.preventDefault(), logout())} href="/auth/logout">log out</a>)
6981
</span>
7082
</div>
@@ -92,15 +104,15 @@
92104
placeholder="Search"
93105
aria-label="Search"
94106
name="search"
95-
value={data.search}
107+
value={page.url.searchParams.get('search')}
96108
/>
97109
</form>
98110
{/if}
99111
</div>
100112

101-
{#if data.gists.length > 0}
113+
{#if gists.length > 0}
102114
<ul class:selecting>
103-
{#each data.gists as gist}
115+
{#each gists as gist}
104116
<li class:selected={selected.includes(gist.id)}>
105117
<a href={selecting ? undefined : `/playground/${gist.id}`}>
106118
<h2>{gist.name}</h2>
@@ -121,12 +133,10 @@
121133

122134
<div class="pagination">
123135
<!-- TODO more sophisticated pagination -->
124-
{#if data.next !== null && !selecting}
125-
<a
126-
href="/apps?offset={data.next}{data.search
127-
? `&search=${encodeURIComponent(data.search)}`
128-
: ''}">Next page...</a
129-
>
136+
{#if next !== null && !selecting}
137+
<a href="/apps?offset={next}{search ? `&search=${encodeURIComponent(search)}` : ''}">
138+
Next page...
139+
</a>
130140
{/if}
131141
</div>
132142
{:else}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { query } from '$app/server';
2+
import * as gist from '$lib/db/gist';
3+
import { get_user } from '$lib/remote/auth.remote';
4+
import * as v from 'valibot';
5+
6+
export const get_gists = query(
7+
v.object({
8+
search: v.string(),
9+
offset: v.optional(v.number())
10+
}),
11+
async ({ search, offset = 0 }) => {
12+
const user = await get_user();
13+
14+
if (!user) {
15+
return { gists: [], next: null };
16+
}
17+
18+
return gist.list(user, { offset, search });
19+
}
20+
);

apps/svelte.dev/src/routes/(authed)/apps/destroy/+server.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import * as session from '$lib/db/session';
21
import * as gist from '$lib/db/gist';
2+
import { get_user } from '$lib/remote/auth.remote.js';
33

4+
// TODO this should be a `form` or `command`
45
export async function POST({ request }) {
5-
const user = await session.from_cookie(request.headers.get('cookie'));
6+
const user = await get_user();
67
if (!user) return new Response(undefined, { status: 401 });
78

89
const body = await request.json();

apps/svelte.dev/src/routes/(authed)/playground/[id]/+page.svelte

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import { page } from '$app/state';
1313
import type { File } from '@sveltejs/repl/workspace';
1414
import { get_example, get_example_index, get_gist } from '../data.remote.js';
15+
import { get_user } from '$lib/remote/auth.remote.js';
1516
1617
let { data, params } = $props();
1718
@@ -181,7 +182,9 @@
181182
}
182183
}
183184
184-
const relaxed = $derived(gist.relaxed || (data.user && data.user.id === gist.owner));
185+
const user = $derived(await get_user());
186+
187+
const relaxed = $derived(gist.relaxed || (user && user.id === gist.owner));
185188
</script>
186189

187190
<svelte:head>
@@ -214,7 +217,7 @@
214217
<div class="repl-outer">
215218
<AppControls
216219
{examples}
217-
user={data.user}
220+
{user}
218221
{gist}
219222
forked={handle_fork}
220223
saved={handle_save}

apps/svelte.dev/src/routes/(authed)/playground/[id]/AppControls.svelte

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
import SecondaryNav from '$lib/components/SecondaryNav.svelte';
1111
import type { File } from '@sveltejs/repl/workspace';
1212
import type { Repl } from '@sveltejs/repl';
13+
import { get_user } from '$lib/remote/auth.remote';
1314
1415
interface Props {
1516
examples: Array<{ title: string; examples: any[] }>;
16-
user: User | null;
1717
repl: ReturnType<typeof Repl>;
1818
gist: Gist;
1919
name: string;
@@ -25,7 +25,6 @@
2525
let {
2626
name = $bindable(),
2727
modified = $bindable(),
28-
user,
2928
repl,
3029
gist,
3130
examples,
@@ -44,6 +43,8 @@
4443
return new Promise((f) => setTimeout(f, ms));
4544
}
4645
46+
const user = $derived(await get_user());
47+
4748
const canSave = $derived(user && gist && gist.owner === user.id);
4849
4950
function handleKeydown(event: KeyboardEvent) {

apps/svelte.dev/src/routes/(authed)/playground/[id]/embed/+page.svelte

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import { page } from '$app/state';
88
import { decode_and_decompress_text } from '../gzip.js';
99
import type { File } from '@sveltejs/repl/workspace';
10+
import { get_user } from '$lib/remote/auth.remote.js';
1011
1112
let { data } = $props();
1213
@@ -51,7 +52,9 @@
5152
set_files();
5253
});
5354
54-
const relaxed = $derived(data.gist.relaxed || (data.user && data.user.id === data.gist.owner));
55+
const user = $derived(await get_user());
56+
57+
const relaxed = $derived(data.gist.relaxed || (user && user.id === data.gist.owner));
5558
</script>
5659

5760
<svelte:head>

apps/svelte.dev/src/routes/(authed)/playground/create.json/+server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import * as gist from '$lib/db/gist';
2-
import * as session from '$lib/db/session';
2+
import { get_user } from '$lib/remote/auth.remote.js';
33
import { error, json } from '@sveltejs/kit';
44

55
export async function POST({ request }) {
6-
const user = await session.from_cookie(request.headers.get('cookie'));
6+
const user = await get_user();
77
if (!user) error(401);
88

99
const body = await request.json();

apps/svelte.dev/src/routes/(authed)/playground/save/[id].json/+server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import * as gist from '$lib/db/gist';
2-
import * as session from '$lib/db/session';
2+
import { get_user } from '$lib/remote/auth.remote.js';
33
import { error } from '@sveltejs/kit';
44

55
// TODO reimplement as an action
66
export async function PUT({ params, request }) {
7-
const user = await session.from_cookie(request.headers.get('cookie'));
7+
const user = await get_user();
88
if (!user) error(401, 'Unauthorized');
99

1010
const body = await request.json();

0 commit comments

Comments
 (0)