38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
![]() |
import { api } from "@nice/client";
|
||
|
import { TaxonomySlug } from "@nice/common";
|
||
|
import { useMemo } from "react";
|
||
|
// export const NAV_ITEMS = [
|
||
|
|
||
|
// { to: "/write-letter", label: "咨询求助" },
|
||
|
// { to: "/write-letter", label: "解难帮困" },
|
||
|
// { to: "/write-letter", label: "需求提报" },
|
||
|
// { to: "/write-letter", label: "意见建议" },
|
||
|
// { to: "/write-letter", label: "问题反映" },
|
||
|
// { to: "/write-letter", label: "举报投诉" },
|
||
|
|
||
|
// ] as const;
|
||
|
|
||
|
export function useNavItem() {
|
||
|
const { data } = api.term.findMany.useQuery({
|
||
|
where: {
|
||
|
taxonomy: { slug: TaxonomySlug.CATEGORY }
|
||
|
}
|
||
|
});
|
||
|
|
||
|
const navItems = useMemo(() => {
|
||
|
const defaultItems = [
|
||
|
{ to: "/letter-list", label: "公开信件" },
|
||
|
{ to: "/letter-progress", label: "进度查询" },
|
||
|
{ to: "/help", label: "使用帮助" },
|
||
|
];
|
||
|
|
||
|
if (!data) return defaultItems;
|
||
|
|
||
|
return data.reduce((items, term) => {
|
||
|
items.push({ to: `/write-letter?category=${term.id}`, label: term.name });
|
||
|
return items;
|
||
|
}, [{ to: "/letter-list", label: "公开信件" }].concat(defaultItems.slice(1)));
|
||
|
}, [data]);
|
||
|
|
||
|
return { navItems };
|
||
|
}
|