diff --git a/experiments/automatedScreenshots/index.js b/experiments/automatedScreenshots/index.js index 9b619873..f67a19cb 100644 --- a/experiments/automatedScreenshots/index.js +++ b/experiments/automatedScreenshots/index.js @@ -137,7 +137,7 @@ const config = { const url = `http://localhost:8080/#${JSON.stringify(config)}`; console.log({ url }); await page["goto"](url); - await page.waitForSelector("#loaded", { timeout: 2000 }); + await page.waitForSelector("#main-window", { timeout: 2000 }); console.log("Writing screenshot to", screenshotFile); await page.screenshot({ path: screenshotFile }); diff --git a/js/browser.js b/js/browser.js deleted file mode 100644 index 1dfbce9b..00000000 --- a/js/browser.js +++ /dev/null @@ -1,7 +0,0 @@ -export default function(base) { - const supportsAudioApi = !!(base.AudioContext || base.webkitAudioContext); - const supportsCanvas = !!base.document.createElement("canvas").getContext; - const supportsPromises = typeof Promise !== "undefined"; - - this.isCompatible = supportsAudioApi && supportsCanvas && supportsPromises; -} diff --git a/js/components/App.js b/js/components/App.js index 60c3ebe4..5c32503e 100644 --- a/js/components/App.js +++ b/js/components/App.js @@ -24,6 +24,7 @@ const App = ({ media, closed, equalizer, playlist, openWindows }) => { equalizer: equalizer && , playlist: playlist && }; + // Add any "generic" windows GEN_WINDOWS.forEach((windowId, i) => { const Component = genWindowMap[windowId]; windows[`genWindow${i}`] = openWindows.has(windowId) && ( @@ -31,10 +32,10 @@ const App = ({ media, closed, equalizer, playlist, openWindows }) => { ); }); return ( -
+ -
+ ); }; diff --git a/js/index.js b/js/index.js index 22881486..998bc7a2 100644 --- a/js/index.js +++ b/js/index.js @@ -8,7 +8,6 @@ import xmms from "../skins/XMMS-Turquoise.wsz"; import zaxon from "../skins/ZaxonRemake1-0.wsz"; import green from "../skins/Green-Dimension-V2.wsz"; import Winamp from "./winamp"; -import Browser from "./browser"; import { hideAbout, @@ -21,31 +20,33 @@ import { Raven.config(sentryDsn).install(); Raven.context(() => { - if (new Browser(window).isCompatible) { - if (hideAbout) { - document.getElementsByClassName("about")[0].style.visibility = "hidden"; - } - - new Winamp({ - initialSkin: { - url: skinUrl - }, - initialTrack: { - name: "DJ Mike Llama - Llama Whippin' Intro", - url: audioUrl - }, - avaliableSkins: [ - { url: base, name: "" }, - { url: green, name: "Green Dimension V2" }, - { url: osx, name: "Mac OSX v1.5 (Aqua)" }, - { url: topaz, name: "TopazAmp" }, - { url: visor, name: "Vizor" }, - { url: xmms, name: "XMMS Turquoise " }, - { url: zaxon, name: "Zaxon Remake" } - ], - __initialState: initialState - }).render(document.getElementById("winamp2-js")); - } else { - document.getElementById("browser-compatibility").style.display = "block"; + if (hideAbout) { + document.getElementsByClassName("about")[0].style.visibility = "hidden"; } + if (!Winamp.browserIsSupported()) { + document.getElementById("browser-compatibility").style.display = "block"; + return; + } + + const winamp = new Winamp({ + initialSkin: { + url: skinUrl + }, + initialTrack: { + name: "DJ Mike Llama - Llama Whippin' Intro", + url: audioUrl + }, + avaliableSkins: [ + { url: base, name: "" }, + { url: green, name: "Green Dimension V2" }, + { url: osx, name: "Mac OSX v1.5 (Aqua)" }, + { url: topaz, name: "TopazAmp" }, + { url: visor, name: "Vizor" }, + { url: xmms, name: "XMMS Turquoise " }, + { url: zaxon, name: "Zaxon Remake" } + ], + __initialState: initialState + }); + + winamp.renderWhenReady(document.getElementById("winamp2-js")); }); diff --git a/js/winamp.js b/js/winamp.js index 152aa790..6aee2868 100644 --- a/js/winamp.js +++ b/js/winamp.js @@ -26,14 +26,21 @@ const storeHas = (store, predicate) => }); class Winamp { + static browserIsSupported() { + const supportsAudioApi = !!( + window.AudioContext || window.webkitAudioContext + ); + const supportsCanvas = !!window.document.createElement("canvas").getContext; + const supportsPromises = typeof Promise !== "undefined"; + return supportsAudioApi && supportsCanvas && supportsPromises; + } + constructor(options) { this.options = options; this.media = new Media(); this.store = getStore(this.media, this.options.__initialState); - } - async render(node) { this.store.dispatch(setSkinFromUrl(this.options.initialSkin.url)); if (this.options.initialTrack && this.options.initialTrack.url) { @@ -53,7 +60,9 @@ class Winamp { } new Hotkeys(this.store.dispatch); + } + async renderWhenReady(node) { // Wait for the skin to load. await storeHas(this.store, state => !state.display.loading);