13936: Use Workbench.SiteName for the upper left banner
[arvados-workbench2.git] / src / common / config.ts
index 7363b95d4e70351dd8c29bb6e40327bb2a73063d..40ba801266bb8e484e903cf4c2c0b768ecc1c0ab 100644 (file)
@@ -44,6 +44,9 @@ export interface ClusterConfigJSON {
         ArvadosDocsite: string;
         VocabularyURL: string;
         FileViewersConfigURL: string;
+        WelcomePageHTML: string;
+        InactivePageHTML: string;
+        SiteName: string;
     };
 }
 
@@ -60,6 +63,7 @@ export class Config {
     workbench2Url: string;
     vocabularyUrl: string;
     fileViewersConfigUrl: string;
+    clusterConfig: ClusterConfigJSON;
 }
 
 export const fetchConfig = () => {
@@ -72,7 +76,7 @@ export const fetchConfig = () => {
         })
         .then(workbenchConfig => {
             if (workbenchConfig.API_HOST === undefined) {
-                throw new Error(`Unable to start Workbench. API_HOST is undefined in ${WORKBENCH_CONFIG_URL}.`);
+                throw new Error(`Unable to start Workbench. API_HOST is undefined in ${WORKBENCH_CONFIG_URL} or the environment.`);
             }
             return Axios.get<ClusterConfigJSON>(getClusterConfigURL(workbenchConfig.API_HOST)).then(response => {
                 const config = new Config();
@@ -111,6 +115,7 @@ remove the entire ${varName} entry from ${WORKBENCH_CONFIG_URL}`);
                 config.workbench2Url = clusterConfigJSON.Services.Workbench2.ExternalURL;
                 config.workbenchUrl = clusterConfigJSON.Services.Workbench1.ExternalURL;
                 config.keepWebServiceUrl = clusterConfigJSON.Services.WebDAV.ExternalURL;
+                config.clusterConfig = clusterConfigJSON;
                 mapRemoteHosts(clusterConfigJSON, config);
 
                 return { config, apiHost: workbenchConfig.API_HOST };
@@ -125,6 +130,27 @@ export const mapRemoteHosts = (clusterConfigJSON: ClusterConfigJSON, config: Con
     delete config.remoteHosts["*"];
 };
 
+export const mockClusterConfigJSON = (config: Partial<ClusterConfigJSON>): ClusterConfigJSON => ({
+    ClusterID: "",
+    RemoteClusters: {},
+    Services: {
+        Controller: { ExternalURL: "" },
+        Workbench1: { ExternalURL: "" },
+        Workbench2: { ExternalURL: "" },
+        Websocket: { ExternalURL: "" },
+        WebDAV: { ExternalURL: "" },
+    },
+    Workbench: {
+        ArvadosDocsite: "",
+        VocabularyURL: "",
+        FileViewersConfigURL: "",
+        WelcomePageHTML: "",
+        InactivePageHTML: "",
+        SiteName: "",
+    },
+    ...config
+});
+
 export const mockConfig = (config: Partial<Config>): Config => ({
     baseUrl: "",
     keepWebServiceUrl: "",
@@ -135,7 +161,9 @@ export const mockConfig = (config: Partial<Config>): Config => ({
     workbenchUrl: "",
     workbench2Url: "",
     vocabularyUrl: "",
-    fileViewersConfigUrl: ""
+    fileViewersConfigUrl: "",
+    clusterConfig: mockClusterConfigJSON({}),
+    ...config
 });
 
 const getDefaultConfig = (): WorkbenchConfig => {
@@ -157,4 +185,4 @@ const getDefaultConfig = (): WorkbenchConfig => {
 
 export const ARVADOS_API_PATH = "arvados/v1";
 export const CLUSTER_CONFIG_URL = "arvados/v1/config";
-export const getClusterConfigURL = (apiHost: string) => `${window.location.protocol}//${apiHost}/${CLUSTER_CONFIG_URL}?nocache=${(new Date()).getTime()}`;
\ No newline at end of file
+export const getClusterConfigURL = (apiHost: string) => `${window.location.protocol}//${apiHost}/${CLUSTER_CONFIG_URL}?nocache=${(new Date()).getTime()}`;