X-Git-Url: http://git.giacomolli.uk/onechat/blobdiff_plain/f2d227db9c3b556c7b0e1cfe735ccc54311850e5..ec38dadaaf127d8bd2ffb72df450e8d3f5ac88c0:/memory.go?ds=inline diff --git a/memory.go b/memory.go index 792fe21..6937726 100644 --- a/memory.go +++ b/memory.go @@ -56,7 +56,7 @@ type Memory struct { tree *Tree chat *View cview *View - queue *queue + queue *BuildQueue summarizer Summarizer ctx context.Context cancel context.CancelFunc @@ -66,8 +66,8 @@ type Memory struct { // viewFile is the content of view.json. type viewFile struct { - Chat viewState `json:"chat"` - Compaction viewState `json:"compaction"` + Chat ViewState `json:"chat"` + Compaction ViewState `json:"compaction"` } // openMemory opens the chat in root and starts the builds that are ready. The @@ -82,7 +82,7 @@ func openMemory(ctx context.Context, root string, clock func() time.Time, summar m := &Memory{ root: root, log: log, - queue: newQueue(), + queue: newBuildQueue(), summarizer: summarizer, changed: make(chan struct{}), } @@ -126,8 +126,8 @@ func openMemory(ctx context.Context, root string, clock func() time.Time, summar func (m *Memory) load() error { data, err := os.ReadFile(m.viewPath()) if errors.Is(err, os.ErrNotExist) && m.log.Len() == 0 { - m.chat = newView(chatHigh, chatLow) - m.cview = newView(compactionHigh, compactionLow) + m.chat = newView(viewChatHigh, viewChatLow) + m.cview = newView(viewCompactionHigh, viewCompactionLow) return nil } @@ -146,12 +146,12 @@ func (m *Memory) load() error { return fmt.Errorf("decode view: %w", err) } - m.chat, err = restoreView(file.Chat, chatHigh, chatLow, m.tree) + m.chat, err = restoreView(file.Chat, viewChatHigh, viewChatLow, m.tree) if err != nil { return fmt.Errorf("chat view: %w", err) } - m.cview, err = restoreView(file.Compaction, compactionHigh, compactionLow, m.tree) + m.cview, err = restoreView(file.Compaction, viewCompactionHigh, viewCompactionLow, m.tree) if err != nil { return fmt.Errorf("compaction view: %w", err) } @@ -543,6 +543,15 @@ func (m *Memory) View() string { return m.chat.Render() } +// ViewLines returns the lines of the chat view, each with its newline, without +// the leaf lines of the messages in skip. +func (m *Memory) ViewLines(skip map[int]bool) []string { + m.mutex.Lock() + defer m.mutex.Unlock() + + return m.chat.LinesWithout(skip) +} + // Len returns the number of messages in the log. func (m *Memory) Len() int { m.mutex.Lock()