Skip to content
Source
Sign inSign up

pullRequestMediaSource.ts

32 lines1.1 KB

1import { sourceControlClients } from "@t3tools/client-runtime/source-control-clients";
2import { SOURCE_CONTROL_MEDIA_ASSET, type EnvironmentId } from "@t3tools/contracts";
3import type { FilePreviewItem } from "../../components/ui/FilePreviewModal.types";
4​
5export interface PullRequestMediaLocation {
6 readonly environmentId: EnvironmentId;
7 readonly cwd: string;
8 readonly repository?: string;
9}
10​
11/** Keep the original resource identity so previewers can resolve and renew its capability. */
12export function pullRequestMediaSource(url: string, location: PullRequestMediaLocation | null) {
13 const fetchUrl = sourceControlClients.mediaUrl(url)?.fetchUrl;
14 return location && fetchUrl
15 ? {
16 environmentId: location.environmentId,
17 resource: {
18 _tag: SOURCE_CONTROL_MEDIA_ASSET,
19 cwd: location.cwd,
20 url: fetchUrl,
21 ...(location.repository ? { repository: location.repository } : {}),
22 },
23 }
24 : { uri: url };
26​
27export function pullRequestImageSource(
28 url: string,
29 location: PullRequestMediaLocation | null,
30): FilePreviewItem {
31 return { kind: "image", ...pullRequestMediaSource(url, location) };