summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-12-23 10:55:56 +0530
committerBobby <[email protected]>2025-12-23 10:55:56 +0530
commit078a60e33af6e6013fe7b86643180e7d13aa63d0 (patch)
tree32d9e90e9305e947dc20a7a04023205430522bbc /utils
parent318360a60aa52cf91ac80d547285f4d14c2c4517 (diff)
downloadlain-078a60e33af6e6013fe7b86643180e7d13aa63d0.tar.xz
lain-078a60e33af6e6013fe7b86643180e7d13aa63d0.zip
email utils and functions
Diffstat (limited to 'utils')
-rw-r--r--utils/email/folders.go30
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
+}