Keyword search for issues and pull requests using search box (#3429)

This commit is contained in:
Naoki Takezoe
2023-11-22 01:55:01 +09:00
committed by GitHub
parent fc4819cb29
commit 4ca3816522
3 changed files with 18 additions and 5 deletions

View File

@@ -93,7 +93,13 @@ trait IssuesControllerBase extends ControllerBase {
case Some(filter) if filter.contains("is:pr") =>
redirect(s"/${repository.owner}/${repository.name}/pulls?q=${StringUtil.urlEncode(q)}")
case Some(filter) =>
searchIssues(repository, IssueSearchCondition(filter), IssueSearchCondition.page(request))
val condition = IssueSearchCondition(filter)
if (condition.isEmpty) {
// Redirect to keyword search
redirect(s"/${repository.owner}/${repository.name}/search?q=${StringUtil.urlEncode(q)}&type=issues")
} else {
searchIssues(repository, condition, IssueSearchCondition.page(request))
}
case None =>
searchIssues(repository, IssueSearchCondition(request), IssueSearchCondition.page(request))
}

View File

@@ -106,7 +106,13 @@ trait PullRequestsControllerBase extends ControllerBase {
case Some(filter) if filter.contains("is:issue") =>
redirect(s"/${repository.owner}/${repository.name}/issues?q=${StringUtil.urlEncode(q)}")
case Some(filter) =>
searchPullRequests(repository, IssueSearchCondition(filter), IssueSearchCondition.page(request))
val condition = IssueSearchCondition(filter)
if (condition.isEmpty) {
// Redirect to keyword search
redirect(s"/${repository.owner}/${repository.name}/search?q=${StringUtil.urlEncode(q)}&type=pulls")
} else {
searchPullRequests(repository, IssueSearchCondition(filter), IssueSearchCondition.page(request))
}
case None =>
searchPullRequests(repository, IssueSearchCondition(request), IssueSearchCondition.page(request))
}

View File

@@ -975,15 +975,15 @@ object IssuesService {
groups: Set[String] = Set.empty,
others: Seq[CustomFieldCondition] = Nil
) {
def isEmpty: Boolean = {
labels.isEmpty && milestone.isEmpty && author.isEmpty && assigned.isEmpty &&
state == "open" && sort == "created" && direction == "desc" && visibility.isEmpty
state == "open" && sort == "created" && direction == "desc" && visibility.isEmpty && others.isEmpty
}
def nonEmpty: Boolean = !isEmpty
def toFilterString: String =
def toFilterString: String = if (isEmpty) ""
else {
(
List(
Some(s"is:${state}"),
@@ -1025,6 +1025,7 @@ object IssuesService {
} ++
groups.map(group => s"group:${group}")
).mkString(" ")
}
def toURL: String = {
"?" + (Seq(