2015-05-13 16:26:12 +02:00
|
|
|
'use strict';
|
|
|
|
|
2015-12-17 16:09:47 +01:00
|
|
|
import 'babel/polyfill';
|
2015-07-03 10:40:04 +02:00
|
|
|
|
2015-05-13 16:26:12 +02:00
|
|
|
import React from 'react';
|
2016-01-25 13:33:20 +01:00
|
|
|
import ReactDOM from 'react-dom';
|
2015-10-01 14:30:11 +02:00
|
|
|
import { Router, Redirect } from 'react-router';
|
2015-10-05 11:52:23 +02:00
|
|
|
import history from './history';
|
2015-06-01 14:22:04 +02:00
|
|
|
|
2015-07-27 18:21:20 +02:00
|
|
|
/* eslint-disable */
|
2015-06-16 13:48:48 +02:00
|
|
|
import fetch from 'isomorphic-fetch';
|
2015-07-27 18:21:20 +02:00
|
|
|
/* eslint-enable */
|
2015-05-15 15:38:25 +02:00
|
|
|
|
2015-06-01 14:22:04 +02:00
|
|
|
import ApiUrls from './constants/api_urls';
|
2015-09-29 14:58:56 +02:00
|
|
|
|
|
|
|
import AppConstants from './constants/application_constants';
|
2015-07-10 16:43:35 +02:00
|
|
|
import getRoutes from './routes';
|
2015-06-16 13:48:48 +02:00
|
|
|
import requests from './utils/requests';
|
2015-06-01 14:22:04 +02:00
|
|
|
|
2015-09-29 14:58:56 +02:00
|
|
|
import { updateApiUrls } from './constants/api_urls';
|
2015-07-14 17:12:32 +02:00
|
|
|
import { getSubdomainSettings } from './utils/constants_utils';
|
2015-07-17 15:41:09 +02:00
|
|
|
import { initLogging } from './utils/error_utils';
|
2015-09-29 14:58:56 +02:00
|
|
|
import { getSubdomain } from './utils/general_utils';
|
2015-07-17 15:41:09 +02:00
|
|
|
|
2015-07-27 18:06:02 +02:00
|
|
|
import EventActions from './actions/event_actions';
|
2015-07-27 18:21:20 +02:00
|
|
|
|
|
|
|
/* eslint-disable */
|
|
|
|
// You can comment out the modules you don't need
|
|
|
|
// import DebugHandler from './third_party/debug';
|
|
|
|
import GoogleAnalyticsHandler from './third_party/ga';
|
|
|
|
import RavenHandler from './third_party/raven';
|
|
|
|
import IntercomHandler from './third_party/intercom';
|
2015-09-04 11:49:55 +02:00
|
|
|
import NotificationsHandler from './third_party/notifications';
|
2015-11-09 17:46:49 +01:00
|
|
|
import FacebookHandler from './third_party/facebook';
|
2015-07-27 18:21:20 +02:00
|
|
|
/* eslint-enable */
|
2015-07-27 18:06:02 +02:00
|
|
|
|
2015-07-17 15:41:09 +02:00
|
|
|
initLogging();
|
2015-07-14 17:12:32 +02:00
|
|
|
|
2015-06-10 17:28:36 +02:00
|
|
|
let headers = {
|
|
|
|
'Accept': 'application/json',
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
};
|
|
|
|
|
2015-06-16 13:48:48 +02:00
|
|
|
requests.defaults({
|
2015-06-01 14:22:04 +02:00
|
|
|
urlMap: ApiUrls,
|
|
|
|
http: {
|
2015-06-10 17:28:36 +02:00
|
|
|
headers: headers,
|
2015-06-15 11:55:50 +02:00
|
|
|
credentials: 'include'
|
2015-06-01 14:22:04 +02:00
|
|
|
}
|
|
|
|
});
|
2015-05-20 11:23:50 +02:00
|
|
|
|
2015-07-10 16:43:35 +02:00
|
|
|
class AppGateway {
|
|
|
|
start() {
|
2015-07-14 17:12:32 +02:00
|
|
|
let settings;
|
2015-09-29 14:58:56 +02:00
|
|
|
let subdomain = getSubdomain();
|
2015-07-10 16:43:35 +02:00
|
|
|
|
2015-07-14 17:12:32 +02:00
|
|
|
try {
|
|
|
|
settings = getSubdomainSettings(subdomain);
|
2015-09-29 14:58:56 +02:00
|
|
|
AppConstants.whitelabel = settings;
|
2015-07-14 21:15:10 +02:00
|
|
|
updateApiUrls(settings.type, subdomain);
|
2015-07-27 18:06:02 +02:00
|
|
|
this.load(settings);
|
2015-07-14 17:12:32 +02:00
|
|
|
} catch(err) {
|
|
|
|
// if there are no matching subdomains, we're routing
|
|
|
|
// to the default frontend
|
2015-07-17 15:52:53 +02:00
|
|
|
console.logGlobal(err);
|
2015-07-27 18:06:02 +02:00
|
|
|
this.load();
|
2015-07-14 17:12:32 +02:00
|
|
|
}
|
2015-07-10 16:43:35 +02:00
|
|
|
}
|
|
|
|
|
2015-07-27 18:06:02 +02:00
|
|
|
load(settings) {
|
|
|
|
let type = 'default';
|
2015-08-11 17:40:26 +02:00
|
|
|
let subdomain = 'www';
|
2015-10-01 15:57:46 +02:00
|
|
|
let redirectRoute = (<Redirect from="/" to="/collection" />);
|
2015-08-11 17:40:26 +02:00
|
|
|
|
2015-07-27 18:06:02 +02:00
|
|
|
if (settings) {
|
|
|
|
type = settings.type;
|
2015-08-11 17:40:26 +02:00
|
|
|
subdomain = settings.subdomain;
|
2015-07-27 18:06:02 +02:00
|
|
|
}
|
2015-09-21 16:23:18 +02:00
|
|
|
|
2015-10-09 15:19:24 +02:00
|
|
|
// www and cc do not have a landing page
|
|
|
|
if(subdomain && subdomain !== 'cc') {
|
2015-10-01 15:57:46 +02:00
|
|
|
redirectRoute = null;
|
|
|
|
}
|
|
|
|
|
2015-09-30 17:09:46 +02:00
|
|
|
// Adds a client specific class to the body for whitelabel styling
|
2015-09-21 16:23:18 +02:00
|
|
|
window.document.body.classList.add('client--' + subdomain);
|
|
|
|
|
2015-09-30 17:09:46 +02:00
|
|
|
// Send the applicationWillBoot event to the third-party stores
|
2015-07-27 18:06:02 +02:00
|
|
|
EventActions.applicationWillBoot(settings);
|
2015-09-30 17:09:46 +02:00
|
|
|
|
2015-10-12 09:24:18 +02:00
|
|
|
// `history.listen` is called on every route change, which is perfect for
|
|
|
|
// us in that case.
|
2015-10-01 15:17:55 +02:00
|
|
|
history.listen(EventActions.routeDidChange);
|
|
|
|
|
2016-01-25 13:33:20 +01:00
|
|
|
ReactDOM.render((
|
2015-09-30 17:09:46 +02:00
|
|
|
<Router history={history}>
|
2015-10-01 15:57:46 +02:00
|
|
|
{redirectRoute}
|
2015-09-30 17:09:46 +02:00
|
|
|
{getRoutes(type, subdomain)}
|
|
|
|
</Router>
|
|
|
|
), document.getElementById('main'));
|
|
|
|
|
|
|
|
// Send the applicationDidBoot event to the third-party stores
|
2015-07-27 18:06:02 +02:00
|
|
|
EventActions.applicationDidBoot(settings);
|
2015-07-10 16:43:35 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
let ag = new AppGateway();
|
|
|
|
ag.start();
|
2015-07-17 15:41:09 +02:00
|
|
|
|