package main import ( "fmt" "charm.land/bubbletea/v2" "github.com/charmbracelet/pop/inbox" ) func runInbox(days int) error { m := inbox.NewInboxModel() m.SetLoading(true) m.SetDetailFetcher(func(accountID string, uid uint32) (*inbox.EmailDetail, error) { detail, err := FetchEmailDetailByUID(accountID, uid) if err != nil || detail == nil { return nil, err } return &inbox.EmailDetail{ UID: detail.UID, From: detail.From, FromName: detail.FromName, To: detail.To, Cc: detail.Cc, Subject: detail.Subject, Date: detail.Date, TextBody: detail.TextBody, HTMLBody: detail.HTMLBody, Account: detail.Account, AccountID: detail.AccountID, }, nil }) emails, err := FetchAllUnreadEmails(days) if err != nil { m.SetError(err) m.SetLoading(false) p := tea.NewProgram(m) if _, err := p.Run(); err != nil { return err } return nil } items := make([]inbox.EmailItem, len(emails)) for i, e := range emails { items[i] = inbox.EmailItem{ UID: e.UID, From: e.From, FromName: e.FromName, Subject: e.Subject, Date: e.Date, Preview: e.Preview, Account: e.Account, AccountID: e.AccountID, } } m.SetEmails(items) m.SetLoading(false) p := tea.NewProgram(m) if _, err := p.Run(); err != nil { return fmt.Errorf("failed to run inbox: %w", err) } return nil }