+ {rollbackStatus === "conflict" ? (
+
+ {t("panel.review.rollbackConflict")}
+
+ ) : rollbackStatus === "unavailable" ? (
+
+ {t("panel.review.rollbackUnavailable")}
+
+ ) : null}
+ {!compact ?
: null}
+ {change.state === "rolledBack" ? (
+
+
+ {t("panel.review.rolledBack")}
+
+ ) : change.reversible ? (
+
+ ) : (
+
+ {t("panel.review.rollbackUnavailable")}
+
+ )}
+
+ );
return (
{change.binary ? (
@@ -45,60 +94,19 @@ function DiffBody({ message, compact }: { message: UiMessage; compact: boolean }
) : change.truncated ? (
{t("panel.review.tooLarge")}
) : change.hunks.length > 0 ? (
-
- {change.hunks.map((hunk, hunkIndex) => (
-
-
- {hunk.header}
-
- {hunk.lines.map((line, lineIndex) => (
-
-
- {line.type === "add" ? "+" : line.type === "del" ? "−" : " "}
-
- {line.text}
-
- ))}
-
- ))}
-
+
) : (
-
{t("panel.review.noLineDetails")}
+
+ {t("panel.review.noLineDetails")}
+
)}
-
- {rollbackStatus === "conflict" ? (
-
- {t("panel.review.rollbackConflict")}
-
- ) : rollbackStatus === "unavailable" ? (
-
- {t("panel.review.rollbackUnavailable")}
-
- ) : null}
- {change.state === "rolledBack" ? (
-
-
- {t("panel.review.rolledBack")}
-
- ) : change.reversible ? (
-
- ) : (
-
- {t("panel.review.rollbackUnavailable")}
-
- )}
-
+ {actions}
);
}
@@ -106,24 +114,44 @@ function DiffBody({ message, compact }: { message: UiMessage; compact: boolean }
export const ReviewChangeCard = memo(function ReviewChangeCard({
message,
compact = false,
+ enableFeedback = false,
+ feedback,
+ revealRequest,
}: {
message: UiMessage;
compact?: boolean;
+ enableFeedback?: boolean;
+ feedback?: ReviewFeedback;
+ revealRequest?: number;
}) {
const { t } = useTranslation();
const change = reviewChangeFromMessage(message);
const detailsId = useId();
- const [open, setOpen] = useState(false);
+ const [open, setOpen] = useState(Boolean(feedback || revealRequest));
+ const cardRef = useRef