summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doPlayback.go47
1 files changed, 12 insertions, 35 deletions
diff --git a/doPlayback.go b/doPlayback.go
index 2f01c93..34a9557 100644
--- a/doPlayback.go
+++ b/doPlayback.go
@@ -2,53 +2,30 @@ package main
import (
"fmt"
- "os"
- "go.wit.com/lib/protobuf/chatpb"
"go.wit.com/log"
)
-// doPlayback loads a specified log file and prints a one-line summary for each chat topic.
-// If no filename is provided, it summarizes the current in-memory chat session.
-func doPlayback(filename string) {
- var playbackChats *chatpb.Chats
- var err error
-
- // If a filename is provided, load that file. Otherwise, use the existing session.
- if filename != "" {
- log.Infof("Loading log file for playback: %s", filename)
- data, err := os.ReadFile(filename)
- if err != nil {
- log.Fatalf("Failed to read playback file: %v", err)
- }
- playbackChats, err = chatpb.UnmarshalChatsTEXT(data)
- if err != nil {
- log.Fatalf("Failed to parse playback file: %v", err)
- }
- } else {
- log.Info("No log file specified. Displaying summary of current conversation state.")
- playbackChats = me.chats
- }
-
- // Ensure all chats and entries have UUIDs before printing.
- verifyUuids(playbackChats)
-
- fmt.Println("-------------------------------------------------")
- log.Infof("Found %d chat topic(s).", len(playbackChats.GetChats()))
+func doPlayback() {
+ log.Infof("Found %d chat topic(s) in the log.", len(me.chats.GetChats()))
fmt.Println("-------------------------------------------------")
- for _, chat := range playbackChats.GetChats() {
+ // Iterate through the top-level Chat messages, which are now named groups.
+ for _, chat := range me.chats.GetChats() {
+
+ // Get the number of entries in the chat.
entryCount := len(chat.GetEntries())
- var formattedTime string
- // Use the chat's top-level ctime for the summary.
- if ctime := chat.GetCtime(); ctime != nil {
- t := ctime.AsTime()
- formattedTime = t.Format("2006-01-02 15:04:05")
+ // Get the timestamp of the first entry to represent the chat's start time.
+ var formattedTime string
+ if entryCount > 0 && chat.GetEntries()[0].GetCtime() != nil {
+ t := chat.GetEntries()[0].GetCtime().AsTime()
+ formattedTime = t.Format("2006-01-02 15:04:05") // YYYY-MM-DD HH:MM:SS
} else {
formattedTime = "No Timestamp"
}
+ // Print the formatted one-line summary.
fmt.Printf("Topic: %-25s | Entries: %-4d | Started: %s | UUID: %s\n",
chat.GetChatName(),
entryCount,