Skip to content

Commit 9f23b60

Browse files
CopilotWZ
andcommitted
fix: sort /list-items by first name using normalized display names
Co-authored-by: WZ <719869+WZ@users.noreply.github.com>
1 parent fdaf620 commit 9f23b60

1 file changed

Lines changed: 23 additions & 4 deletions

File tree

slack.go

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -525,11 +525,30 @@ func renderListItems(api *slack.Client, db *sql.DB, cfg Config, channelID, userI
525525
}
526526

527527
// Sort: group by author (first name alphabetically), then by reported_at ascending.
528+
// Use synthesizeName to normalize display names (removes aliases/parentheticals).
528529
sort.SliceStable(items, func(i, j int) bool {
529-
ai := strings.ToLower(strings.TrimSpace(items[i].Author))
530-
aj := strings.ToLower(strings.TrimSpace(items[j].Author))
531-
if ai != aj {
532-
return ai < aj
530+
// Normalize author names and extract first token (first name)
531+
normI := synthesizeName(items[i].Author)
532+
normJ := synthesizeName(items[j].Author)
533+
534+
// Extract first name (first token)
535+
firstNameI := strings.Fields(normI)
536+
firstNameJ := strings.Fields(normJ)
537+
538+
var fnI, fnJ string
539+
if len(firstNameI) > 0 {
540+
fnI = firstNameI[0]
541+
}
542+
if len(firstNameJ) > 0 {
543+
fnJ = firstNameJ[0]
544+
}
545+
546+
// Compare first names case-insensitively
547+
fnILower := strings.ToLower(fnI)
548+
fnJLower := strings.ToLower(fnJ)
549+
550+
if fnILower != fnJLower {
551+
return fnILower < fnJLower
533552
}
534553
return items[i].ReportedAt.Before(items[j].ReportedAt)
535554
})

0 commit comments

Comments
 (0)