From 02a4f2c9a9aff8f7282c531de0e2797dacc2c2f8 Mon Sep 17 00:00:00 2001 From: Simeon Radivoev Date: Mon, 6 Apr 2026 00:13:53 +0300 Subject: [PATCH] refactor: Removed unused vars and imports --- package.json | 3 ++- src/bun/api/auth.ts | 2 +- src/bun/api/games/services/statusService.ts | 4 ++-- src/bun/api/games/services/utils.ts | 3 +-- src/bun/api/hooks/emulators.ts | 1 - src/bun/api/jobs/launch-game-job.ts | 5 ++--- .../com.simeonradivoev.gameflow.dolphin/dolphin.ts | 2 +- .../com.simeonradivoev.gameflow.pcsx2/pcsx2.ts | 12 ++++++++---- .../com.simeonradivoev.gameflow.xemu/xemu.ts | 2 -- .../sources/com.simeonradivoev.gameflow.romm/romm.ts | 7 +++++-- src/bun/api/system.ts | 2 +- src/bun/types/typesc.schema.ts | 1 - src/bun/utils/downloader.ts | 2 +- src/mainview/components/AutoFocus.tsx | 2 +- src/mainview/components/FocusTooltip.tsx | 2 +- src/mainview/components/LoadMoreButton.tsx | 1 - src/mainview/components/options/LocalOption.tsx | 1 - src/mainview/components/options/OptionDropdown.tsx | 2 +- src/mainview/components/options/SettingsDropdown.tsx | 3 +-- src/mainview/components/store/StoreEmulatorCard.tsx | 4 +--- src/mainview/routes/game/$source.$id.tsx | 6 +++--- src/mainview/routes/settings/accounts.tsx | 2 +- src/mainview/routes/settings/emulators.tsx | 4 ++-- src/mainview/routes/store/details.emulator.$id.tsx | 4 ++-- src/mainview/routes/store/tab/emulators.tsx | 4 ++-- src/mainview/routes/store/tab/route.tsx | 1 - src/shared/constants.ts | 1 - 27 files changed, 39 insertions(+), 44 deletions(-) diff --git a/package.json b/package.json index fc73e47..6869a4b 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,8 @@ "package:Linux": "bun run build:prod:appimage", "package:Windows": "bun run build:prod", "download:chromium": "bun scripts/download-chromium.ts --out=./bin/chromium", - "build:audiosprites": "bun ./scripts/generate-audio-sprites.ts" + "build:audiosprites": "bun ./scripts/generate-audio-sprites.ts", + "tsc": "tsc --noEmit" }, "dependencies": { "7zip-bin": "^5.2.0", diff --git a/src/bun/api/auth.ts b/src/bun/api/auth.ts index b171ed0..6cf37eb 100644 --- a/src/bun/api/auth.ts +++ b/src/bun/api/auth.ts @@ -1,5 +1,5 @@ import Elysia, { status } from "elysia"; -import { config, events, jar, plugins, taskQueue } from "./app"; +import { config, events, plugins, taskQueue } from "./app"; import z from "zod"; import { getCurrentUserApiUsersMeGet, tokenApiTokenPost, UserSchema } from "@clients/romm"; import secrets from '../api/secrets'; diff --git a/src/bun/api/games/services/statusService.ts b/src/bun/api/games/services/statusService.ts index 4f1d99b..79aaa10 100644 --- a/src/bun/api/games/services/statusService.ts +++ b/src/bun/api/games/services/statusService.ts @@ -1,9 +1,9 @@ import { RPC_URL, } from "@shared/constants"; -import { config, customEmulators, db, emulatorsDb, plugins, taskQueue } from "../../app"; +import { config, db, emulatorsDb, plugins, taskQueue } from "../../app"; import { findExecs, getValidLaunchCommands } from "./launchGameService"; import * as emulatorSchema from '@schema/emulators'; import { and, eq } from "drizzle-orm"; -import { getErrorMessage, hashFile } from "@/bun/utils"; +import { getErrorMessage } from "@/bun/utils"; import { checkFiles, getLocalGameMatch } from "./utils"; import fs from 'node:fs/promises'; import { getStoreGameFromId } from "../../store/services/gamesService"; diff --git a/src/bun/api/games/services/utils.ts b/src/bun/api/games/services/utils.ts index f40eb8a..cb53377 100644 --- a/src/bun/api/games/services/utils.ts +++ b/src/bun/api/games/services/utils.ts @@ -5,10 +5,9 @@ import { config, db, emulatorsDb, plugins } from "../../app"; import { and, eq } from "drizzle-orm"; import * as schema from "@schema/app"; import { StoreGameType } from "@shared/constants"; -import { DetailedRomSchema, getCurrentUserApiUsersMeGet, getRomApiRomsIdGet, SimpleRomSchema } from "@clients/romm"; import * as emulatorSchema from "@schema/emulators"; import { extractStoreGameSourceId, getStoreGame } from "../../store/services/gamesService"; -import { hashFile, isSteamDeck, isSteamDeckGameMode } from "@/bun/utils"; +import { hashFile } from "@/bun/utils"; export async function calculateSize (installPath: string | null) { diff --git a/src/bun/api/hooks/emulators.ts b/src/bun/api/hooks/emulators.ts index b968197..6740b30 100644 --- a/src/bun/api/hooks/emulators.ts +++ b/src/bun/api/hooks/emulators.ts @@ -1,6 +1,5 @@ import { EmulatorDownloadInfoType, EmulatorPackageType } from "@/shared/constants"; import { AsyncSeriesBailHook, AsyncSeriesHook } from "tapable"; -import { any } from "zod"; interface EmulatorPostInstallContext { diff --git a/src/bun/api/jobs/launch-game-job.ts b/src/bun/api/jobs/launch-game-job.ts index c58119c..183e985 100644 --- a/src/bun/api/jobs/launch-game-job.ts +++ b/src/bun/api/jobs/launch-game-job.ts @@ -1,11 +1,10 @@ import z from "zod"; import { IJob, JobContext } from "../task-queue"; import { ActiveGameSchema, ActiveGameType } from "@/bun/types/typesc.schema"; -import { config, db, events, plugins } from "../app"; +import { db, events, plugins } from "../app"; import * as appSchema from "@schema/app"; -import { eq, sql } from "drizzle-orm"; +import { eq } from "drizzle-orm"; import { spawn } from 'node:child_process'; -import path from "node:path"; export class LaunchGameJob implements IJob, "playing"> { diff --git a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.dolphin/dolphin.ts b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.dolphin/dolphin.ts index 05fde39..038cdfb 100644 --- a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.dolphin/dolphin.ts +++ b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.dolphin/dolphin.ts @@ -1,5 +1,5 @@ -import { config, db } from "@/bun/api/app"; +import { config } from "@/bun/api/app"; import { PluginContextType, PluginType } from "@/bun/types/typesc.schema"; import path from 'node:path'; import desc from './package.json'; diff --git a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.pcsx2/pcsx2.ts b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.pcsx2/pcsx2.ts index a5fa18f..5317395 100644 --- a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.pcsx2/pcsx2.ts +++ b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.pcsx2/pcsx2.ts @@ -1,5 +1,5 @@ -import { config, db } from "@/bun/api/app"; +import { config } from "@/bun/api/app"; import { PluginContextType, PluginType } from "@/bun/types/typesc.schema"; import configFile from './PCSX2.ini' with { type: 'file' }; import Mustache from 'mustache'; @@ -59,7 +59,7 @@ export default class PCSX2Integration implements PluginType "4k": 6, }; - const view = { + const paths = { BIOS_PATH: biosFolder, SNAPSHOTS_PATH: path.join(storageFolder, 'snaps'), SAVE_STATES_PATH: path.join(savesFolder, 'states'), @@ -68,13 +68,17 @@ export default class PCSX2Integration implements PluginType COVERS_PATH: path.join(storageFolder, 'covers'), TEXTURES_PATH: path.join(storageFolder, 'textures'), RECURSIVE_PATHS: path.join(config.get('downloadPath'), 'roms', 'PS2'), + }; + + await Promise.all(Object.values(paths).map(p => ensureDir(p))); + + const view = { + ...paths, ENABLE_WIDESCREEN: config.get('emulatorWidescreen'), ASPECT_RATIO: config.get('emulatorWidescreen') ? "16:9" : "Auto 4:3/3:2", UPSCALE_MULTIPLIER: resolutionMapping[config.get('emulatorResolution')] ?? 1 }; - await Promise.all(Object.values(view).map(p => ensureDir(p))); - let pscx2Path = ''; if (process.platform === 'win32') pscx2Path = path.join(ctx.autoValidCommand.metadata.emulatorDir, 'inis'); diff --git a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.xemu/xemu.ts b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.xemu/xemu.ts index d81722a..49e56f3 100644 --- a/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.xemu/xemu.ts +++ b/src/bun/api/plugins/builtin/emulators/com.simeonradivoev.gameflow.xemu/xemu.ts @@ -1,9 +1,7 @@ import { PluginContextType, PluginType } from "@/bun/types/typesc.schema"; import desc from './package.json'; -import { GameflowHooks } from "@/bun/api/hooks/app"; import { config } from "@/bun/api/app"; import path from "node:path"; -import { ensureDir } from "fs-extra"; import toml, { TomlTable } from 'smol-toml'; import fs from 'node:fs/promises'; import bin from './eeprom.bin' with { type: 'file' }; diff --git a/src/bun/api/plugins/builtin/sources/com.simeonradivoev.gameflow.romm/romm.ts b/src/bun/api/plugins/builtin/sources/com.simeonradivoev.gameflow.romm/romm.ts index ac5439b..2b3621c 100644 --- a/src/bun/api/plugins/builtin/sources/com.simeonradivoev.gameflow.romm/romm.ts +++ b/src/bun/api/plugins/builtin/sources/com.simeonradivoev.gameflow.romm/romm.ts @@ -138,8 +138,11 @@ export default class RommIntegration implements PluginType }); games.push(...rommGames.data.items.map(g => { - const game: FrontEndGameType & { igdb_id?: number; } = this.convertRomToFrontend(g); - game.igdb_id = g.igdb_id ?? undefined; + const game: FrontEndGameTypeWithIds = { + ...this.convertRomToFrontend(g), + igdb_id: g.igdb_id, + ra_id: g.ra_id + }; return game; })); } diff --git a/src/bun/api/system.ts b/src/bun/api/system.ts index aa9207e..720a10b 100644 --- a/src/bun/api/system.ts +++ b/src/bun/api/system.ts @@ -10,7 +10,7 @@ import path, { dirname } from "node:path"; import { DirSchema, SystemInfoSchema } from "@/shared/constants"; import { getDevices, getDevicesCurated } from "./drives"; import getFolderSize from "get-folder-size"; -import si, { battery } from 'systeminformation'; +import si from 'systeminformation'; import { getStoreFolder } from "./store/services/gamesService"; export const system = new Elysia({ prefix: '/api/system' }) diff --git a/src/bun/types/typesc.schema.ts b/src/bun/types/typesc.schema.ts index ee1da2b..aafc779 100644 --- a/src/bun/types/typesc.schema.ts +++ b/src/bun/types/typesc.schema.ts @@ -1,6 +1,5 @@ import z from "zod"; import { GameflowHooks } from "../api/hooks/app"; -import { ChildProcess } from "node:child_process"; export const PluginContextSchema = z.object({ hooks: z.instanceof(GameflowHooks) diff --git a/src/bun/utils/downloader.ts b/src/bun/utils/downloader.ts index 2a014b9..8d443c2 100644 --- a/src/bun/utils/downloader.ts +++ b/src/bun/utils/downloader.ts @@ -1,4 +1,4 @@ -import { ensureDir, move } from "fs-extra"; +import { ensureDir } from "fs-extra"; import path from 'node:path'; import fs from 'node:fs/promises'; diff --git a/src/mainview/components/AutoFocus.tsx b/src/mainview/components/AutoFocus.tsx index 8c42502..74c6da4 100644 --- a/src/mainview/components/AutoFocus.tsx +++ b/src/mainview/components/AutoFocus.tsx @@ -1,5 +1,5 @@ import { doesFocusableExist, FocusDetails, getCurrentFocusKey } from "@noriginmedia/norigin-spatial-navigation"; -import { useEffect, useLayoutEffect } from "react"; +import { useLayoutEffect } from "react"; export function AutoFocus (data: { parentKey?: string; diff --git a/src/mainview/components/FocusTooltip.tsx b/src/mainview/components/FocusTooltip.tsx index 6916c1e..28f4cf1 100644 --- a/src/mainview/components/FocusTooltip.tsx +++ b/src/mainview/components/FocusTooltip.tsx @@ -1,4 +1,4 @@ -import { Ref, RefObject, useEffect, useState } from "react"; +import { RefObject, useState } from "react"; import { useFocusEventListener } from "../scripts/spatialNavigation"; import useActiveControl from "../scripts/gamepads"; import { twMerge } from "tailwind-merge"; diff --git a/src/mainview/components/LoadMoreButton.tsx b/src/mainview/components/LoadMoreButton.tsx index 84db100..afcd9b7 100644 --- a/src/mainview/components/LoadMoreButton.tsx +++ b/src/mainview/components/LoadMoreButton.tsx @@ -1,7 +1,6 @@ import { setFocus, useFocusable } from "@noriginmedia/norigin-spatial-navigation"; import { FOCUS_KEYS } from "../scripts/types"; import { useIntersectionObserver } from "usehooks-ts"; -import { useEffect } from "react"; export default function LoadMoreButton (data: { isFetching: boolean; lastId?: FrontEndId; } & FocusParams & InteractParams) { diff --git a/src/mainview/components/options/LocalOption.tsx b/src/mainview/components/options/LocalOption.tsx index 72de9ef..7e55506 100644 --- a/src/mainview/components/options/LocalOption.tsx +++ b/src/mainview/components/options/LocalOption.tsx @@ -21,7 +21,6 @@ export function LocalOption (data: { {data.type === 'dropdown' && data.values && diff --git a/src/mainview/components/options/OptionDropdown.tsx b/src/mainview/components/options/OptionDropdown.tsx index 239f70c..e2ed246 100644 --- a/src/mainview/components/options/OptionDropdown.tsx +++ b/src/mainview/components/options/OptionDropdown.tsx @@ -1,4 +1,4 @@ -import { FocusEventHandler, HTMLInputAutoCompleteAttribute, HTMLInputTypeAttribute, JSX, useState } from "react"; +import { FocusEventHandler, HTMLInputAutoCompleteAttribute, JSX, useState } from "react"; import { twMerge } from "tailwind-merge"; import { useFocusable } from "@noriginmedia/norigin-spatial-navigation"; import { ContextDialog, ContextList, DialogEntry } from "../ContextDialog"; diff --git a/src/mainview/components/options/SettingsDropdown.tsx b/src/mainview/components/options/SettingsDropdown.tsx index 91f8451..563b859 100644 --- a/src/mainview/components/options/SettingsDropdown.tsx +++ b/src/mainview/components/options/SettingsDropdown.tsx @@ -1,8 +1,7 @@ -import { HTMLInputTypeAttribute, JSX, useCallback, useEffect, useState } from "react"; +import { JSX, useCallback, useEffect, useState } from "react"; import { SettingsType } from "../../../shared/constants"; import { useMutation, useQuery } from "@tanstack/react-query"; import { OptionSpace } from "./OptionSpace"; -import { OptionInput } from "./OptionInput"; import { getSettingQuery, setSettingMutation } from "@queries/settings"; import { OptionDropdown } from "./OptionDropdown"; diff --git a/src/mainview/components/store/StoreEmulatorCard.tsx b/src/mainview/components/store/StoreEmulatorCard.tsx index a9f7720..d9b81f7 100644 --- a/src/mainview/components/store/StoreEmulatorCard.tsx +++ b/src/mainview/components/store/StoreEmulatorCard.tsx @@ -1,11 +1,9 @@ import { twMerge } from "tailwind-merge"; import { RPC_URL } from "@/shared/constants"; -import { Button } from "../options/Button"; -import useActiveControl from "@/mainview/scripts/gamepads"; import { useFocusable } from "@noriginmedia/norigin-spatial-navigation"; import { GamePadButtonCode, useShortcuts } from "@/mainview/scripts/shortcuts"; -import { BadgeCheck, ChevronRight, CircleFadingArrowUp, EllipsisVertical, FileQuestion, IceCream2, Package, Sparkles, Store, WandSparkles } from "lucide-react"; +import { CircleFadingArrowUp, FileQuestion, IceCream2, Package, Store, WandSparkles } from "lucide-react"; import { FOCUS_KEYS } from "@/mainview/scripts/types"; import { FlatpackIcon } from "@/mainview/scripts/brandIcons"; import { JSX } from "react"; diff --git a/src/mainview/routes/game/$source.$id.tsx b/src/mainview/routes/game/$source.$id.tsx index 511ed9b..5f9246c 100644 --- a/src/mainview/routes/game/$source.$id.tsx +++ b/src/mainview/routes/game/$source.$id.tsx @@ -1,6 +1,6 @@ -import { createFileRoute, ErrorComponentProps, useRouter, useRouterState } from "@tanstack/react-router"; +import { createFileRoute, ErrorComponentProps, useRouter } from "@tanstack/react-router"; import { RPC_URL } from "@shared/constants"; -import { useEffect, useRef, useState } from "react"; +import { useRef, useState } from "react"; import { FocusContext, useFocusable } from "@noriginmedia/norigin-spatial-navigation"; import { Calendar, Folder, Gamepad2, Image, Info, TriangleAlert, Trophy } from "lucide-react"; import { HeaderUI, StickyHeaderUI } from "../../components/Header"; @@ -9,7 +9,7 @@ import { useQuery } from "@tanstack/react-query"; import Shortcuts from "../../components/Shortcuts"; import { GamePadButtonCode, useShortcutContext, useShortcuts } from "@/mainview/scripts/shortcuts"; import Screenshots from "@/mainview/components/Screenshots"; -import { HandleGoBack, scrollIntoViewHandler, useOnNavigateBack, useStickyDataAttr } from "@/mainview/scripts/utils"; +import { HandleGoBack, scrollIntoViewHandler, useOnNavigateBack } from "@/mainview/scripts/utils"; import { FilterUI } from "@/mainview/components/Filters"; import StatList, { StatEntry } from "@/mainview/components/StatList"; import { useIntersectionObserver, useLocalStorage } from "usehooks-ts"; diff --git a/src/mainview/routes/settings/accounts.tsx b/src/mainview/routes/settings/accounts.tsx index 841702b..4ac5625 100644 --- a/src/mainview/routes/settings/accounts.tsx +++ b/src/mainview/routes/settings/accounts.tsx @@ -7,7 +7,7 @@ import import { useIsMutating, useMutation, useQuery } from "@tanstack/react-query"; import { createFileRoute } from "@tanstack/react-router"; import classNames from "classnames"; -import { Key, Link, Lock, LogIn, LogOut, Save, ScanQrCode, Trash, User, X } from "lucide-react"; +import { Key, Link, Lock, LogIn, LogOut, ScanQrCode, User, X } from "lucide-react"; import { useEffect, diff --git a/src/mainview/routes/settings/emulators.tsx b/src/mainview/routes/settings/emulators.tsx index 6a09f01..f9921a3 100644 --- a/src/mainview/routes/settings/emulators.tsx +++ b/src/mainview/routes/settings/emulators.tsx @@ -2,9 +2,9 @@ import { createFileRoute, useRouter } from '@tanstack/react-router'; import { OptionSpace } from '../../components/options/OptionSpace'; import { OptionInput } from '../../components/options/OptionInput'; import { useMutation, useQuery } from '@tanstack/react-query'; -import { JSX, useCallback, useEffect, useState } from 'react'; +import { useCallback, useEffect, useState } from 'react'; import { Button } from '../../components/options/Button'; -import { Check, ChevronDown, FileQuestion, FolderSearch, Plug, SearchAlert, Store, Trash, TriangleAlert } from 'lucide-react'; +import { Check, ChevronDown, FileQuestion, FolderSearch, Plug, SearchAlert, Store, Trash } from 'lucide-react'; import { ContextDialog, ContextList, DialogEntry, OptionElement } from '../../components/ContextDialog'; import classNames from 'classnames'; import { twMerge } from 'tailwind-merge'; diff --git a/src/mainview/routes/store/details.emulator.$id.tsx b/src/mainview/routes/store/details.emulator.$id.tsx index 3bbfd74..b2543d7 100644 --- a/src/mainview/routes/store/details.emulator.$id.tsx +++ b/src/mainview/routes/store/details.emulator.$id.tsx @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from "react"; +import { useRef } from "react"; import { useFocusable, @@ -17,7 +17,7 @@ import Screenshots from "@/mainview/components/Screenshots"; import { StickyHeaderUI } from "@/mainview/components/Header"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { EmulatorsSection } from "@/mainview/components/store/EmulatorsSection"; -import { HandleGoBack, scrollIntoViewHandler, useJobStatus, useOnNavigateBack } from "@/mainview/scripts/utils"; +import { HandleGoBack, scrollIntoViewHandler, useJobStatus } from "@/mainview/scripts/utils"; import toast from "react-hot-toast"; import { getErrorMessage } from "react-error-boundary"; import { emulatorStatusIcons } from "@/mainview/components/store/StoreEmulatorCard"; diff --git a/src/mainview/routes/store/tab/emulators.tsx b/src/mainview/routes/store/tab/emulators.tsx index 7d1aafd..524e20a 100644 --- a/src/mainview/routes/store/tab/emulators.tsx +++ b/src/mainview/routes/store/tab/emulators.tsx @@ -1,7 +1,7 @@ -import { createFileRoute, ErrorComponentProps, useSearch } from '@tanstack/react-router'; -import { Joystick, TriangleAlert } from 'lucide-react'; +import { createFileRoute, useSearch } from '@tanstack/react-router'; +import { Joystick } from 'lucide-react'; import { useContext, useEffect } from 'react'; import { FocusContext, getCurrentFocusKey, useFocusable } from '@noriginmedia/norigin-spatial-navigation'; import { StoreEmulatorCard } from '@/mainview/components/store/StoreEmulatorCard'; diff --git a/src/mainview/routes/store/tab/route.tsx b/src/mainview/routes/store/tab/route.tsx index 2f8f091..2171770 100644 --- a/src/mainview/routes/store/tab/route.tsx +++ b/src/mainview/routes/store/tab/route.tsx @@ -95,7 +95,6 @@ function RouteComponent () }; const { shortcuts } = useShortcutContext(); - const { focus } = Route.useSearch(); const handleDetails = (type: string, source: string, id: string, focus: string) => { diff --git a/src/shared/constants.ts b/src/shared/constants.ts index dfcd52a..b7e3236 100644 --- a/src/shared/constants.ts +++ b/src/shared/constants.ts @@ -1,6 +1,5 @@ -import { emulators } from '@/bun/api/schema/emulators'; import { FocusDetails } from '@noriginmedia/norigin-spatial-navigation'; import { JSX } from 'react'; import * as z from 'zod';