implemented polling
Robert Ismo me@robertismo.com
Fri, 26 Jun 2026 13:12:07 -0500
4 files changed,
26 insertions(+),
0 deletions(-)
M
app.go
→
app.go
@@ -85,6 +85,15 @@ app.Log("Update failed: %v", err).Stdout().StatusLine()
} } }() + go func() { + ticker := time.NewTicker(5 * time.Second) + defer ticker.Stop() + for range ticker.C { + if err := app.syncMessages(); err != nil { + app.Log("Sync failed: %v", err).Stdout().StatusLine() + } + } + }() app.EstablishMailConnections() return }
M
mailaccount.go
→
mailaccount.go
@@ -240,6 +240,14 @@ }
} } +type MailboxSyncState struct { + gorm.Model + EmailAddressID uint + EmailAddress EmailAddress + MailboxName string + LastUID uint32 +} + func (app *App) organizeMailboxesForAccount(conn MailAccountConnection) error { for _, mailbox := range SourceMailboxes { if _, err := conn.ImapClient.Select(mailbox, nil).Wait(); err != nil {@@ -269,6 +277,8 @@ }
return nil } + + func (app *App) syncMailbox(email EmailAddress, conn MailAccountConnection) error { if err := app.organizeMailboxesForAccount(conn); err != nil { return err