diff options
author | Florrie <towerofnix@gmail.com> | 2019-03-23 12:05:04 -0300 |
---|---|---|
committer | Florrie <towerofnix@gmail.com> | 2019-03-23 12:05:04 -0300 |
commit | 213ef476d5aa27e3590754da52ff1e8c0b48cc38 (patch) | |
tree | f87f5ad7e20a9b6d7ba4c5ea38b6e4639f92b57e /extension/background.js | |
parent | 29e9b65926ee3062f7490e247dd7971e9de23a52 (diff) |
Upload/delete tracks
Diffstat (limited to 'extension/background.js')
-rw-r--r-- | extension/background.js | 83 |
1 files changed, 54 insertions, 29 deletions
diff --git a/extension/background.js b/extension/background.js index eedbb73..c450c9d 100644 --- a/extension/background.js +++ b/extension/background.js @@ -2,44 +2,69 @@ console.log('Start'); const port = browser.runtime.connectNative('interactive_bgm'); -browser.browserAction.onClicked.addListener(() => { - console.log('Hello??'); - // port.postMessage('[{"track": "mantis", "volume": 100}]\n'); -}); - -console.log('Hi', port); - port.postMessage('[{"track": "mantis", "volume": 100}]\n'); port.onMessage.addListener(msg => { console.log('Nyoom', msg); }); -/* -setTimeout(() => { - port.disconnect(); -}, 4000); -*/ - port.onDisconnect.addListener(() => { console.log('Disconnected'); }); -browser.runtime.onMessage.addListener(({hostname}) => { - browser.storage.sync.get(['siteSettings', 'disableEverywhere']) - .then(({siteSettings, disableEverywhere}) => { - if (disableEverywhere) { - port.postMessage([]); - return; - } - - const mode = siteSettings[hostname]; - - if (mode) { - console.log('BGM:', mode); - port.postMessage(mode.map(track => ({track, volume: 100}))); - } else { - console.log('No BGM found for ' + hostname); - } +const uploadCallbacks = {}; +const deleteCallbacks = {}; + +port.onMessage.addListener(({type, trackName}) => { + if (type === 'uploadFinished') { + if (uploadCallbacks[trackName]) { + uploadCallbacks[trackName](); + } + } else if (type === 'deleteFinished') { + if (deleteCallbacks[trackName]) { + deleteCallbacks[trackName](); + } + } +}); + +const delay = ms => new Promise(resolve => setTimeout(resolve, ms)); + +browser.runtime.onMessage.addListener(async ({hostname, type, base64, trackName}, sender, sendResponse) => { + if (hostname) { + browser.storage.sync.get(['siteSettings', 'disableEverywhere']) + .then(({siteSettings, disableEverywhere}) => { + if (disableEverywhere) { + port.postMessage([]); + return; + } + + const mode = siteSettings[hostname]; + + if (mode) { + port.postMessage(mode.map(track => ({track, volume: 100}))); + } + }); + } else if (type === 'uploadTrack' && trackName && base64) { + port.postMessage({type: 'uploadTrack', trackName, base64}); + return new Promise(resolve => { + uploadCallbacks[trackName] = resolve; + }).then(() => { + browser.notifications.create({ + type: 'basic', + title: 'Save Complete', + message: `Successfully saved track "${trackName}".` + }); + }); + } else if (type === 'deleteTrack' && trackName) { + port.postMessage({type: 'deleteTrack', trackName}); + return new Promise(resolve => { + deleteCallbacks[trackName] = resolve; + }).then(() => { + browser.notifications.create({ + type: 'basic', + title: 'Delete Complete', + message: `Successfully deleted track "${trackName}".` + }); }); + } }); |