all repos — emessage @ 1b5e93f7aec9ef8b0f1bda230181a9698e020f3e

The EMessage email client

actually base order on message order
Robert Ismo me@robertismo.com
Fri, 26 Jun 2026 15:43:56 -0500
commit

1b5e93f7aec9ef8b0f1bda230181a9698e020f3e

parent

54620e3a8954b11a15b400b7a6571158e4bfe37d

1 files changed, 6 insertions(+), 3 deletions(-)

jump to
M conversation.goconversation.go

@@ -9,6 +9,7 @@ "time"

"github.com/emersion/go-imap/v2" "github.com/emersion/go-imap/v2/imapclient" + "github.com/wailsapp/wails/v2/pkg/runtime" "gorm.io/gorm" )

@@ -110,7 +111,7 @@ var conversations []Conversation

err := app.DB. Preload("Recipients"). Preload("ServerRecipient"). - Order("updated_at DESC"). + Order("(SELECT MAX(date) FROM messages WHERE messages.conversation_id = conversations.id) DESC NULLS LAST"). Find(&conversations).Error return conversations, err }

@@ -376,7 +377,7 @@ Find(&messages).Error

if err != nil { return nil, err } - + app.MarkConversationRead(conv) return &PaginatedMessages{ Messages: messages,

@@ -419,7 +420,7 @@ app.idleCancel()

} ImapSyncMutex.Lock() defer ImapSyncMutex.Unlock() - + storeFlags := &imap.StoreFlags{ Op: imap.StoreFlagsAdd, Flags: []imap.Flag{imap.FlagSeen},

@@ -439,6 +440,8 @@

if err := app.DB.Model(&conv).Update("is_unread", false).Error; err != nil { return fmt.Errorf("failed to update conversation read status: %w", err) } + + runtime.EventsEmit(app.ctx, "reload") return nil }