diff --git a/internal/git/git.go b/internal/git/git.go index fcdb9e3b5cdcc77415c2cb001c2c5f6294cce189..72140d8bf1ba6099128f5716b2ac525422891cc8 100644 --- a/internal/git/git.go +++ b/internal/git/git.go @@ -127,21 +127,6 @@ return fis, nil } -// GetCommitFromRef returns the commit object for a given ref -func (r Repo) GetCommitFromRef(ref string) (*object.Commit, error) { - g, err := r.Git() - if err != nil { - return nil, err - } - - hash, err := g.ResolveRevision(plumbing.Revision(ref)) - if err != nil { - return nil, err - } - - return g.CommitObject(*hash) -} - // FileContent returns the content of a file in the git tree at a given ref/rev func (r Repo) FileContent(ref, file string) (string, error) { t, err := r.Tree(ref) diff --git a/internal/html/repo_file.go b/internal/html/repo_file.go index 981121c907f7f14da2dc9c20dba1b5eba9bb1f94..6dd3cb13080a68e45577f5b11ef5ae2f27836dd4 100644 --- a/internal/html/repo_file.go +++ b/internal/html/repo_file.go @@ -2,7 +2,6 @@ package html import ( _ "embed" - "fmt" . "maragu.dev/gomponents" . "maragu.dev/gomponents/html" @@ -12,24 +11,19 @@ type RepoFileContext struct { BaseContext RepoHeaderComponentContext RepoBreadcrumbComponentContext - Code string - Commit string - Path string + Code string } //go:embed repo_file.js var repoFileJS string func RepoFileTemplate(rfc RepoFileContext) Node { - permalink := fmt.Sprintf("/%s/tree/%s/%s", rfc.RepoBreadcrumbComponentContext.Repo, rfc.Commit, rfc.Path) return base(rfc.BaseContext, []Node{ repoHeaderComponent(rfc.RepoHeaderComponentContext), Div(Class("mt-2 text-text"), repoBreadcrumbComponent(rfc.RepoBreadcrumbComponentContext), Text(" - "), A(Class("text-text underline decoration-text/50 decoration-dashed hover:decoration-solid"), Href("?raw"), Text("raw")), - Text(" - "), - A(Class("text-text underline decoration-text/50 decoration-dashed hover:decoration-solid"), ID("permalink"), Data("permalink", permalink), Href(permalink), Text("permalink")), Div(Class("code relative"), Raw(rfc.Code), Button(ID("copy"), Class("absolute top-0 right-0 rounded bg-base hover:bg-surface0")), diff --git a/internal/html/repo_file.js b/internal/html/repo_file.js index 9dd234f3506d5b585302801b09f0f5fff9da75e3..42d5a24594d926585c205b6ad21083156b0717a3 100644 --- a/internal/html/repo_file.js +++ b/internal/html/repo_file.js @@ -2,7 +2,6 @@ const lineRe = /#L(\d+)(?:-L(\d+))?/g const $lineLines = document.querySelectorAll(".chroma .lntable .lnt"); const $codeLines = document.querySelectorAll(".chroma .lntable .line"); const $copyButton = document.getElementById('copy'); -const $permalink = document.getElementById('permalink'); const $copyIcon = "📋"; const $copiedIcon = "✅"; let $code = "" @@ -14,12 +13,9 @@ if (0 in results) { start = results[0][1] !== undefined ? parseInt(results[0][1]) : 0; end = results[0][2] !== undefined ? parseInt(results[0][2]) : 0; } -if (start !== 0) { +if (start != 0) { deactivateLines(); activateLines(start, end); - let anchor = `#${start}`; - if (end !== 0) anchor += `-${end}`; - if (anchor !== "") $permalink.href = $permalink.dataset.permalink + anchor; $lineLines[start - 1].scrollIntoView(true); } for (let line of $lineLines) { @@ -31,17 +27,13 @@ let anchor = ""; if (event.shiftKey) { end = n; anchor = `#L${start}-L${end}`; - } else if (start === n) { - start = 0; - end = 0; } else { start = n; end = 0; anchor = `#L${start}`; } - history.replaceState(null, null, window.location.pathname + anchor); - $permalink.href = $permalink.dataset.permalink + anchor; - if (start !== 0) activateLines(start, end); + history.replaceState(null, null, anchor); + activateLines(start, end); }); } if (navigator.clipboard && navigator.clipboard.writeText) { diff --git a/internal/http/repo.go b/internal/http/repo.go index c47811a32038309bdf8c543677496195ff195114..5382b7df068dc84b7d2a2482a9bb901361b52667 100644 --- a/internal/http/repo.go +++ b/internal/http/repo.go @@ -92,21 +92,11 @@ if err := markup.Convert([]byte(content), filepath.Base(path), "L", &buf); err != nil { return httperr.Error(err) } - commit := ref - if len(ref) < 40 { - commitObj, err := repo.GetCommitFromRef(ref) - if err == nil { - commit = commitObj.Hash.String() - } - } - if err := html.RepoFileTemplate(html.RepoFileContext{ BaseContext: rh.baseContext(), RepoHeaderComponentContext: rh.repoHeaderContext(repo, r), RepoBreadcrumbComponentContext: rh.repoBreadcrumbContext(repo, r, path), Code: buf.String(), - Commit: commit, - Path: path, }).Render(w); err != nil { return httperr.Error(err) }