This commit is contained in:
Chris Kruining 2025-04-14 23:50:40 +02:00
parent 350c767a13
commit 44fa60a04f
Signed by: chris
SSH key fingerprint: SHA256:nG82MUfuVdRVyCKKWqhY+pCrbz9nbX6uzUns4RKa1Pg
4 changed files with 77 additions and 24 deletions

View file

@ -1,32 +1,71 @@
import type { Category, Entry } from './types'; import type { Category, Entry } from "./types";
import { query } from "@solidjs/router"; import { query } from "@solidjs/router";
import { entries } from './data'; import { entries } from "./data";
export const listCategories = query(async (): Promise<Category[]> => { export const listCategories = query(async (): Promise<Category[]> => {
"use server"; "use server";
return [ return [
{ {
label: 'Popular', label: "Popular",
entries: [entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!, entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!], entries: [
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
],
}, },
{ {
label: 'Drama', label: "Drama",
entries: [entries.get(5)!, entries.get(6)!, entries.get(7)!, entries.get(8)!, entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!], entries: [
entries.get("5")!,
entries.get("6")!,
entries.get("7")!,
entries.get("8")!,
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
],
}, },
{ {
label: 'Now streaming', label: "Now streaming",
entries: [entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!, entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!], entries: [
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
],
}, },
{ {
label: 'Sci-Fi & Fantasy', label: "Sci-Fi & Fantasy",
entries: [entries.get(9)!, entries.get(11)!, entries.get(12)!, entries.get(13)!, entries.get(1)!, entries.get(2)!, entries.get(3)!, entries.get(4)!], entries: [
entries.get("9")!,
entries.get("11")!,
entries.get("12")!,
entries.get("13")!,
entries.get("1")!,
entries.get("2")!,
entries.get("3")!,
entries.get("4")!,
],
}, },
]; ];
}, 'series.categories.list'); }, "series.categories.list");
export const getEntry = query(async (id: Entry['id']): Promise<Entry | undefined> => { export const getEntry = query(
"use server"; async (id: Entry["id"]): Promise<Entry | undefined> => {
"use server";
return entries.get(id); return entries.get(id);
}, "series.get"); },
"series.get",
);

View file

@ -45,6 +45,7 @@ export const Top: Component<TopProps> = (props) => {
</button> </button>
<div class={css.accountMenu} id="account-menu-popover" popover> <div class={css.accountMenu} id="account-menu-popover" popover>
<Profile user={user()} /> <Profile user={user()} />
<a href="/settings">Settings</a>
<form method="post" onSubmit={logout}> <form method="post" onSubmit={logout}>
<button type="submit">Log out</button> <button type="submit">Log out</button>
</form> </form>

View file

@ -1,20 +1,30 @@
import { Title } from '@solidjs/meta'; import { Title } from "@solidjs/meta";
import { createAsync } from '@solidjs/router'; import { createAsync, query } from "@solidjs/router";
import { Overview } from '~/features/overview'; import { Overview } from "~/features/overview";
import { listCategories, getEntry } from '~/features/content'; import { listCategories, getEntry } from "~/features/content";
import { Show } from 'solid-js'; import { createEffect, Show } from "solid-js";
const load = query(async () => {
"use server";
// const response =
}, "home.data");
export const route = { export const route = {
load: () => ({ preload: async () => ({
highlight: getEntry(14), highlight: await getEntry("14"),
categories: listCategories(), categories: await listCategories(),
}), }),
}; };
export default function Home() { export default function Home() {
const highlight = createAsync(() => getEntry(14)); const highlight = createAsync(() => getEntry("14"));
const categories = createAsync(() => listCategories()); const categories = createAsync(() => listCategories());
createEffect(() => {
console.log(highlight(), categories());
});
return ( return (
<> <>
<Title>Home</Title> <Title>Home</Title>

View file

@ -0,0 +1,3 @@
export default function Settings() {
return <>SETTINGS PAGE</>;
}