From 705947dfd7e41e80e88958979ef7af21da8c8acc Mon Sep 17 00:00:00 2001 From: Rizumu Ayaka Date: Sat, 22 Nov 2025 07:10:58 +0900 Subject: [PATCH] refactor: use media assets in `fix: dropdown widget fetching output files` (#6809) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-6809-refactor-use-media-assets-in-fix-dropdown-widget-fetching-output-files-2b26d73d365081139a7af77a79693010) by [Unito](https://www.unito.io) --- .../components/WidgetSelectDropdown.vue | 57 +++++++++------ .../components/form/dropdown/FormDropdown.vue | 2 +- src/stores/outputsStore.ts | 72 ------------------- 3 files changed, 35 insertions(+), 96 deletions(-) delete mode 100644 src/stores/outputsStore.ts diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue index 5539c4717..26ef4428b 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectDropdown.vue @@ -1,10 +1,11 @@ diff --git a/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.vue b/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.vue index 670c054a4..9eacbd333 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdown.vue @@ -55,6 +55,7 @@ const props = withDefaults(defineProps(), { searcher: defaultSearcher }) +const isOpen = defineModel('isOpen', { default: false }) const selected = defineModel>('selected', { default: new Set() }) @@ -75,7 +76,6 @@ const isQuerying = ref(false) const toastStore = useToastStore() const popoverRef = ref>() const triggerRef = useTemplateRef('triggerRef') -const isOpen = ref(false) const maxSelectable = computed(() => { if (props.multiple === true) return Infinity diff --git a/src/stores/outputsStore.ts b/src/stores/outputsStore.ts deleted file mode 100644 index 98257c1f2..000000000 --- a/src/stores/outputsStore.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { api } from '@/scripts/api' -import { defineStore } from 'pinia' -import { computed, ref } from 'vue' - -export const useOutputsStore = defineStore('outputs', () => { - const outputs = ref([]) - const isLoadingOutputFiles = ref(false) - const thePromise = ref | null>(null) - - const outputImages = computed(() => { - return outputs.value.filter((filename) => { - const ext = filename.toLowerCase().split('.').pop() || '' - return ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff'].includes(ext) - }) - }) - const outputVideos = computed(() => { - return outputs.value.filter((filename) => { - const ext = filename.toLowerCase().split('.').pop() || '' - return ['mp4', 'webm', 'mov', 'avi', 'mkv'].includes(ext) - }) - }) - const outputAudios = computed(() => { - return outputs.value.filter((filename) => { - const ext = filename.toLowerCase().split('.').pop() || '' - return ['mp3', 'ogg', 'wav', 'flac'].includes(ext) - }) - }) - - /** - * Fetch output files from the backend API - */ - async function _fetchOutputFiles() { - isLoadingOutputFiles.value = true - try { - const response = await fetch(api.internalURL('/files/output'), { - headers: { - 'Comfy-User': api.user - } - }) - - if (!response.ok) { - console.error('Failed to fetch output files:', response.statusText) - return - } - - outputs.value = await response.json() - } catch (error) { - console.error('Error fetching output files:', error) - } finally { - isLoadingOutputFiles.value = false - } - } - - const fetchOutputFiles = async () => { - if (!thePromise.value) { - thePromise.value = _fetchOutputFiles() - thePromise.value.finally(() => { - thePromise.value = null - }) - } - return thePromise.value - } - - return { - isLoadingOutputFiles, - outputs, - fetchOutputFiles, - outputImages, - outputVideos, - outputAudios - } -})