From 6dd2e9fc0b1eeea6b5f04ccac93ccfab658f976d Mon Sep 17 00:00:00 2001 From: syuilo <4439005+syuilo@users.noreply.github.com> Date: Thu, 4 Jul 2024 13:14:49 +0900 Subject: refactor(frontend): refactor popup api and make sure call dispose callback Close #14122 --- packages/frontend/src/pages/admin-user.vue | 12 ++++++++---- .../pages/admin/abuse-report/notification-recipient.vue | 6 +++--- packages/frontend/src/pages/custom-emojis-manager.vue | 10 ++++++---- packages/frontend/src/pages/drive.file.info.vue | 5 +++-- packages/frontend/src/pages/drop-and-fusion.game.vue | 14 ++++++++++++-- packages/frontend/src/pages/emojis.emoji.vue | 8 ++++---- packages/frontend/src/pages/reset-password.vue | 4 +++- packages/frontend/src/pages/settings/2fa.vue | 6 ++++-- packages/frontend/src/pages/settings/accounts.vue | 10 ++++++---- packages/frontend/src/pages/settings/api.vue | 5 +++-- packages/frontend/src/pages/settings/avatar-decoration.vue | 5 +++-- 11 files changed, 55 insertions(+), 30 deletions(-) (limited to 'packages/frontend/src/pages') diff --git a/packages/frontend/src/pages/admin-user.vue b/packages/frontend/src/pages/admin-user.vue index f57aa51b5b..1459997dcb 100644 --- a/packages/frontend/src/pages/admin-user.vue +++ b/packages/frontend/src/pages/admin-user.vue @@ -464,16 +464,20 @@ function toggleRoleItem(role) { } function createAnnouncement() { - os.popup(defineAsyncComponent(() => import('@/components/MkUserAnnouncementEditDialog.vue')), { + const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkUserAnnouncementEditDialog.vue')), { user: user.value, - }, {}, 'closed'); + }, { + closed: () => dispose(), + }); } function editAnnouncement(announcement) { - os.popup(defineAsyncComponent(() => import('@/components/MkUserAnnouncementEditDialog.vue')), { + const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkUserAnnouncementEditDialog.vue')), { user: user.value, announcement, - }, {}, 'closed'); + }, { + closed: () => dispose(), + }); } watch(() => props.userId, () => { diff --git a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue index a52f8eb7af..93800873f9 100644 --- a/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue +++ b/packages/frontend/src/pages/admin/abuse-report/notification-recipient.vue @@ -109,7 +109,7 @@ async function onDeleteButtonClicked(id: string) { async function showEditor(mode: 'create' | 'edit', id?: string) { const { dispose, needLoad } = await new Promise<{ dispose: () => void, needLoad: boolean }>(async resolve => { - const res = await os.popup( + const { dispose: _dispose } = os.popup( defineAsyncComponent(() => import('./notification-recipient.editor.vue')), { mode, @@ -117,10 +117,10 @@ async function showEditor(mode: 'create' | 'edit', id?: string) { }, { submitted: async () => { - resolve({ dispose: res.dispose, needLoad: true }); + resolve({ dispose: _dispose, needLoad: true }); }, closed: () => { - resolve({ dispose: res.dispose, needLoad: false }); + resolve({ dispose: _dispose, needLoad: false }); }, }, ); diff --git a/packages/frontend/src/pages/custom-emojis-manager.vue b/packages/frontend/src/pages/custom-emojis-manager.vue index 3e2332e408..eea3f68130 100644 --- a/packages/frontend/src/pages/custom-emojis-manager.vue +++ b/packages/frontend/src/pages/custom-emojis-manager.vue @@ -129,18 +129,19 @@ const toggleSelect = (emoji) => { }; const add = async (ev: MouseEvent) => { - os.popup(defineAsyncComponent(() => import('./emoji-edit-dialog.vue')), { + const { dispose } = os.popup(defineAsyncComponent(() => import('./emoji-edit-dialog.vue')), { }, { done: result => { if (result.created) { emojisPaginationComponent.value.prepend(result.created); } }, - }, 'closed'); + closed: () => dispose(), + }); }; const edit = (emoji) => { - os.popup(defineAsyncComponent(() => import('./emoji-edit-dialog.vue')), { + const { dispose } = os.popup(defineAsyncComponent(() => import('./emoji-edit-dialog.vue')), { emoji: emoji, }, { done: result => { @@ -153,7 +154,8 @@ const edit = (emoji) => { emojisPaginationComponent.value.removeItem(emoji.id); } }, - }, 'closed'); + closed: () => dispose(), + }); }; const importEmoji = (emoji) => { diff --git a/packages/frontend/src/pages/drive.file.info.vue b/packages/frontend/src/pages/drive.file.info.vue index 8077edff5f..7a8786d415 100644 --- a/packages/frontend/src/pages/drive.file.info.vue +++ b/packages/frontend/src/pages/drive.file.info.vue @@ -160,7 +160,7 @@ function rename() { function describe() { if (!file.value) return; - os.popup(defineAsyncComponent(() => import('@/components/MkFileCaptionEditWindow.vue')), { + const { dispose } = os.popup(defineAsyncComponent(() => import('@/components/MkFileCaptionEditWindow.vue')), { default: file.value.comment ?? '', file: file.value, }, { @@ -172,7 +172,8 @@ function describe() { await fetch(); }); }, - }, 'closed'); + closed: () => dispose(), + }); } async function deleteFile() { diff --git a/packages/frontend/src/pages/drop-and-fusion.game.vue b/packages/frontend/src/pages/drop-and-fusion.game.vue index eba5b92154..10bcfa6d4e 100644 --- a/packages/frontend/src/pages/drop-and-fusion.game.vue +++ b/packages/frontend/src/pages/drop-and-fusion.game.vue @@ -1008,8 +1008,18 @@ function attachGameEvents() { const domX = rect.left + (x * viewScale); const domY = rect.top + (y * viewScale); const scoreUnit = getScoreUnit(props.gameMode); - os.popup(MkRippleEffect, { x: domX, y: domY }, {}, 'end'); - os.popup(MkPlusOneEffect, { x: domX, y: domY, value: scoreDelta + (scoreUnit === 'pt' ? '' : scoreUnit) }, {}, 'end'); + + { + const { dispose } = os.popup(MkRippleEffect, { x: domX, y: domY }, { + end: () => dispose(), + }); + } + + { + const { dispose } = os.popup(MkPlusOneEffect, { x: domX, y: domY, value: scoreDelta + (scoreUnit === 'pt' ? '' : scoreUnit) }, { + end: () => dispose(), + }); + } if (nextMono) { const def = monoDefinitions.value.find(x => x.id === nextMono.id)!; diff --git a/packages/frontend/src/pages/emojis.emoji.vue b/packages/frontend/src/pages/emojis.emoji.vue index 5301a08521..ae3a2c31e3 100644 --- a/packages/frontend/src/pages/emojis.emoji.vue +++ b/packages/frontend/src/pages/emojis.emoji.vue @@ -14,8 +14,8 @@ SPDX-License-Identifier: AGPL-3.0-only