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);