From ed2dc7b08b52efe00dcca41248ce35ef7f5ef04f Mon Sep 17 00:00:00 2001 From: yakov116 <16872793+yakov116@users.noreply.github.com> Date: Sun, 12 Apr 2020 18:51:25 -0400 Subject: Add `discussion-links-on-repo-lists` feature (#2981) Co-Authored-By: Federico Brigante --- source/features/discussion-links-on-repo-lists.tsx | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 source/features/discussion-links-on-repo-lists.tsx (limited to 'source/features/discussion-links-on-repo-lists.tsx') diff --git a/source/features/discussion-links-on-repo-lists.tsx b/source/features/discussion-links-on-repo-lists.tsx new file mode 100644 index 00000000..ce964a45 --- /dev/null +++ b/source/features/discussion-links-on-repo-lists.tsx @@ -0,0 +1,60 @@ +import React from 'dom-chef'; +import select from 'select-dom'; +import issueIcon from 'octicon/issue-opened.svg'; +import pullRequestIcon from 'octicon/git-pull-request.svg'; +import features from '../libs/features'; +import observeElement from '../libs/simplified-element-observer'; + +function init(): void { + const repositories = select.all([ + '[itemprop="name codeRepository"]:not(.rgh-discussion-links)', // `isUserProfileRepoTab` + '[data-hydro-click*=\'"model_name":"Repository"\']' // `isGlobalSearchResults` + ]); + + for (const repositoryLink of repositories) { + repositoryLink.classList.add('rgh-discussion-links'); + + const repository = repositoryLink.closest('li')!; + + // Remove the "X issues need help" link + select('[href*="issues?q=label%3A%22help+wanted"]', repository)?.remove(); + + // Place before the "Updated on" element + select('relative-time', repository)!.previousSibling!.before( + + {issueIcon()} + , + + {pullRequestIcon()} + + ); + } +} + +features.add({ + id: __featureName__, + description: 'Adds a link to the issues and pulls on the user profile repository tab and global search.', + screenshot: 'https://user-images.githubusercontent.com/16872793/78712349-82c54900-78e6-11ea-8328-3c2d39a78862.png' +}, { + include: [ + features.isUserProfileRepoTab, + features.isGlobalSearchResults + ], + load: features.onAjaxedPages, + init +}, { + include: [ + features.isUserProfileRepoTab + ], + load: features.onAjaxedPages, + init: () => { + observeElement('#user-repositories-list', init); + return false; + } +}); -- cgit v1.2.3