Merge branch 'develop' into 'release'

1

See merge request yescent/yes.blog!15
This commit is contained in:
2025-05-09 11:03:30 +00:00
4 changed files with 15 additions and 15 deletions

View File

@@ -7,10 +7,8 @@
string FileName string FileName
); );
public class GetThemeFilesQueryHandler(IOptionsMonitor<BlogSettings> options, IMapper mapper, IWebHostEnvironment env) : IRequestHandler<GetThemeFilesQuery, List<GetThemeFilesQueryResponse>> public class GetThemeFilesQueryHandler(IWebHostEnvironment env) : IRequestHandler<GetThemeFilesQuery, List<GetThemeFilesQueryResponse>>
{ {
private readonly BlogSettings _settings = options.CurrentValue;
private readonly IMapper _mapper = mapper;
private readonly IWebHostEnvironment _env = env; private readonly IWebHostEnvironment _env = env;
public async Task<List<GetThemeFilesQueryResponse>> Handle(GetThemeFilesQuery request, CancellationToken cancellationToken) public async Task<List<GetThemeFilesQueryResponse>> Handle(GetThemeFilesQuery request, CancellationToken cancellationToken)
@@ -18,11 +16,11 @@
var themeName = request.Name; var themeName = request.Name;
var themes = new List<GetThemeFilesQueryResponse>(); var themes = new List<GetThemeFilesQueryResponse>();
var themePath = Path.Combine(_env.ContentRootPath, "files", "themes", themeName); var themePath = Path.Combine(_env.ContentRootPath, "files", "themes", themeName);
var files = Directory.GetFiles(themePath).Where(x=>x.EndsWith(".liquid") || x.EndsWith(".css") || x.EndsWith(".js"));
var allowedExtensions = new[] { ".liquid", ".css", ".js" };
var files = Directory.GetFiles(themePath, "*.*", SearchOption.AllDirectories).Where(file => allowedExtensions.Contains(Path.GetExtension(file).ToLowerInvariant()));
themes = files.Select(x=>new GetThemeFilesQueryResponse(Path.GetRelativePath(themePath, x))).ToList();
themes = files.Select(x=>new GetThemeFilesQueryResponse(Path.GetFileName(x))).ToList();
return themes; return themes;
} }

View File

@@ -2,14 +2,16 @@
{ {
public class GetThemeFileEndpoint : ThemeEndpointScheme, IEndpoint public class GetThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
{ {
public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/files/{fileName}", Handle); public void Map(IEndpointRouteBuilder app) => app.MapGet("/themes/{themeName}/file", Handle);
public record Request([FromRoute(Name = "themeName")] string ThemeName, [FromRoute(Name = "fileName")] string FileName);
private async Task<IResult> Handle([AsParameters] Request request, IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
private async Task<IResult> Handle(
[FromRoute(Name = "themeName")] string themeName,
[FromQuery] string fileName, IMediator mediator,
IMapper mapper, CancellationToken cancellationToken)
{ {
var query = new GetThemeFileQuery(request.ThemeName, request.FileName); var query = new GetThemeFileQuery(themeName, fileName);
var response = await mediator.Send(query, cancellationToken); var response = await mediator.Send(query, cancellationToken);

View File

@@ -3,7 +3,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
{ {
public class UpdateThemeFileEndpoint : ThemeEndpointScheme, IEndpoint public class UpdateThemeFileEndpoint : ThemeEndpointScheme, IEndpoint
{ {
public void Map(IEndpointRouteBuilder app) => app.MapPut("/themes/{themeName}/files/{fileName}", Handle);//.WithRequestValidation<Request>(); public void Map(IEndpointRouteBuilder app) => app.MapPut("/themes/{themeName}/file", Handle);//.WithRequestValidation<Request>();
internal record Request( internal record Request(
string Content string Content
@@ -21,7 +21,7 @@ namespace Yes.Blog.Endpoints.Admins.Themes
private async Task<IResult> Handle([FromBody] Request request, private async Task<IResult> Handle([FromBody] Request request,
[FromRoute(Name = "themeName")] string themeName, [FromRoute(Name = "themeName")] string themeName,
[FromRoute(Name = "fileName")] string fileName, [FromQuery(Name = "fileName")] string fileName,
IMediator mediator, IMapper mapper, CancellationToken cancellationToken) IMediator mediator, IMapper mapper, CancellationToken cancellationToken)
{ {
var command = mapper.Map<UpdateThemeFileCommand>(request); var command = mapper.Map<UpdateThemeFileCommand>(request);

View File

@@ -35,7 +35,7 @@
return this; return this;
}, },
loadFile() { loadFile() {
axios.get('/themes/' + themeName + '/files/' + fileName) axios.get('/themes/' + themeName + '/file/?fileName=' + fileName)
.then(data => { .then(data => {
this.file = data; this.file = data;
editor.setValue(this.file.content); editor.setValue(this.file.content);
@@ -47,7 +47,7 @@
return; return;
} }
this.isSubmitting = true; this.isSubmitting = true;
axios.put('/themes/' + themeName + '/files/' + fileName, { content: this.file.content }) axios.put('/themes/' + themeName + '/file/?fileName=' + fileName, { content: this.file.content })
.then(data => { .then(data => {
console.log('data:', data); console.log('data:', data);
location.href = "/admin/theme/detail?themeName=" + themeName + "&fileName=" + fileName + ""; location.href = "/admin/theme/detail?themeName=" + themeName + "&fileName=" + fileName + "";