Spaces:
Sleeping
Sleeping
"use client" | |
import { useEffect, useState } from "react" | |
import { useSearchParams } from "next/navigation" | |
import { useStore } from "@/app/store" | |
import { LayoutName, defaultLayout, nonRandomLayouts } from "@/app/layouts" | |
import { useIsBusy } from "@/lib/useIsBusy" | |
import { SelectLayout } from "../select-layout" | |
export function SelectGlobalLayout() { | |
const searchParams = useSearchParams() | |
const requestedLayout = (searchParams?.get('layout') as LayoutName) || defaultLayout | |
const layout = useStore(s => s.layout) | |
const setLayout = useStore(s => s.setLayout) | |
const isBusy = useIsBusy() | |
const [draftLayout, setDraftLayout] = useState<LayoutName>(requestedLayout) | |
useEffect(() => { | |
const layoutChanged = draftLayout !== layout | |
if (layoutChanged && !isBusy) { | |
setLayout(draftLayout) | |
} | |
}, [layout, draftLayout, isBusy]) | |
return ( | |
<SelectLayout | |
defaultValue={defaultLayout} | |
onLayoutChange={setDraftLayout} | |
disabled={isBusy} | |
layouts={nonRandomLayouts} | |
/> | |
) | |
} |