mirror of
https://github.com/Comfy-Org/ComfyUI_frontend.git
synced 2026-05-11 08:20:53 +00:00
feat: integrate nightly survey system into app (#8480)
## 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>
This commit is contained in:
@@ -48,13 +48,24 @@
|
||||
</div>
|
||||
</div>
|
||||
<HelpCenterPopups :is-small="isSmall" />
|
||||
<Suspense v-if="NightlySurveyController">
|
||||
<component :is="NightlySurveyController" />
|
||||
</Suspense>
|
||||
</nav>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { useResizeObserver } from '@vueuse/core'
|
||||
import { debounce } from 'es-toolkit/compat'
|
||||
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
|
||||
import {
|
||||
computed,
|
||||
defineAsyncComponent,
|
||||
nextTick,
|
||||
onBeforeUnmount,
|
||||
onMounted,
|
||||
ref,
|
||||
watch
|
||||
} from 'vue'
|
||||
import { useI18n } from 'vue-i18n'
|
||||
|
||||
import HelpCenterPopups from '@/components/helpcenter/HelpCenterPopups.vue'
|
||||
@@ -62,7 +73,7 @@ import ComfyMenuButton from '@/components/sidebar/ComfyMenuButton.vue'
|
||||
import SidebarBottomPanelToggleButton from '@/components/sidebar/SidebarBottomPanelToggleButton.vue'
|
||||
import SidebarSettingsButton from '@/components/sidebar/SidebarSettingsButton.vue'
|
||||
import SidebarShortcutsToggleButton from '@/components/sidebar/SidebarShortcutsToggleButton.vue'
|
||||
import { isCloud } from '@/platform/distribution/types'
|
||||
import { isCloud, isDesktop, isNightly } from '@/platform/distribution/types'
|
||||
import { useSettingStore } from '@/platform/settings/settingStore'
|
||||
import { useTelemetry } from '@/platform/telemetry'
|
||||
import { useCanvasStore } from '@/renderer/core/canvas/canvasStore'
|
||||
@@ -78,6 +89,13 @@ import SidebarIcon from './SidebarIcon.vue'
|
||||
import SidebarLogoutIcon from './SidebarLogoutIcon.vue'
|
||||
import SidebarTemplatesButton from './SidebarTemplatesButton.vue'
|
||||
|
||||
const NightlySurveyController =
|
||||
isNightly && !isCloud && !isDesktop
|
||||
? defineAsyncComponent(
|
||||
() => import('@/platform/surveys/NightlySurveyController.vue')
|
||||
)
|
||||
: undefined
|
||||
|
||||
const { t } = useI18n()
|
||||
const workspaceStore = useWorkspaceStore()
|
||||
const settingStore = useSettingStore()
|
||||
|
||||
Reference in New Issue
Block a user