mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-20 14:54:12 +00:00
Backport of #8473 to cloud/1.38
Cherry-picked merge commit bc19bb60fb
## Conflicts resolved
- `src/locales/en/main.json`: Added missing closing brace for `nightly`
section and accepted PR's new `nodeFilters` and `secrets` sections
Co-authored-by: Amp <amp@ampcode.com>
89 lines
2.1 KiB
TypeScript
89 lines
2.1 KiB
TypeScript
import { computed, ref } from 'vue'
|
|
import { useI18n } from 'vue-i18n'
|
|
|
|
import { useToastStore } from '@/platform/updates/common/toastStore'
|
|
|
|
import {
|
|
deleteSecret as deleteSecretApi,
|
|
listSecrets,
|
|
SecretsApiError
|
|
} from '../api/secretsApi'
|
|
import type { SecretMetadata, SecretProvider } from '../types'
|
|
|
|
export function useSecrets() {
|
|
const { t } = useI18n()
|
|
const toastStore = useToastStore()
|
|
|
|
const loading = ref(false)
|
|
const secrets = ref<SecretMetadata[]>([])
|
|
const operatingSecretId = ref<string | null>(null)
|
|
|
|
const existingProviders = computed<SecretProvider[]>(() =>
|
|
secrets.value
|
|
.map((s) => s.provider)
|
|
.filter((p): p is SecretProvider => p !== undefined)
|
|
)
|
|
|
|
async function fetchSecrets() {
|
|
loading.value = true
|
|
try {
|
|
secrets.value = await listSecrets()
|
|
} catch (err) {
|
|
if (err instanceof SecretsApiError) {
|
|
toastStore.add({
|
|
severity: 'error',
|
|
summary: t('g.error'),
|
|
detail: err.message,
|
|
life: 5000
|
|
})
|
|
} else {
|
|
console.error('Unexpected error fetching secrets:', err)
|
|
toastStore.add({
|
|
severity: 'error',
|
|
summary: t('g.error'),
|
|
detail: t('g.unknownError'),
|
|
life: 5000
|
|
})
|
|
}
|
|
} finally {
|
|
loading.value = false
|
|
}
|
|
}
|
|
|
|
async function deleteSecret(secret: SecretMetadata) {
|
|
operatingSecretId.value = secret.id
|
|
try {
|
|
await deleteSecretApi(secret.id)
|
|
secrets.value = secrets.value.filter((s) => s.id !== secret.id)
|
|
} catch (err) {
|
|
if (err instanceof SecretsApiError) {
|
|
toastStore.add({
|
|
severity: 'error',
|
|
summary: t('g.error'),
|
|
detail: err.message,
|
|
life: 5000
|
|
})
|
|
} else {
|
|
console.error('Unexpected error deleting secret:', err)
|
|
toastStore.add({
|
|
severity: 'error',
|
|
summary: t('g.error'),
|
|
detail: t('g.unknownError'),
|
|
life: 5000
|
|
})
|
|
}
|
|
} finally {
|
|
operatingSecretId.value = null
|
|
}
|
|
}
|
|
|
|
return {
|
|
loading,
|
|
secrets,
|
|
operatingSecretId,
|
|
existingProviders,
|
|
fetchSecrets,
|
|
deleteSecret
|
|
}
|
|
}
|