6473848d87
When a directory is opened, start watching its "new" subdirectory for incoming messages using the fsnotify library. When creation events are detected, run the Unseen routine to move the message from new to cur and add new UIDs to the store, updating the UI's list of directory contents as we go.
41 lines
951 B
Go
41 lines
951 B
Go
package worker
|
|
|
|
import (
|
|
"git.sr.ht/~sircmpwn/aerc/worker/imap"
|
|
"git.sr.ht/~sircmpwn/aerc/worker/maildir"
|
|
"git.sr.ht/~sircmpwn/aerc/worker/types"
|
|
|
|
"fmt"
|
|
"log"
|
|
"net/url"
|
|
"strings"
|
|
)
|
|
|
|
// Guesses the appropriate worker type based on the given source string
|
|
func NewWorker(source string, logger *log.Logger) (*types.Worker, error) {
|
|
u, err := url.Parse(source)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
worker := types.NewWorker(logger)
|
|
scheme := u.Scheme
|
|
if strings.ContainsRune(scheme, '+') {
|
|
scheme = scheme[:strings.IndexRune(scheme, '+')]
|
|
fmt.Println(scheme)
|
|
}
|
|
switch scheme {
|
|
case "imap":
|
|
fallthrough
|
|
case "imaps":
|
|
worker.Backend = imap.NewIMAPWorker(worker)
|
|
case "maildir":
|
|
if w, err := maildir.NewWorker(worker); err != nil {
|
|
return nil, fmt.Errorf("could not create maildir worker: %v", err)
|
|
} else {
|
|
worker.Backend = w
|
|
}
|
|
default:
|
|
return nil, fmt.Errorf("Unknown backend %s", u.Scheme)
|
|
}
|
|
return worker, nil
|
|
}
|