= (props) => {
+ useBeforeLeave((e: BeforeLeaveEventArgs) => {
+ if (typeof e.to === "number") {
+ refreshTab(e.to.toString());
+ return;
+ }
+ refreshTab(e.to);
+ });
return (
- {props.children}
+
+
+ {props.children}
+
+
);
};
diff --git a/packages/solid/src/components/shell/Navigation.tsx b/packages/solid/src/components/shell/Navigation.tsx
index 15231be..cb47240 100644
--- a/packages/solid/src/components/shell/Navigation.tsx
+++ b/packages/solid/src/components/shell/Navigation.tsx
@@ -1,9 +1,16 @@
import { createSignal, For } from "solid-js";
import { HomeIcon } from "../icons/Home";
import { MusicIcon } from "../icons/Music";
-import { NavigationRail, NavigationRailAction, NavigationRailActions, NavigationRailMenu } from "@m3-components/solid";
+import {
+ NavigationRailFAB,
+ NavigationRail,
+ NavigationRailAction,
+ NavigationRailActions,
+ NavigationRailMenu
+} from "@m3-components/solid";
import { A } from "@solidjs/router";
import { AlbumIcon } from "~/components/icons/Album";
+import { SearchIcon } from "../icons/Search";
export const [activeTab, setActiveTab] = createSignal(-1);
export const [navigationExpanded, setNavigationExpanded] = createSignal(false);
@@ -29,6 +36,9 @@ export const NavigationRegion = () => {
return (
setNavigationExpanded(!navigationExpanded())} />
+
+
+
{(action, index) => (
diff --git a/packages/solid/src/routes/index.tsx b/packages/solid/src/routes/index.tsx
index 35cf959..6ae7070 100644
--- a/packages/solid/src/routes/index.tsx
+++ b/packages/solid/src/routes/index.tsx
@@ -1,5 +1,36 @@
import { Layout } from "~/components/shell/Layout";
+import { dbMain } from "~/drizzle";
+import { bilibiliMetadata, latestVideoSnapshot } from "~db/main/schema";
+import { and, desc, eq, gte, lt } from "drizzle-orm";
+import { createAsync, query } from "@solidjs/router";
+import { For, Suspense } from "solid-js";
+
+const getVideoCloseTo1M = query(async () => {
+ "use server";
+ return dbMain
+ .select()
+ .from(bilibiliMetadata)
+ .leftJoin(latestVideoSnapshot, eq(latestVideoSnapshot.aid, bilibiliMetadata.aid))
+ .where(and(gte(latestVideoSnapshot.views, 900000), lt(latestVideoSnapshot.views, 1000000)))
+ .orderBy(desc(latestVideoSnapshot.views))
+ .limit(20);
+}, "data");
export default function Home() {
- return ;
+ const videos = createAsync(() => getVideoCloseTo1M());
+ return (
+
+ 中V档案馆
+
+ 中 V 档案馆
+ 传说助攻
+
+
+ Loading...
}>
+ {(video) => {video.bilibili_metadata.aid}}
+
+
+
+
+ );
}
diff --git a/packages/solid/src/routes/songs/index.tsx b/packages/solid/src/routes/songs/index.tsx
index d5ec7f6..e9489bd 100644
--- a/packages/solid/src/routes/songs/index.tsx
+++ b/packages/solid/src/routes/songs/index.tsx
@@ -3,9 +3,7 @@ import { Layout } from "~/components/shell/Layout";
export default function SongsHome() {
return (
-
- 歌曲
-
+ 歌曲
);
}