From 747e6931ca33172e211ef315d201b1d9c9cef02f Mon Sep 17 00:00:00 2001 From: Artur Date: Fri, 5 May 2023 15:33:19 +0300 Subject: [PATCH] feat: Watch all active themes when in dev bundle mode (#16748) Allows HMR to work also for themes in the jar-resources, if somebody updates them e.g. using a file watcher --- .../devserver/DevModeHandlerManagerImpl.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java index 792f23d8c24..f3d5adcbe2d 100644 --- a/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java +++ b/vaadin-dev-server/src/main/java/com/vaadin/base/devserver/DevModeHandlerManagerImpl.java @@ -19,6 +19,8 @@ import java.io.File; import java.io.Serializable; +import java.util.HashSet; +import java.util.List; import java.util.Optional; import java.util.Set; @@ -61,7 +63,7 @@ private static final class DevModeHandlerAlreadyStartedAttribute private DevModeHandler devModeHandler; private BrowserLauncher browserLauncher; - private ThemeLiveUpdater themeLiveUpdater; + private Set themeLiveUpdaters = new HashSet<>(); @Override public Class[] getHandlesTypes() { @@ -112,10 +114,13 @@ private void startWatchingThemeFolder(VaadinContext context) { + "Skipping watching the theme files"); return; } - String themeName = maybeThemeName.get(); - File themeFolder = ThemeUtils.getThemeFolder( - FrontendUtils.getProjectFrontendDir(config), themeName); - themeLiveUpdater = new ThemeLiveUpdater(themeFolder, context); + List activeThemes = ThemeUtils.getActiveThemes(config); + for (String themeName : activeThemes) { + File themeFolder = ThemeUtils.getThemeFolder( + FrontendUtils.getProjectFrontendDir(config), themeName); + themeLiveUpdaters + .add(new ThemeLiveUpdater(themeFolder, context)); + } } catch (Exception e) { getLogger().error("Failed to start live-reload for theme files", e); } @@ -126,9 +131,10 @@ public void stopDevModeHandler() { devModeHandler.stop(); devModeHandler = null; } - if (themeLiveUpdater != null) { + for (ThemeLiveUpdater themeLiveUpdater : themeLiveUpdaters) { themeLiveUpdater.stop(); } + themeLiveUpdaters.clear(); } @Override