From bc4315da1edc8a729310d74eeec1f7b1d4a5e220 Mon Sep 17 00:00:00 2001 From: tamaina Date: Sat, 13 Mar 2021 10:55:29 +0900 Subject: Improve flush (#7328) --- src/server/web/views/flush.pug | 63 ++++++++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 27 deletions(-) (limited to 'src/server/web') diff --git a/src/server/web/views/flush.pug b/src/server/web/views/flush.pug index 59fed1f15d..ec585a34db 100644 --- a/src/server/web/views/flush.pug +++ b/src/server/web/views/flush.pug @@ -4,35 +4,44 @@ html #msg script. const msg = document.getElementById('msg'); + const successText = `\nSuccess Flush! Back to Misskey\n成功しました。Misskeyを開き直してください。`; - try { - localStorage.clear(); - message('localStorage cleared'); - - const delidb = indexedDB.deleteDatabase('MisskeyClient'); - delidb.onsuccess = () => message('indexedDB cleared'); - - if (navigator.serviceWorker.controller) { - navigator.serviceWorker.controller.postMessage('clear'); - navigator.serviceWorker.getRegistrations() - .then(registrations => { - return Promise.all(registrations.map(registration => registration.unregister())); - }) - .then(() => { - message('Success Flush! Please reopen Misskey.\n成功しました。Misskeyを開き直してください。'); - }) - .catch(e => { throw Error(e) }); - } else { - message('Success Flush! Please reopen Misskey.\n成功しました。Misskeyを開き直してください。'); + message('Start flushing.'); + + (async function() { + try { + localStorage.clear(); + message('localStorage cleared.'); + + const idbPromises = ['MisskeyClient', 'keyval-store'].map((name, i, arr) => new Promise((res, rej) => { + const delidb = indexedDB.deleteDatabase(name); + delidb.onsuccess = () => res(message(`indexedDB "${name}" cleared. (${i + 1}/${arr.length})`)); + delidb.onerror = e => rej(e) + })); + + await Promise.all(idbPromises); + + if (navigator.serviceWorker.controller) { + navigator.serviceWorker.controller.postMessage('clear'); + await navigator.serviceWorker.getRegistrations() + .then(registrations => { + return Promise.all(registrations.map(registration => registration.unregister())); + }) + .catch(e => { throw Error(e) }); + } + + message(successText); + } catch (e) { + message(`\n${e}\n\nFlush Failed. Please retry.\n失敗しました。もう一度試してみてください。`); + message(`\nIf you retry more than 3 times, clear the browser cache or contact to instance admin.\n3回以上試しても失敗する場合、ブラウザのキャッシュを消去し、それでもだめならインスタンス管理者に連絡してみてください。\n`) + + console.error(e); + setTimeout(() => { + location = '/'; + }, 10000) } - } catch (e) { - console.error(e); - message(`${e}¥n¥nFlush Failed. Please reopen Misskey.\n失敗しました。Misskeyを開き直してください。`); - setTimeout(() => { - location = '/'; - }, 10000) - } + })(); function message(text) { - msg.insertAdjacentHTML('beforeend', `

[${(new Date()).toString()}] ${text.replace(/¥n/g,'
')}

`) + msg.insertAdjacentHTML('beforeend', `

[${(new Date()).toString()}] ${text.replace(/\n/g,'
')}

`) } -- cgit v1.2.3-freya From f41c85110825443bfe26001161b72d828af56d7b Mon Sep 17 00:00:00 2001 From: syuilo Date: Sat, 13 Mar 2021 11:43:07 +0900 Subject: gulp refactor --- gulpfile.ts | 8 -------- src/client/pages/doc.vue | 2 +- src/server/web/index.ts | 8 ++++++++ 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'src/server/web') diff --git a/gulpfile.ts b/gulpfile.ts index 0cdd016fd7..771a5c0e32 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -77,17 +77,9 @@ gulp.task('cleanall', gulp.parallel('clean', cb => rimraf('./node_modules', cb) )); -gulp.task('copy:docs', () => - gulp.src([ - './src/docs/**/*', - ]) - .pipe(gulp.dest('./built/assets/docs/')) -); - gulp.task('build', gulp.parallel( 'build:ts', 'build:copy', - 'copy:docs', )); gulp.task('default', gulp.task('build')); diff --git a/src/client/pages/doc.vue b/src/client/pages/doc.vue index 3379a5fe68..ed4eae4d02 100644 --- a/src/client/pages/doc.vue +++ b/src/client/pages/doc.vue @@ -60,7 +60,7 @@ export default defineComponent({ methods: { fetchDoc() { - fetch(`${url}/assets/docs/${lang}/${this.doc}.md`).then(res => res.text()).then(md => { + fetch(`${url}/doc-assets/${lang}/${this.doc}.md`).then(res => res.text()).then(md => { this.parse(md); }); }, diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 7b0b82eedf..c1f879f913 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -29,6 +29,7 @@ const markdown = MarkdownIt({ }); const staticAssets = `${__dirname}/../../../assets/`; +const docAssets = `${__dirname}/../../../src/docs/`; const assets = `${__dirname}/../../assets/`; // Init app @@ -65,6 +66,13 @@ router.get('/static-assets/(.*)', async ctx => { }); }); +router.get('/doc-assets/(.*)', async ctx => { + await send(ctx as any, ctx.path.replace('/doc-assets/', ''), { + root: docAssets, + maxage: ms('7 days'), + }); +}); + router.get('/assets/(.*)', async ctx => { await send(ctx as any, ctx.path.replace('/assets/', ''), { root: assets, -- cgit v1.2.3-freya From b0d38446d7ae67d9002809b1d1ffffef98ed8ecf Mon Sep 17 00:00:00 2001 From: okpierre <1679025+okpierre@users.noreply.github.com> Date: Fri, 12 Mar 2021 23:19:49 -0500 Subject: Update index.ts (#7343) --- src/server/web/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/server/web') diff --git a/src/server/web/index.ts b/src/server/web/index.ts index c1f879f913..7b087bbf5b 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -83,7 +83,7 @@ router.get('/assets/(.*)', async ctx => { // Apple touch icon router.get('/apple-touch-icon.png', async ctx => { await send(ctx as any, '/apple-touch-icon.png', { - root: assets + root: staticAssets }); }); -- cgit v1.2.3-freya From 7d02b36092bbb4e1887abde57500e3aba13497f4 Mon Sep 17 00:00:00 2001 From: MeiMei <30769358+mei23@users.noreply.github.com> Date: Sat, 13 Mar 2021 23:22:54 +0900 Subject: Fix assets test and favicon type (#7344) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix * koa-faviconはimage/x-iconがデフォルトらしい * シンプルに * faviconなど --- assets/favicon.ico | Bin 0 -> 90022 bytes locales/ja-JP.yml | 2 +- src/server/web/index.ts | 2 +- test/fetch-resource.ts | 19 +++++++++++++------ test/utils.ts | 2 +- 5 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 assets/favicon.ico (limited to 'src/server/web') diff --git a/assets/favicon.ico b/assets/favicon.ico new file mode 100644 index 0000000000..9be1ff6295 Binary files /dev/null and b/assets/favicon.ico differ diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index e5700fe059..5729da8da8 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -322,7 +322,7 @@ proxyRemoteFilesDescription: "この設定を有効にすると、未保存ま driveCapacityPerLocalAccount: "ローカルユーザーひとりあたりのドライブ容量" driveCapacityPerRemoteAccount: "リモートユーザーひとりあたりのドライブ容量" inMb: "メガバイト単位" -iconUrl: "アイコン画像のURL" +iconUrl: "アイコン画像のURL (faviconなど)" bannerUrl: "バナー画像のURL" basicInfo: "基本情報" pinnedUsers: "ピン留めユーザー" diff --git a/src/server/web/index.ts b/src/server/web/index.ts index 7b087bbf5b..ea356206ff 100644 --- a/src/server/web/index.ts +++ b/src/server/web/index.ts @@ -45,7 +45,7 @@ app.use(views(__dirname + '/views', { })); // Serve favicon -app.use(favicon(`${__dirname}/../../../assets/favicon.png`)); +app.use(favicon(`${__dirname}/../../../assets/favicon.ico`)); // Common request handler app.use(async (ctx, next) => { diff --git a/test/fetch-resource.ts b/test/fetch-resource.ts index bd3a325dc2..12a37b6cb0 100644 --- a/test/fetch-resource.ts +++ b/test/fetch-resource.ts @@ -22,6 +22,7 @@ const UNSPECIFIED = '*/*'; // Response Contet-Type const AP = 'application/activity+json; charset=utf-8'; +const JSON = 'application/json; charset=utf-8'; const HTML = 'text/html; charset=utf-8'; describe('Fetch resource', () => { @@ -50,33 +51,39 @@ describe('Fetch resource', () => { })); it('GET root', async(async () => { - const res = await simpleGet('/', 'text/html'); + const res = await simpleGet('/'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, HTML); })); it('GET docs', async(async () => { - const res = await simpleGet('/docs/ja-JP/about', 'text/html'); + const res = await simpleGet('/docs/ja-JP/about'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, HTML); })); it('GET api-doc', async(async () => { - const res = await simpleGet('/api-doc', 'text/html'); + const res = await simpleGet('/api-doc'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, HTML); })); it('GET api.json', async(async () => { - const res = await simpleGet('/api.json', 'application/json'); + const res = await simpleGet('/api.json'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, JSON); })); it('GET favicon.ico', async(async () => { - const res = await simpleGet('/favicon.ico', 'image/png'); + const res = await simpleGet('/favicon.ico'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, 'image/x-icon'); })); it('GET apple-touch-icon.png', async(async () => { - const res = await simpleGet('/apple-touch-icon.png', 'image/png'); + const res = await simpleGet('/apple-touch-icon.png'); assert.strictEqual(res.status, 200); + assert.strictEqual(res.type, 'image/png'); })); }); diff --git a/test/utils.ts b/test/utils.ts index 55e877a8a2..b0393ee192 100644 --- a/test/utils.ts +++ b/test/utils.ts @@ -110,7 +110,7 @@ export function connectStream(user: any, channel: string, listener: (message: Re }); } -export const simpleGet = async (path: string, accept: string): Promise<{ status?: number, type?: string, location?: string }> => { +export const simpleGet = async (path: string, accept = '*/*'): Promise<{ status?: number, type?: string, location?: string }> => { // node-fetchだと3xxを取れない return await new Promise((resolve, reject) => { const req = http.request(`http://localhost:${port}${path}`, { -- cgit v1.2.3-freya