diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs index 14919379fe..6e6b222351 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/DocsDomainModule.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -13,6 +14,7 @@ using Volo.Abp.VirtualFileSystem; using Volo.Docs.Documents; using Volo.Docs.Documents.FullSearch.Elastic; using Volo.Docs.FileSystem.Documents; +using Volo.Docs.GitHub; using Volo.Docs.GitHub.Documents; using Volo.Docs.Localization; using Volo.Docs.Projects; @@ -59,6 +61,16 @@ namespace Volo.Docs options.Sources[GithubDocumentSource.Type] = typeof(GithubDocumentSource); options.Sources[FileSystemDocumentSource.Type] = typeof(FileSystemDocumentSource); }); + + Configure(options => + { + options.DefaultLanguage = new LanguageConfigElement + { + Code = "en", + DisplayName = "English", + IsDefault = true + }; + }); context.Services.AddHttpClient(GithubRepositoryManager.HttpClientName, client => { diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/DocsGithubLanguageOptions.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/DocsGithubLanguageOptions.cs new file mode 100644 index 0000000000..a7a79ac3fd --- /dev/null +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/DocsGithubLanguageOptions.cs @@ -0,0 +1,8 @@ +using Volo.Docs.Documents; + +namespace Volo.Docs.GitHub; + +public class DocsGithubLanguageOptions +{ + public LanguageConfigElement DefaultLanguage { get; set; } +} \ No newline at end of file diff --git a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs index 43de298fb9..21ae3a460c 100644 --- a/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs +++ b/modules/docs/src/Volo.Docs.Domain/Volo/Docs/GitHub/Documents/GithubDocumentSource.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Net.Http; using System.Threading.Tasks; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Volo.Abp.Domain.Services; using Volo.Docs.Documents; using Volo.Docs.GitHub.Projects; @@ -25,15 +26,18 @@ namespace Volo.Docs.GitHub.Documents private readonly IGithubRepositoryManager _githubRepositoryManager; private readonly IGithubPatchAnalyzer _githubPatchAnalyzer; private readonly IDocumentRepository _documentRepository; + private readonly DocsGithubLanguageOptions _docsGithubLanguageOptions; public GithubDocumentSource( IGithubRepositoryManager githubRepositoryManager, IGithubPatchAnalyzer githubPatchAnalyzer, - IDocumentRepository documentRepository) + IDocumentRepository documentRepository, + IOptions docsGithubLanguageOptions) { _githubRepositoryManager = githubRepositoryManager; _githubPatchAnalyzer = githubPatchAnalyzer; _documentRepository = documentRepository; + _docsGithubLanguageOptions = docsGithubLanguageOptions.Value; } public virtual async Task GetDocumentAsync(Project project, string documentName, string languageCode, string version, DateTime? lastKnownSignificantUpdateTime = null) @@ -57,7 +61,7 @@ namespace Volo.Docs.GitHub.Documents var documentCreationTime = GetFirstCommitDate(commits); var lastUpdateTime = GetLastCommitDate(commits); - var lastSignificantUpdateTime = await GetLastKnownSignificantUpdateTime(project, documentName, languageCode, version, lastKnownSignificantUpdateTime, isNavigationDocument, isParameterDocument, commits, documentCreationTime); + var lastSignificantUpdateTime = await GetLastKnownSignificantUpdateTime(project, documentName, languageCode, version, lastKnownSignificantUpdateTime, isNavigationDocument, isParameterDocument, commits); var document = new Document ( @@ -103,18 +107,24 @@ namespace Volo.Docs.GitHub.Documents DateTime? lastKnownSignificantUpdateTime, bool isNavigationDocument, bool isParameterDocument, - IReadOnlyList commits, - DateTime documentCreationTime) + IReadOnlyList commits) { - return !isNavigationDocument && !isParameterDocument && version == project.LatestVersionBranchName - ? await GetLastSignificantUpdateTime( - commits, - project, - project.GetGitHubInnerUrl(languageCode, documentName), - lastKnownSignificantUpdateTime, - documentCreationTime - ) ?? lastKnownSignificantUpdateTime - : null; + try + { + return !isNavigationDocument && !isParameterDocument && version == project.LatestVersionBranchName + ? await GetLastSignificantUpdateTime( + commits, + project, + project.GetGitHubInnerUrl(languageCode, documentName), + lastKnownSignificantUpdateTime + ) ?? lastKnownSignificantUpdateTime + : null; + } + catch + { + Logger.LogWarning("Could not retrieved the last update time from Github."); + return null; + } } private static List GetAuthors(IReadOnlyList commits) @@ -209,8 +219,7 @@ namespace Volo.Docs.GitHub.Documents IReadOnlyList commits, Project project, string fileName, - DateTime? lastKnownSignificantUpdateTime, - DateTime documentCreationTime) + DateTime? lastKnownSignificantUpdateTime) { if (commits == null || !commits.Any()) { @@ -335,15 +344,11 @@ namespace Volo.Docs.GitHub.Documents } catch { - Logger.LogWarning("Could not retrieved language list from Github."); + Logger.LogWarning("Could not retrieved language list from Github. Using the default language from DocsGithubLanguageOptions."); - //TODO: save language list to documents table and then retrieve here!!! return new LanguageConfig { - Languages = new List - { - new LanguageConfigElement { Code = "en", DisplayName = "English", IsDefault = true } - } + Languages = new List { _docsGithubLanguageOptions.DefaultLanguage } }; } }