Show squads first in issue assignee picker

This commit is contained in:
Xisheng-Zhao
2026-06-19 19:47:51 +08:00
parent f913e4d956
commit ee033e5044
2 changed files with 37 additions and 2 deletions
@@ -453,6 +453,17 @@ private fun pilotMentionOptions(
.map { PilotMentionOption(it.id, it.type, it.name) } .map { PilotMentionOption(it.id, it.type, it.name) }
} }
private fun pilotIssueFormAssigneeOptions(
emptyLabel: String,
currentUser: Models.User?,
members: List<Models.Member>,
agents: List<Models.Agent>,
squads: List<Models.Squad>,
): List<PilotMentionOption> {
return Models.issueFormAssigneeOptions(emptyLabel, currentUser, members, agents, squads)
.map { PilotMentionOption(it.id, it.type, it.name) }
}
private fun pilotMentionTypeLabel(type: String?, zh: Boolean): String = when (type) { private fun pilotMentionTypeLabel(type: String?, zh: Boolean): String = when (type) {
"member" -> if (zh) "" else "Person" "member" -> if (zh) "" else "Person"
"agent" -> "Agent" "agent" -> "Agent"
@@ -6877,8 +6888,7 @@ private fun PilotIssueForm(
) )
else -> { else -> {
val options = loaded.getOrThrow() val options = loaded.getOrThrow()
val assignees = pilotMentionOptions( val assignees = pilotIssueFormAssigneeOptions(
true,
if (zh) "未分配" else "Unassigned", if (zh) "未分配" else "Unassigned",
session.user, session.user,
options.members, options.members,
@@ -230,6 +230,31 @@ final class Models {
return list; return list;
} }
static List<Assignee> issueFormAssigneeOptions(String emptyLabel, User currentUser,
List<Member> members, List<Agent> agents, List<Squad> squads) {
List<Assignee> list = new ArrayList<>();
list.add(new Assignee(null, null, emptyLabel));
for (Squad squad : squads) {
if (squad.id == null || squad.id.isEmpty()) continue;
list.add(new Assignee(squad.id, "squad", squad.name));
}
for (Agent agent : agents) {
if (agent.id == null || agent.id.isEmpty()) continue;
list.add(new Assignee(agent.id, "agent", agent.name));
}
List<String> seenMemberIds = new ArrayList<>();
if (currentUser != null && currentUser.id != null && !currentUser.id.isEmpty()) {
list.add(new Assignee(currentUser.id, "member", currentUser.name));
seenMemberIds.add(currentUser.id);
}
for (Member member : members) {
if (member.id == null || member.id.isEmpty() || seenMemberIds.contains(member.id)) continue;
list.add(new Assignee(member.id, "member", member.displayName));
seenMemberIds.add(member.id);
}
return list;
}
static final class Page<T> { static final class Page<T> {
final List<T> items; final List<T> items;
final boolean hasMore; final boolean hasMore;