diff --git a/src/components/dialog/content/manager/packCard/PackCard.vue b/src/components/dialog/content/manager/packCard/PackCard.vue index 04f655da7..0903b5a59 100644 --- a/src/components/dialog/content/manager/packCard/PackCard.vue +++ b/src/components/dialog/content/manager/packCard/PackCard.vue @@ -41,26 +41,51 @@ @@ -76,21 +101,37 @@ import Card from 'primevue/card' import { computed } from 'vue' import ContentDivider from '@/components/common/ContentDivider.vue' +import PackVersionBadge from '@/components/dialog/content/manager/PackVersionBadge.vue' import PackEnableToggle from '@/components/dialog/content/manager/button/PackEnableToggle.vue' import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue' import PackCardFooter from '@/components/dialog/content/manager/packCard/PackCardFooter.vue' import PackIcon from '@/components/dialog/content/manager/packIcon/PackIcon.vue' import { useComfyManagerStore } from '@/stores/comfyManagerStore' import type { components } from '@/types/comfyRegistryTypes' +import { compareVersions, isSemVer } from '@/utils/formatUtil' const { nodePack, isSelected = false } = defineProps<{ nodePack: components['schemas']['Node'] isSelected?: boolean }>() -const managerStore = useComfyManagerStore() +const { isPackInstalled, getInstalledPackVersion } = useComfyManagerStore() -const isPackInstalled = computed(() => - managerStore.isPackInstalled(nodePack?.id) -) +const isInstalled = computed(() => isPackInstalled(nodePack?.id)) +const isUpdateAvailable = computed(() => { + if (!isInstalled.value) return false + + const latestVersion = nodePack.latest_version?.version + if (!latestVersion) return false + + const installedVersion = getInstalledPackVersion(nodePack.id) + + // Don't attempt to show update available for nightly GitHub packs + if (installedVersion && !isSemVer(installedVersion)) return false + + return compareVersions(latestVersion, installedVersion) > 0 +}) + +// TODO: remove type assertion once comfy_nodes is added to node (pack) info type in backend +const nodesCount = computed(() => (nodePack as any).comfy_nodes?.length) diff --git a/src/components/dialog/content/manager/packCard/PackCardFooter.vue b/src/components/dialog/content/manager/packCard/PackCardFooter.vue index a36230d20..b88b46d38 100644 --- a/src/components/dialog/content/manager/packCard/PackCardFooter.vue +++ b/src/components/dialog/content/manager/packCard/PackCardFooter.vue @@ -1,10 +1,11 @@