Better recovery system
This commit is contained in:
		
							parent
							
								
									d59ad70802
								
							
						
					
					
						commit
						172cca6ad6
					
				
					 7 changed files with 124 additions and 116 deletions
				
			
		| 
						 | 
				
			
			@ -18,6 +18,8 @@
 | 
			
		|||
// ブロック内に入れてスコープを非グローバル化するとそれが防げます
 | 
			
		||||
// (Chrome以外のブラウザでは検証していません)
 | 
			
		||||
{
 | 
			
		||||
	if (localStorage.getItem('shouldFlush') == 'true') refresh();
 | 
			
		||||
 | 
			
		||||
	// Get the current url information
 | 
			
		||||
	const url = new URL(location.href);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -103,19 +105,25 @@
 | 
			
		|||
				'\n\n' +
 | 
			
		||||
				'New version of Misskey available. The page will be reloaded.');
 | 
			
		||||
 | 
			
		||||
			// Clear cache (serive worker)
 | 
			
		||||
			try {
 | 
			
		||||
				navigator.serviceWorker.controller.postMessage('clear');
 | 
			
		||||
 | 
			
		||||
				navigator.serviceWorker.getRegistrations().then(registrations => {
 | 
			
		||||
					registrations.forEach(registration => registration.unregister());
 | 
			
		||||
				});
 | 
			
		||||
			} catch (e) {
 | 
			
		||||
				console.error(e);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// Force reload
 | 
			
		||||
			location.reload(true);
 | 
			
		||||
			refresh();
 | 
			
		||||
		}
 | 
			
		||||
	}, 3000);
 | 
			
		||||
 | 
			
		||||
	function refresh() {
 | 
			
		||||
		localStorage.setItem('shouldFlush', 'false');
 | 
			
		||||
 | 
			
		||||
		// Clear cache (serive worker)
 | 
			
		||||
		try {
 | 
			
		||||
			navigator.serviceWorker.controller.postMessage('clear');
 | 
			
		||||
 | 
			
		||||
			navigator.serviceWorker.getRegistrations().then(registrations => {
 | 
			
		||||
				registrations.forEach(registration => registration.unregister());
 | 
			
		||||
			});
 | 
			
		||||
		} catch (e) {
 | 
			
		||||
			console.error(e);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// Force reload
 | 
			
		||||
		location.reload(true);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,34 +1,39 @@
 | 
			
		|||
<template>
 | 
			
		||||
<div class="troubleshooter">
 | 
			
		||||
	<h1>%fa:wrench%%i18n:@title%</h1>
 | 
			
		||||
	<div>
 | 
			
		||||
		<p :data-wip="network == null">
 | 
			
		||||
			<template v-if="network != null">
 | 
			
		||||
				<template v-if="network">%fa:check%</template>
 | 
			
		||||
				<template v-if="!network">%fa:times%</template>
 | 
			
		||||
			</template>
 | 
			
		||||
			{{ network == null ? '%i18n:!@checking-network%' : '%i18n:!@network%' }}<mk-ellipsis v-if="network == null"/>
 | 
			
		||||
		</p>
 | 
			
		||||
		<p v-if="network == true" :data-wip="internet == null">
 | 
			
		||||
			<template v-if="internet != null">
 | 
			
		||||
				<template v-if="internet">%fa:check%</template>
 | 
			
		||||
				<template v-if="!internet">%fa:times%</template>
 | 
			
		||||
			</template>
 | 
			
		||||
			{{ internet == null ? '%i18n:!@checking-internet%' : '%i18n:!@internet%' }}<mk-ellipsis v-if="internet == null"/>
 | 
			
		||||
		</p>
 | 
			
		||||
		<p v-if="internet == true" :data-wip="server == null">
 | 
			
		||||
			<template v-if="server != null">
 | 
			
		||||
				<template v-if="server">%fa:check%</template>
 | 
			
		||||
				<template v-if="!server">%fa:times%</template>
 | 
			
		||||
			</template>
 | 
			
		||||
			{{ server == null ? '%i18n:!@checking-server%' : '%i18n:!@server%' }}<mk-ellipsis v-if="server == null"/>
 | 
			
		||||
		</p>
 | 
			
		||||
	<div class="body">
 | 
			
		||||
		<h1>%fa:wrench%%i18n:@title%</h1>
 | 
			
		||||
		<div>
 | 
			
		||||
			<p :data-wip="network == null">
 | 
			
		||||
				<template v-if="network != null">
 | 
			
		||||
					<template v-if="network">%fa:check%</template>
 | 
			
		||||
					<template v-if="!network">%fa:times%</template>
 | 
			
		||||
				</template>
 | 
			
		||||
				{{ network == null ? '%i18n:!@checking-network%' : '%i18n:!@network%' }}<mk-ellipsis v-if="network == null"/>
 | 
			
		||||
			</p>
 | 
			
		||||
			<p v-if="network == true" :data-wip="internet == null">
 | 
			
		||||
				<template v-if="internet != null">
 | 
			
		||||
					<template v-if="internet">%fa:check%</template>
 | 
			
		||||
					<template v-if="!internet">%fa:times%</template>
 | 
			
		||||
				</template>
 | 
			
		||||
				{{ internet == null ? '%i18n:!@checking-internet%' : '%i18n:!@internet%' }}<mk-ellipsis v-if="internet == null"/>
 | 
			
		||||
			</p>
 | 
			
		||||
			<p v-if="internet == true" :data-wip="server == null">
 | 
			
		||||
				<template v-if="server != null">
 | 
			
		||||
					<template v-if="server">%fa:check%</template>
 | 
			
		||||
					<template v-if="!server">%fa:times%</template>
 | 
			
		||||
				</template>
 | 
			
		||||
				{{ server == null ? '%i18n:!@checking-server%' : '%i18n:!@server%' }}<mk-ellipsis v-if="server == null"/>
 | 
			
		||||
			</p>
 | 
			
		||||
		</div>
 | 
			
		||||
		<p v-if="!end">%i18n:@finding%<mk-ellipsis/></p>
 | 
			
		||||
		<p v-if="network === false"><b>%fa:exclamation-triangle%%i18n:@no-network%</b><br>%i18n:@no-network-desc%</p>
 | 
			
		||||
		<p v-if="internet === false"><b>%fa:exclamation-triangle%%i18n:@no-internet%</b><br>%i18n:@no-internet-desc%</p>
 | 
			
		||||
		<p v-if="server === false"><b>%fa:exclamation-triangle%%i18n:@no-server%</b><br>%i18n:@no-server-desc%</p>
 | 
			
		||||
		<p v-if="server === true" class="success"><b>%fa:info-circle%%i18n:@success%</b><br>%i18n:@success-desc%</p>
 | 
			
		||||
	</div>
 | 
			
		||||
	<p v-if="!end">%i18n:@finding%<mk-ellipsis/></p>
 | 
			
		||||
	<p v-if="network === false"><b>%fa:exclamation-triangle%%i18n:@no-network%</b><br>%i18n:@no-network-desc%</p>
 | 
			
		||||
	<p v-if="internet === false"><b>%fa:exclamation-triangle%%i18n:@no-internet%</b><br>%i18n:@no-internet-desc%</p>
 | 
			
		||||
	<p v-if="server === false"><b>%fa:exclamation-triangle%%i18n:@no-server%</b><br>%i18n:@no-server-desc%</p>
 | 
			
		||||
	<p v-if="server === true" class="success"><b>%fa:info-circle%%i18n:@success%</b><br>%i18n:@success-desc%</p>
 | 
			
		||||
	<footer>
 | 
			
		||||
		<a href="/assets/flush.html">%i18n:@flush%</a> | <a href="/assets/version.html">%i18n:@set-version%</a>
 | 
			
		||||
	</footer>
 | 
			
		||||
</div>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -77,61 +82,62 @@ export default Vue.extend({
 | 
			
		|||
 | 
			
		||||
<style lang="stylus" scoped>
 | 
			
		||||
.troubleshooter
 | 
			
		||||
	width 100%
 | 
			
		||||
	max-width 500px
 | 
			
		||||
	text-align left
 | 
			
		||||
	background #fff
 | 
			
		||||
	border-radius 8px
 | 
			
		||||
	border solid 1px #ddd
 | 
			
		||||
	> .body
 | 
			
		||||
		width 100%
 | 
			
		||||
		max-width 500px
 | 
			
		||||
		text-align left
 | 
			
		||||
		background #fff
 | 
			
		||||
		border-radius 8px
 | 
			
		||||
		border solid 1px #ddd
 | 
			
		||||
 | 
			
		||||
	> h1
 | 
			
		||||
		margin 0
 | 
			
		||||
		padding 0.6em 1.2em
 | 
			
		||||
		font-size 1em
 | 
			
		||||
		color #444
 | 
			
		||||
		border-bottom solid 1px #eee
 | 
			
		||||
		> h1
 | 
			
		||||
			margin 0
 | 
			
		||||
			padding 0.6em 1.2em
 | 
			
		||||
			font-size 1em
 | 
			
		||||
			color #444
 | 
			
		||||
			border-bottom solid 1px #eee
 | 
			
		||||
 | 
			
		||||
		> [data-fa]
 | 
			
		||||
			margin-right 0.25em
 | 
			
		||||
			> [data-fa]
 | 
			
		||||
				margin-right 0.25em
 | 
			
		||||
 | 
			
		||||
	> div
 | 
			
		||||
		overflow hidden
 | 
			
		||||
		padding 0.6em 1.2em
 | 
			
		||||
		> div
 | 
			
		||||
			overflow hidden
 | 
			
		||||
			padding 0.6em 1.2em
 | 
			
		||||
 | 
			
		||||
			> p
 | 
			
		||||
				margin 0.5em 0
 | 
			
		||||
				font-size 0.9em
 | 
			
		||||
				color #444
 | 
			
		||||
 | 
			
		||||
				&[data-wip]
 | 
			
		||||
					color #888
 | 
			
		||||
 | 
			
		||||
				> [data-fa]
 | 
			
		||||
					margin-right 0.25em
 | 
			
		||||
 | 
			
		||||
					&.times
 | 
			
		||||
						color #e03524
 | 
			
		||||
 | 
			
		||||
					&.check
 | 
			
		||||
						color #84c32f
 | 
			
		||||
 | 
			
		||||
		> p
 | 
			
		||||
			margin 0.5em 0
 | 
			
		||||
			font-size 0.9em
 | 
			
		||||
			margin 0
 | 
			
		||||
			padding 0.7em 1.2em
 | 
			
		||||
			font-size 1em
 | 
			
		||||
			color #444
 | 
			
		||||
			border-top solid 1px #eee
 | 
			
		||||
 | 
			
		||||
			&[data-wip]
 | 
			
		||||
				color #888
 | 
			
		||||
 | 
			
		||||
			> [data-fa]
 | 
			
		||||
				margin-right 0.25em
 | 
			
		||||
 | 
			
		||||
				&.times
 | 
			
		||||
					color #e03524
 | 
			
		||||
 | 
			
		||||
				&.check
 | 
			
		||||
					color #84c32f
 | 
			
		||||
 | 
			
		||||
	> p
 | 
			
		||||
		margin 0
 | 
			
		||||
		padding 0.7em 1.2em
 | 
			
		||||
		font-size 1em
 | 
			
		||||
		color #444
 | 
			
		||||
		border-top solid 1px #eee
 | 
			
		||||
 | 
			
		||||
		> b
 | 
			
		||||
			> [data-fa]
 | 
			
		||||
				margin-right 0.25em
 | 
			
		||||
 | 
			
		||||
		&.success
 | 
			
		||||
			> b
 | 
			
		||||
				color #39adad
 | 
			
		||||
				> [data-fa]
 | 
			
		||||
					margin-right 0.25em
 | 
			
		||||
 | 
			
		||||
		&:not(.success)
 | 
			
		||||
			> b
 | 
			
		||||
				color #ad4339
 | 
			
		||||
			&.success
 | 
			
		||||
				> b
 | 
			
		||||
					color #39adad
 | 
			
		||||
 | 
			
		||||
			&:not(.success)
 | 
			
		||||
				> b
 | 
			
		||||
					color #ad4339
 | 
			
		||||
 | 
			
		||||
</style>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										16
									
								
								src/client/assets/flush.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								src/client/assets/flush.html
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
 | 
			
		||||
<html>
 | 
			
		||||
	<head>
 | 
			
		||||
		<meta charset="utf-8">
 | 
			
		||||
		<title>Misskeyのリカバリ</title>
 | 
			
		||||
		<script>
 | 
			
		||||
			const yn = window.confirm('キャッシュをクリアしますか?\n\nDo you want to clear caches?');
 | 
			
		||||
			if (yn) {
 | 
			
		||||
				localStorage.setItem('shouldFlush', 'true');
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			location.href = '/';
 | 
			
		||||
		</script>
 | 
			
		||||
	</head>
 | 
			
		||||
</html>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,28 +0,0 @@
 | 
			
		|||
<!DOCTYPE html>
 | 
			
		||||
 | 
			
		||||
<html>
 | 
			
		||||
	<head>
 | 
			
		||||
		<meta charset="utf-8">
 | 
			
		||||
		<title>Misskeyのリカバリ</title>
 | 
			
		||||
		<script>
 | 
			
		||||
			const yn = window.confirm('キャッシュをクリアしますか?(他のタブでMisskeyを開いている状態だと正常にクリアできないので、他のMisskeyのタブをすべて閉じてから行ってください)\n\nDo you want to clear caches? (Please close all other Misskey tabs before clear cache)');
 | 
			
		||||
			if (yn) {
 | 
			
		||||
				try {
 | 
			
		||||
					navigator.serviceWorker.controller.postMessage('clear');
 | 
			
		||||
					navigator.serviceWorker.getRegistrations().then(registrations => {
 | 
			
		||||
						registrations.forEach(registration => registration.unregister());
 | 
			
		||||
					});
 | 
			
		||||
				} catch (e) {
 | 
			
		||||
					console.error(e);
 | 
			
		||||
				}
 | 
			
		||||
				alert('キャッシュをクリアしました。\n\ncache cleared.');
 | 
			
		||||
				alert('まもなくページを再度読み込みします。再度読み込みが終わると、再度キャッシュをクリアするか尋ねられるので、「キャンセル」を選択して抜けてください。\n\nWe will reload the page shortly. After that, you are asked whether you want to clear the cache again, so please select "Cancel" and exit.');
 | 
			
		||||
				setTimeout(() => {
 | 
			
		||||
					location.reload(true);
 | 
			
		||||
				}, 100);
 | 
			
		||||
			} else {
 | 
			
		||||
				location.href = '/';
 | 
			
		||||
			}
 | 
			
		||||
		</script>
 | 
			
		||||
	</head>
 | 
			
		||||
</html>
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue