diff --git a/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java b/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java index d5145ae8e..72271a42e 100644 --- a/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java +++ b/application/src/main/java/run/halo/app/theme/SiteSettingVariablesAcquirer.java @@ -7,6 +7,7 @@ import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono; import run.halo.app.infra.ExternalUrlSupplier; import run.halo.app.infra.SystemConfigurableEnvironmentFetcher; +import run.halo.app.infra.SystemVersionSupplier; import run.halo.app.theme.finders.vo.SiteSettingVo; /** @@ -21,6 +22,7 @@ public class SiteSettingVariablesAcquirer implements ViewContextBasedVariablesAc private final SystemConfigurableEnvironmentFetcher environmentFetcher; private final ExternalUrlSupplier externalUrlSupplier; + private final SystemVersionSupplier systemVersionSupplier; @Override public Mono> acquire(ServerWebExchange exchange) { @@ -28,7 +30,8 @@ public class SiteSettingVariablesAcquirer implements ViewContextBasedVariablesAc .filter(configMap -> configMap.getData() != null) .map(configMap -> { SiteSettingVo siteSettingVo = SiteSettingVo.from(configMap) - .withUrl(externalUrlSupplier.getURL(exchange.getRequest())); + .withUrl(externalUrlSupplier.getURL(exchange.getRequest())) + .withVersion(systemVersionSupplier.get().toString()); return Map.of("site", siteSettingVo); }); } diff --git a/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java b/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java index 485ee1a11..558dbb3c5 100644 --- a/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java +++ b/application/src/main/java/run/halo/app/theme/finders/vo/SiteSettingVo.java @@ -25,6 +25,9 @@ public class SiteSettingVo { @With URL url; + @With + String version; + String subtitle; String logo; diff --git a/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java b/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java index 8fd8066ab..11d6dce14 100644 --- a/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java +++ b/application/src/test/java/run/halo/app/theme/SiteSettingVariablesAcquirerTest.java @@ -6,6 +6,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import com.github.zafarkhaja.semver.Version; import java.net.MalformedURLException; import java.net.URL; import java.util.Map; @@ -20,6 +21,7 @@ import reactor.test.StepVerifier; import run.halo.app.extension.ConfigMap; import run.halo.app.infra.ExternalUrlSupplier; import run.halo.app.infra.SystemConfigurableEnvironmentFetcher; +import run.halo.app.infra.SystemVersionSupplier; import run.halo.app.theme.finders.vo.SiteSettingVo; /** @@ -32,6 +34,10 @@ import run.halo.app.theme.finders.vo.SiteSettingVo; public class SiteSettingVariablesAcquirerTest { @Mock private ExternalUrlSupplier externalUrlSupplier; + + @Mock + private SystemVersionSupplier systemVersionSupplier; + @Mock private SystemConfigurableEnvironmentFetcher environmentFetcher; @@ -45,6 +51,7 @@ public class SiteSettingVariablesAcquirerTest { var url = new URL("https://halo.run"); when(externalUrlSupplier.getURL(any())).thenReturn(url); + when(systemVersionSupplier.get()).thenReturn(Version.parse("0.0.0-alpha.1")); when(environmentFetcher.getConfigMap()).thenReturn(Mono.just(configMap)); siteSettingVariablesAcquirer.acquire(mock(ServerWebExchange.class)) @@ -52,9 +59,13 @@ public class SiteSettingVariablesAcquirerTest { .consumeNextWith(result -> { assertThat(result).containsKey("site"); assertThat(result.get("site")).isInstanceOf(SiteSettingVo.class); - assertThat((SiteSettingVo) result.get("site")) + var site = (SiteSettingVo) result.get("site"); + assertThat(site) .extracting(SiteSettingVo::getUrl) .isEqualTo(url); + assertThat(site) + .extracting(SiteSettingVo::getVersion) + .isEqualTo("0.0.0-alpha.1"); }) .verifyComplete(); verify(externalUrlSupplier).getURL(any());