fix portrait click
This commit is contained in:
parent
94c337428f
commit
3c1cbfa571
@ -1,6 +1,7 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import { useRouter } from "next/navigation";
|
||||||
|
|
||||||
import { Card, Icon, IconName, Typography } from "@/components/ui";
|
import { Card, Icon, IconName, Typography } from "@/components/ui";
|
||||||
import { PartnerPortrait } from "@/entities/dashboard/types";
|
import { PartnerPortrait } from "@/entities/dashboard/types";
|
||||||
@ -35,7 +36,7 @@ const getStatusConfig = (status: PartnerPortrait["status"]) => {
|
|||||||
case "processing":
|
case "processing":
|
||||||
return {
|
return {
|
||||||
icon: <Icon name={IconName.Loader} className={styles.iconProcessing} size={{ width: 16, height: 16 }} />,
|
icon: <Icon name={IconName.Loader} className={styles.iconProcessing} size={{ width: 16, height: 16 }} />,
|
||||||
text: "Generating...",
|
text: "Processing...",
|
||||||
showCheckmark: false,
|
showCheckmark: false,
|
||||||
className: styles.statusProcessing,
|
className: styles.statusProcessing,
|
||||||
};
|
};
|
||||||
@ -62,6 +63,8 @@ export default function PortraitCard({
|
|||||||
status: initialStatus,
|
status: initialStatus,
|
||||||
imageUrl: initialImageUrl,
|
imageUrl: initialImageUrl,
|
||||||
}: PortraitCardProps) {
|
}: PortraitCardProps) {
|
||||||
|
const router = useRouter();
|
||||||
|
|
||||||
// Use polling hook to update status in real-time
|
// Use polling hook to update status in real-time
|
||||||
const { status, imageUrl: polledImageUrl } = useGenerationStatus(_id, initialStatus);
|
const { status, imageUrl: polledImageUrl } = useGenerationStatus(_id, initialStatus);
|
||||||
|
|
||||||
@ -71,8 +74,18 @@ export default function PortraitCard({
|
|||||||
const statusConfig = getStatusConfig(status as PartnerPortrait["status"]);
|
const statusConfig = getStatusConfig(status as PartnerPortrait["status"]);
|
||||||
const isReady = status === "done" && imageUrl;
|
const isReady = status === "done" && imageUrl;
|
||||||
|
|
||||||
|
const handleClick = () => {
|
||||||
|
if (isReady) {
|
||||||
|
router.push(`/portraits/${_id}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card className={`${styles.card} ${!isReady ? styles.disabled : ""}`}>
|
<Card
|
||||||
|
className={`${styles.card} ${!isReady ? styles.disabled : ""}`}
|
||||||
|
onClick={handleClick}
|
||||||
|
style={{ cursor: isReady ? 'pointer' : 'default' }}
|
||||||
|
>
|
||||||
<div className={styles.imageContainer}>
|
<div className={styles.imageContainer}>
|
||||||
{imageUrl ? (
|
{imageUrl ? (
|
||||||
<Image
|
<Image
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
import Link from "next/link";
|
|
||||||
|
|
||||||
import { Grid, Section } from "@/components/ui";
|
import { Grid, Section } from "@/components/ui";
|
||||||
import { PartnerPortrait } from "@/entities/dashboard/types";
|
import { PartnerPortrait } from "@/entities/dashboard/types";
|
||||||
|
|
||||||
@ -20,13 +18,7 @@ export default function PortraitsSection({ portraits }: PortraitsSectionProps) {
|
|||||||
<Section title="Portraits" contentClassName={styles.sectionContent}>
|
<Section title="Portraits" contentClassName={styles.sectionContent}>
|
||||||
<Grid columns={portraits.length} className={styles.grid}>
|
<Grid columns={portraits.length} className={styles.grid}>
|
||||||
{portraits.map(portrait => (
|
{portraits.map(portrait => (
|
||||||
<Link
|
<PortraitCard key={portrait._id} {...portrait} />
|
||||||
href={portrait.status === "done" && portrait.imageUrl ? `/portraits/${portrait._id}` : "#"}
|
|
||||||
key={portrait._id}
|
|
||||||
className={portrait.status === "done" && portrait.imageUrl ? "" : styles.disabledLink}
|
|
||||||
>
|
|
||||||
<PortraitCard {...portrait} />
|
|
||||||
</Link>
|
|
||||||
))}
|
))}
|
||||||
</Grid>
|
</Grid>
|
||||||
</Section>
|
</Section>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user