Changed how conversations are grouped by age in lmcli ls
This commit is contained in:
parent
a25d0d95e8
commit
1184f9aaae
@ -173,25 +173,10 @@ var lsCmd = &cobra.Command{
|
||||
return
|
||||
}
|
||||
|
||||
// Example output
|
||||
// $ lmcli ls
|
||||
// last hour:
|
||||
// 98sg - 12 minutes ago - Project discussion
|
||||
// last day:
|
||||
// tj3l - 10 hours ago - Deep learning concepts
|
||||
// last week:
|
||||
// bwfm - 2 days ago - Machine learning study
|
||||
// 8n3h - 3 days ago - Weekend plans
|
||||
// f3n7 - 6 days ago - CLI development
|
||||
// last month:
|
||||
// 5hn2 - 8 days ago - Book club discussion
|
||||
// b7ze - 20 days ago - Gardening tips and tricks
|
||||
// last 6 months:
|
||||
// 3jn2 - 30 days ago - Web development best practices
|
||||
// 43jk - 2 months ago - Longboard maintenance
|
||||
// g8d9 - 3 months ago - History book club
|
||||
// 4lk3 - 4 months ago - Local events and meetups
|
||||
// 43jn - 6 months ago - Mobile photography techniques
|
||||
type Category struct {
|
||||
name string
|
||||
cutoff time.Duration
|
||||
}
|
||||
|
||||
type ConversationLine struct {
|
||||
timeSinceReply time.Duration
|
||||
@ -199,15 +184,22 @@ var lsCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
categories := []string{
|
||||
"recent",
|
||||
"last hour",
|
||||
"last 6 hours",
|
||||
"last day",
|
||||
"last week",
|
||||
"last month",
|
||||
"last 6 months",
|
||||
"older",
|
||||
|
||||
midnight := time.Date(now.Year(), now.Month(), now.Day(), 0, 0, 0, 0, now.Location())
|
||||
monthStart := time.Date(now.Year(), now.Month(), 1, 0, 0, 0, 0, now.Location())
|
||||
dayOfWeek := int(now.Weekday())
|
||||
categories := []Category{
|
||||
{"today", now.Sub(midnight)},
|
||||
{"yesterday", now.Sub(midnight.AddDate(0, 0, -1))},
|
||||
{"this week", now.Sub(midnight.AddDate(0, 0, -dayOfWeek))},
|
||||
{"last week", now.Sub(midnight.AddDate(0, 0, -(dayOfWeek + 7)))},
|
||||
{"this month", now.Sub(monthStart)},
|
||||
{"last month", now.Sub(monthStart.AddDate(0, -1, 0))},
|
||||
{"2 months ago", now.Sub(monthStart.AddDate(0, -2, 0))},
|
||||
{"3 months ago", now.Sub(monthStart.AddDate(0, -3, 0))},
|
||||
{"4 months ago", now.Sub(monthStart.AddDate(0, -4, 0))},
|
||||
{"5 months ago", now.Sub(monthStart.AddDate(0, -5, 0))},
|
||||
{"older", now.Sub(time.Time{})},
|
||||
}
|
||||
categorized := map[string][]ConversationLine{}
|
||||
|
||||
@ -216,26 +208,15 @@ var lsCmd = &cobra.Command{
|
||||
if lastMessage == nil || err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
messageAge := now.Sub(lastMessage.CreatedAt)
|
||||
|
||||
var category string
|
||||
switch {
|
||||
case messageAge <= 10*time.Minute:
|
||||
category = "recent"
|
||||
case messageAge <= time.Hour:
|
||||
category = "last hour"
|
||||
case messageAge <= 6*time.Hour:
|
||||
category = "last 6 hours"
|
||||
case messageAge <= 24*time.Hour:
|
||||
category = "last day"
|
||||
case messageAge <= 7*24*time.Hour:
|
||||
category = "last week"
|
||||
case messageAge <= 30*24*time.Hour:
|
||||
category = "last month"
|
||||
case messageAge <= 6*30*24*time.Hour: // Approximate as 6 months
|
||||
category = "last 6 months"
|
||||
default:
|
||||
category = "older"
|
||||
for _, c := range categories {
|
||||
if messageAge < c.cutoff {
|
||||
category = c.name
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
formatted := fmt.Sprintf(
|
||||
@ -244,6 +225,7 @@ var lsCmd = &cobra.Command{
|
||||
humanTimeElapsedSince(messageAge),
|
||||
conversation.Title,
|
||||
)
|
||||
|
||||
categorized[category] = append(
|
||||
categorized[category],
|
||||
ConversationLine{messageAge, formatted},
|
||||
|
Loading…
Reference in New Issue
Block a user