docs(plan): shelf scan button carries isAdmin guard (constraint governs)

This commit is contained in:
2026-09-07 15:44:25 +08:00
parent bc81b03d6a
commit 36a2014a8b
@@ -1248,6 +1248,7 @@ function BookCard({
export default function Shelf() { export default function Shelf() {
const qc = useQueryClient(); const qc = useQueryClient();
const nav = useNavigate(); const nav = useNavigate();
const { isAdmin } = useAuth();
const [lib, setLib] = useState(0); // 0 = 全部库 const [lib, setLib] = useState(0); // 0 = 全部库
const [qRaw, setQRaw] = useState(""); const [qRaw, setQRaw] = useState("");
const [q, setQ] = useState(""); const [q, setQ] = useState("");
@@ -1301,7 +1302,7 @@ export default function Shelf() {
<button className={btn} onClick={() => qc.invalidateQueries({ queryKey: ["books"] })}> <button className={btn} onClick={() => qc.invalidateQueries({ queryKey: ["books"] })}>
刷新 刷新
</button> </button>
{lib > 0 && ( {isAdmin && lib > 0 && (
<button className={btn} disabled={scan.isPending} onClick={() => scan.mutate(lib)}> <button className={btn} disabled={scan.isPending} onClick={() => scan.mutate(lib)}>
{scan.isPending ? "扫描中…" : "扫描此库"} {scan.isPending ? "扫描中…" : "扫描此库"}
</button> </button>