From 4f12074a1352377f8508a18f164b91b9ebff761a Mon Sep 17 00:00:00 2001 From: Salih Date: Fri, 5 Apr 2024 00:45:23 +0300 Subject: [PATCH] refactor docs routing --- .../Pages/Documents/Project/Index.cshtml.cs | 42 +++++++------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 6afc9c7081..455899d479 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -49,8 +49,6 @@ namespace Volo.Docs.Pages.Documents.Project public ProjectDto Project { get; set; } public LanguageConfig LanguageConfig { get; set; } - - public ListResultDto Versions { get; set; } public List LanguageSelectListItems { get; set; } @@ -154,7 +152,10 @@ namespace Volo.Docs.Pages.Documents.Project await SetProjectsAsync(); } - await SetVersionAsync(); + if (!await TrySetVersionAsync()) + { + return RedirectToDefaultVersion(); + } await SetLanguageList(); if (IsDefaultDocument()) @@ -166,18 +167,13 @@ namespace Volo.Docs.Pages.Documents.Project { return RedirectToDefaultLanguage(); } - - if (!CheckVersion()) - { - return RedirectToDefaultVersion(); - } if (IsDocumentCultureDifferentThanCurrent()) { return ReloadPageWithCulture(); } - if (await TrySetDocumentAsync()) + if (!await TrySetDocumentAsync()) { DocumentFound = false; Response.StatusCode = 404; @@ -246,11 +242,6 @@ namespace Volo.Docs.Pages.Documents.Project { return LanguageConfig.Languages.Any(l => l.Code.Equals(LanguageCode, StringComparison.OrdinalIgnoreCase)); } - - private bool CheckVersion() - { - return Version == DocsAppConsts.Latest || Versions.Items.Any(v => v.Name.Equals(Version, StringComparison.OrdinalIgnoreCase)); - } private IActionResult ReloadPageWithCulture() { @@ -286,7 +277,7 @@ namespace Volo.Docs.Pages.Documents.Project private IActionResult RedirectToDefaultLanguage() { - return RedirectToPage(BuildDocumentUrl( + return Redirect(BuildDocumentUrl( projectName : ProjectName, version : (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version), languageCode : DefaultLanguageCode, @@ -296,7 +287,7 @@ namespace Volo.Docs.Pages.Documents.Project private IActionResult RedirectToDefaultVersion() { - return RedirectToPage(BuildDocumentUrl( + return Redirect(BuildDocumentUrl( projectName : ProjectName, version : DocsAppConsts.Latest, languageCode : LanguageCode, @@ -306,7 +297,7 @@ namespace Volo.Docs.Pages.Documents.Project private IActionResult RedirectToDefaultDocument() { - return RedirectToPage(BuildDocumentUrl ( + return Redirect(BuildDocumentUrl ( projectName : ProjectName, version : (LatestVersionInfo.IsSelected ? DocsAppConsts.Latest : Version), documentName : "", @@ -335,7 +326,7 @@ namespace Volo.Docs.Pages.Documents.Project return BuildDocumentUrl(project.ShortName, LanguageCode, Version, null); } - private async Task SetVersionAsync() + private async Task TrySetVersionAsync() { //TODO: Needs refactoring if (string.IsNullOrWhiteSpace(Version)) @@ -343,8 +334,8 @@ namespace Volo.Docs.Pages.Documents.Project Version = DocsAppConsts.Latest; } - Versions = await _projectAppService.GetVersionsAsync(Project.ShortName); - var versions = Versions.Items + var output = await _projectAppService.GetVersionsAsync(Project.ShortName); + var versions = output.Items .Select(v => new VersionInfoViewModel(v.DisplayName, v.Name)) .ToList(); @@ -372,8 +363,7 @@ namespace Volo.Docs.Pages.Documents.Project } else { - LatestVersionInfo.IsSelected = true; - Version = LatestVersionInfo.Version; + return false; } } } @@ -398,6 +388,8 @@ namespace Volo.Docs.Pages.Documents.Project }).ToList(); IsLatestVersion = Version == LatestVersionInfo.Version; + + return true; } private VersionInfoViewModel GetLatestVersionInfo(List versions) @@ -492,8 +484,6 @@ namespace Volo.Docs.Pages.Documents.Project private async Task TrySetDocumentAsync() { - var sb = new StringBuilder(); - var documentPath = DocumentName ?? ""; if (Request.GetDisplayUrl().EndsWith("/index", StringComparison.OrdinalIgnoreCase)) @@ -503,11 +493,11 @@ namespace Volo.Docs.Pages.Documents.Project var documentNames = new[] { DocumentName, documentPath.EnsureEndsWith('/') + "Index", documentPath.EnsureEndsWith('/') + "index" }.Distinct().ToArray(); var languages = new[] { LanguageCode, DefaultLanguageCode }.Distinct().ToArray(); - + var sb = new StringBuilder(); foreach (var documentName in documentNames) { DocumentName = documentName; - DocumentNameWithExtension = sb.Append(DocumentName).Append('.').Append(Project.Format).ToString(); + DocumentNameWithExtension = sb.Clear().Append(DocumentName).Append('.').Append(Project.Format).ToString(); foreach (var language in languages) { try