Skip to content

Commit 6a24d62

Browse files
feat: update rom route path
1 parent c6ccc49 commit 6a24d62

23 files changed

+29
-17
lines changed

src/controllers/get-rom.ts

+15-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,18 @@
1+
import { and, eq } from 'drizzle-orm'
2+
import { getContextData } from 'waku/middleware/context'
3+
import { rom } from '@/databases/library/schema.ts'
14
import { getRoms } from './get-roms.ts'
25

3-
export async function getRom(id: string) {
4-
const roms = await getRoms({ id })
5-
return roms.at(0)
6+
export async function getRom({ fileName, platform }: { fileName: string; platform: string }) {
7+
const { currentUser, db } = getContextData()
8+
const [result] = await db.library
9+
.select()
10+
.from(rom)
11+
.orderBy(rom.file_name)
12+
.where(and(eq(rom.file_name, fileName), eq(rom.platform, platform), eq(rom.user_id, currentUser.id)))
13+
14+
if (result) {
15+
const [r] = await getRoms({ id: result.id })
16+
return r
17+
}
618
}

src/entries.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import type { PathsForPages } from 'waku/router'
44
import { api } from '@/api/index.ts'
55
import { LibraryPage } from '@/pages/library/page.tsx'
66
import { PlatformPage } from '@/pages/library/platform/page.tsx'
7-
import { RomPage } from '@/pages/library/rom/page.tsx'
7+
import { RomPage } from '@/pages/library/platform/rom/page.tsx'
88
import { LoginPage } from '@/pages/login/page.tsx'
99
import { HomePage } from '@/pages/page.tsx'
1010
import { Root } from '@/pages/root.tsx'
@@ -17,7 +17,7 @@ const pages: ReturnType<typeof createPages> = createPages(({ createApi, createPa
1717
createPage({ component: LoginPage, path: '/login', render: 'dynamic' }),
1818
createPage({ component: LibraryPage, path: '/library', render: 'dynamic' }),
1919
createPage({ component: PlatformPage, path: '/library/platform/[platform]', render: 'dynamic' }),
20-
createPage({ component: RomPage, path: '/library/rom/[id]', render: 'dynamic' }),
20+
createPage({ component: RomPage, path: '/library/platform/[platform]/rom/[fileName]', render: 'dynamic' }),
2121

2222
createApi({
2323
handlers: { DELETE: apiHandler, GET: apiHandler, PATCH: apiHandler, POST: apiHandler, PUT: apiHandler },

src/pages/library/components/game-entry.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export function GameEntry({ rom, width }) {
1313
<Link
1414
className='block'
1515
style={{ width: width || 'auto' }}
16-
to={`/library/rom/${rom.id}`}
16+
to={`/library/platform/${encodeURIComponent(rom.platform)}/rom/${encodeURIComponent(rom.file_name)}`}
1717
unstable_pending={
1818
<div className='z-1 absolute inset-0'>
1919
<div className='grid h-4/5 w-full place-items-center'>
File renamed without changes.

src/pages/library/rom/components/game-background.tsx src/pages/library/platform/rom/components/game-background.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
'use client'
2-
import { MainBackground } from '../../components/main-background.tsx'
3-
import { useRomCover } from '../../hooks/use-rom-cover.ts'
2+
import { MainBackground } from '../../../components/main-background.tsx'
3+
import { useRomCover } from '../../../hooks/use-rom-cover.ts'
44

55
export function GameBackground({ rom }) {
66
const { data: cover, isLoading } = useRomCover(rom)

src/pages/library/rom/components/game-cover.tsx src/pages/library/platform/rom/components/game-cover.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
'use client'
2-
import { useRomCover } from '../../hooks/use-rom-cover.ts'
2+
import { useRomCover } from '../../../hooks/use-rom-cover.ts'
33

44
export function GameCover({ rom }) {
55
const { data: cover, isLoading } = useRomCover(rom)

src/pages/library/rom/components/rom-app-layout.tsx src/pages/library/platform/rom/components/rom-app-layout.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use client'
22
import { AnimatePresence, motion } from 'motion/react'
33
import { type ReactNode, type UIEventHandler, useState } from 'react'
4-
import AppLayout from '../../components/app-layout.tsx'
4+
import AppLayout from '../../../components/app-layout.tsx'
55
import { useEmulator } from '../hooks/use-emulator.ts'
66

77
interface RomAppLayoutProps {

src/pages/library/rom/hooks/use-emulator.ts src/pages/library/platform/rom/hooks/use-emulator.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { useAtom } from 'jotai'
22
import { Nostalgist } from 'nostalgist'
33
import useSWRImmutable from 'swr/immutable'
4-
import { usePreference } from '../../hooks/use-preference.ts'
4+
import { usePreference } from '../../../hooks/use-preference.ts'
55
import { emulatorLaunchedAtom } from '../atoms.ts'
66
import { useRom } from './use-rom.ts'
77

src/pages/library/rom/hooks/use-rom.ts src/pages/library/platform/rom/hooks/use-rom.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { useServerData } from '../../hooks/use-server-data.ts'
1+
import { useServerData } from '../../../hooks/use-server-data.ts'
22

33
export function useRom() {
44
const { rom } = useServerData()

src/pages/library/rom/page.tsx src/pages/library/platform/rom/page.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { getRom } from '@/controllers/get-rom.ts'
22
import { Portal, Theme } from '@/pages/components/radix-themes.ts'
33
import { getRomTitle } from '@/utils/rom.ts'
4-
import AppLayout from '../components/app-layout.tsx'
5-
import { SidebarLinks } from '../components/sidebar-links.tsx'
4+
import AppLayout from '../../components/app-layout.tsx'
5+
import { SidebarLinks } from '../../components/sidebar-links.tsx'
66
import { GameBackground } from './components/game-background.tsx'
77
import { GameCover } from './components/game-cover.tsx'
88
import { GameInfo } from './components/game-info.tsx'
@@ -11,8 +11,8 @@ import { GameOverlay } from './components/game-overlay/game-overlay.tsx'
1111
import { LaunchButton } from './components/launch-button.tsx'
1212
import { MainScrollArea } from './components/main-scroll-area.tsx'
1313

14-
export async function RomPage({ id }) {
15-
const rom = await getRom(id)
14+
export async function RomPage({ fileName, platform }) {
15+
const rom = await getRom({ fileName: decodeURIComponent(fileName), platform: decodeURIComponent(platform) })
1616
if (!rom) {
1717
return '404'
1818
}

src/utils/rom.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ export function getPlatformGameIcon(platform: string, type = 'game') {
4848
}
4949

5050
export function getRomTitle(rom) {
51-
return rom.launchboxGame?.name || rom.libretroGame?.name || path.parse(rom.file_name).name
51+
return path.parse(rom.file_name).name
5252
}
5353

5454
export function getCompactName(name: string) {

0 commit comments

Comments
 (0)