import type { ThreadData, LinearIssue } from "./types"; export interface Attachment { linearIssue: string; } export function autoAttach( threads: ThreadData[], issues: LinearIssue[], attachments: Record, ): ThreadData[] { const issueMap: Record = {}; for (const i of issues) issueMap[i.identifier] = i; return threads.map((t) => { const out = { ...t }; if (t.channel === "linear" && issueMap[t.threadId]) { const iss = issueMap[t.threadId]; out.linearIssue = iss.identifier; out.linearTitle = iss.title; out.linearUrl = iss.url; return out; } const m = t.subject.match(/\b(MAN-\d+)\b/); if (m && issueMap[m[1]]) { const iss = issueMap[m[1]]; out.linearIssue = iss.identifier; out.linearTitle = iss.title; out.linearUrl = iss.url; return out; } if (!out.linearIssue && attachments[t.threadId]) { const a = attachments[t.threadId]; if (issueMap[a.linearIssue]) { const iss = issueMap[a.linearIssue]; out.linearIssue = iss.identifier; out.linearTitle = iss.title; out.linearUrl = iss.url; } } return out; }); }