authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-02-15 12:11:52-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-02-15 15:51:05-08:00
log8beba3e16b9bc6066d20f64cf672c05e0576df40
tree5e37660776fe5ba2a8fec56069088bee1f5a65d4
parent38c93a2abdabb59b5a24c402d17397d1fd1493b8

Refactor Sidebar component to streamline keybindings handling


1 files changed, 4 insertions(+), 5 deletions(-)

apps/web/src/components/Sidebar.tsx+4-5
...@@ -1,6 +1,5 @@...@@ -1,6 +1,5 @@
1import { MonitorIcon, MoonIcon, SunIcon, TerminalIcon } from "lucide-react";1import { MonitorIcon, MoonIcon, SunIcon, TerminalIcon } from "lucide-react";
2import { useCallback, useEffect, useMemo, useState } from "react";2import { useCallback, useEffect, useMemo, useState } from "react";
3import type { KeybindingsConfig } from "@t3tools/contracts";
4import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";3import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
5import { isElectron } from "../env";4import { isElectron } from "../env";
6import { useTheme } from "../hooks/useTheme";5import { useTheme } from "../hooks/useTheme";
...@@ -20,7 +19,6 @@ import { serverConfigQueryOptions } from "../lib/serverReactQuery";...@@ -20,7 +19,6 @@ import { serverConfigQueryOptions } from "../lib/serverReactQuery";
20import { formatWorktreePathForDisplay, getOrphanedWorktreePathForThread } from "../worktreeCleanup";19import { formatWorktreePathForDisplay, getOrphanedWorktreePathForThread } from "../worktreeCleanup";
2120
22const THEME_CYCLE = { system: "light", light: "dark", dark: "system" } as const;21const THEME_CYCLE = { system: "light", light: "dark", dark: "system" } as const;
23const EMPTY_KEYBINDINGS: KeybindingsConfig = [];
2422
25function formatRelativeTime(iso: string): string {23function formatRelativeTime(iso: string): string {
26 const diff = Date.now() - new Date(iso).getTime();24 const diff = Date.now() - new Date(iso).getTime();
...@@ -117,13 +115,14 @@ function terminalStatusIndicator(thread: Thread): TerminalStatusIndicator | null...@@ -117,13 +115,14 @@ function terminalStatusIndicator(thread: Thread): TerminalStatusIndicator | null
117export default function Sidebar() {115export default function Sidebar() {
118 const { state, dispatch } = useStore();116 const { state, dispatch } = useStore();
119 const api = useNativeApi();117 const api = useNativeApi();
120 const keybindingsQuery = useQuery({118 const { data: keybindings = [] } = useQuery({
121 ...serverConfigQueryOptions(api),119 ...serverConfigQueryOptions(api),
122 select: (config) => config.keybindings,120 select: (config) => config.keybindings,
123 });121 });
124 const keybindings = keybindingsQuery.data ?? EMPTY_KEYBINDINGS;
125 const queryClient = useQueryClient();122 const queryClient = useQueryClient();
126 const removeWorktreeMutation = useMutation(gitRemoveWorktreeMutationOptions({ api, queryClient }));123 const removeWorktreeMutation = useMutation(
124 gitRemoveWorktreeMutationOptions({ api, queryClient }),
125 );
127 const { theme, setTheme } = useTheme();126 const { theme, setTheme } = useTheme();
128 const [addingProject, setAddingProject] = useState(false);127 const [addingProject, setAddingProject] = useState(false);
129 const [newCwd, setNewCwd] = useState("");128 const [newCwd, setNewCwd] = useState("");