Refactor image display in activities, resource, and user pages to use ImageGrid component

This commit is contained in:
2025-06-24 16:28:48 +08:00
parent 7bb04cffad
commit 167cb617b8
4 changed files with 159 additions and 30 deletions

View File

@@ -6,7 +6,7 @@ import { useTranslation } from "react-i18next";
import { MdArrowRight } from "react-icons/md";
import { useNavigate } from "react-router";
import Loading from "../components/loading.tsx";
import {SquareImage} from "../components/image.tsx";
import { ImageGrid } from "../components/image.tsx";
export default function ActivitiesPage() {
const [activities, setActivities] = useState<Activity[]>([]);
@@ -98,15 +98,7 @@ function ActivityCard({ activity }: { activity: Activity }) {
<div className={"text-sm mx-1 whitespace-pre-wrap"}>
{activity.comment?.content}
</div>
<div
className={
"grid grid-cols-3 sm:grid-cols-5 md:grid-cols-6 lg:grid-cols-8 gap-2 px-1 py-2"
}
>
{(activity.comment?.images ?? []).map((image) => (
<SquareImage key={image.id} image={image} />
))}
</div>
<ImageGrid images={activity.comment?.images ?? []} />
<div className={"flex items-center mt-1"}>
<MdArrowRight />
<span className={"text-sm text-base-content/80"}>

View File

@@ -47,7 +47,7 @@ import Button from "../components/button.tsx";
import Badge, { BadgeAccent } from "../components/badge.tsx";
import Input, { TextArea } from "../components/input.tsx";
import { useAppContext } from "../components/AppContext.tsx";
import { SquareImage } from "../components/image.tsx";
import { ImageGrid, SquareImage } from "../components/image.tsx";
export default function ResourcePage() {
const params = useParams();
@@ -1398,15 +1398,7 @@ function CommentTile({ comment }: { comment: Comment }) {
</div>
)}
</div>
<div
className={
"grid grid-cols-3 sm:grid-cols-5 md:grid-cols-6 lg:grid-cols-8 gap-2 p-2"
}
>
{comment.images.map((image) => (
<SquareImage key={image.id} image={image} />
))}
</div>
<ImageGrid images={comment.images} />
{app.user?.id === comment.user.id && (
<div className={"flex flex-row-reverse"}>
<DeleteCommentDialog commentId={comment.id} />

View File

@@ -7,7 +7,7 @@ import ResourcesView from "../components/resources_view";
import Loading from "../components/loading";
import Pagination from "../components/pagination";
import { MdOutlineArrowRight } from "react-icons/md";
import {SquareImage} from "../components/image.tsx";
import { ImageGrid } from "../components/image.tsx";
export default function UserPage() {
const [user, setUser] = useState<User | null>(null);
@@ -208,15 +208,7 @@ function CommentTile({ comment }: { comment: CommentWithResource }) {
<div className={"p-2 whitespace-pre-wrap text-sm"}>
{limitArticleLength(comment.content, 200)}
</div>
<div
className={
"grid grid-cols-3 sm:grid-cols-5 md:grid-cols-6 lg:grid-cols-8 gap-2 p-2"
}
>
{comment.images.map((image) => (
<SquareImage key={image.id} image={image} />
))}
</div>
<ImageGrid images={comment.images} />
<a
className="text-sm text-base-content/80 p-1 hover:text-primary cursor-pointer transition-all"
onClick={() => {