1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-28 08:37:59 +02:00
onion/js/app.js

109 lines
3.0 KiB
JavaScript
Raw Normal View History

2015-05-13 16:26:12 +02:00
'use strict';
import 'babel/polyfill';
2015-07-03 10:40:04 +02:00
2015-05-13 16:26:12 +02:00
import React from 'react';
import { Router, Redirect } from 'react-router';
import history from './history';
2015-06-01 14:22:04 +02:00
2015-07-27 18:21:20 +02:00
/* eslint-disable */
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';
import AppConstants from './constants/application_constants';
import getRoutes from './routes';
import requests from './utils/requests';
2015-06-01 14:22:04 +02:00
import { updateApiUrls } from './constants/api_urls';
import { getSubdomainSettings } from './utils/constants_utils';
2015-07-17 15:41:09 +02:00
import { initLogging } from './utils/error_utils';
import { getSubdomain } from './utils/general_utils';
2015-07-17 15:41:09 +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-17 15:41:09 +02:00
initLogging();
2015-06-10 17:28:36 +02:00
let headers = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
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
class AppGateway {
start() {
let settings;
let subdomain = getSubdomain();
try {
settings = getSubdomainSettings(subdomain);
AppConstants.whitelabel = settings;
2015-07-14 21:15:10 +02:00
updateApiUrls(settings.type, subdomain);
this.load(settings);
} catch(err) {
// if there are no matching subdomains, we're routing
// to the default frontend
console.logGlobal(err);
this.load();
}
}
load(settings) {
let type = 'default';
let subdomain = 'www';
2015-10-01 15:57:46 +02:00
let redirectRoute = (<Redirect from="/" to="/collection" />);
if (settings) {
type = settings.type;
subdomain = settings.subdomain;
}
2015-09-21 16:23:18 +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;
}
// 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);
// Send the applicationWillBoot event to the third-party stores
EventActions.applicationWillBoot(settings);
2015-10-12 09:24:18 +02:00
// `history.listen` is called on every route change, which is perfect for
// us in that case.
history.listen(EventActions.routeDidChange);
React.render((
<Router history={history}>
2015-10-01 15:57:46 +02:00
{redirectRoute}
{getRoutes(type, subdomain)}
</Router>
), document.getElementById('main'));
// Send the applicationDidBoot event to the third-party stores
EventActions.applicationDidBoot(settings);
}
}
let ag = new AppGateway();
ag.start();
2015-07-17 15:41:09 +02:00