Github - Hide bots and github-actions from dashboards

Minimizes pushs and commits from github actions and bots from github.com dashboard

Nainštalovať tento skript?
Autor skriptu navrhuje

Tiež sa vám môže páčiť Github Old Feed.

Nainštalovať tento skript

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, Greasemonkey alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey, % alebo Violentmonkey.

Na nainštalovanie skriptu si budete musieť nainštalovať rozšírenie, ako napríklad Tampermonkey alebo Userscripts.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie, ako napríklad Tampermonkey.

Na inštaláciu tohto skriptu je potrebné nainštalovať rozšírenie správcu používateľských skriptov.

(Už mám správcu používateľských skriptov, nechajte ma ho nainštalovať!)

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie, ako napríklad Stylus.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

Na inštaláciu tohto štýlu je potrebné nainštalovať rozšírenie správcu používateľských štýlov.

(Už mám správcu používateľských štýlov, nechajte ma ho nainštalovať!)

// ==UserScript==
// @name         Github - Hide bots and github-actions from dashboards
// @description  Minimizes pushs and commits from github actions and bots from github.com dashboard
// @namespace    cuzi
// @author       cuzi
// @version      1.8
// @copyright    2020, cuzi (https://openuserjs.org/users/cuzi)
// @license      GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
// @icon         https://raw.githubusercontent.com/hfg-gmuend/openmoji/master/color/72x72/E045.png
// @match        https://github.com/
// @match        https://github.com/dashboard-feed
// @grant        none
// ==/UserScript==

/* jshint asi: true, esversion: 8 */

(function () {
  'use strict'

  document.head.appendChild(document.createElement('style')).innerHTML = `
  .Details:hover .newexpanderbutton .Link--secondary {
    color: var(--color-accent-fg) !important;
  }
  `

  function unhideBot (ev) {
    const div = this
    div.classList.add('shotBot')
    div.removeEventListener('click', unhideBot)
    div.style.fontSize = ''
    if (div.querySelector('.no-border-bottom')) {
      div.querySelector('.no-border-bottom').classList.replace('no-border-bottom', 'border-bottom')
    }
    div.querySelector('.Box').style.display = ''
    if (div.querySelector('.body')) {
      div.querySelector('.body').style.height = ''
      div.querySelector('.body .d-flex').style.padding = ''
    } else {
      div.querySelector('.d-flex').style.padding = ''
    }
    div.querySelector('img.avatar').height = '32'
    div.querySelector('img.avatar').width = '32'
    div.style.cursor = ''
    if (div.querySelector('.newexpanderbutton')) {
      div.querySelector('.newexpanderbutton').remove()
    }
  }

  function hideDiv (div, summary) {
    const expandButton = document.querySelector('button.js-details-target:not(.Header-link)[aria-expanded="false"]')
    div.style.fontSize = '10px'
    if (div.querySelector('.border-bottom')) {
      div.querySelector('.border-bottom').classList.replace('border-bottom', 'no-border-bottom')
    }
    div.querySelector('.Box').style.display = 'none'
    if (div.querySelector('.body')) {
      div.querySelector('.body').style.height = '22px'
      div.querySelector('.body .d-flex').style = 'padding: 0px !important;'
    } else {
      div.querySelector('.d-flex').style = 'padding: 0px !important;'
    }
    div.querySelector('img.avatar').height = '20'
    div.querySelector('img.avatar').width = '20'
    div.style.cursor = 'row-resize'
    div.addEventListener('click', unhideBot)
    const line = div.querySelector('.Details .flex-column .flex-justify-between.flex-items-baseline')
    if (line && expandButton && !line.querySelector('button.js-details-target')) {
      const newExpandButton = document.createElement('button')
      line.appendChild(newExpandButton)
      newExpandButton.outerHTML = expandButton.outerHTML.replace('js-details-target', 'js-details-target newexpanderbutton')
    }
    const aLinkPrimary = div.querySelector('.no-underline a.Link--primary')
    if (summary && aLinkPrimary && !div.querySelector('.summaryspan')) {
      const summarySpan = document.createElement('span')
      summarySpan.classList.add('summaryspan')
      summarySpan.appendChild(document.createTextNode(summary.replace(/\s+to\s*$/, '')))
      aLinkPrimary.parentNode.appendChild(summarySpan)
    }
  }

  function hideBots () {
    // Hide single push events
    document.querySelectorAll(`
      #dashboard div.push:not(.shotBot),
      #dashboard div[classes*=push]:not(.shotBot),
      #dashboard div.body:not(.shotBot),

      [data-repository-hovercards-enabled] div.push:not(.shotBot),
      [data-repository-hovercards-enabled] div[classes*=push]:not(.shotBot),
      [data-repository-hovercards-enabled] div.body:not(.shotBot)
      `).forEach(function (div) {
      const label = div.querySelector('.body .d-flex .d-flex .Label')
      const isAppUrl = div.querySelector('.body .d-flex .d-flex a.Link--primary[href^="/apps/"]')
      if (isAppUrl || (label && label.textContent === 'bot')) {
        hideDiv(div)
      }
    })
    // Hide grouped items
    document.querySelectorAll(`
      #dashboard div.body:not(.shotBot),
      [data-repository-hovercards-enabled] div.body:not(.shotBot)
      `
    ).forEach(function (div) {
      const isAppUrl = div.querySelector('.js-news-feed-event-group .d-inline-block[href^="/apps"] .avatar')
      if (isAppUrl) {
        const summary = div.querySelector('.dashboard-rollup-item>span') ? div.querySelector('.dashboard-rollup-item>span').textContent : null
        hideDiv(div, summary)
      }
    })
  }

  hideBots()
  const iv = window.setInterval(hideBots, 200)
  window.setTimeout(() => window.clearInterval(iv), 5000)
  window.setInterval(hideBots, 5000)
})()