From a9a581adcb04e5a4e9ae8195dfaa38823fa3a366 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Fri, 8 Dec 2017 14:57:40 +0900
Subject: [PATCH] Revert "Fix #952"

This reverts commit 8c70c9d6a0290c0d09e53e4a550d3e28c33059d2.
---
 src/web/app/boot.js                           |  4 ---
 .../app/common/scripts/check-for-update.ts    |  4 ---
 src/web/assets/404.js                         |  4 ---
 src/web/assets/recover.html                   | 34 +++++++++++++++++++
 src/web/server.ts                             |  2 ++
 5 files changed, 36 insertions(+), 12 deletions(-)
 create mode 100644 src/web/assets/recover.html

diff --git a/src/web/app/boot.js b/src/web/app/boot.js
index 211dc2f88..0a3154ad8 100644
--- a/src/web/app/boot.js
+++ b/src/web/app/boot.js
@@ -95,10 +95,6 @@
 			// 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);
 			}
diff --git a/src/web/app/common/scripts/check-for-update.ts b/src/web/app/common/scripts/check-for-update.ts
index 0b58c0a67..154092451 100644
--- a/src/web/app/common/scripts/check-for-update.ts
+++ b/src/web/app/common/scripts/check-for-update.ts
@@ -11,10 +11,6 @@ export default async function(mios: MiOS) {
 		// 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);
 		}
diff --git a/src/web/assets/404.js b/src/web/assets/404.js
index 285704d11..46fd004f1 100644
--- a/src/web/assets/404.js
+++ b/src/web/assets/404.js
@@ -5,10 +5,6 @@ if (yn) {
 	// 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);
 	}
diff --git a/src/web/assets/recover.html b/src/web/assets/recover.html
new file mode 100644
index 000000000..019f57b2e
--- /dev/null
+++ b/src/web/assets/recover.html
@@ -0,0 +1,34 @@
+<!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) {
+				try {
+					navigator.serviceWorker.controller.postMessage('clear');
+
+					navigator.serviceWorker.getRegistrations().then(registrations => {
+						registrations.forEach(registration => registration.unregister());
+					});
+
+				} catch (e) {
+					console.error(e);
+				}
+
+				localStorage.setItem('should-refresh', 'true');
+
+				alert('キャッシュをクリアしました。');
+
+				location.href = '/';
+			} else {
+				alert('問題が解決しない場合はサーバー管理者までお問い合せください。');
+			}
+
+		</script>
+	</head>
+</html>
diff --git a/src/web/server.ts b/src/web/server.ts
index 5b09788b2..1d3687f89 100644
--- a/src/web/server.ts
+++ b/src/web/server.ts
@@ -44,6 +44,8 @@ app.use('/assets', (req, res) => {
 	res.sendStatus(404);
 });
 
+app.use('/recover', (req, res) => res.sendFile(`${__dirname}/assets/recover.html`));
+
 /**
  * ServiceWroker
  */