actually base order on message order
Robert Ismo me@robertismo.com
Fri, 26 Jun 2026 15:43:56 -0500
1 files changed,
6 insertions(+),
3 deletions(-)
jump to
M
conversation.go
→
conversation.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 }