mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-04-20 14:30:41 +00:00
## Summary Wires the nightly survey system into the app by adding a controller component and a convenience composable for feature-site usage tracking. ## Changes - **What**: NightlySurveyController iterates enabled surveys from the registry and renders a NightlySurveyPopover for each. useSurveyFeatureTracking wraps useFeatureUsageTracker with a config-enabled guard for use at feature call sites. - **Tree-shaking**: Controller is loaded via defineAsyncComponent behind a compile-time isNightly/isCloud/isDesktop guard in SideToolbar.vue, so the entire survey module subtree is eliminated from cloud/desktop/stable builds. ## Review Focus - DCE pattern: controller imported conditionally via defineAsyncComponent + distribution guard (same pattern as ComfyRunButton/index.ts) - useSurveyFeatureTracking short-circuits early when config is absent/disabled (avoids initializing tracker storage) - No user-facing behavior change: FEATURE_SURVEYS registry is still empty ## Part of Nightly Survey System This is part 5 of a stacked PR chain: 1. feat/feature-usage-tracker - useFeatureUsageTracker (merged in #8189) 2. feat/survey-eligibility - useSurveyEligibility (#8189, merged) 3. feat/survey-config - surveyRegistry.ts (#8355, merged) 4. feat/survey-popover - NightlySurveyPopover.vue (#9083, merged) 5. **feat/survey-integration** - NightlySurveyController.vue (this PR) --------- Co-authored-by: GitHub Action <action@github.com>
36 lines
843 B
TypeScript
36 lines
843 B
TypeScript
import { computed } from 'vue'
|
|
|
|
import { getSurveyConfig } from './surveyRegistry'
|
|
import { useFeatureUsageTracker } from './useFeatureUsageTracker'
|
|
|
|
/**
|
|
* Convenience composable for tracking feature usage for surveys.
|
|
* Use this at the feature site to track when a feature is used.
|
|
*
|
|
* @example
|
|
* ```typescript
|
|
* const { trackFeatureUsed } = useSurveyFeatureTracking('simple-mode')
|
|
*
|
|
* function onFeatureAction() {
|
|
* trackFeatureUsed()
|
|
* }
|
|
* ```
|
|
*/
|
|
export function useSurveyFeatureTracking(featureId: string) {
|
|
const config = getSurveyConfig(featureId)
|
|
|
|
if (config?.enabled === false || !config) {
|
|
return {
|
|
trackFeatureUsed: () => {},
|
|
useCount: computed(() => 0)
|
|
}
|
|
}
|
|
|
|
const { trackUsage, useCount } = useFeatureUsageTracker(featureId)
|
|
|
|
return {
|
|
trackFeatureUsed: trackUsage,
|
|
useCount
|
|
}
|
|
}
|