authorgravatar for 97427849+flamboh@users.noreply.github.comoliver <97427849+flamboh@users.noreply.github.com> 2026-09-29 17:02:37-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-29 21:02:37-03:00
log60cb7d180d9ebdd1010460ccd94cdfad1ec83042
tree65b2db6ac55932ba3788e51d0897c2c9615ca83e
parent63b61e647c8d973e4378a360cbf576d914f5564d
signature Signed by PGP key B5690EEEBB952194

fix(web): unresolved pull request links use the compact link tooltip (#14243)


1 files changed, 13 insertions(+), 7 deletions(-)

apps/web/src/components/pullRequest/PullRequestLinkPreview.tsx+13-7
......@@ -15,6 +15,7 @@ import { useAtomQueryRunner } from "~/state/use-atom-query-runner";
1515import { useEnvironmentQuery } from "~/state/query";
1616
1717import { PreviewCard, PreviewCardPopup, PreviewCardTrigger } from "../ui/preview-card";
18import { Tooltip, TooltipPopup, TooltipTrigger } from "../ui/tooltip";
1819import { PullRequestActorAvatar, resolvePullRequestState } from "./pullRequestPresentation";
1920
2021interface PullRequestLinkPreviewTarget {
......@@ -81,6 +82,8 @@ export function PullRequestLinkPreview({
8182 })
8283 : link;
8384 const detail = detailQuery.data;
85 const showCard = detail !== null || (detailQuery.error !== null && fallback !== undefined);
86 const showUrlTooltip = open && detailQuery.error !== null && !showCard;
8487 const state =
8588 detail === null
8689 ? null
......@@ -94,16 +97,19 @@ export function PullRequestLinkPreview({
9497
9598 return (
9699 <PreviewCard open={open} onOpenChange={setOpen}>
97 <PreviewCardTrigger render={trigger} delay={350} closeDelay={120} />
98 {detail !== null || detailQuery.error !== null ? (
100 <Tooltip open={showUrlTooltip}>
101 <PreviewCardTrigger
102 render={<TooltipTrigger render={trigger} />}
103 delay={350}
104 closeDelay={120}
105 />
106 <TooltipPopup side="top">{originalUrl}</TooltipPopup>
107 </Tooltip>
108 {showCard ? (
99109 <PreviewCardPopup align="center" className="w-80 max-w-[calc(100vw-2rem)]">
100110 <div className="p-3">
101111 {detail === null ? (
102 (fallback ?? (
103 <p className="text-xs leading-relaxed text-muted-foreground wrap-anywhere">
104 {originalUrl}
105 </p>
106 ))
112 fallback
107113 ) : (
108114 <div className="min-w-0">
109115 <div className="flex min-w-0 items-center gap-1.5 text-2xs text-muted-foreground">