diff --git a/apps/frontend/src/views/DashboardView.vue b/apps/frontend/src/views/DashboardView.vue
index 2114bc0..af3fa9d 100644
--- a/apps/frontend/src/views/DashboardView.vue
+++ b/apps/frontend/src/views/DashboardView.vue
@@ -27,6 +27,7 @@ import { useRouter } from '@/app/router'
import StateBlock from '@/components/StateBlock.vue'
import { alertClass, cardClass, inputClass, sectionHeaderClass, toneClass } from '@/components/ui'
import { Button } from '@/components/ui/button'
+import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/tooltip'
import {
cronLabel,
@@ -58,6 +59,7 @@ const qrRefreshError = ref('')
const qrRefreshImage = ref('')
const qrRefreshSessionId = ref('')
const qrRefreshSucceeded = ref(false)
+const qrRefreshDialogOpen = ref(false)
let pollTimer: number | undefined
let qrRefreshPollTimer: number | undefined
@@ -179,9 +181,24 @@ async function cancelQrRefresh(clearFeedback = true) {
if (sessionId) await authApi.cancelQRCodeSession(sessionId).catch(() => undefined)
}
+async function closeQrRefreshDialog() {
+ qrRefreshDialogOpen.value = false
+ await cancelQrRefresh()
+}
+
+async function handleQrRefreshDialogOpenChange(open: boolean) {
+ if (open) {
+ qrRefreshDialogOpen.value = true
+ return
+ }
+
+ await closeQrRefreshDialog()
+}
+
async function requestQrRefresh() {
if (!canRefreshToken.value || qrRefreshLoading.value) return
+ qrRefreshDialogOpen.value = true
const alias = auth.state.user?.alias?.trim()
if (!alias) {
qrRefreshError.value = '当前用户缺少用户名,无法创建扫码刷新会话。'
@@ -443,63 +460,53 @@ onBeforeUnmount(() => {