diff --git a/src/components/dialog/content/setting/UserPanel.vue b/src/components/dialog/content/setting/UserPanel.vue index 1abbfe2cd..ed2537601 100644 --- a/src/components/dialog/content/setting/UserPanel.vue +++ b/src/components/dialog/content/setting/UserPanel.vue @@ -82,16 +82,12 @@ import Divider from 'primevue/divider' import ProgressSpinner from 'primevue/progressspinner' import TabPanel from 'primevue/tabpanel' import { computed } from 'vue' -import { useI18n } from 'vue-i18n' -import { useDialogService } from '@/services/dialogService' +import { useCommandStore } from '@/stores/commandStore' import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' -import { useToastStore } from '@/stores/toastStore' -const toast = useToastStore() -const { t } = useI18n() const authStore = useFirebaseAuthStore() -const dialogService = useDialogService() +const commandStore = useCommandStore() const user = computed(() => authStore.currentUser) const loading = computed(() => authStore.loading) @@ -118,20 +114,10 @@ const providerIcon = computed(() => { }) const handleSignOut = async () => { - await authStore.logout() - if (authStore.error) { - toast.addAlert(authStore.error) - } else { - toast.add({ - severity: 'success', - summary: t('auth.signOut.success'), - detail: t('auth.signOut.successDetail'), - life: 5000 - }) - } + await commandStore.execute('Comfy.User.SignOut') } const handleSignIn = async () => { - await dialogService.showSignInDialog() + await commandStore.execute('Comfy.User.OpenSignInDialog') } diff --git a/src/composables/useCoreCommands.ts b/src/composables/useCoreCommands.ts index 06d706fd9..30af7388a 100644 --- a/src/composables/useCoreCommands.ts +++ b/src/composables/useCoreCommands.ts @@ -16,6 +16,7 @@ import { useDialogService } from '@/services/dialogService' import { useLitegraphService } from '@/services/litegraphService' import { useWorkflowService } from '@/services/workflowService' import type { ComfyCommand } from '@/stores/commandStore' +import { useFirebaseAuthStore } from '@/stores/firebaseAuthStore' import { useTitleEditorStore } from '@/stores/graphStore' import { useQueueSettingsStore, useQueueStore } from '@/stores/queueStore' import { useSettingStore } from '@/stores/settingStore' @@ -31,6 +32,8 @@ export function useCoreCommands(): ComfyCommand[] { const workflowStore = useWorkflowStore() const dialogService = useDialogService() const colorPaletteStore = useColorPaletteStore() + const authStore = useFirebaseAuthStore() + const toastStore = useToastStore() const getTracker = () => workflowStore.activeWorkflow?.changeTracker const getSelectedNodes = (): LGraphNode[] => { @@ -55,8 +58,6 @@ export function useCoreCommands(): ComfyCommand[] { }) } - const commonProps = { source: 'System' } - const commands = [ { id: 'Comfy.NewBlankWorkflow', @@ -184,7 +185,7 @@ export function useCoreCommands(): ComfyCommand[] { label: 'Interrupt', function: async () => { await api.interrupt() - useToastStore().add({ + toastStore.add({ severity: 'info', summary: t('g.interrupted'), detail: t('toastMessages.interrupted'), @@ -198,7 +199,7 @@ export function useCoreCommands(): ComfyCommand[] { label: 'Clear Pending Tasks', function: async () => { await useQueueStore().clear(['queue']) - useToastStore().add({ + toastStore.add({ severity: 'info', summary: t('g.confirmed'), detail: t('toastMessages.pendingTasksDeleted'), @@ -246,7 +247,7 @@ export function useCoreCommands(): ComfyCommand[] { label: 'Fit view to selected nodes', function: () => { if (app.canvas.empty) { - useToastStore().add({ + toastStore.add({ severity: 'error', summary: t('toastMessages.emptyCanvas'), life: 3000 @@ -328,7 +329,7 @@ export function useCoreCommands(): ComfyCommand[] { function: () => { const { canvas } = app if (!canvas.selectedItems?.size) { - useToastStore().add({ + toastStore.add({ severity: 'error', summary: t('toastMessages.nothingToGroup'), detail: t('toastMessages.pleaseSelectNodesToGroup'), @@ -641,8 +642,27 @@ export function useCoreCommands(): ComfyCommand[] { function: async () => { await dialogService.showSignInDialog() } + }, + { + id: 'Comfy.User.SignOut', + icon: 'pi pi-sign-out', + label: 'Sign Out', + versionAdded: '1.18.1', + function: async () => { + await authStore.logout() + if (authStore.error) { + toastStore.addAlert(authStore.error) + } else { + toastStore.add({ + severity: 'success', + summary: t('auth.signOut.success'), + detail: t('auth.signOut.successDetail'), + life: 5000 + }) + } + } } ] - return commands.map((command) => ({ ...command, ...commonProps })) + return commands.map((command) => ({ ...command, source: 'System' })) } diff --git a/src/locales/en/commands.json b/src/locales/en/commands.json index 983a62d42..3afc8fedb 100644 --- a/src/locales/en/commands.json +++ b/src/locales/en/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "Open Sign In Dialog" }, + "Comfy_User_SignOut": { + "label": "Sign Out" + }, "Workspace_CloseWorkflow": { "label": "Close Current Workflow" }, diff --git a/src/locales/en/main.json b/src/locales/en/main.json index e8dce5eee..3345a58eb 100644 --- a/src/locales/en/main.json +++ b/src/locales/en/main.json @@ -678,6 +678,7 @@ "Toggle Theme (Dark/Light)": "Toggle Theme (Dark/Light)", "Undo": "Undo", "Open Sign In Dialog": "Open Sign In Dialog", + "Sign Out": "Sign Out", "Close Current Workflow": "Close Current Workflow", "Next Opened Workflow": "Next Opened Workflow", "Previous Opened Workflow": "Previous Opened Workflow", diff --git a/src/locales/es/commands.json b/src/locales/es/commands.json index 68a3bfec9..271755c59 100644 --- a/src/locales/es/commands.json +++ b/src/locales/es/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "Abrir diálogo de inicio de sesión" }, + "Comfy_User_SignOut": { + "label": "Cerrar sesión" + }, "Workspace_CloseWorkflow": { "label": "Cerrar Flujo de Trabajo Actual" }, diff --git a/src/locales/es/main.json b/src/locales/es/main.json index 3cd6f8e69..55bc9c0e0 100644 --- a/src/locales/es/main.json +++ b/src/locales/es/main.json @@ -664,6 +664,7 @@ "Save": "Guardar", "Save As": "Guardar como", "Show Settings Dialog": "Mostrar diálogo de configuración", + "Sign Out": "Cerrar sesión", "Toggle Bottom Panel": "Alternar panel inferior", "Toggle Focus Mode": "Alternar modo de enfoque", "Toggle Logs Bottom Panel": "Alternar panel inferior de registros", diff --git a/src/locales/fr/commands.json b/src/locales/fr/commands.json index 3375560ab..bd18cd8ac 100644 --- a/src/locales/fr/commands.json +++ b/src/locales/fr/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "Ouvrir la boîte de dialogue de connexion" }, + "Comfy_User_SignOut": { + "label": "Se déconnecter" + }, "Workspace_CloseWorkflow": { "label": "Fermer le flux de travail actuel" }, diff --git a/src/locales/fr/main.json b/src/locales/fr/main.json index 9ec4c3ac6..fd7dfeb2d 100644 --- a/src/locales/fr/main.json +++ b/src/locales/fr/main.json @@ -664,6 +664,7 @@ "Save": "Enregistrer", "Save As": "Enregistrer sous", "Show Settings Dialog": "Afficher la boîte de dialogue des paramètres", + "Sign Out": "Se déconnecter", "Toggle Bottom Panel": "Basculer le panneau inférieur", "Toggle Focus Mode": "Basculer le mode focus", "Toggle Logs Bottom Panel": "Basculer le panneau inférieur des journaux", diff --git a/src/locales/ja/commands.json b/src/locales/ja/commands.json index f86640a58..22a14488a 100644 --- a/src/locales/ja/commands.json +++ b/src/locales/ja/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "サインインダイアログを開く" }, + "Comfy_User_SignOut": { + "label": "サインアウト" + }, "Workspace_CloseWorkflow": { "label": "現在のワークフローを閉じる" }, diff --git a/src/locales/ja/main.json b/src/locales/ja/main.json index 3171985b1..b507db003 100644 --- a/src/locales/ja/main.json +++ b/src/locales/ja/main.json @@ -664,6 +664,7 @@ "Save": "保存", "Save As": "名前を付けて保存", "Show Settings Dialog": "設定ダイアログを表示", + "Sign Out": "サインアウト", "Toggle Bottom Panel": "下部パネルの切り替え", "Toggle Focus Mode": "フォーカスモードの切り替え", "Toggle Logs Bottom Panel": "ログパネル下部を切り替え", diff --git a/src/locales/ko/commands.json b/src/locales/ko/commands.json index 18f87aff8..001f8a3ac 100644 --- a/src/locales/ko/commands.json +++ b/src/locales/ko/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "로그인 대화상자 열기" }, + "Comfy_User_SignOut": { + "label": "로그아웃" + }, "Workspace_CloseWorkflow": { "label": "현재 워크플로우 닫기" }, diff --git a/src/locales/ko/main.json b/src/locales/ko/main.json index a403c4643..931c74c39 100644 --- a/src/locales/ko/main.json +++ b/src/locales/ko/main.json @@ -664,6 +664,7 @@ "Save": "저장", "Save As": "다른 이름으로 저장", "Show Settings Dialog": "설정 대화상자 표시", + "Sign Out": "로그아웃", "Toggle Bottom Panel": "하단 패널 전환", "Toggle Focus Mode": "포커스 모드 전환", "Toggle Logs Bottom Panel": "로그 하단 패널 전환", diff --git a/src/locales/ru/commands.json b/src/locales/ru/commands.json index 7a1ccf0ea..90d95985f 100644 --- a/src/locales/ru/commands.json +++ b/src/locales/ru/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "Открыть окно входа" }, + "Comfy_User_SignOut": { + "label": "Выйти" + }, "Workspace_CloseWorkflow": { "label": "Закрыть текущий рабочий процесс" }, diff --git a/src/locales/ru/main.json b/src/locales/ru/main.json index 2c3c7edbc..2ae184dfa 100644 --- a/src/locales/ru/main.json +++ b/src/locales/ru/main.json @@ -664,6 +664,7 @@ "Save": "Сохранить", "Save As": "Сохранить как", "Show Settings Dialog": "Показать диалог настроек", + "Sign Out": "Выйти", "Toggle Bottom Panel": "Переключить нижнюю панель", "Toggle Focus Mode": "Переключить режим фокуса", "Toggle Logs Bottom Panel": "Переключение нижней панели журналов", diff --git a/src/locales/zh/commands.json b/src/locales/zh/commands.json index cbb4aa477..afd044bb6 100644 --- a/src/locales/zh/commands.json +++ b/src/locales/zh/commands.json @@ -179,6 +179,9 @@ "Comfy_User_OpenSignInDialog": { "label": "打开登录对话框" }, + "Comfy_User_SignOut": { + "label": "退出登录" + }, "Workspace_CloseWorkflow": { "label": "关闭当前工作流" }, diff --git a/src/locales/zh/main.json b/src/locales/zh/main.json index fec5d3230..1569436a1 100644 --- a/src/locales/zh/main.json +++ b/src/locales/zh/main.json @@ -664,6 +664,7 @@ "Save": "保存", "Save As": "另存为", "Show Settings Dialog": "显示设置对话框", + "Sign Out": "退出登录", "Toggle Bottom Panel": "切换底部面板", "Toggle Focus Mode": "切换专注模式", "Toggle Logs Bottom Panel": "切换日志底部面板",