mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 06:20:11 +00:00
Backport of #8516 to `cloud/1.41` Automatically created by backport workflow. ┆Issue is synchronized with this [Notion page](https://www.notion.so/PR-9538-backport-cloud-1-41-feat-Integrated-tab-UI-updates-31c6d73d36508199a52cf9312ce5ad6c) by [Unito](https://www.unito.io) Co-authored-by: pythongosssss <125205205+pythongosssss@users.noreply.github.com> Co-authored-by: GitHub Action <action@github.com> Co-authored-by: github-actions <github-actions@github.com>
96 lines
2.9 KiB
TypeScript
96 lines
2.9 KiB
TypeScript
import { storeToRefs } from 'pinia'
|
|
import { computed, onMounted } from 'vue'
|
|
|
|
import { useSettingStore } from '@/platform/settings/settingStore'
|
|
import { useTelemetry } from '@/platform/telemetry'
|
|
import { useReleaseStore } from '@/platform/updates/common/releaseStore'
|
|
import { useHelpCenterStore } from '@/stores/helpCenterStore'
|
|
import { useConflictAcknowledgment } from '@/workbench/extensions/manager/composables/useConflictAcknowledgment'
|
|
import { useConflictDetection } from '@/workbench/extensions/manager/composables/useConflictDetection'
|
|
import { useNodeConflictDialog } from '@/workbench/extensions/manager/composables/useNodeConflictDialog'
|
|
|
|
export function useHelpCenter() {
|
|
const settingStore = useSettingStore()
|
|
const releaseStore = useReleaseStore()
|
|
const helpCenterStore = useHelpCenterStore()
|
|
const { isVisible: isHelpCenterVisible } = storeToRefs(helpCenterStore)
|
|
const { shouldShowRedDot: showReleaseRedDot } = storeToRefs(releaseStore)
|
|
|
|
const conflictDetection = useConflictDetection()
|
|
const { show: showNodeConflictDialog } = useNodeConflictDialog()
|
|
|
|
// Use conflict acknowledgment state from composable - call only once
|
|
const { shouldShowRedDot: shouldShowConflictRedDot, markConflictsAsSeen } =
|
|
useConflictAcknowledgment()
|
|
|
|
// Use either release red dot or conflict red dot
|
|
const shouldShowRedDot = computed((): boolean => {
|
|
const releaseRedDot = showReleaseRedDot.value
|
|
return releaseRedDot || shouldShowConflictRedDot.value
|
|
})
|
|
|
|
const sidebarLocation = computed(() =>
|
|
settingStore.get('Comfy.Sidebar.Location')
|
|
)
|
|
|
|
/**
|
|
* Toggle Help Center and track UI button click.
|
|
*/
|
|
const toggleHelpCenter = () => {
|
|
useTelemetry()?.trackUiButtonClicked({
|
|
button_id: 'sidebar_help_center_toggled'
|
|
})
|
|
helpCenterStore.toggle()
|
|
}
|
|
|
|
const closeHelpCenter = () => {
|
|
helpCenterStore.hide()
|
|
}
|
|
|
|
/**
|
|
* Handle What's New popup dismissal
|
|
* Check if conflict modal should be shown after ComfyUI update
|
|
*/
|
|
const handleWhatsNewDismissed = async () => {
|
|
try {
|
|
// Check if conflict modal should be shown after update
|
|
const shouldShow =
|
|
await conflictDetection.shouldShowConflictModalAfterUpdate()
|
|
if (shouldShow) {
|
|
showConflictModal()
|
|
}
|
|
} catch (error) {
|
|
console.error('[HelpCenter] Error checking conflict modal:', error)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Show the node conflict dialog with current conflict data
|
|
*/
|
|
const showConflictModal = () => {
|
|
void showNodeConflictDialog({
|
|
showAfterWhatsNew: true,
|
|
dialogComponentProps: {
|
|
onClose: () => {
|
|
markConflictsAsSeen()
|
|
}
|
|
}
|
|
})
|
|
}
|
|
|
|
// Initialize release store on mount
|
|
onMounted(async () => {
|
|
// Initialize release store to fetch releases for toast and popup
|
|
await releaseStore.initialize()
|
|
})
|
|
|
|
return {
|
|
isHelpCenterVisible,
|
|
shouldShowRedDot,
|
|
sidebarLocation,
|
|
toggleHelpCenter,
|
|
closeHelpCenter,
|
|
handleWhatsNewDismissed
|
|
}
|
|
}
|