fix: avoid command palette hydration mismatch on macOS (#1563)

# Conflicts:
#	frontend/src/components/workspace/command-palette.tsx

Co-authored-by: luoxiao6645 <luoxiao6645@gmail.com>
Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
This commit is contained in:
2026-04-05 16:35:33 +08:00 committed by GitHub
parent 8049785de6
commit 28474c47cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -32,14 +32,10 @@ import { SettingsDialog } from "./settings";
export function CommandPalette() {
const { t } = useI18n();
const router = useRouter();
const [mounted, setMounted] = useState(false);
const [open, setOpen] = useState(false);
const [shortcutsOpen, setShortcutsOpen] = useState(false);
const [settingsOpen, setSettingsOpen] = useState(false);
useEffect(() => {
setMounted(true);
}, []);
const [isMac, setIsMac] = useState(false);
const handleNewChat = useCallback(() => {
router.push("/workspace/chats/new");
@ -68,14 +64,12 @@ export function CommandPalette() {
useGlobalShortcuts(shortcuts);
const isMac = mounted && navigator.userAgent.includes("Mac");
useEffect(() => {
setIsMac(navigator.userAgent.includes("Mac"));
}, []);
const metaKey = isMac ? "⌘" : "Ctrl+";
const shiftKey = isMac ? "⇧" : "Shift+";
if (!mounted) {
return null;
}
return (
<>
<SettingsDialog open={settingsOpen} onOpenChange={setSettingsOpen} />