init: pristine aerc 0.20.0 source
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
package account
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"errors"
|
||||
|
||||
"git.sr.ht/~rjarry/aerc/app"
|
||||
"git.sr.ht/~rjarry/aerc/commands"
|
||||
"git.sr.ht/~rjarry/aerc/lib"
|
||||
"git.sr.ht/~rjarry/aerc/lib/state"
|
||||
"git.sr.ht/~rjarry/aerc/lib/templates"
|
||||
"git.sr.ht/~rjarry/aerc/models"
|
||||
)
|
||||
|
||||
type ViewMessage struct {
|
||||
Peek bool `opt:"-p" desc:"Peek message without marking it as read."`
|
||||
Background bool `opt:"-b" desc:"Open message in a background tab."`
|
||||
}
|
||||
|
||||
func init() {
|
||||
commands.Register(ViewMessage{})
|
||||
}
|
||||
|
||||
func (ViewMessage) Description() string {
|
||||
return "View the selected message in a new tab."
|
||||
}
|
||||
|
||||
func (ViewMessage) Context() commands.CommandContext {
|
||||
return commands.MESSAGE_LIST
|
||||
}
|
||||
|
||||
func (ViewMessage) Aliases() []string {
|
||||
return []string{"view-message", "view"}
|
||||
}
|
||||
|
||||
func (v ViewMessage) Execute(args []string) error {
|
||||
acct := app.SelectedAccount()
|
||||
if acct == nil {
|
||||
return errors.New("No account selected")
|
||||
}
|
||||
if acct.Messages().Empty() {
|
||||
return nil
|
||||
}
|
||||
store := acct.Messages().Store()
|
||||
msg := acct.Messages().Selected()
|
||||
if msg == nil {
|
||||
return nil
|
||||
}
|
||||
_, deleted := store.Deleted[msg.Uid]
|
||||
if deleted {
|
||||
return nil
|
||||
}
|
||||
if msg.Error != nil {
|
||||
app.PushError(msg.Error.Error())
|
||||
return nil
|
||||
}
|
||||
lib.NewMessageStoreView(
|
||||
msg,
|
||||
!v.Peek && acct.UiConfig().AutoMarkRead,
|
||||
store,
|
||||
app.CryptoProvider(),
|
||||
app.DecryptKeys,
|
||||
func(view lib.MessageView, err error) {
|
||||
if err != nil {
|
||||
app.PushError(err.Error())
|
||||
return
|
||||
}
|
||||
viewer, err := app.NewMessageViewer(acct, view)
|
||||
if err != nil {
|
||||
app.PushError(err.Error())
|
||||
return
|
||||
}
|
||||
data := state.NewDataSetter()
|
||||
data.SetAccount(acct.AccountConfig())
|
||||
data.SetFolder(acct.Directories().SelectedDirectory())
|
||||
data.SetHeaders(msg.RFC822Headers, &models.OriginalMail{})
|
||||
var buf bytes.Buffer
|
||||
err = templates.Render(acct.UiConfig().TabTitleViewer, &buf,
|
||||
data.Data())
|
||||
if err != nil {
|
||||
acct.PushError(err)
|
||||
return
|
||||
}
|
||||
if v.Background {
|
||||
app.NewBackgroundTab(viewer, buf.String())
|
||||
} else {
|
||||
app.NewTab(viewer, buf.String())
|
||||
}
|
||||
})
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user