1
0
mirror of https://github.com/ascribe/onion.git synced 2024-06-16 01:23:18 +02:00

Enable code splitting for whitelabels

This commit is contained in:
Brett Sun 2016-06-03 17:52:38 +02:00
parent ab946abfbc
commit d6c1dca63a
7 changed files with 343 additions and 337 deletions

View File

@ -1,29 +1,22 @@
'use strict';
import 'core-js/es6'; import 'core-js/es6';
import 'core-js/stage/4'; import 'core-js/stage/4';
import 'classlist-polyfill'; import 'classlist-polyfill';
import 'isomorphic-fetch'; import 'isomorphic-fetch';
import React from 'react'; import React from 'react';
import { Router, Redirect } from 'react-router'; import { Router } from 'react-router';
import AppResolver from './app_resolver';
import history from './history'; import history from './history';
import ApiUrls from './constants/api_urls';
import AppConstants from './constants/application_constants';
import getRoutes from './routes';
import requests from './utils/requests';
import { updateApiUrls } from './constants/api_urls';
import { getDefaultSubdomainSettings, getSubdomainSettings } from './utils/constants_utils'; import { getDefaultSubdomainSettings, getSubdomainSettings } from './utils/constants_utils';
import { initLogging } from './utils/error_utils'; import { initLogging } from './utils/error_utils';
import { getSubdomain } from './utils/general_utils'; import { getSubdomain } from './utils/general_utils';
import requests from './utils/requests';
// FIXME: redo these event actions // FIXME: rename these event actions
import EventActions from './actions/event_actions'; import EventActions from './actions/event_actions';
// FIXME: use a ./third_party/index.js instead, remove DebugHandler
// You can comment out the modules you don't need // You can comment out the modules you don't need
// import DebugHandler from './third_party/debug_handler'; // import DebugHandler from './third_party/debug_handler';
import './third_party/facebook_handler'; import './third_party/facebook_handler';
@ -38,68 +31,60 @@ import '../sass/main.scss';
const AppGateway = { const AppGateway = {
start() { start() {
try { let subdomainSettings;
const subdomain = getSubdomain();
const settings = getSubdomainSettings(subdomain);
AppConstants.whitelabel = settings; try {
updateApiUrls(settings.type, subdomain); subdomainSettings = getSubdomainSettings(getSubdomain());
this.load(settings); } catch (err) {
} catch(err) { // if there are no matching subdomains, we''ll route to the default frontend
// if there are no matching subdomains, we're routing
// to the default frontend
console.logGlobal(err); console.logGlobal(err);
this.load(getDefaultSubdomainSettings()); subdomainSettings = getDefaultSubdomainSettings();
} }
this.load(subdomainSettings);
}, },
load(settings) { load(settings) {
const { subdomain, type } = settings;
let redirectRoute = (<Redirect from="/" to="/collection" />);
if (subdomain) {
// Some whitelabels have landing pages so we should not automatically redirect from / to /collection.
// Only www and cc do not have a landing page.
if (subdomain !== 'cc') {
redirectRoute = null;
}
// Adds a client specific class to the body for whitelabel styling
window.document.body.classList.add('client--' + subdomain);
}
// Send the applicationWillBoot event to the third-party stores // Send the applicationWillBoot event to the third-party stores
EventActions.applicationWillBoot(settings); EventActions.applicationWillBoot(settings);
// `history.listen` is called on every route change, which is perfect for // `history.listen` is called on every route change, which is perfect for routeDidChange
// us in that case. // events.
history.listen(EventActions.routeDidChange); history.listen(EventActions.routeDidChange);
React.render(( // Adds a client specific class to the body for whitelabel styling
<Router history={history}> window.document.body.classList.add(`client--${settings.subdomain}`);
{redirectRoute}
{getRoutes(type, subdomain)}
</Router>
), document.getElementById('main'));
// Send the applicationDidBoot event to the third-party stores AppResolver
EventActions.applicationDidBoot(settings); .resolve(settings)
.then(({ apiUrls, redirectRoute, routes }) => {
// Initialize api urls and defaults for outgoing requests
requests.defaults({
urlMap: apiUrls,
http: {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
credentials: 'include'
}
});
React.render((
<Router history={history}>
{redirectRoute}
{routes}
</Router>
), document.getElementById('main'));
// Send the applicationDidBoot event to the third-party stores
EventActions.applicationDidBoot(settings);
});
} }
}; };
// Initialize pre-start components // Initialize pre-start components
initLogging(); initLogging();
requests.defaults({
urlMap: ApiUrls,
http: {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
credentials: 'include'
}
});
// And bootstrap app // And bootstrap app
AppGateway.start(); AppGateway.start();

