fix branch switcher
MODIFIED
appview/pages/pages.go
MODIFIED
appview/pages/pages.go
@@ -250,8 +250,6 @@ type RepoIndexParams struct {LoggedInUser *auth.UserRepoInfo RepoInfoActive string- Branches []types.Branch- Tags []*types.TagReferencetypes.RepoIndexResponse}
@@ -9,7 +9,7 @@ {{ range $idx, $value := .BreadCrumbs }}{{ if ne $idx (sub (len $.BreadCrumbs) 1) }}<a href="{{ index . 1}}" class="text-bold text-gray-500 {{ $linkstyle }}">{{ index . 0 }}</a> /{{ else }}- <a href="{{ index . 1}}" class="text-bold text-gray-500 {{ $linkstyle }}">{{ index . 0 }}</a>+ <span class="text-bold text-gray-500">{{ index . 0 }}</span>{{ end }}{{ end }}</div>
@@ -8,32 +8,28 @@ <div id="file-tree" class="w-1/2">{{ $containerstyle := "py-1" }}{{ $linkstyle := "no-underline hover:underline" }}-<div class="flex justify-end"><select- hx-get="/{{ .RepoInfo.FullName }}/tree/"- hx-on::config-request = "event.detail.path += this.value"- hx-trigger="change"- hx-target="#repo-content"- hx-select="#repo-content"- hx-push-url="true"+ onchange="window.location.href = '/{{ .RepoInfo.FullName }}/tree/' + this.value"class="p-1 border border-gray-500 bg-white">- <optgroup label="branches" class="font-semibold">+ <optgroup label="branches" class="uppercase bold text-sm">{{ range .Branches }}<optionvalue="{{ .Reference.Name }}"class="py-1"+ {{if eq .Reference.Name $.Ref}}selected{{end}}>{{ .Reference.Name }}</option>{{ end }}</optgroup>- <optgroup label="tags" class="font-semibold">+ <optgroup label="tags" class="uppercase bold text-sm">{{ range .Tags }}<optionvalue="{{ .Reference.Name }}"class="py-1"+ {{if eq .Reference.Name $.Ref}}selected{{end}}>{{ .Reference.Name }}</option>
MODIFIED
appview/state/repo.go
MODIFIED
appview/state/repo.go
@@ -52,46 +52,6 @@ log.Fatalf("Error unmarshalling response body: %v", err)return}- branchesResp, err := http.Get(fmt.Sprintf("http://%s/%s/%s/branches", f.Knot, f.OwnerDid(), f.RepoName))- if err != nil {- log.Println("failed to reach knotserver for branches", err)- return- }- defer branchesResp.Body.Close()-- tagsResp, err := http.Get(fmt.Sprintf("http://%s/%s/%s/tags", f.Knot, f.OwnerDid(), f.RepoName))- if err != nil {- log.Println("failed to reach knotserver for tags", err)- return- }- defer tagsResp.Body.Close()-- branchesBody, err := io.ReadAll(branchesResp.Body)- if err != nil {- log.Println("failed to read branches response", err)- return- }-- tagsBody, err := io.ReadAll(tagsResp.Body)- if err != nil {- log.Println("failed to read tags response", err)- return- }-- var branchesResult types.RepoBranchesResponse- err = json.Unmarshal(branchesBody, &branchesResult)- if err != nil {- log.Println("failed to parse branches response", err)- return- }-- var tagsResult types.RepoTagsResponse- err = json.Unmarshal(tagsBody, &tagsResult)- if err != nil {- log.Println("failed to parse tags response", err)- return- }-log.Println(resp.Status, result)user := s.auth.GetUser(r)@@ -104,8 +64,6 @@ Name: f.RepoName,SettingsAllowed: settingsAllowed(s, user, f),},RepoIndexResponse: result,- Branches: branchesResult.Branches,- Tags: tagsResult.Tags,})return
MODIFIED
knotserver/routes.go
MODIFIED
knotserver/routes.go
@@ -48,6 +48,7 @@ notFound(w)return}}+commits, err := gr.Commits()if err != nil {writeError(w, err.Error(), http.StatusInternalServerError)@@ -56,6 +57,45 @@ return}if len(commits) > 10 {commits = commits[:10]+ }++ branches, err := gr.Branches()+ if err != nil {+ l.Error("getting branches", "error", err.Error())+ writeError(w, err.Error(), http.StatusInternalServerError)+ return+ }++ bs := []types.Branch{}+ for _, branch := range branches {+ b := types.Branch{}+ b.Hash = branch.Hash().String()+ b.Name = branch.Name().Short()+ bs = append(bs, b)+ }++ tags, err := gr.Tags()+ if err != nil {+ // Non-fatal, we *should* have at least one branch to show.+ l.Warn("getting tags", "error", err.Error())+ }++ rtags := []*types.TagReference{}+ for _, tag := range tags {+ tr := types.TagReference{+ Tag: tag.TagObject(),+ }++ tr.Reference = types.Reference{+ Name: tag.Name(),+ Hash: tag.Hash().String(),+ }++ if tag.Message() != "" {+ tr.Message = tag.Message()+ }++ rtags = append(rtags, &tr)}var readmeContent template.HTML@@ -109,6 +149,8 @@ Commits: commits,Description: getDescription(path),Readme: readmeContent,Files: files,+ Branches: bs,+ Tags: rtags,}writeJSON(w, resp)
MODIFIED
types/repo.go
MODIFIED
types/repo.go
@@ -13,6 +13,8 @@ Readme template.HTML `json:"readme,omitempty"`Commits []*object.Commit `json:"commits,omitempty"`Description string `json:"description,omitempty"`Files []NiceTree `json:"files,omitempty"`+ Branches []Branch `json:"branches,omitempty"`+ Tags []*TagReference `json:"tags,omitempty"`}type RepoLogResponse struct {