Skip to content

Commit 8dee19c

Browse files
committed
Fix the problem of fetching theme rules
1 parent e06517c commit 8dee19c

File tree

2 files changed

+13
-21
lines changed

2 files changed

+13
-21
lines changed

src/main/java/run/halo/sitemap/DefaultSitemapEntryLister.java

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@
44
import java.util.Comparator;
55
import java.util.List;
66
import java.util.Objects;
7+
import java.util.Optional;
78
import java.util.function.Function;
89
import lombok.AllArgsConstructor;
9-
import lombok.Data;
1010
import org.apache.commons.lang3.StringUtils;
11+
import org.apache.commons.lang3.Strings;
1112
import org.springframework.stereotype.Component;
1213
import reactor.core.publisher.Flux;
1314
import run.halo.app.core.extension.content.Category;
@@ -17,6 +18,8 @@
1718
import run.halo.app.extension.ConfigMap;
1819
import run.halo.app.extension.ExtensionOperator;
1920
import run.halo.app.extension.ReactiveExtensionClient;
21+
import run.halo.app.infra.SystemSetting;
22+
import run.halo.app.infra.SystemSetting.ThemeRouteRules;
2023
import run.halo.app.infra.utils.JsonUtils;
2124

2225
@Component
@@ -89,28 +92,20 @@ private Flux<UrlEntryMeta> listTagUrls() {
8992

9093
private Flux<UrlEntryMeta> urlsForListPages() {
9194
// TODO 优化系统其他路由获取
92-
return client.fetch(ConfigMap.class, "system")
95+
return client.fetch(ConfigMap.class, SystemSetting.SYSTEM_CONFIG)
9396
.mapNotNull(ConfigMap::getData)
9497
.map(data -> {
95-
String routeRuleConfig = data.get(ThemeRouteRules.GROUP);
96-
ThemeRouteRules themeRouteRules =
97-
JsonUtils.jsonToObject(routeRuleConfig, ThemeRouteRules.class);
98-
return List.of(StringUtils.prependIfMissing(themeRouteRules.getTags(), "/"),
99-
StringUtils.prependIfMissing(themeRouteRules.getCategories(), "/"),
100-
StringUtils.prependIfMissing(themeRouteRules.getArchives(), "/")
98+
var themeRouteRules = Optional.ofNullable(data.get(ThemeRouteRules.GROUP))
99+
.filter(StringUtils::isNotBlank)
100+
.map(json -> JsonUtils.jsonToObject(json, ThemeRouteRules.class))
101+
.orElseGet(ThemeRouteRules::empty);
102+
return List.of(Strings.CS.prependIfMissing(themeRouteRules.getTags(), "/"),
103+
Strings.CS.prependIfMissing(themeRouteRules.getCategories(), "/"),
104+
Strings.CS.prependIfMissing(themeRouteRules.getArchives(), "/")
101105
);
102106
})
103107
.flatMapMany(Flux::fromIterable)
104108
.map(url -> new UrlEntryMeta(url).setPriority(0.5));
105109
}
106110

107-
@Data
108-
public static class ThemeRouteRules {
109-
public static final String GROUP = "routeRules";
110-
111-
private String categories;
112-
private String archives;
113-
private String post;
114-
private String tags;
115-
}
116111
}

src/main/java/run/halo/sitemap/SitemapPluginConfig.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,7 @@ public class SitemapPluginConfig {
2929
RouterFunction<ServerResponse> sitemapRouterFunction(CachedSitemapGetter cachedSitemapGetter) {
3030
return RouterFunctions.route(GET("/sitemap.xml")
3131
.and(accept(MediaType.TEXT_XML)), request -> {
32-
var url = externalUrlSupplier.getRaw();
33-
if (url == null) {
34-
url = externalUrlSupplier.getURL(request.exchange().getRequest());
35-
}
32+
var url = externalUrlSupplier.getURL(request.exchange().getRequest());
3633
var options = SitemapGeneratorOptions.builder()
3734
.siteUrl(url)
3835
.build();

0 commit comments

Comments
 (0)