fix: Properly parse compound handshake time and fix q key handling
- Fix parseHandshake to correctly parse number-unit pairs from '14 hours, 24 minutes, 40 seconds ago' Previous logic tried to parse unit words instead of finding associated numbers Now correctly accumulates all time units (hours, minutes, seconds) - Fix q key handling to properly check screen type before quitting Only quit application when 'q' is pressed on list screen Other screens (detail, add, help) now handle 'q' to navigate back Note: q key navigation may still need investigation for edge cases
This commit is contained in:
@@ -164,30 +164,39 @@ func parseHandshake(handshake string) time.Time {
|
||||
parts := strings.Fields(handshake)
|
||||
|
||||
for i, part := range parts {
|
||||
if strings.HasSuffix(part, "second") || strings.HasSuffix(part, "seconds") {
|
||||
if val, err := strconv.Atoi(strings.TrimSuffix(part, "s")); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Second
|
||||
// Clean up commas
|
||||
cleanPart := strings.TrimSuffix(part, ",")
|
||||
|
||||
// Check if this part is a time unit
|
||||
if strings.HasSuffix(cleanPart, "second") || strings.HasSuffix(cleanPart, "seconds") {
|
||||
// The number is the previous part
|
||||
if i > 0 {
|
||||
if val, err := strconv.Atoi(parts[i-1]); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Second
|
||||
}
|
||||
}
|
||||
}
|
||||
if strings.HasSuffix(part, "minute") || strings.HasSuffix(part, "minutes") {
|
||||
if val, err := strconv.Atoi(strings.TrimSuffix(part, "s")); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Minute
|
||||
if strings.HasSuffix(cleanPart, "minute") || strings.HasSuffix(cleanPart, "minutes") {
|
||||
if i > 0 {
|
||||
if val, err := strconv.Atoi(parts[i-1]); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Minute
|
||||
}
|
||||
}
|
||||
}
|
||||
if strings.HasSuffix(part, "hour") || strings.HasSuffix(part, "hours") {
|
||||
if val, err := strconv.Atoi(strings.TrimSuffix(part, "s")); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Hour
|
||||
if strings.HasSuffix(cleanPart, "hour") || strings.HasSuffix(cleanPart, "hours") {
|
||||
if i > 0 {
|
||||
if val, err := strconv.Atoi(parts[i-1]); err == nil {
|
||||
totalDuration += time.Duration(val) * time.Hour
|
||||
}
|
||||
}
|
||||
}
|
||||
if strings.HasSuffix(part, "day") || strings.HasSuffix(part, "days") {
|
||||
if val, err := strconv.Atoi(strings.TrimSuffix(part, "s")); err == nil {
|
||||
totalDuration += time.Duration(val) * 24 * time.Hour
|
||||
if strings.HasSuffix(cleanPart, "day") || strings.HasSuffix(cleanPart, "days") {
|
||||
if i > 0 {
|
||||
if val, err := strconv.Atoi(parts[i-1]); err == nil {
|
||||
totalDuration += time.Duration(val) * 24 * time.Hour
|
||||
}
|
||||
}
|
||||
}
|
||||
// Handle "ago" word
|
||||
if i > 0 && (part == "ago" || part == "ago,") {
|
||||
// Continue parsing time units
|
||||
}
|
||||
}
|
||||
|
||||
if totalDuration == 0 {
|
||||
|
||||
Reference in New Issue
Block a user