let host = window.location.host;
let protocol = window.location.protocol;
let parts = host.split(".");
let subdomain = "";
// If we get more than 3 parts, then we have a subdomain
// INFO: This could be 4, if you have a co.uk TLD or something like that.
if (parts.length >= 3) {
subdomain = parts[0];
// Remove the subdomain from the parts list
parts.splice(0, 1);
// Set the location to the new url
window.location = protocol + "//" + parts.join(".") + "/" + subdomain;
}
import React from 'react';
import {MainApplication} from './Main';
function subdomainApplications (map) {
let main = map.find((item)=> item.main);
if (!main) {
throw new Error('Must set main flag to true on at least one subdomain app');
}
return function getComponent () {
const parts = window.location.hostname.split('.');
let last_index = -2;
const last = parts[parts.length - 1];
const is_localhost = last === 'localhost';
if (is_localhost) {
last_index = -1;
}
const subdomain = parts.slice(0, last_index).join('.');
if (!subdomain) {
return main.application;
}
const app = map.find(({subdomains})=> subdomains.includes(subdomain));
if (app) {
return app.application;
} else {
return main.application;
}
}
}
const getApp = subdomainApplications([
{
subdomains: ['www'],
application: function () {
return 'Main!'
}
main: true
},
{
subdomains: ['foo'],
application: function () {
return 'Foo!';
}
},
{
subdomains: ['bar', 'baz.bar'],
application: function () {
return 'Bar!';
}
}
]);
export default function Application () {
const App = getApp();
return (
<App className="Application" />
);
}