22
js/app_resolver.js Normal file
View File

@ -0,0 +1,22 @@
import React from 'react';
import { Redirect } from 'react-router';
import Routes from './routes';
import ApiUrls from './constants/api_urls';
function resolve({ subdomain, type }) {
if (type === 'wallet') {
return System.import('./components/whitelabel/wallet/wallet_app_resolver')
.then(({ default: WalletAppResolver }) => WalletAppResolver.resolve(subdomain));
} else {
return Promise.resolve({
apiUrls: ApiUrls,
redirectRoute: (<Redirect from="/" to="/collection" />),
routes: Routes
});
}
}
export default { resolve };

View File

@ -0,0 +1,22 @@
import React from 'react';
import { Redirect } from 'react-router';
import getWalletApiUrls from './constants/wallet_api_urls';
import getWalletRoutes from './wallet_routes';
import { updateApiUrls } from '../../../constants/api_urls';
function resolve(subdomain) {
// Most whitelabels have landing pages so we should not automatically redirect from / to /collection.
// Only cc does not have a landing page.
const redirectRoute = subdomain === 'cc' ? (<Redirect from="/" to="/collection" />) : null;
return {
redirectRoute,
apiUrls: updateApiUrls(getWalletApiUrls(subdomain)),
routes: getWalletRoutes(subdomain)
};
}
export default { resolve };

View File

