import * as defaultConfig from "@/assets/config.json"; export default { install(app, defaultServerFromLocation, onloaded) { var config = defaultConfig.default; config["loaded"] = false; const getRuntimeConfig = () => { return fetch('./config.json?ms=' + Date.now()).then((res) => res.json()).catch(err => { console.error("Failed to get config:", err); return {}; }); } config.promise = getRuntimeConfig().then((json) => { // Reactively use all the config values for (const key of Object.keys(json)) { config[key] = json[key]; } // If default server is not set, default to current server address if (!json.defaultBaseUrl) { if (json.defaultServer) { // TODO - Only to migrate old values (defaultServer was renamed defaultBaseUrl), can be removed later... config["defaultBaseUrl"] = defaultServerFromLocation; } else { config["defaultBaseUrl"] = json.defaultServer; } } if (json.useFullyQualifiedDMLinks == undefined) { config["useFullyQualifiedDMLinks"] = true; // Default to true } if (json.disableMediaSharing == undefined) { config["disableMediaSharing"] = false; } if (!json.maxSizeAutoDownloads) { config["maxSizeAutoDownloads"] = 10 * 1024 * 1024; } if (!json.roomTypes) { let roomTypes = ["group_chat", "channel"]; const fileDropEnabled = (json.experimental_file_mode === undefined) ? true : !!json.experimental_file_mode; if (fileDropEnabled) { roomTypes.push("file_drop"); } config["roomTypes"] = roomTypes; } config["loaded"] = true; document.title = config.appName || ""; // Tell callback we are done loading runtime config if (onloaded) { onloaded(config); } return config; }); /** * If there is an explicit mapping for this MX domain in the config file, return the endpoint URL that it maps to. * @param {*} domain * @returns */ config.getMatrixDomainPartMapping = (domain) => { console.log("Get domain endpoint mapping for", domain); if (config.matrixDomainPartMapping && config.matrixDomainPartMapping[domain]) { const mapping = config.matrixDomainPartMapping[domain]; if (Array.isArray(mapping)) { return mapping[0]; //TODO - Use the first one for now, but maybe rotate somehow? } return mapping; } return undefined; } app.$config = config; app.config.globalProperties.$config = config; } }