diff --git a/appview/issues/issues.go b/appview/issues/issues.go index 3f394916..a4415cd6 100644 --- a/appview/issues/issues.go +++ b/appview/issues/issues.go @@ -892,6 +892,8 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { totalIssues = f.RepoStats.IssueCount.Closed } + repoInfo := rp.repoResolver.GetRepoInfo(r, user) + var issues []models.Issue if searchOpts.HasSearchFilters() { @@ -903,6 +905,18 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { l.Debug("searched issues with indexer", "count", len(res.Hits)) totalIssues = int(res.Total) + // update tab counts to reflect filtered results + countOpts := searchOpts + countOpts.Page = pagination.Page{Limit: 1} + countOpts.IsOpen = ptrBool(true) + if openRes, err := rp.indexer.Search(r.Context(), countOpts); err == nil { + repoInfo.Stats.IssueCount.Open = int(openRes.Total) + } + countOpts.IsOpen = ptrBool(false) + if closedRes, err := rp.indexer.Search(r.Context(), countOpts); err == nil { + repoInfo.Stats.IssueCount.Closed = int(closedRes.Total) + } + if len(res.Hits) > 0 { issues, err = db.GetIssues( rp.db, @@ -964,7 +978,7 @@ func (rp *Issues) RepoIssues(w http.ResponseWriter, r *http.Request) { rp.pages.RepoIssues(w, pages.RepoIssuesParams{ LoggedInUser: rp.oauth.GetMultiAccountUser(r), - RepoInfo: rp.repoResolver.GetRepoInfo(r, user), + RepoInfo: repoInfo, Issues: issues, IssueCount: totalIssues, LabelDefs: defs, diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go index 37fcd677..4f554d43 100644 --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -643,6 +643,26 @@ func (s *Pulls) RepoPulls(w http.ResponseWriter, r *http.Request) { totalPulls = int(res.Total) l.Debug("searched pulls with indexer", "count", len(res.Hits)) + // update tab counts to reflect filtered results + countOpts := searchOpts + countOpts.Page = pagination.Page{Limit: 1} + for _, ps := range []models.PullState{models.PullOpen, models.PullMerged, models.PullClosed} { + ps := ps + countOpts.State = &ps + countRes, err := s.indexer.Search(r.Context(), countOpts) + if err != nil { + continue + } + switch ps { + case models.PullOpen: + repoInfo.Stats.PullCount.Open = int(countRes.Total) + case models.PullMerged: + repoInfo.Stats.PullCount.Merged = int(countRes.Total) + case models.PullClosed: + repoInfo.Stats.PullCount.Closed = int(countRes.Total) + } + } + if len(res.Hits) > 0 { pulls, err = db.GetPulls( s.db,