@ -1,5 +1,3 @@
'use strict';
import React from 'react'; import React from 'react';
import { Route, IndexRoute } from 'react-router'; import { Route, IndexRoute } from 'react-router';
@ -17,7 +15,6 @@ import EditionContainer from '../../../components/ascribe_detail/edition_contain
import SettingsContainer from '../../../components/ascribe_settings/settings_container'; import SettingsContainer from '../../../components/ascribe_settings/settings_container';
import ContractSettings from '../../../components/ascribe_settings/contract_settings'; import ContractSettings from '../../../components/ascribe_settings/contract_settings';
import ErrorNotFoundPage from '../../../components/error_not_found_page'; import ErrorNotFoundPage from '../../../components/error_not_found_page';
import Footer from '../../../components/footer.js';
import CCRegisterPiece from './components/cc/cc_register_piece'; import CCRegisterPiece from './components/cc/cc_register_piece';
@ -54,409 +51,407 @@ import WalletApp from './wallet_app';
import { getLangText } from '../../../utils/lang_utils'; import { getLangText } from '../../../utils/lang_utils';
let ROUTES = { const ROUTES = {
'cyland': ( 'cyland': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute <IndexRoute
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(CylandLanding)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(CylandLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(CylandRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(CylandRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(CylandPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(CylandPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route <Route
path='editions/:editionId' path="editions/:editionId"
component={EditionContainer} /> component={EditionContainer} />
<Route <Route
path='coa_verify' path="coa_verify"
component={CoaVerifyContainer} /> component={CoaVerifyContainer} />
<Route <Route
path='pieces/:pieceId' path="pieces/:pieceId"
component={CylandPieceContainer} /> component={CylandPieceContainer} />
<Route <Route
path='*' path="*"
component={ErrorNotFoundPage} /> component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'cc': ( 'cc': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(CCRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(CCRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} /> headerTitle={getLangText('+ NEW WORK')} />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(PieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(PieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route <Route
path='pieces/:pieceId' path="pieces/:pieceId"
component={PieceContainer} /> component={PieceContainer} />
<Route <Route
path='editions/:editionId' path="editions/:editionId"
component={EditionContainer} /> component={EditionContainer} />
<Route <Route
path='coa_verify' path="coa_verify"
component={CoaVerifyContainer} /> component={CoaVerifyContainer} />
<Route <Route
path='*' path="*"
component={ErrorNotFoundPage} /> component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'ikonotv': ( 'ikonotv': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute <IndexRoute
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(IkonotvLanding)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(IkonotvLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='request_loan' path="request_loan"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SendContractAgreementForm)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SendContractAgreementForm)}
headerTitle={getLangText('SEND NEW CONTRACT')} headerTitle={getLangText('SEND NEW CONTRACT')}
aclName='acl_create_contractagreement' /> aclName="acl_create_contractagreement" />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(IkonotvRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(IkonotvRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(IkonotvPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(IkonotvPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route <Route
path='contract_notifications' path="contract_notifications"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(IkonotvContractNotifications)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(IkonotvContractNotifications)} />
<Route <Route
path='pieces/:pieceId' path="pieces/:pieceId"
component={IkonotvPieceContainer} /> component={IkonotvPieceContainer} />
<Route <Route
path='editions/:editionId' path="editions/:editionId"
component={EditionContainer} /> component={EditionContainer} />
<Route <Route
path='coa_verify' path="coa_verify"
component={CoaVerifyContainer} /> component={CoaVerifyContainer} />
<Route <Route
path='*' path="*"
component={ErrorNotFoundPage} /> component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'lumenus': ( 'lumenus': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute <IndexRoute
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LumenusLanding)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LumenusLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route <Route
path='pieces/:pieceId' path="pieces/:pieceId"
component={MarketPieceContainer} /> component={MarketPieceContainer} />
<Route <Route
path='editions/:editionId' path="editions/:editionId"
component={MarketEditionContainer} /> component={MarketEditionContainer} />
<Route <Route
path='coa_verify' path="coa_verify"
component={CoaVerifyContainer} /> component={CoaVerifyContainer} />
<Route <Route
path='*' path="*"
component={ErrorNotFoundPage} /> component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'23vivi': ( '23vivi': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(Vivi23Landing)} /> <IndexRoute component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(Vivi23Landing)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' aclName="acl_wallet_submit"
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(Vivi23PieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(Vivi23PieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' disableOn="noPieces"
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='pieces/:pieceId' path="pieces/:pieceId"
component={MarketPieceContainer} component={MarketPieceContainer}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='editions/:editionId' path="editions/:editionId"
component={MarketEditionContainer} component={MarketEditionContainer}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='coa_verify' path="coa_verify"
component={CoaVerifyContainer} component={CoaVerifyContainer}
footer={MarketFooter} /> footer={MarketFooter} />
<Route <Route
path='*' path="*"
component={ErrorNotFoundPage} component={ErrorNotFoundPage}
footer={MarketFooter} /> footer={MarketFooter} />
</Route> </Route>
), ),
'polline': ( 'polline': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PollineLanding)} /> <IndexRoute component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PollineLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route path='pieces/:pieceId' component={MarketPieceContainer} /> <Route path="pieces/:pieceId" component={MarketPieceContainer} />
<Route path='editions/:editionId' component={MarketEditionContainer} /> <Route path="editions/:editionId" component={MarketEditionContainer} />
<Route path='verify' component={CoaVerifyContainer} /> <Route path="verify" component={CoaVerifyContainer} />
<Route path='*' component={ErrorNotFoundPage} /> <Route path="*" component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'artcity': ( 'artcity': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(ArtcityLanding)} /> <IndexRoute component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(ArtcityLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route path='pieces/:pieceId' component={MarketPieceContainer} /> <Route path="pieces/:pieceId" component={MarketPieceContainer} />
<Route path='editions/:editionId' component={MarketEditionContainer} /> <Route path="editions/:editionId" component={MarketEditionContainer} />
<Route path='verify' component={CoaVerifyContainer} /> <Route path="verify" component={CoaVerifyContainer} />
<Route path='*' component={ErrorNotFoundPage} /> <Route path="*" component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'demo': ( 'demo': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(MarketLanding)} /> <IndexRoute component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(MarketLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route path='pieces/:pieceId' component={MarketPieceContainer} /> <Route path="pieces/:pieceId" component={MarketPieceContainer} />
<Route path='editions/:editionId' component={MarketEditionContainer} /> <Route path="editions/:editionId" component={MarketEditionContainer} />
<Route path='verify' component={CoaVerifyContainer} /> <Route path="verify" component={CoaVerifyContainer} />
<Route path='*' component={ErrorNotFoundPage} /> <Route path="*" component={ErrorNotFoundPage} />
</Route> </Route>
), ),
'liquidgallery': ( 'liquidgallery': (
<Route path='/' component={WalletApp}> <Route path="/" component={WalletApp}>
<IndexRoute component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(MarketLanding)} /> <IndexRoute component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(MarketLanding)} />
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/', when: 'loggedOut'}))(LogoutContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/', when: 'loggedOut' }))(LogoutContainer)} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} /> component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketRegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketRegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
aclName='acl_wallet_submit' /> aclName="acl_wallet_submit" />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(MarketPieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(MarketPieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' /> disableOn="noPieces" />
<Route path='pieces/:pieceId' component={MarketPieceContainer} /> <Route path="pieces/:pieceId" component={MarketPieceContainer} />
<Route path='editions/:editionId' component={MarketEditionContainer} /> <Route path="editions/:editionId" component={MarketEditionContainer} />
<Route path='verify' component={CoaVerifyContainer} /> <Route path="verify" component={CoaVerifyContainer} />
<Route path='*' component={ErrorNotFoundPage} /> <Route path="*" component={ErrorNotFoundPage} />
</Route> </Route>
) )
}; };
function getRoutes(commonRoutes, subdomain) { export default function getWalletRoutes(subdomain) {
if(subdomain in ROUTES) { if (subdomain in ROUTES) {
return ROUTES[subdomain]; return (ROUTES[subdomain]);
} else { } else {
throw new Error('Subdomain wasn\'t specified in the wallet app.'); throw new Error("Subdomain wasn't specified in the wallet app.");
} }
} }
export default getRoutes;

View File

@ -1,13 +1,7 @@
'use strict';
import AppConstants from './application_constants'; import AppConstants from './application_constants';
import getWalletApiUrls from '../components/whitelabel/wallet/constants/wallet_api_urls';
import { update } from '../utils/general_utils'; const ApiUrls = {
let ApiUrls = {
'applications': AppConstants.apiEndpoint + '/applications/', 'applications': AppConstants.apiEndpoint + '/applications/',
'application_token_refresh': AppConstants.apiEndpoint + '/applications/refresh_token/', 'application_token_refresh': AppConstants.apiEndpoint + '/applications/refresh_token/',
'blob_digitalworks': AppConstants.apiEndpoint + '/blob/digitalworks/', 'blob_digitalworks': AppConstants.apiEndpoint + '/blob/digitalworks/',
@ -79,10 +73,8 @@ let ApiUrls = {
}; };
export function updateApiUrls(type, subdomain) { export function updateApiUrls(updatedApiUrls) {
if (type === 'wallet') { return Object.assign(ApiUrls, updatedApiUrls);
update(getWalletApiUrls(subdomain));
}
} }
export default ApiUrls; export default ApiUrls;

View File

@ -1,10 +1,6 @@
'use strict';
import React from 'react'; import React from 'react';
import { Route } from 'react-router'; import { Route } from 'react-router';
import getWalletRoutes from './components/whitelabel/wallet/wallet_routes';
import AscribeApp from './components/ascribe_app'; import AscribeApp from './components/ascribe_app';
import PieceList from './components/piece_list'; import PieceList from './components/piece_list';
@ -31,62 +27,56 @@ import { ProxyHandler, AuthRedirect } from './components/ascribe_routes/proxy_ha
import { getLangText } from './utils/lang_utils'; import { getLangText } from './utils/lang_utils';
const COMMON_ROUTES = ( const Routes = (
<Route path='/' component={AscribeApp}> <Route path="/" component={AscribeApp}>
<Route <Route
path='login' path="login"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(LoginContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(LoginContainer)}
footer={Footer} /> footer={Footer} />
<Route <Route
path='register_piece' path="register_piece"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(RegisterPiece)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(RegisterPiece)}
headerTitle={getLangText('+ NEW WORK')} headerTitle={getLangText('+ NEW WORK')}
footer={Footer} /> footer={Footer} />
<Route <Route
path='collection' path="collection"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(PieceList)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(PieceList)}
headerTitle={getLangText('COLLECTION')} headerTitle={getLangText('COLLECTION')}
disableOn='noPieces' disableOn="noPieces"
footer={Footer} /> footer={Footer} />
<Route <Route
path='signup' path="signup"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(SignupContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(SignupContainer)}
footer={Footer} /> footer={Footer} />
<Route <Route
path='logout' path="logout"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(LogoutContainer)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(LogoutContainer)}
footer={Footer} /> footer={Footer} />
<Route path='pieces/:pieceId' component={PieceContainer} <Route path="pieces/:pieceId" component={PieceContainer}
footer={Footer} /> footer={Footer} />
<Route path='editions/:editionId' component={EditionContainer} <Route path="editions/:editionId" component={EditionContainer}
footer={Footer} /> footer={Footer} />
<Route <Route
path='password_reset' path="password_reset"
component={ProxyHandler(AuthRedirect({to: '/collection', when: 'loggedIn'}))(PasswordResetContainer)} component={ProxyHandler(AuthRedirect({ to: '/collection', when: 'loggedIn' }))(PasswordResetContainer)}
footer={Footer} /> footer={Footer} />
<Route <Route
path='settings' path="settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(SettingsContainer)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(SettingsContainer)}
footer={Footer} /> footer={Footer} />
<Route <Route
path='contract_settings' path="contract_settings"
component={ProxyHandler(AuthRedirect({to: '/login', when: 'loggedOut'}))(ContractSettings)} component={ProxyHandler(AuthRedirect({ to: '/login', when: 'loggedOut' }))(ContractSettings)}
footer={Footer} /> footer={Footer} />
<Route path='coa_verify' component={CoaVerifyContainer} <Route
path="coa_verify"
component={CoaVerifyContainer}
footer={Footer} /> footer={Footer} />
<Route path='*' component={ErrorNotFoundPage} <Route
path="*"
component={ErrorNotFoundPage}
footer={Footer} /> footer={Footer} />
</Route> </Route>
); );
export default Routes;
function getRoutes(type, subdomain) {
if (type === 'wallet') {
return getWalletRoutes(COMMON_ROUTES, subdomain);
} else {
return COMMON_ROUTES;
}
}
export default getRoutes;

View File

@ -11,9 +11,9 @@ import { InjectInHeadUtils } from '../../utils/inject_utils';
function importLib() { function importLib() {
return InjectInHeadUtils.inject(AppConstants.jquery.sdkUrl) return InjectInHeadUtils.inject(AppConstants.jquery.sdkUrl)
.then(() => Promise.all([ .then(() => Promise.all([
System.import('shmui/jquery.shmui.js'), System.import('shmui/jquery.shmui'),
System.import('shmui/shmui.css') System.import('shmui/shmui.css')
])) ]));
} }
export default { importLib }; export default { importLib };