diff options
| author | 2025-12-31 14:15:42 +0300 | |
|---|---|---|
| committer | 2025-12-31 14:15:42 +0300 | |
| commit | 8c0b8ad931045c70845f662238230edb81f8cd94 (patch) | |
| tree | 3bfa44e03bae220fc1233c02d716d0baa27efa3d /internal/chat/logs.go | |
| parent | немного поправил отображение (diff) | |
| download | qchat-8c0b8ad931045c70845f662238230edb81f8cd94.tar.gz qchat-8c0b8ad931045c70845f662238230edb81f8cd94.tar.bz2 qchat-8c0b8ad931045c70845f662238230edb81f8cd94.tar.xz qchat-8c0b8ad931045c70845f662238230edb81f8cd94.zip | |
Сделал корректную работу с терминалом и историю
Diffstat (limited to 'internal/chat/logs.go')
| -rw-r--r-- | internal/chat/logs.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/internal/chat/logs.go b/internal/chat/logs.go new file mode 100644 index 0000000..09d60fe --- /dev/null +++ b/internal/chat/logs.go @@ -0,0 +1,44 @@ +package chat + +import "time" + +type Logs struct { + entries [20]LogEntry + start int +} + +func (l *Logs) Append(le LogEntry) { + l.entries[l.start] = le + l.start++ + if l.start == len(l.entries) { + l.start = 0 + } +} + +func (l *Logs) Get() []LogEntry { + result := make([]LogEntry, 0, len(l.entries)) + for i := l.start; i < len(l.entries); i++ { + result = append(result, l.entries[i]) + } + for i := 0; i < l.start; i++ { + result = append(result, l.entries[i]) + } + + return result +} + +type LogEntry struct { + Username string + Time time.Time + Message string + Type LogEntryType +} + +type LogEntryType int + +const ( + TypeNone LogEntryType = iota + TypeJoined + TypeLeft + TypeMessage +) |
