mirror of
				https://github.com/vector-im/element-web.git
				synced 2025-10-31 08:11:16 +01:00 
			
		
		
		
	Make the config optional
Accept 404 errors from getting the config and start MatrixChat with no config, make other errors display a simple error message to prevent a completely blank page if the config does fail to load.
This commit is contained in:
		
							parent
							
								
									b3ae9cc9d4
								
							
						
					
					
						commit
						f6aa9a7ea4
					
				| @ -121,6 +121,8 @@ module.exports = React.createClass({ | |||||||
|             var data = {} |             var data = {} | ||||||
|             if (this.props.brand) { |             if (this.props.brand) { | ||||||
|                 data['brand'] = this.props.brand; |                 data['brand'] = this.props.brand; | ||||||
|  |             } else if (this.props.brand === undefined) { | ||||||
|  |                 data['brand'] = 'Vector'; | ||||||
|             } |             } | ||||||
|             emailPusherPromise = UserSettingsStore.addEmailPusher(address, data); |             emailPusherPromise = UserSettingsStore.addEmailPusher(address, data); | ||||||
|         } else { |         } else { | ||||||
|  | |||||||
| @ -79,6 +79,7 @@ var validBrowser = checkBrowserFeatures([ | |||||||
|     "displaytable", "flexbox", "es5object", "es5function", "localstorage", |     "displaytable", "flexbox", "es5object", "es5function", "localstorage", | ||||||
|     "objectfit" |     "objectfit" | ||||||
| ]); | ]); | ||||||
|  | var configError; | ||||||
| 
 | 
 | ||||||
| // We want to support some name / value pairs in the fragment
 | // We want to support some name / value pairs in the fragment
 | ||||||
| // so we're re-using query string like format
 | // so we're re-using query string like format
 | ||||||
| @ -112,6 +113,8 @@ function parseQs(location) { | |||||||
| // Here, we do some crude URL analysis to allow
 | // Here, we do some crude URL analysis to allow
 | ||||||
| // deep-linking.
 | // deep-linking.
 | ||||||
| function routeUrl(location) { | function routeUrl(location) { | ||||||
|  |     if (!window.matrixChat) return; | ||||||
|  | 
 | ||||||
|     console.log("Routing URL "+window.location); |     console.log("Routing URL "+window.location); | ||||||
|     var params = parseQs(location); |     var params = parseQs(location); | ||||||
|     var loginToken = params.loginToken; |     var loginToken = params.loginToken; | ||||||
| @ -189,7 +192,7 @@ function getConfig() { | |||||||
|         { method: "GET", url: "config.json", json: true }, |         { method: "GET", url: "config.json", json: true }, | ||||||
|         (err, response, body) => { |         (err, response, body) => { | ||||||
|             if (err || response.status < 200 || response.status >= 300) { |             if (err || response.status < 200 || response.status >= 300) { | ||||||
|                 throw "failed to load config.json"; |                 deferred.reject({err: err, response: response}); | ||||||
|             } |             } | ||||||
| 
 | 
 | ||||||
|             deferred.resolve(body); |             deferred.resolve(body); | ||||||
| @ -213,10 +216,25 @@ async function loadApp() { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     let configJson = await getConfig(); |     let configJson; | ||||||
|  |     try { | ||||||
|  |         configJson = await getConfig(); | ||||||
|  |     } catch (e) { | ||||||
|  |         // On 404 errors, carry on without a config,
 | ||||||
|  |         // but on other errors, fail, otherwise it will
 | ||||||
|  |         // lead to subtle errors where the app runs with
 | ||||||
|  |         // the default config it fails to fetch config.json.
 | ||||||
|  |         if (e.response.status != 404) { | ||||||
|  |             configError = e; | ||||||
|  |         } | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     console.log("Vector starting at "+window.location); |     console.log("Vector starting at "+window.location); | ||||||
|     if (validBrowser) { |     if (configError) { | ||||||
|  |         window.matrixChat = ReactDOM.render(<div className="error"> | ||||||
|  |             Unable to load config file: please refresh the page to try again. | ||||||
|  |         </div>, document.getElementById('matrixchat')); | ||||||
|  |     } else if (validBrowser) { | ||||||
|         var MatrixChat = sdk.getComponent('structures.MatrixChat'); |         var MatrixChat = sdk.getComponent('structures.MatrixChat'); | ||||||
|         var fragParts = parseQsFromFragment(window.location); |         var fragParts = parseQsFromFragment(window.location); | ||||||
|         window.matrixChat = ReactDOM.render( |         window.matrixChat = ReactDOM.render( | ||||||
|  | |||||||
| @ -1 +0,0 @@ | |||||||
| ../config.json |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user