diff --git a/.eslintrc.js b/.eslintrc.js index 72398fc..ccc033b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -6,6 +6,7 @@ module.exports = { }, env: { browser: true, + es6: true, }, globals: { browser: 'readonly', diff --git a/extension/script.js b/extension/script.js index 32bb357..72451a5 100644 --- a/extension/script.js +++ b/extension/script.js @@ -124,13 +124,13 @@ function isElementVisible(element) { function ensureTALinks() { let channelContainerNodes = getChannelContainers(); - for (let channelContainer of channelContainerNodes) { channelContainer = adjustOwner(channelContainer); if (channelContainer.hasTA) continue; - let channelButton = buildChannelButton(channelContainer); - channelContainer.appendChild(channelButton); channelContainer.hasTA = true; + buildChannelButton(channelContainer).then(channelButton => { + channelContainer.appendChild(channelButton); + }); } let titleContainerNodes = getTitleContainers(); @@ -150,19 +150,25 @@ function adjustOwner(channelContainer) { } function buildChannelButton(channelContainer) { - let channelHandle = getChannelHandle(channelContainer); - let buttonDiv = buildChannelButtonDiv(); + return new Promise(resolve => { + let buttonDiv; + let channelSubButton; + let spacer; + let channelDownloadButton; - let channelSubButton = buildChannelSubButton(channelHandle); - buttonDiv.appendChild(channelSubButton); - - let spacer = buildSpacer(); - buttonDiv.appendChild(spacer); - - let channelDownloadButton = buildChannelDownloadButton(); - buttonDiv.appendChild(channelDownloadButton); - - return buttonDiv; + // Delayed execution for interface to refresh + setTimeout(() => { + const channelHandle = getChannelHandle(channelContainer); + buttonDiv = buildChannelButtonDiv(); + channelSubButton = buildChannelSubButton(channelHandle); + spacer = buildSpacer(); + channelDownloadButton = buildChannelDownloadButton(); + buttonDiv.appendChild(channelSubButton); + buttonDiv.appendChild(spacer); + buttonDiv.appendChild(channelDownloadButton); + resolve(buttonDiv); + }, 2000); + }); } function getChannelHandle(channelContainer) {