diff options
author | Florrie <towerofnix@gmail.com> | 2019-03-23 19:25:26 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2019-03-23 19:25:26 -0300 |
commit | a55a4500ee8262d4c9c50d7c769ebc8cb742bb93 (patch) | |
tree | c9811aa397282453888e1e747c3c028c5262c6af /extension/background.js | |
parent | e03b677b1d92ee7a0b139c23cb8076c44770e903 (diff) |
Rule Scope
Diffstat (limited to 'extension/background.js')
-rw-r--r-- | extension/background.js | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/extension/background.js b/extension/background.js index c450c9d..3a51809 100644 --- a/extension/background.js +++ b/extension/background.js @@ -1,3 +1,5 @@ +import {getRuleScoreOnPage} from './lib.js'; + console.log('Start'); const port = browser.runtime.connectNative('interactive_bgm'); @@ -29,8 +31,8 @@ port.onMessage.addListener(({type, trackName}) => { const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); -browser.runtime.onMessage.addListener(async ({hostname, type, base64, trackName}, sender, sendResponse) => { - if (hostname) { +browser.runtime.onMessage.addListener(async ({urlString, music, type, base64, trackName}, sender, sendResponse) => { + if (urlString) { browser.storage.sync.get(['siteSettings', 'disableEverywhere']) .then(({siteSettings, disableEverywhere}) => { if (disableEverywhere) { @@ -38,12 +40,28 @@ browser.runtime.onMessage.addListener(async ({hostname, type, base64, trackName} return; } - const mode = siteSettings[hostname]; + const url = new URL(urlString); + + const allRules = siteSettings; - if (mode) { - port.postMessage(mode.map(track => ({track, volume: 100}))); + const rulesOnThisPage = allRules.map(rule => ({ + rule, + score: getRuleScoreOnPage(rule, urlString) + })).filter(obj => obj.score > 0); + + if (!rulesOnThisPage.length) { + return; } + + rulesOnThisPage.sort((a, b) => b.score - a.score); + + const {rule} = rulesOnThisPage[0]; + const {music} = rule; + + port.postMessage(music.map(track => ({track, volume: 100}))); }); + } else if (music) { + port.postMessage(music.map(track => ({track, volume: 100}))); } else if (type === 'uploadTrack' && trackName && base64) { port.postMessage({type: 'uploadTrack', trackName, base64}); return new Promise(resolve => { |