diff --git a/apps/client/src/components/common/recent-changes.tsx b/apps/client/src/components/common/recent-changes.tsx new file mode 100644 index 00000000..c7da7f46 --- /dev/null +++ b/apps/client/src/components/common/recent-changes.tsx @@ -0,0 +1,78 @@ +import { + Text, + Group, + Stack, + UnstyledButton, + Divider, + Badge, +} from "@mantine/core"; +import classes from "../../features/home/components/home.module.css"; +import { Link } from "react-router-dom"; +import PageListSkeleton from "@/components/ui/page-list-skeleton.tsx"; +import { buildPageUrl } from "@/features/page/page.utils.ts"; +import { formattedDate } from "@/lib/time.ts"; +import { useRecentChangesQuery } from "@/features/page/queries/page-query.ts"; +import { IconFileDescription } from "@tabler/icons-react"; +import { getSpaceUrl } from "@/lib/config.ts"; + +interface Props { + spaceId?: string; +} +export default function RecentChanges({ spaceId }: Props) { + const { data: pages, isLoading, isError } = useRecentChangesQuery(spaceId); + + if (isLoading) { + return ; + } + + if (isError) { + return Failed to fetch recent pages; + } + + return pages && pages.items.length > 0 ? ( +
+ {pages.items.map((page) => ( +
+ + + + + {page.icon || } + + + {page.title || "Untitled"} + + + + + {!spaceId && ( + + {page.space.name} + + )} + + + {formattedDate(page.updatedAt)} + + + + +
+ ))} +
+ ) : ( + + No records to show + + ); +} diff --git a/apps/client/src/features/home/components/home-tabs.tsx b/apps/client/src/features/home/components/home-tabs.tsx index a10bec31..2351d5ed 100644 --- a/apps/client/src/features/home/components/home-tabs.tsx +++ b/apps/client/src/features/home/components/home-tabs.tsx @@ -1,6 +1,6 @@ import { Text, Tabs, Space } from "@mantine/core"; import { IconClockHour3 } from "@tabler/icons-react"; -import RecentChanges from "@/features/home/components/recent-changes"; +import RecentChanges from "@/components/common/recent-changes.tsx"; export default function HomeTabs() { return ( @@ -8,7 +8,7 @@ export default function HomeTabs() { }> - Recent changes + Recently updated diff --git a/apps/client/src/features/home/components/recent-changes.tsx b/apps/client/src/features/home/components/recent-changes.tsx deleted file mode 100644 index 9a92e56f..00000000 --- a/apps/client/src/features/home/components/recent-changes.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import { - Text, - Group, - Stack, - UnstyledButton, - Divider, - Badge, -} from "@mantine/core"; -import classes from "./home.module.css"; -import { Link } from "react-router-dom"; -import PageListSkeleton from "@/components/ui/page-list-skeleton.tsx"; -import { buildPageUrl } from "@/features/page/page.utils.ts"; -import { formattedDate } from "@/lib/time.ts"; -import { useRecentChangesQuery } from "@/features/page/queries/page-query.ts"; -import { IconFileDescription } from "@tabler/icons-react"; -import { getSpaceUrl } from "@/lib/config.ts"; - -function RecentChanges() { - const { data, isLoading, isError } = useRecentChangesQuery(); - - if (isLoading) { - return ; - } - - if (isError) { - return Failed to fetch recent pages; - } - - return ( - data && ( -
- {data.items.map((page) => ( -
- - - - - {page.icon || } - - - {page.title || "Untitled"} - - - - - - {page.space.name} - - - - {formattedDate(page.updatedAt)} - - - - -
- ))} -
- ) - ); -} - -export default RecentChanges; diff --git a/apps/client/src/features/space/components/space-home-tabs.tsx b/apps/client/src/features/space/components/space-home-tabs.tsx index 63880e39..3d9fd5b0 100644 --- a/apps/client/src/features/space/components/space-home-tabs.tsx +++ b/apps/client/src/features/space/components/space-home-tabs.tsx @@ -1,14 +1,19 @@ import { Text, Tabs, Space } from "@mantine/core"; import { IconClockHour3 } from "@tabler/icons-react"; -import SpaceRecentChanges from "@/features/space/components/space-recent-changes.tsx"; +import RecentChanges from "@/components/common/recent-changes.tsx"; +import { useParams } from "react-router-dom"; +import { useGetSpaceBySlugQuery } from "@/features/space/queries/space-query.ts"; export default function SpaceHomeTabs() { + const { spaceSlug } = useParams(); + const { data: space } = useGetSpaceBySlugQuery(spaceSlug); + return ( }> - Recent changes + Recently updated @@ -16,7 +21,7 @@ export default function SpaceHomeTabs() { - + ); diff --git a/apps/client/src/features/space/components/space-recent-changes.tsx b/apps/client/src/features/space/components/space-recent-changes.tsx deleted file mode 100644 index 7ae7a349..00000000 --- a/apps/client/src/features/space/components/space-recent-changes.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import { Text, Group, Stack, UnstyledButton, Divider } from "@mantine/core"; -import classes from "./space-home.module.css"; -import { Link, useParams } from "react-router-dom"; -import { buildPageUrl } from "@/features/page/page.utils.ts"; -import { formattedDate } from "@/lib/time.ts"; -import { useRecentChangesQuery } from "@/features/page/queries/page-query.ts"; -import { useGetSpaceBySlugQuery } from "@/features/space/queries/space-query.ts"; - -function SpaceRecentChanges() { - const { spaceSlug } = useParams(); - const { data: space } = useGetSpaceBySlugQuery(spaceSlug); - const { data, isLoading, isError } = useRecentChangesQuery(space?.id); - - if (isLoading) { - return <>; - } - - if (isError) { - return Failed to fetch recent pages; - } - - return ( - data && ( -
- {data.items.map((page) => ( -
- - - - - {page.title || "Untitled"} - - - - - {formattedDate(page.updatedAt)} - - - - -
- ))} -
- ) - ); -} - -export default SpaceRecentChanges;