diff --git a/src/main/java/run/halo/app/model/support/ThemeFile.java b/src/main/java/run/halo/app/model/support/ThemeFile.java index 987863462..36ab8e8ec 100644 --- a/src/main/java/run/halo/app/model/support/ThemeFile.java +++ b/src/main/java/run/halo/app/model/support/ThemeFile.java @@ -3,6 +3,7 @@ package run.halo.app.model.support; import lombok.Data; import lombok.ToString; +import java.util.Comparator; import java.util.List; /** @@ -13,7 +14,7 @@ import java.util.List; */ @Data @ToString -public class ThemeFile { +public class ThemeFile implements Comparator { private String name; @@ -24,4 +25,17 @@ public class ThemeFile { private Boolean editable; private List node; + + @Override + public int compare(ThemeFile leftFile, ThemeFile rightFile) { + if (leftFile.isFile && !rightFile.isFile) { + return 1; + } + + if (!leftFile.isFile && rightFile.isFile) { + return -1; + } + + return leftFile.getName().compareTo(rightFile.getName()); + } } diff --git a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java index 5e9c7d780..406d9cf35 100644 --- a/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java +++ b/src/main/java/run/halo/app/service/impl/ThemeServiceImpl.java @@ -343,7 +343,7 @@ public class ThemeServiceImpl implements ThemeService { }); // Sort with isFile param - themeFiles.sort(Comparator.comparing(ThemeFile::getIsFile)); + themeFiles.sort(new ThemeFile()); return themeFiles; } catch (IOException e) {