From 172cca6ad6fe73d00686d0355bde264c6340958e Mon Sep 17 00:00:00 2001 From: syuilo <syuilotan@yahoo.co.jp> Date: Mon, 16 Apr 2018 15:59:43 +0900 Subject: [PATCH] Better recovery system --- locales/en.yml | 2 + locales/fr.yml | 2 + locales/ja.yml | 2 + src/client/app/boot.js | 32 ++-- .../connect-failed.troubleshooter.vue | 152 +++++++++--------- src/client/assets/flush.html | 16 ++ src/client/assets/recover.html | 28 ---- 7 files changed, 121 insertions(+), 113 deletions(-) create mode 100644 src/client/assets/flush.html delete mode 100644 src/client/assets/recover.html diff --git a/locales/en.yml b/locales/en.yml index 5786819364..446ef371be 100644 --- a/locales/en.yml +++ b/locales/en.yml @@ -62,6 +62,8 @@ common/views/components/connect-failed.troubleshooter.vue: no-server-desc: "The network connection of your PC is normal, but you could not connect to Misskey's server. There is a possibility that the server is either down or under maintenance, please try again later." success: "Successfully connected to Misskey's server" success-desc: "It seems to be able to connect. Please reload the page." + flush: "Clean cache" + set-version: "Specify version" common/views/components/messaging.vue: search-user: "Find an user" diff --git a/locales/fr.yml b/locales/fr.yml index 4af300fcf6..583104b4f0 100644 --- a/locales/fr.yml +++ b/locales/fr.yml @@ -62,6 +62,8 @@ common/views/components/connect-failed.troubleshooter.vue: no-server-desc: "Votre connexion est OK, mais il a été impossible de vous connecter au serveur de Misskey. Il y a des chances que le serveur soit hors-ligne ou en maintenance, veuillez ressayer plus tard." success: "Connexion au serveur de Misskey reussie!" success-desc: "La connexion au serveur a été reussie. Veuillez recharger la page." + flush: "ã‚ャッシュã®å‰Šé™¤" + set-version: "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æŒ‡å®š" common/views/components/messaging.vue: search-user: "Trouver un utilisateur" diff --git a/locales/ja.yml b/locales/ja.yml index 1f70f4203d..b5479b5cef 100644 --- a/locales/ja.yml +++ b/locales/ja.yml @@ -62,6 +62,8 @@ common/views/components/connect-failed.troubleshooter.vue: no-server-desc: "ãŠä½¿ã„ã®PCã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šã¯æ£å¸¸ã§ã™ãŒã€Misskeyã®ã‚µãƒ¼ãƒãƒ¼ã«ã¯æŽ¥ç¶šã§ãã¾ã›ã‚“ã§ã—ãŸã€‚サーãƒãƒ¼ãŒãƒ€ã‚¦ãƒ³ã¾ãŸã¯ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ã®ã§ã€ã—ã°ã‚‰ãã—ã¦ã‹ã‚‰å†åº¦å¾¡ã‚¢ã‚¯ã‚»ã‚¹ãã ã•ã„。" success: "Misskeyã®ã‚µãƒ¼ãƒãƒ¼ã«æŽ¥ç¶šã§ãã¾ã—ãŸ" success-desc: "æ£å¸¸ã«æŽ¥ç¶šã§ãるよã†ã§ã™ã€‚ページをå†åº¦èªã¿è¾¼ã¿ã—ã¦ãã ã•ã„。" + flush: "ã‚ャッシュã®å‰Šé™¤" + set-version: "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æŒ‡å®š" common/views/components/messaging.vue: search-user: "ユーザーを探ã™" diff --git a/src/client/app/boot.js b/src/client/app/boot.js index 12b0d220a9..a0709842b9 100644 --- a/src/client/app/boot.js +++ b/src/client/app/boot.js @@ -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'); + refresh(); + } + }, 3000); + + function refresh() { + localStorage.setItem('shouldFlush', 'false'); - navigator.serviceWorker.getRegistrations().then(registrations => { - registrations.forEach(registration => registration.unregister()); - }); - } catch (e) { - console.error(e); - } + // Clear cache (serive worker) + try { + navigator.serviceWorker.controller.postMessage('clear'); - // Force reload - location.reload(true); + navigator.serviceWorker.getRegistrations().then(registrations => { + registrations.forEach(registration => registration.unregister()); + }); + } catch (e) { + console.error(e); } - }, 3000); + + // Force reload + location.reload(true); + } } diff --git a/src/client/app/common/views/components/connect-failed.troubleshooter.vue b/src/client/app/common/views/components/connect-failed.troubleshooter.vue index fffabe5a30..2ee5f67c89 100644 --- a/src/client/app/common/views/components/connect-failed.troubleshooter.vue +++ b/src/client/app/common/views/components/connect-failed.troubleshooter.vue @@ -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 - - > h1 - margin 0 - padding 0.6em 1.2em - font-size 1em - color #444 - border-bottom solid 1px #eee - - > [data-fa] - margin-right 0.25em - - > div - overflow hidden - padding 0.6em 1.2em - - > p - margin 0.5em 0 - font-size 0.9em + > .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 - - &[data-wip] - color #888 + border-bottom solid 1px #eee > [data-fa] margin-right 0.25em - &.times - color #e03524 + > div + overflow hidden + padding 0.6em 1.2em - &.check - color #84c32f + > p + margin 0.5em 0 + font-size 0.9em + color #444 - > p - margin 0 - padding 0.7em 1.2em - font-size 1em - color #444 - border-top solid 1px #eee + &[data-wip] + color #888 - > b - > [data-fa] - margin-right 0.25em + > [data-fa] + margin-right 0.25em - &.success - > b - color #39adad + &.times + color #e03524 + + &.check + color #84c32f + + > p + margin 0 + padding 0.7em 1.2em + font-size 1em + color #444 + border-top solid 1px #eee - &:not(.success) > b - color #ad4339 + > [data-fa] + margin-right 0.25em + + &.success + > b + color #39adad + + &:not(.success) + > b + color #ad4339 </style> diff --git a/src/client/assets/flush.html b/src/client/assets/flush.html new file mode 100644 index 0000000000..d43600157a --- /dev/null +++ b/src/client/assets/flush.html @@ -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> diff --git a/src/client/assets/recover.html b/src/client/assets/recover.html deleted file mode 100644 index b1889c72e6..0000000000 --- a/src/client/assets/recover.html +++ /dev/null @@ -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> -- GitLab