import React from 'dom-chef'; import select from 'select-dom'; import * as pageDetect from 'github-url-detection'; import PullRequestIcon from 'octicon/git-pull-request.svg'; import features from '.'; import * as api from '../github-helpers/api'; import getDefaultBranch from '../github-helpers/get-default-branch'; import {getRepositoryInfo, getRepoGQL} from '../github-helpers'; type BranchInfo = { baseRef: string; baseRefName: string; }; function buildQuery(issueIds: string[]): string { return ` repository(${getRepoGQL()}) { ${issueIds.map(id => ` ${id}: pullRequest(number: ${id.replace(/\D/g, '')}) { baseRef {id} baseRefName } `).join('\n')} } `; } async function init(): Promise { const prLinks = select.all('.js-issue-row .js-navigation-open[data-hovercard-type="pull_request"]'); if (prLinks.length === 0) { return false; } const currentRepository = getRepositoryInfo(); const query = buildQuery(prLinks.map(pr => pr.id)); const [data, defaultBranch] = await Promise.all([ api.v4(query), getDefaultBranch() ]); for (const prLink of prLinks) { const pr: BranchInfo = data.repository[prLink.id]; if (pr.baseRefName === defaultBranch) { continue; } const branch = pr.baseRef && `/${currentRepository.owner!}/${currentRepository.name!}/tree/${pr.baseRefName}`; prLink.parentElement!.querySelector('.text-small.text-gray')!.append( {' To '} {pr.baseRefName} ); } } void features.add({ id: __filebasename, description: 'Shows the base branch in PR lists if it’s not the default branch.', screenshot: 'https://user-images.githubusercontent.com/1402241/88480306-39f4d700-cf4d-11ea-9e40-2b36d92d41aa.png' }, { include: [ pageDetect.isRepoConversationList ], init });