Finally fix!
This commit is contained in:
		
							parent
							
								
									63082ac8b8
								
							
						
					
					
						commit
						5e12df2143
					
				
					 1 changed files with 111 additions and 108 deletions
				
			
		|  | @ -14,10 +14,10 @@ | |||
| // ブロックの中に入れないと、定義した変数がブラウザのグローバルスコープに登録されてしまい邪魔なので
 | ||||
| (async () => { | ||||
| 	window.onerror = (e) => { | ||||
| 		renderError('SOMETHING_HAPPENED', e); | ||||
| 		await renderError('SOMETHING_HAPPENED', e); | ||||
| 	}; | ||||
| 	window.onunhandledrejection = (e) => { | ||||
| 		renderError('SOMETHING_HAPPENED_IN_PROMISE', e); | ||||
| 		await renderError('SOMETHING_HAPPENED_IN_PROMISE', e); | ||||
| 	}; | ||||
| 
 | ||||
| 	const v = localStorage.getItem('v') || VERSION; | ||||
|  | @ -47,7 +47,7 @@ | |||
| 			localStorage.setItem('localeVersion', v); | ||||
| 		} else { | ||||
| 			await checkUpdate(); | ||||
| 			renderError('LOCALE_FETCH_FAILED'); | ||||
| 			await renderError('LOCALE_FETCH_FAILED'); | ||||
| 			return; | ||||
| 		} | ||||
| 	} | ||||
|  | @ -57,7 +57,7 @@ | |||
| 	import(`/assets/${CLIENT_ENTRY}`) | ||||
| 		.catch(async e => { | ||||
| 			await checkUpdate(); | ||||
| 			renderError('APP_FETCH_FAILED', e); | ||||
| 			await renderError('APP_FETCH_FAILED', e); | ||||
| 		}) | ||||
| 	//#endregion
 | ||||
| 
 | ||||
|  | @ -102,12 +102,54 @@ | |||
| 		document.head.appendChild(style); | ||||
| 	} | ||||
| 
 | ||||
| 	function renderError(code, details) { | ||||
| 	async function addStyle(styleText) { | ||||
| 		let css = document.createElement('style'); | ||||
| 		css.appendChild(document.createTextNode(styleText)); | ||||
| 		document.head.appendChild(css); | ||||
| 	} | ||||
| 
 | ||||
| 	async function renderError(code, details) { | ||||
| 		let errorsElement = document.getElementById('errors'); | ||||
| 
 | ||||
| 		if (!errorsElement) { | ||||
| 			document.head.insertAdjacentHTML("beforeend", ` | ||||
| 			<style> | ||||
| 			document.documentElement.innerHTML = ` | ||||
| 			<svg class="icon-warning" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-triangle" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> | ||||
|    			<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> | ||||
|    			<path d="M12 9v2m0 4v.01"></path> | ||||
|    			<path d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75"></path> | ||||
| 			</svg> | ||||
| 			<h1>An error has occurred!</h1> | ||||
| 			<button class="button-big" onclick="location.reload(true);"> | ||||
| 				<span class="button-label-big">Refresh</span> | ||||
| 			</button> | ||||
|       <p class="dont-worry">Don't worry, it's (probably) not your fault.</p> | ||||
| 			<p>If the problem persists after refreshing, please contact your instance's administrator.<br>You may also try the following options:</p> | ||||
|       <a href="/flush"> | ||||
|       <button class="button-small"> | ||||
|         <span class="button-label-small">Flush preferences and cache</span> | ||||
|       </button> | ||||
|       </a> | ||||
| 			<br> | ||||
|       <a href="/cli"> | ||||
|         <button class="button-small"> | ||||
|           <span class="button-label-small">Start the simple client</span> | ||||
|         </button> | ||||
|       </a> | ||||
| 			<br> | ||||
|       <a href="/bios"> | ||||
|         <button class="button-small"> | ||||
|           <span class="button-label-small">Attempt to repair in BIOS</span> | ||||
|         </button> | ||||
|       </a> | ||||
| 			<br> | ||||
| 			<div id="errors"></div> | ||||
| 			`;
 | ||||
| 			errorsElement = document.getElementById('errors'); | ||||
| 		} | ||||
| 		const detailsElement = document.createElement('details'); | ||||
| 		detailsElement.innerHTML = `<br><summary><code>ERROR CODE: ${code}</code></summary>${JSON.stringify(details)}`; | ||||
| 		errorsElement.appendChild(detailsElement); | ||||
| 		await addStyle(` | ||||
| 		* { | ||||
| 			font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif; | ||||
| 		} | ||||
|  | @ -206,46 +248,7 @@ | |||
| 		summary > * { | ||||
| 			display: inline; | ||||
| 		} | ||||
| 			</style> | ||||
| 		`)
 | ||||
| 			document.documentElement.innerHTML = ` | ||||
| 			<svg class="icon-warning" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-alert-triangle" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"> | ||||
|    			<path stroke="none" d="M0 0h24v24H0z" fill="none"></path> | ||||
|    			<path d="M12 9v2m0 4v.01"></path> | ||||
|    			<path d="M5 19h14a2 2 0 0 0 1.84 -2.75l-7.1 -12.25a2 2 0 0 0 -3.5 0l-7.1 12.25a2 2 0 0 0 1.75 2.75"></path> | ||||
| 			</svg> | ||||
| 			<h1>An error has occurred!</h1> | ||||
| 			<button class="button-big" onclick="location.reload(true);"> | ||||
| 				<span class="button-label-big">Refresh</span> | ||||
| 			</button> | ||||
|       <p class="dont-worry">Don't worry, it's (probably) not your fault.</p> | ||||
| 			<p>If the problem persists after refreshing, please contact your instance's administrator.<br>You may also try the following options:</p> | ||||
|       <a href="/flush"> | ||||
|       <button class="button-small"> | ||||
|         <span class="button-label-small">Flush preferences and cache</span> | ||||
|       </button> | ||||
|       </a> | ||||
| 			<br> | ||||
|       <a href="/cli"> | ||||
|         <button class="button-small"> | ||||
|           <span class="button-label-small">Start the simple client</span> | ||||
|         </button> | ||||
|       </a> | ||||
| 			<br> | ||||
|       <a href="/bios"> | ||||
|         <button class="button-small"> | ||||
|           <span class="button-label-small">Attempt to repair in BIOS</span> | ||||
|         </button> | ||||
|       </a> | ||||
| 			<br> | ||||
| 			<div id="errors"></div> | ||||
| 			`;
 | ||||
| 			errorsElement = document.getElementById('errors'); | ||||
| 		} | ||||
| 
 | ||||
| 		const detailsElement = document.createElement('details'); | ||||
| 		detailsElement.innerHTML = `<br><summary><code>ERROR CODE: ${code}</code></summary>${JSON.stringify(details)}`; | ||||
| 		errorsElement.appendChild(detailsElement); | ||||
| 	} | ||||
| 
 | ||||
| 	// eslint-disable-next-line no-inner-declarations
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue