summary refs log tree commit diff stats
path: root/ui/account.go
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2018-02-01 19:54:19 -0500
committerDrew DeVault <sir@cmpwn.com>2018-02-01 19:54:19 -0500
commitd603bbe2ce4adebfc9ec0bb708d814fd9152676c (patch)
tree0b6e06a272a68b98608c85b9b6cb21ef04181547 /ui/account.go
parentcc03f6f4c802ee0742520145e9cacbd88f78ed9a (diff)
downloadaerc-d603bbe2ce4adebfc9ec0bb708d814fd9152676c.tar.gz
Refactoring; consume listing response
Diffstat (limited to 'ui/account.go')
-rw-r--r--ui/account.go37
1 files changed, 22 insertions, 15 deletions
diff --git a/ui/account.go b/ui/account.go
index 8b1d0c5..393a47a 100644
--- a/ui/account.go
+++ b/ui/account.go
@@ -31,12 +31,20 @@ func NewAccountTab(conf *config.AccountConfig,
 		Worker: work,
 		logger: logger,
 	}
-	acc.Worker.PostAction(types.Configure{Config: conf}, nil)
-	acc.Worker.PostAction(types.Connect{}, func(msg types.WorkerMessage) {
-		if _, ok := msg.(types.Ack); ok {
+	acc.Worker.PostAction(&types.Configure{Config: conf}, nil)
+	acc.Worker.PostAction(&types.Connect{}, func(msg types.WorkerMessage) {
+		switch msg := msg.(type) {
+		case *types.Done:
 			acc.logger.Println("Connected.")
-			acc.Worker.PostAction(types.ListDirectories{}, nil)
-		} else {
+			acc.Worker.PostAction(&types.ListDirectories{}, nil)
+		case *types.CertificateApprovalRequest:
+			// TODO: Ask the user
+			acc.logger.Println("Approving certificate")
+			acc.Worker.PostAction(&types.ApproveCertificate{
+				Message:  types.RespondTo(msg),
+				Approved: true,
+			}, nil)
+		default:
 			acc.logger.Println("Connection failed.")
 		}
 	})
@@ -72,18 +80,17 @@ func (acc *AccountTab) GetChannel() chan types.WorkerMessage {
 
 func (acc *AccountTab) HandleMessage(msg types.WorkerMessage) {
 	msg = acc.Worker.ProcessMessage(msg)
-	switch msg.(type) {
-	case types.Ack:
-	case types.Unsupported:
+	switch msg := msg.(type) {
+	case *types.Done:
+	case *types.CertificateApprovalRequest:
+	case *types.Unsupported:
 		// no-op
-	case types.ApproveCertificate:
-		// TODO: Ask the user
-		acc.logger.Println("Approving certificate")
-		acc.Worker.PostAction(types.Ack{
-			Message: types.RespondTo(msg),
-		}, nil)
+	case *types.Error:
+		acc.logger.Printf("Error: %v\n", msg.Error)
+	case *types.Directory:
+		acc.logger.Printf("Directory: %s\n", msg.Name)
 	default:
-		acc.Worker.PostAction(types.Unsupported{
+		acc.Worker.PostAction(&types.Unsupported{
 			Message: types.RespondTo(msg),
 		}, nil)
 	}