GitHub My Issues

Add a contextual link to issues you've contributed to on GitHub

当前为 2023-07-02 提交的版本,查看 最新版本

  1. "use strict";
  2.  
  3. // ==UserScript==
  4. // @name GitHub My Issues
  5. // @description Add a contextual link to issues you've contributed to on GitHub
  6. // @author chocolateboy
  7. // @copyright chocolateboy
  8. // @version 1.3.1
  9. // @namespace https://github.com/chocolateboy/userscripts
  10. // @license GPL
  11. // @include https://github.com/
  12. // @include https://github.com/*
  13. // @require https://cdn.jsdelivr.net/npm/cash-dom@8.1.1/dist/cash.min.js
  14. // @grant GM_log
  15. // ==/UserScript==
  16.  
  17. // NOTE This file is generated from src/github-my-issues.user.ts and should not be edited directly.
  18.  
  19. (() => {
  20. // src/github-my-issues.user.ts
  21. // @license GPL
  22. var ID = "my-issues";
  23. var ISSUES = '[aria-label="Global"] a[href="/issues"]';
  24. var MY_ISSUES = "My Issues";
  25. var REPO = "octolytics-dimension-repository_nwo";
  26. var SELF = "user-login";
  27. var USER = "octolytics-dimension-user_login";
  28. function meta(name, key = "name") {
  29. const quotedName = JSON.stringify(name);
  30. return $(`meta[${key}=${quotedName}]`).attr("content");
  31. }
  32. function run() {
  33. $(`#${ID}`).remove();
  34. const self = meta(SELF);
  35. if (!self) {
  36. return;
  37. }
  38. const $issues = $(ISSUES);
  39. if ($issues.length !== 1) {
  40. return;
  41. }
  42. let subqueries = [`involves:${self}`, "sort:updated-desc"];
  43. let prop, path = "/issues";
  44. if (prop = meta(REPO)) {
  45. path = `/${prop}/issues`;
  46. } else if (prop = meta(USER)) {
  47. if (prop === self) {
  48. subqueries = [`user:${prop}`, "is:open", "archived:false", ...subqueries];
  49. } else {
  50. subqueries = [`user:${prop}`, ...subqueries];
  51. }
  52. }
  53. const query = subqueries.join("+");
  54. const href = `${path}?q=${escape(query)}`;
  55. const $link = $issues.clone().attr({ href, "data-hotkey": "g I", id: ID }).text(MY_ISSUES);
  56. $issues.after($link);
  57. }
  58. $(document).on("turbo:load", run);
  59. })();