Skip to content

Commit c4d6a29

Browse files
committed
Fix mute script in a wayyyy
1 parent cafed65 commit c4d6a29

3 files changed

Lines changed: 38 additions & 15 deletions

File tree

chrome/src/bg/background.js

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,25 @@ request.onload = function() {
2323
}
2424
request.openerTabId = sender.tab.id
2525
request.index = position + 1
26-
chrome.tabs.create(request)
27-
})
26+
chrome.tabs.create(request, function(tab) { listenAndCloseTab(tab, request.url, sender.tab.id) })
27+
}
28+
)
2829
} else {
2930
sendMessage(data)
3031
}
3132
}
3233
)
3334
}
35+
36+
function listenAndCloseTab (tab, url, originalTabId) {
37+
var listener = setInterval(function () {
38+
chrome.tabs.get(tab.id, function (tab) {
39+
if (tab.status === 'complete') {
40+
chrome.tabs.remove(tab.id)
41+
clearInterval(listener)
42+
// Unsubscription finished
43+
chrome.tabs.sendMessage(originalTabId, {muteURL: url})
44+
}
45+
})
46+
}, 500)
47+
}

chrome/src/inject/inject.css

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
.github-link {
1+
.github-link,
2+
.github-mute {
23
text-decoration: none;
34
cursor: pointer;
45
}
5-
.github-link:hover {
6+
.github-link:hover,
7+
.github-mute:hover {
68
border-color: rgba(0,0,0,0.2) !important;
79
}

chrome/src/inject/inject.js

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@ chrome.extension.sendMessage({}, function (settings) {
77
initForInbox()
88
})
99

10+
chrome.runtime.onMessage.addListener(function (req) {
11+
var element = req['muteURL'] ? document.querySelector('[href="' + req['muteURL'] + '"]') : null
12+
13+
if (element) {
14+
element.innerText = "Muted!"
15+
}
16+
})
17+
1018
function initForInbox() {
1119
window.idled = true
1220
}
@@ -38,7 +46,7 @@ function initOnHashChangeAction(domains) {
3846
var github_links = reject_unwanted_paths(mail_body.querySelectorAll(selectors))
3947

4048
// Avoid multple buttons
41-
Array.prototype.forEach.call(document.querySelectorAll('.github-link, .github-mute-button'), function (ele) {
49+
Array.prototype.forEach.call(document.querySelectorAll('.github-link, .github-mute'), function (ele) {
4250
ele.remove()
4351
})
4452

@@ -50,16 +58,15 @@ function initOnHashChangeAction(domains) {
5058
if (url.match('notifications/unsubscribe')) {
5159
var muteURL = url
5260
url = github_links[github_links.length-2].href
53-
muteLink = document.createElement('button')
54-
muteLink.type = 'button'
55-
muteLink.className = 'github-mute-button T-I J-J5-Ji lS T-I-ax7 ar7'
61+
muteLink = document.createElement('a')
62+
muteLink.className = 'github-mute T-I J-J5-Ji lS T-I-ax7 ar7'
5663
muteLink.innerText = 'Mute thread'
57-
muteLink.addEventListener('click', function () {
64+
muteLink.href = muteURL
65+
66+
muteLink.addEventListener('click', function (evt) {
67+
evt.preventDefault()
68+
chrome.extension.sendMessage({url: muteURL, active: false})
5869
muteLink.innerHTML = '⋯'
59-
fetch(muteURL, {mode: 'no-cors'}).then(function () {
60-
muteLink.innerText = 'Muted!'
61-
muteLink.disabled = 'disabled'
62-
})
6370
})
6471
}
6572

@@ -116,8 +123,8 @@ function initShortcuts(shortcut, backgroundShortcut, muteShortcut) {
116123
}
117124

118125
// Mute Shortcut: bind user's combination, if a button exist and event not in a textarea
119-
if (processRightCombinationBasedOnShortcut(muteShortcut, event) && window.idled && getVisible(document.getElementsByClassName('github-mute-button')) && notAnInput(event.target)) {
120-
getVisible(document.getElementsByClassName('github-mute-button')).click()
126+
if (processRightCombinationBasedOnShortcut(muteShortcut, event) && window.idled && getVisible(document.getElementsByClassName('github-mute')) && notAnInput(event.target)) {
127+
getVisible(document.getElementsByClassName('github-mute')).click()
121128
}
122129
})
123130
}

0 commit comments

Comments
 (0)