From f041f4a11434b97e18382055fcfa97c4651fd594 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Wed, 3 Sep 2025 22:48:29 +0800 Subject: [PATCH] feat(onboarding): prevent onboarding from starting if version-mismatch banner is visible --- static/js/core.js | 5 ++++- static/js/managers/BannerService.js | 10 ++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/static/js/core.js b/static/js/core.js index 36376d89..1a250aca 100644 --- a/static/js/core.js +++ b/static/js/core.js @@ -68,7 +68,10 @@ export class AppCore { // Start onboarding if needed (after everything is initialized) setTimeout(() => { - onboardingManager.start(); + // Do not show onboarding if version-mismatch banner is visible + if (!bannerService.isBannerVisible('version-mismatch')) { + onboardingManager.start(); + } }, 1000); // Small delay to ensure all elements are rendered // Return the core instance for chaining diff --git a/static/js/managers/BannerService.js b/static/js/managers/BannerService.js index c2226fce..808bfb12 100644 --- a/static/js/managers/BannerService.js +++ b/static/js/managers/BannerService.js @@ -171,6 +171,16 @@ class BannerService { } } + /** + * Check if a banner is currently rendered and visible + * @param {string} bannerId + * @returns {boolean} + */ + isBannerVisible(bannerId) { + const el = document.querySelector(`[data-banner-id="${bannerId}"]`); + return !!el && el.offsetParent !== null; + } + /** * Update container visibility based on active banners */