···
+
"tangled.org/core/api/tangled"
+
"tangled.org/core/appview/db"
+
"tangled.org/core/appview/models"
+
"tangled.org/core/appview/pages"
+
"tangled.org/core/appview/pagination"
+
isvc "tangled.org/core/appview/service/issue"
+
rsvc "tangled.org/core/appview/service/repo"
+
"tangled.org/core/appview/session"
+
"tangled.org/core/appview/web/request"
+
func RepoIssues(is isvc.Service, rs rsvc.Service, p *pages.Pages, d *db.DB) http.HandlerFunc {
+
return func(w http.ResponseWriter, r *http.Request) {
+
l := log.FromContext(ctx).With("handler", "RepoIssues")
+
repo, ok := request.RepoFromContext(ctx)
+
l.Error("malformed request")
+
searchOpts := models.IssueSearchOptions{
+
RepoAt: repo.RepoAt().String(),
+
Keyword: query.Get("q"),
+
IsOpen: query.Get("state") != "closed",
+
Page: pagination.FromContext(ctx),
+
issues, err := is.GetIssues(ctx, repo, searchOpts)
+
l.Error("failed to get issues")
+
user := session.UserFromContext(ctx)
+
repoinfo, err := rs.GetRepoInfo(ctx, repo, user)
+
labelDefs, err := db.GetLabelDefinitions(
+
db.FilterIn("at_uri", repo.Labels),
+
db.FilterContains("scope", tangled.RepoIssueNSID),
+
defs := make(map[string]*models.LabelDefinition)
+
for _, l := range labelDefs {
+
defs[l.AtUri().String()] = &l
+
return p.RepoIssues(w, pages.RepoIssuesParams{
+
FilteringByOpen: searchOpts.IsOpen,
+
FilterQuery: searchOpts.Keyword,
+
l.Error("failed to render", "err", err)