mirror of
https://git.sr.ht/~rjarry/aerc
synced 2026-03-02 18:23:33 +01:00
message-info: add explicit References field
Add an explicit References field to message info. This is useful for storing information needed for threading without storing all of the header values, keeping system RAM usage lower. Signed-off-by: Tim Culverhouse <tim@timculverhouse.com> Tested-by: Inwit <inwit@sindominio.net> Acked-by: Robin Jarry <robin@jarry.cc>
This commit is contained in:
committed by
Robin Jarry
parent
ca903d4228
commit
31d2f5be3c
@@ -71,6 +71,7 @@ type MessageInfo struct {
|
||||
Labels []string
|
||||
InternalDate time.Time
|
||||
RFC822Headers *mail.Header
|
||||
Refs []string
|
||||
Size uint32
|
||||
Uid uint32
|
||||
Error error
|
||||
@@ -110,6 +111,9 @@ func (mi *MessageInfo) References() ([]string, error) {
|
||||
if mi == nil {
|
||||
return []string{}, errors.New("msg is nil")
|
||||
}
|
||||
if mi.Refs != nil {
|
||||
return mi.Refs, nil
|
||||
}
|
||||
if mi.RFC822Headers == nil {
|
||||
return []string{}, errors.New("header is nil")
|
||||
}
|
||||
|
||||
@@ -118,6 +118,10 @@ func (w *IMAPWorker) getCachedHeaders(msg *types.FetchMessageHeaders) []uint32 {
|
||||
Uid: ch.Uid,
|
||||
RFC822Headers: hdr,
|
||||
}
|
||||
refs, err := hdr.MsgIDList("references")
|
||||
if err != nil {
|
||||
mi.Refs = refs
|
||||
}
|
||||
logging.Debugf("located cached header %s.%s", uv, u)
|
||||
w.worker.PostMessage(&types.MessageInfo{
|
||||
Message: types.RespondTo(msg),
|
||||
|
||||
@@ -62,6 +62,10 @@ func (imapw *IMAPWorker) handleFetchMessageHeaders(
|
||||
RFC822Headers: header,
|
||||
Uid: _msg.Uid,
|
||||
}
|
||||
refs, err := header.MsgIDList("references")
|
||||
if err != nil {
|
||||
info.Refs = refs
|
||||
}
|
||||
imapw.worker.PostMessage(&types.MessageInfo{
|
||||
Message: types.RespondTo(msg),
|
||||
Info: info,
|
||||
|
||||
@@ -348,11 +348,16 @@ func MessageHeaders(raw RawMessage) (*models.MessageInfo, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
refs, err := h.MsgIDList("references")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &models.MessageInfo{
|
||||
Envelope: env,
|
||||
Flags: flags,
|
||||
Labels: labels,
|
||||
InternalDate: recDate,
|
||||
Refs: refs,
|
||||
Size: 0,
|
||||
Uid: raw.UID(),
|
||||
Error: parseErr,
|
||||
|
||||
Reference in New Issue
Block a user