import { PreviewDetail } from "../../../preview/PreviewDetail"; import { formatDate, formatElapsedTime } from "../../../utils"; import { LinearIssue, LinearIssuePriority } from "../types"; import { Notification } from "../../../notification"; import { Color, Detail, Image } from "@raycast/api"; interface LinearIssuePreviewProps { notification: Notification; linearIssue: LinearIssue; } const PRIORITY_LABEL: Record = { [LinearIssuePriority.NoPriority]: "No priority", [LinearIssuePriority.Urgent]: "Urgent", [LinearIssuePriority.High]: "High", [LinearIssuePriority.Normal]: "Normal", [LinearIssuePriority.Low]: "Low", }; const PRIORITY_COLOR: Record = { [LinearIssuePriority.NoPriority]: Color.SecondaryText, [LinearIssuePriority.Urgent]: Color.Red, [LinearIssuePriority.High]: Color.Orange, [LinearIssuePriority.Normal]: Color.Yellow, [LinearIssuePriority.Low]: Color.Blue, }; function userIcon(avatarUrl?: string): Image.ImageLike | undefined { return avatarUrl ? { source: avatarUrl, mask: Image.Mask.Circle } : undefined; } export function LinearIssuePreview({ notification, linearIssue }: LinearIssuePreviewProps) { let markdown = `# ${linearIssue.identifier} ${linearIssue.title}`; if (linearIssue.creator) { markdown += `\n\n_Opened by ${linearIssue.creator.name} ยท ${formatElapsedTime(linearIssue.created_at)}_`; } if (linearIssue.description) { markdown += `\n\n${linearIssue.description}`; } const metadata = ( <> {linearIssue.assignee ? ( ) : null} {linearIssue.creator ? ( ) : null} {linearIssue.project ? ( ) : null} {linearIssue.project_milestone ? ( ) : null} {linearIssue.due_date ? : null} {linearIssue.labels.length > 0 ? ( {linearIssue.labels.map((label) => ( ))} ) : null} ); return ; }