Forge
csharp3407750f
1using AgentForge.Contracts;
2using AgentForge.Data.Entities;
3using AgentForge.Models;
4using AgentForge.Plugin.View;
5using AgentForge.Plugin.View.Components;
6using AgentForge.Plugin.View.Components.Artifact;
7using AgentForge.Services;
8
9namespace AgentForge.Plugin.Issue.Pages;
10
11internal static class ForgeIssuePage
12{
13 internal static string Render(
14 string repoName,
15 int number,
16 ForgeIssueEntity issue,
17 string? defaultBranch,
18 ForgeUrls urls,
19 IReadOnlyList<(string Author, string Text, DateTimeOffset CreatedAt)> comments,
20 string iopPanelHtml)
21 {
22 var forgeBracket = ForgeArtifactBracket.FormatIssue(repoName, number);
23 var forgeMagic = ForgeLinkBuilder.IssueMagicLink(urls.PublicBaseUrl, repoName, number);
24
25 var main = ForgeHtml.Fragment(
26 ForgeViewIssueTitle.Render(number, issue.Title),
27 ForgeViewArtifactMeta.Render(
28 forgeBracket,
29 urls.ViewIssue(repoName, number),
30 urls.Issue(repoName, number),
31 forgeMagic),
32 ForgeHtml.P("meta", ForgeHtml.Em(issue.Status.ToSlug())),
33 string.IsNullOrWhiteSpace(issue.Body) ? "" : ForgeHtml.P(null, ForgeHtml.Text(issue.Body)),
34 ForgeAnchorList.Render(repoName, issue.Anchors, defaultBranch, urls, issueNumber: number));
35
36 return ForgeHtml.Fragment(
37 ForgeViewTabPanel.Render(
38 ForgeViewSplitLayout.Render(main, iopPanelHtml)),
39 ForgeViewStatusBar.Render());
40 }
41}
42
View only · write via MCP/CIDE