| 1 | using AgentForge.Contracts; |
| 2 | using AgentForge.Data.Entities; |
| 3 | using AgentForge.Plugin.View; |
| 4 | using AgentForge.Plugin.View.Components; |
| 5 | using AgentForge.Plugin.View.Components.Artifact; |
| 6 | using AgentForge.Plugin.View.Components.Diff; |
| 7 | using AgentForge.Services; |
| 8 | |
| 9 | namespace AgentForge.Plugin.MergeRequest.Pages; |
| 10 | |
| 11 | internal static class ForgeMergeRequestPage |
| 12 | { |
| 13 | internal static string Render( |
| 14 | string repoName, |
| 15 | int number, |
| 16 | ForgeMergeRequestEntity mergeRequest, |
| 17 | ForgeRepoEntity repo, |
| 18 | MergeRequestDiffResponse diff, |
| 19 | ForgeDiffRenderContext lens, |
| 20 | string? defaultBranch, |
| 21 | ForgeUrls urls, |
| 22 | string iopPanelHtml, |
| 23 | IReadOnlyList<CodeAnchor> anchors, |
| 24 | string? sourceTip) |
| 25 | { |
| 26 | var forgeBracket = ForgeArtifactBracket.FormatMergeRequest(repoName, number); |
| 27 | var diffHtml = ForgeViewDiffPanel.Render(diff, lens); |
| 28 | var anchorsHtml = ForgeAnchorList.Render(repoName, anchors, defaultBranch, urls); |
| 29 | |
| 30 | return ForgeHtml.Fragment( |
| 31 | ForgeViewTabPanel.Render(ForgeHtml.Fragment( |
| 32 | ForgeViewArtifactMeta.Render( |
| 33 | forgeBracket, |
| 34 | urls.ViewMergeRequest(repoName, number), |
| 35 | urls.MergeRequest(repo.Name, number)), |
| 36 | ForgeViewSplitLayout.Render( |
| 37 | ForgeHtml.Fragment( |
| 38 | ForgeViewSectionHeading.Render("Diff"), |
| 39 | diffHtml, |
| 40 | anchorsHtml), |
| 41 | iopPanelHtml))), |
| 42 | ForgeViewMrRefreshScript.Render(repoName, number, sourceTip), |
| 43 | ForgeViewStatusBar.Render()); |
| 44 | } |
| 45 | } |
| 46 | |