about summary refs log tree commit diff stats
path: root/widgets
diff options
context:
space:
mode:
authorDaniel Bridges <bridges2@gmail.com>2019-07-09 17:04:21 -0700
committerDrew DeVault <sir@cmpwn.com>2019-07-10 13:21:38 -0400
commit217e85a55d0c1047bef1e2bc41783ccd4629bfc1 (patch)
tree5e06a60ccc27e59e4eef63315cea5065b5c3e8c6 /widgets
parent3f30c27bb31f26ca639b7a87d54a7c522bbe8be0 (diff)
downloadaerc-217e85a55d0c1047bef1e2bc41783ccd4629bfc1.tar.gz
Fix crashes when operating on empty folder (#216)
Diffstat (limited to 'widgets')
-rw-r--r--widgets/account.go8
-rw-r--r--widgets/msgviewer.go8
-rw-r--r--widgets/providesmessage.go2
3 files changed, 13 insertions, 5 deletions
diff --git a/widgets/account.go b/widgets/account.go
index e08a253..981a143 100644
--- a/widgets/account.go
+++ b/widgets/account.go
@@ -1,6 +1,7 @@
 package widgets
 
 import (
+	"errors"
 	"fmt"
 	"log"
 
@@ -170,8 +171,11 @@ func (acct *AccountView) SelectedAccount() *AccountView {
 	return acct
 }
 
-func (acct *AccountView) SelectedMessage() *models.MessageInfo {
-	return acct.msglist.Selected()
+func (acct *AccountView) SelectedMessage() (*models.MessageInfo, error) {
+	if len(acct.msglist.Store().Uids) == 0 {
+		return nil, errors.New("no message selected")
+	}
+	return acct.msglist.Selected(), nil
 }
 
 func (acct *AccountView) SelectedMessagePart() *PartInfo {
diff --git a/widgets/msgviewer.go b/widgets/msgviewer.go
index f6bef2d..f15fbae 100644
--- a/widgets/msgviewer.go
+++ b/widgets/msgviewer.go
@@ -2,6 +2,7 @@ package widgets
 
 import (
 	"bufio"
+	"errors"
 	"fmt"
 	"io"
 	"os/exec"
@@ -211,8 +212,11 @@ func (mv *MessageViewer) SelectedAccount() *AccountView {
 	return mv.acct
 }
 
-func (mv *MessageViewer) SelectedMessage() *models.MessageInfo {
-	return mv.msg
+func (mv *MessageViewer) SelectedMessage() (*models.MessageInfo, error) {
+	if mv.msg == nil {
+		return nil, errors.New("no message selected")
+	}
+	return mv.msg, nil
 }
 
 func (mv *MessageViewer) ToggleHeaders() {
diff --git a/widgets/providesmessage.go b/widgets/providesmessage.go
index a1cfaa8..34b9011 100644
--- a/widgets/providesmessage.go
+++ b/widgets/providesmessage.go
@@ -17,6 +17,6 @@ type ProvidesMessage interface {
 	ui.Drawable
 	Store() *lib.MessageStore
 	SelectedAccount() *AccountView
-	SelectedMessage() *models.MessageInfo
+	SelectedMessage() (*models.MessageInfo, error)
 	SelectedMessagePart() *PartInfo
 }