aerc/worker/types/messages.go

273 lines
3.4 KiB
Go

package types
import (
"io"
"time"
"git.sr.ht/~rjarry/aerc/config"
"git.sr.ht/~rjarry/aerc/models"
)
type WorkerMessage interface {
InResponseTo() WorkerMessage
getId() int64
setId(id int64)
Account() string
setAccount(string)
}
type Message struct {
inResponseTo WorkerMessage
id int64
acct string
}
func RespondTo(msg WorkerMessage) Message {
return Message{
inResponseTo: msg,
}
}
func (m Message) InResponseTo() WorkerMessage {
return m.inResponseTo
}
func (m Message) getId() int64 {
return m.id
}
func (m *Message) setId(id int64) {
m.id = id
}
func (m *Message) Account() string {
return m.acct
}
func (m *Message) setAccount(name string) {
m.acct = name
}
// Meta-messages
type Done struct {
Message
}
type Error struct {
Message
Error error
}
type ConnError struct {
Message
Error error
}
type Unsupported struct {
Message
}
// Actions
type Configure struct {
Message
Config *config.AccountConfig
}
type Connect struct {
Message
}
type Reconnect struct {
Message
}
type Disconnect struct {
Message
}
type ListDirectories struct {
Message
}
type OpenDirectory struct {
Message
Directory string
}
type FetchDirectoryContents struct {
Message
SortCriteria []*SortCriterion
FilterCriteria []string
}
type FetchDirectoryThreaded struct {
Message
SortCriteria []*SortCriterion
FilterCriteria []string
}
type SearchDirectory struct {
Message
Argv []string
}
type DirectoryThreaded struct {
Message
Threads []*Thread
}
type CreateDirectory struct {
Message
Directory string
Quiet bool
}
type RemoveDirectory struct {
Message
Directory string
Quiet bool
}
type FetchMessageHeaders struct {
Message
Uids []uint32
}
type FetchFullMessages struct {
Message
Uids []uint32
}
type FetchMessageBodyPart struct {
Message
Uid uint32
Part []int
}
type FetchMessageFlags struct {
Message
Uids []uint32
}
type DeleteMessages struct {
Message
Uids []uint32
}
// Flag messages with different mail types
type FlagMessages struct {
Message
Enable bool
Flag models.Flag
Uids []uint32
}
type AnsweredMessages struct {
Message
Answered bool
Uids []uint32
}
type CopyMessages struct {
Message
Destination string
Uids []uint32
}
type MoveMessages struct {
Message
Destination string
Uids []uint32
}
type AppendMessage struct {
Message
Destination string
Flags []models.Flag
Date time.Time
Reader io.Reader
Length int
}
type CheckMail struct {
Message
Directories []string
Command string
Timeout time.Duration
}
// Messages
type Directory struct {
Message
Dir *models.Directory
}
type DirectoryInfo struct {
Message
Info *models.DirectoryInfo
SkipSort bool
}
type DirectoryContents struct {
Message
Uids []uint32
}
type SearchResults struct {
Message
Uids []uint32
}
type MessageInfo struct {
Message
Info *models.MessageInfo
NeedsFlags bool
}
type FullMessage struct {
Message
Content *models.FullMessage
}
type MessageBodyPart struct {
Message
Part *models.MessageBodyPart
}
type MessagesDeleted struct {
Message
Uids []uint32
}
type MessagesCopied struct {
Message
Destination string
Uids []uint32
}
type MessagesMoved struct {
Message
Destination string
Uids []uint32
}
type ModifyLabels struct {
Message
Uids []uint32
Add []string
Remove []string
}
type LabelList struct {
Message
Labels []string
}
type CheckMailDirectories struct {
Message
Directories []string
}