import React from 'react'; import { KanboardCard } from '../../types/kanboard'; export interface IssueCardProps { card: KanboardCard compact: boolean } export class IssueCard extends React.PureComponent { render() { const { card, compact } = this.props; const issueURLInfo = extractInfoFromIssueURL(card.issue.url); const projectURL = `${issueURLInfo.baseURL}/${issueURLInfo.owner}/${issueURLInfo.projectName}`; const issueURL = `${projectURL}/issues/${card.issue.number}`; return (
{ !compact && } { compact && {`#${card.issue.number}`} } {card.issue.title ? card.issue.title : ''}
{ !compact && }
); } } function extractInfoFromIssueURL(issueURL: string): any|void { const pattern = /^(https?:\/\/[^\/]+)\/api\/v1\/repos\/([^\/]+)\/([^\/]+)\/.*$/; const matches = pattern.exec(issueURL); if (!matches) return; return { baseURL: matches[1], owner: matches[2], projectName: matches[3], }; }