mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-02-20 06:44:32 +00:00
## Summary Refactor: remove FF for subscription tier, remove legacy code for non subscription tier logic. ## Review Focus Preexisting cloud functionality impact. <!-- If this PR fixes an issue, uncomment and update the line below --> <!-- Fixes #ISSUE_NUMBER --> ## Screenshots (if applicable) <!-- Add screenshots or video recording to help explain your changes --> ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-7596-refactor-start-on-removing-FF-for-subscription-tiers-2cc6d73d3650816bac3aef893e4f37cd) by [Unito](https://www.unito.io)
67 lines
2.7 KiB
TypeScript
67 lines
2.7 KiB
TypeScript
import type { LGraph, LGraphNode } from '@/lib/litegraph/src/litegraph'
|
|
import { LGraphBadge } from '@/lib/litegraph/src/litegraph'
|
|
|
|
import { useColorPaletteStore } from '@/stores/workspace/colorPaletteStore'
|
|
import { adjustColor } from '@/utils/colorUtil'
|
|
|
|
const componentIconSvg = new Image()
|
|
componentIconSvg.src =
|
|
"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='none' stroke='oklch(83.01%25 0.163 83.16)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0zm-13.239 0a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0zm6.619 6.619a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0zm0-13.238a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z'/%3E%3C/svg%3E"
|
|
|
|
export const usePriceBadge = () => {
|
|
function updateSubgraphCredits(node: LGraphNode) {
|
|
if (!node.isSubgraphNode()) return
|
|
node.badges = node.badges.filter((b) => !isCreditsBadge(b))
|
|
const newBadges = collectCreditsBadges(node.subgraph)
|
|
if (newBadges.length > 1) {
|
|
node.badges.push(getCreditsBadge('Partner Nodes x ' + newBadges.length))
|
|
} else {
|
|
node.badges.push(...newBadges)
|
|
}
|
|
}
|
|
function collectCreditsBadges(
|
|
graph: LGraph,
|
|
visited: Set<string> = new Set()
|
|
): (LGraphBadge | (() => LGraphBadge))[] {
|
|
if (visited.has(graph.id)) return []
|
|
visited.add(graph.id)
|
|
const badges = []
|
|
for (const node of graph.nodes) {
|
|
badges.push(
|
|
...(node.isSubgraphNode()
|
|
? collectCreditsBadges(node.subgraph, visited)
|
|
: node.badges.filter((b) => isCreditsBadge(b)))
|
|
)
|
|
}
|
|
return badges
|
|
}
|
|
|
|
function isCreditsBadge(badge: LGraphBadge | (() => LGraphBadge)): boolean {
|
|
const badgeInstance = typeof badge === 'function' ? badge() : badge
|
|
return badgeInstance.icon?.image === componentIconSvg
|
|
}
|
|
|
|
const colorPaletteStore = useColorPaletteStore()
|
|
function getCreditsBadge(price: string): LGraphBadge {
|
|
const isLightTheme = colorPaletteStore.completedActivePalette.light_theme
|
|
|
|
return new LGraphBadge({
|
|
text: price,
|
|
iconOptions: {
|
|
image: componentIconSvg,
|
|
size: 8
|
|
},
|
|
fgColor:
|
|
colorPaletteStore.completedActivePalette.colors.litegraph_base
|
|
.BADGE_FG_COLOR,
|
|
bgColor: isLightTheme
|
|
? adjustColor('#8D6932', { lightness: 0.5 })
|
|
: '#8D6932'
|
|
})
|
|
}
|
|
return {
|
|
getCreditsBadge,
|
|
updateSubgraphCredits
|
|
}
|
|
}
|