diff options
| author | Bobby <[email protected]> | 2025-12-23 10:55:56 +0530 |
|---|---|---|
| committer | Bobby <[email protected]> | 2025-12-23 10:55:56 +0530 |
| commit | 078a60e33af6e6013fe7b86643180e7d13aa63d0 (patch) | |
| tree | 32d9e90e9305e947dc20a7a04023205430522bbc /utils | |
| parent | 318360a60aa52cf91ac80d547285f4d14c2c4517 (diff) | |
| download | lain-078a60e33af6e6013fe7b86643180e7d13aa63d0.tar.xz lain-078a60e33af6e6013fe7b86643180e7d13aa63d0.zip | |
email utils and functions
Diffstat (limited to 'utils')
| -rw-r--r-- | utils/email/folders.go | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/utils/email/folders.go b/utils/email/folders.go new file mode 100644 index 0000000..3acffae --- /dev/null +++ b/utils/email/folders.go @@ -0,0 +1,30 @@ +package email + +import ( + "lain/types" + + "github.com/emersion/go-imap" +) + +func FetchFolders(client *types.EmailClient) ([]types.IMAPFolder, error) { + mailboxes := make(chan *imap.MailboxInfo, 10) + done := make(chan error, 1) + + go func() { + done <- client.List("", "*", mailboxes) + }() + + var folders []types.IMAPFolder + for m := range mailboxes { + folders = append(folders, types.IMAPFolder{ + Name: m.Name, + HasChildren: hasAttribute(m.Attributes, "\\HasChildren"), + }) + } + + if err := <-done; err != nil { + return nil, err + } + + return folders, nil +} |
