+1
-2
appview/pages/pages.go
+1
-2
appview/pages/pages.go
+21
-3
appview/pages/templates/repo/empty.html
+21
-3
appview/pages/templates/repo/empty.html
···
6
{{ end }}
7
8
{{ define "repoContent" }}
9
+
<main>
10
+
{{ if gt (len .BranchesTrunc) 0 }}
11
+
<div class="flex flex-col items-center">
12
<p class="text-center pt-5 text-gray-400 dark:text-gray-500">
13
+
This branch is empty. Other branches in this repository are populated:
14
</p>
15
+
<div class="mt-4 grid grid-cols-1 divide-y divide-gray-200 dark:divide-gray-700 rounded border border-gray-200 dark:border-gray-700 w-full md:w-1/2">
16
+
{{ range $br := .BranchesTrunc }}
17
+
<a href="/{{ $.RepoInfo.FullName }}/tree/{{$br.Name}}" class="no-underline hover:no-underline">
18
+
<div class="flex items-center justify-between p-2">
19
+
{{ $br.Name }}
20
+
<time class="text-gray-500 dark:text-gray-400">{{ timeFmt $br.Commit.Author.When }}</time>
21
+
</div>
22
+
</a>
23
+
{{ end }}
24
+
</div>
25
+
</div>
26
+
{{ else }}
27
+
<p class="text-center pt-5 text-gray-400 dark:text-gray-500">
28
+
This is an empty repository. Push some commits here.
29
+
</p>
30
+
{{ end }}
31
+
</main>
32
{{ end }}
33
34
{{ define "repoAfter" }}
+11
-4
appview/pages/templates/repo/settings.html
+11
-4
appview/pages/templates/repo/settings.html
···
55
<label for="branch">default branch</label>
56
<div class="flex gap-2 items-center">
57
<select id="branch" name="branch" required class="p-1 border border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700">
58
{{ range .Branches }}
59
<option
60
-
value="{{ . }}"
61
class="py-1"
62
-
{{ if eq . $.DefaultBranch }}
63
selected
64
{{ end }}
65
>
66
-
{{ . }}
67
</option>
68
{{ end }}
69
</select>
70
-
<button class="btn my-2 flex gap-2 items-center" type="text">
71
<span>save</span>
72
{{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
73
</button>
···
55
<label for="branch">default branch</label>
56
<div class="flex gap-2 items-center">
57
<select id="branch" name="branch" required class="p-1 border border-gray-200 bg-white dark:bg-gray-800 dark:text-white dark:border-gray-700">
58
+
<option
59
+
value=""
60
+
disabled
61
+
selected
62
+
>
63
+
Choose a default branch
64
+
</option>
65
{{ range .Branches }}
66
<option
67
+
value="{{ .Name }}"
68
class="py-1"
69
+
{{ if .IsDefault }}
70
selected
71
{{ end }}
72
>
73
+
{{ .Name }}
74
</option>
75
{{ end }}
76
</select>
77
+
<button class="btn my-2 flex gap-2 items-center" type="submit">
78
<span>save</span>
79
{{ i "loader-circle" "w-4 h-4 animate-spin hidden group-[.htmx-request]:inline" }}
80
</button>
+19
-31
appview/state/repo.go
+19
-31
appview/state/repo.go
···
981
}
982
}
983
984
-
var branchNames []string
985
-
var defaultBranch string
986
us, err := knotclient.NewUnsignedClient(f.Knot, s.config.Core.Dev)
987
if err != nil {
988
log.Println("failed to create unsigned client", err)
989
-
} else {
990
-
resp, err := us.Branches(f.OwnerDid(), f.RepoName)
991
-
if err != nil {
992
-
log.Println("failed to reach knotserver", err)
993
-
} else {
994
-
defer resp.Body.Close()
995
996
-
body, err := io.ReadAll(resp.Body)
997
-
if err != nil {
998
-
log.Printf("Error reading response body: %v", err)
999
-
} else {
1000
-
var result types.RepoBranchesResponse
1001
-
err = json.Unmarshal(body, &result)
1002
-
if err != nil {
1003
-
log.Println("failed to parse response:", err)
1004
-
} else {
1005
-
for _, branch := range result.Branches {
1006
-
branchNames = append(branchNames, branch.Name)
1007
-
}
1008
-
}
1009
-
}
1010
-
}
1011
1012
-
defaultBranchResp, err := us.DefaultBranch(f.OwnerDid(), f.RepoName)
1013
-
if err != nil {
1014
-
log.Println("failed to reach knotserver", err)
1015
-
} else {
1016
-
defaultBranch = defaultBranchResp.Branch
1017
-
}
1018
}
1019
s.pages.RepoSettings(w, pages.RepoSettingsParams{
1020
LoggedInUser: user,
1021
RepoInfo: f.RepoInfo(s, user),
1022
Collaborators: repoCollaborators,
1023
IsCollaboratorInviteAllowed: isCollaboratorInviteAllowed,
1024
-
Branches: branchNames,
1025
-
DefaultBranch: defaultBranch,
1026
})
1027
}
1028
}
···
981
}
982
}
983
984
us, err := knotclient.NewUnsignedClient(f.Knot, s.config.Core.Dev)
985
if err != nil {
986
log.Println("failed to create unsigned client", err)
987
+
return
988
+
}
989
990
+
resp, err := us.Branches(f.OwnerDid(), f.RepoName)
991
+
if err != nil {
992
+
log.Println("failed to reach knotserver", err)
993
+
return
994
+
}
995
+
defer resp.Body.Close()
996
997
+
body, err := io.ReadAll(resp.Body)
998
+
if err != nil {
999
+
log.Printf("Error reading response body: %v", err)
1000
+
}
1001
+
1002
+
var result types.RepoBranchesResponse
1003
+
err = json.Unmarshal(body, &result)
1004
+
if err != nil {
1005
+
log.Println("failed to parse response:", err)
1006
}
1007
+
1008
s.pages.RepoSettings(w, pages.RepoSettingsParams{
1009
LoggedInUser: user,
1010
RepoInfo: f.RepoInfo(s, user),
1011
Collaborators: repoCollaborators,
1012
IsCollaboratorInviteAllowed: isCollaboratorInviteAllowed,
1013
+
Branches: result.Branches,
1014
})
1015
}
1016
}