Wrap enriched and skipped ticket keys in markdown links using JIRA_BASE_URL so keys are clickable in the hourly poller room summary. Co-authored-by: Cursor <cursoragent@cursor.com>
34 lines
833 B
JavaScript
34 lines
833 B
JavaScript
// utils/jiraBrowseUrl.js
|
|
//
|
|
// Build user-facing Jira browse URLs for Webex markdown links.
|
|
// API calls may use JIRA_CLOUD_ID; browse links always need JIRA_BASE_URL.
|
|
|
|
const ISSUE_KEY_RE = /^[A-Z][A-Z0-9]+-\d+$/;
|
|
|
|
/**
|
|
* @param {string} issueKey
|
|
* @returns {string|null}
|
|
*/
|
|
export function getJiraBrowseUrl(issueKey) {
|
|
const key = String(issueKey || '').trim();
|
|
if (!key || !ISSUE_KEY_RE.test(key)) return null;
|
|
|
|
const base = process.env.JIRA_BASE_URL?.replace(/\/$/, '');
|
|
if (!base) return null;
|
|
|
|
return `${base}/browse/${key}`;
|
|
}
|
|
|
|
/**
|
|
* @param {string} issueKey
|
|
* @returns {string}
|
|
*/
|
|
export function formatJiraIssueMarkdownLink(issueKey) {
|
|
const key = String(issueKey || '').trim();
|
|
if (!key) return '—';
|
|
|
|
const url = getJiraBrowseUrl(key);
|
|
if (url) return `[${key}](${url})`;
|
|
|
|
return `\`${key}\``;
|
|
}
|