Support staging exports

This commit is contained in:
metalex9
2021-02-08 11:28:06 -06:00
parent be988c6abe
commit cf78a553e7
2 changed files with 47 additions and 24 deletions

45
src/enable-exporting.js Normal file
View File

@@ -0,0 +1,45 @@
import setImported from './store/actions/creators/set-imported.creator';
import STATE_STORAGE_KEY from './store/middleware/local-storage.middleware/key';
import store from './store';
const enableExporting = () => {
let openerOrigin;
switch (location.origin) {
case 'https://generative.fm': {
openerOrigin = 'https://play.generative.fm';
break;
}
case 'https://staging.generative.fm': {
openerOrigin = 'https://staging.play.generative.fm';
break;
}
case 'http://localhost:9999': {
openerOrigin = 'http://localhost:8080';
break;
}
default: {
// do nothing
}
}
if (!openerOrigin) {
return;
}
window.addEventListener('message', event => {
const { data, source, origin } = event;
if (origin !== openerOrigin) {
return;
}
if (data.type === 'export-request') {
const state = window.localStorage.getItem(STATE_STORAGE_KEY);
source.postMessage({ type: 'export', state }, origin);
return;
}
if (data.type === 'set-import-request') {
store.dispatch(setImported());
source.postMessage({ type: 'import-set' }, origin);
}
});
};
export default enableExporting;

View File

@@ -9,8 +9,7 @@ import store from './store';
import indicateUpdateAvailable from './store/actions/creators/indicate-update-available.creator';
import isProduction from './config/is-production';
import App from './containers/app.container';
import setImported from './store/actions/creators/set-imported.creator';
import STATE_STORAGE_KEY from './store/middleware/local-storage.middleware/key';
import enableExporting from './enable-exporting';
import './styles/base-styles.scss';
if (isProduction) {
@@ -33,30 +32,9 @@ if (isProduction) {
}
});
}
//eslint-disable-next-line no-console
console.log('https://github.com/generative-music/generative.fm');
}
const openerOrigin = isProduction
? 'https://play.generative.fm'
: 'http://localhost:8080';
window.addEventListener('message', event => {
const { data, source, origin } = event;
if (origin !== openerOrigin) {
return;
}
if (data.type === 'export-request') {
const state = window.localStorage.getItem(STATE_STORAGE_KEY);
source.postMessage({ type: 'export', state }, origin);
return;
}
if (data.type === 'set-import-request') {
store.dispatch(setImported());
source.postMessage({ type: 'import-set' }, origin);
}
});
enableExporting();
render(
<Provider store={store}>