mirror of
https://github.com/docmost/docmost.git
synced 2026-05-07 06:23:06 +08:00
cleanup
This commit is contained in:
@@ -52,10 +52,7 @@ export function AppHeader() {
|
|||||||
const [workspace] = useAtom(workspaceAtom);
|
const [workspace] = useAtom(workspaceAtom);
|
||||||
const aiChatEnabled = workspace?.settings?.ai?.chat === true;
|
const aiChatEnabled = workspace?.settings?.ai?.chat === true;
|
||||||
|
|
||||||
const isHomeRoute = location.pathname.startsWith("/home");
|
|
||||||
const isSpacesRoute = location.pathname === "/spaces";
|
|
||||||
const isPageRoute = location.pathname.includes("/p/");
|
const isPageRoute = location.pathname.includes("/p/");
|
||||||
const hideSidebar = isHomeRoute || isSpacesRoute;
|
|
||||||
|
|
||||||
const items = links.map((link) => (
|
const items = links.map((link) => (
|
||||||
<Link key={link.label} to={link.link} className={classes.link}>
|
<Link key={link.label} to={link.link} className={classes.link}>
|
||||||
|
|||||||
@@ -75,8 +75,6 @@ export default function GlobalAppShell({
|
|||||||
const isSettingsRoute = location.pathname.startsWith("/settings");
|
const isSettingsRoute = location.pathname.startsWith("/settings");
|
||||||
const isSpaceRoute = location.pathname.startsWith("/s/");
|
const isSpaceRoute = location.pathname.startsWith("/s/");
|
||||||
const isAiRoute = location.pathname.startsWith("/ai");
|
const isAiRoute = location.pathname.startsWith("/ai");
|
||||||
const isHomeRoute = location.pathname.startsWith("/home");
|
|
||||||
const isSpacesRoute = location.pathname === "/spaces";
|
|
||||||
const isPageRoute = location.pathname.includes("/p/");
|
const isPageRoute = location.pathname.includes("/p/");
|
||||||
const showGlobalSidebar = !isSpaceRoute && !isSettingsRoute && !isAiRoute;
|
const showGlobalSidebar = !isSpaceRoute && !isSettingsRoute && !isAiRoute;
|
||||||
|
|
||||||
@@ -118,7 +116,7 @@ export default function GlobalAppShell({
|
|||||||
</AppShell.Navbar>
|
</AppShell.Navbar>
|
||||||
<AppShell.Main>
|
<AppShell.Main>
|
||||||
{isSettingsRoute ? (
|
{isSettingsRoute ? (
|
||||||
<Container size={850}>{children}</Container>
|
<Container size={900}>{children}</Container>
|
||||||
) : (
|
) : (
|
||||||
children
|
children
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -11,53 +11,9 @@ import {
|
|||||||
useSearchChatsQuery,
|
useSearchChatsQuery,
|
||||||
} from "../queries/ai-chat-query";
|
} from "../queries/ai-chat-query";
|
||||||
import AiChatSidebarItem from "./ai-chat-sidebar-item";
|
import AiChatSidebarItem from "./ai-chat-sidebar-item";
|
||||||
import type { AiChat } from "../types/ai-chat.types";
|
import { groupChatsByAge } from "../utils/group-chats-by-age";
|
||||||
import classes from "../styles/chat-sidebar.module.css";
|
import classes from "../styles/chat-sidebar.module.css";
|
||||||
|
|
||||||
type ChatGroup = { key: string; label: string; chats: AiChat[] };
|
|
||||||
|
|
||||||
function groupChatsByAge(
|
|
||||||
chats: AiChat[],
|
|
||||||
t: (key: string) => string,
|
|
||||||
): ChatGroup[] {
|
|
||||||
if (chats.length === 0) return [];
|
|
||||||
|
|
||||||
const now = new Date();
|
|
||||||
const startOfToday = new Date(
|
|
||||||
now.getFullYear(),
|
|
||||||
now.getMonth(),
|
|
||||||
now.getDate(),
|
|
||||||
).getTime();
|
|
||||||
const startOfYesterday = startOfToday - 24 * 60 * 60 * 1000;
|
|
||||||
const startOfLast7 = startOfToday - 7 * 24 * 60 * 60 * 1000;
|
|
||||||
const startOfLast30 = startOfToday - 30 * 24 * 60 * 60 * 1000;
|
|
||||||
|
|
||||||
const buckets: Record<string, ChatGroup> = {
|
|
||||||
today: { key: "today", label: t("Today"), chats: [] },
|
|
||||||
yesterday: { key: "yesterday", label: t("Yesterday"), chats: [] },
|
|
||||||
last7: { key: "last7", label: t("Previous 7 days"), chats: [] },
|
|
||||||
last30: { key: "last30", label: t("Previous 30 days"), chats: [] },
|
|
||||||
older: { key: "older", label: t("Older"), chats: [] },
|
|
||||||
};
|
|
||||||
|
|
||||||
for (const chat of chats) {
|
|
||||||
const ts = new Date(chat.updatedAt).getTime();
|
|
||||||
if (ts >= startOfToday) buckets.today.chats.push(chat);
|
|
||||||
else if (ts >= startOfYesterday) buckets.yesterday.chats.push(chat);
|
|
||||||
else if (ts >= startOfLast7) buckets.last7.chats.push(chat);
|
|
||||||
else if (ts >= startOfLast30) buckets.last30.chats.push(chat);
|
|
||||||
else buckets.older.chats.push(chat);
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
|
||||||
buckets.today,
|
|
||||||
buckets.yesterday,
|
|
||||||
buckets.last7,
|
|
||||||
buckets.last30,
|
|
||||||
buckets.older,
|
|
||||||
].filter((b) => b.chats.length > 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default function AiChatSidebar() {
|
export default function AiChatSidebar() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
import type { AiChat } from "../types/ai-chat.types";
|
||||||
|
|
||||||
|
export type ChatGroup = { key: string; label: string; chats: AiChat[] };
|
||||||
|
|
||||||
|
export function groupChatsByAge(
|
||||||
|
chats: AiChat[],
|
||||||
|
t: (key: string) => string,
|
||||||
|
): ChatGroup[] {
|
||||||
|
if (chats.length === 0) return [];
|
||||||
|
|
||||||
|
const now = new Date();
|
||||||
|
const startOfToday = new Date(
|
||||||
|
now.getFullYear(),
|
||||||
|
now.getMonth(),
|
||||||
|
now.getDate(),
|
||||||
|
).getTime();
|
||||||
|
const startOfYesterday = startOfToday - 24 * 60 * 60 * 1000;
|
||||||
|
const startOfLast7 = startOfToday - 7 * 24 * 60 * 60 * 1000;
|
||||||
|
const startOfLast30 = startOfToday - 30 * 24 * 60 * 60 * 1000;
|
||||||
|
|
||||||
|
const buckets: Record<string, ChatGroup> = {
|
||||||
|
today: { key: "today", label: t("Today"), chats: [] },
|
||||||
|
yesterday: { key: "yesterday", label: t("Yesterday"), chats: [] },
|
||||||
|
last7: { key: "last7", label: t("Previous 7 days"), chats: [] },
|
||||||
|
last30: { key: "last30", label: t("Previous 30 days"), chats: [] },
|
||||||
|
older: { key: "older", label: t("Older"), chats: [] },
|
||||||
|
};
|
||||||
|
|
||||||
|
for (const chat of chats) {
|
||||||
|
const ts = new Date(chat.updatedAt).getTime();
|
||||||
|
if (ts >= startOfToday) buckets.today.chats.push(chat);
|
||||||
|
else if (ts >= startOfYesterday) buckets.yesterday.chats.push(chat);
|
||||||
|
else if (ts >= startOfLast7) buckets.last7.chats.push(chat);
|
||||||
|
else if (ts >= startOfLast30) buckets.last30.chats.push(chat);
|
||||||
|
else buckets.older.chats.push(chat);
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
buckets.today,
|
||||||
|
buckets.yesterday,
|
||||||
|
buckets.last7,
|
||||||
|
buckets.last30,
|
||||||
|
buckets.older,
|
||||||
|
].filter((b) => b.chats.length > 0);
|
||||||
|
}
|
||||||
@@ -16,7 +16,7 @@ export default function Home() {
|
|||||||
{t("Home")} - {getAppName()}
|
{t("Home")} - {getAppName()}
|
||||||
</title>
|
</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Container size={"800"} pt="xl">
|
<Container size={"900"} pt="xl">
|
||||||
<HomeAiPrompt />
|
<HomeAiPrompt />
|
||||||
|
|
||||||
<Space h="xl" />
|
<Space h="xl" />
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export default function SpaceHome() {
|
|||||||
<Helmet>
|
<Helmet>
|
||||||
<title>{space?.name || 'Overview'} - {getAppName()}</title>
|
<title>{space?.name || 'Overview'} - {getAppName()}</title>
|
||||||
</Helmet>
|
</Helmet>
|
||||||
<Container size={"800"} pt="xl">
|
<Container size={"900"} pt="xl">
|
||||||
{space && <SpaceHomeTabs/>}
|
{space && <SpaceHomeTabs/>}
|
||||||
</Container>
|
</Container>
|
||||||
</>
|
</>
|
||||||
|
|||||||
+1
-1
Submodule apps/server/src/ee updated: 16cec9b3b0...d80f660b20
Reference in New Issue
Block a user