From 5ba1569734be25f5f696b85c79788392a12bb0a3 Mon Sep 17 00:00:00 2001
From: Galen Abell <galen@galenabell.com>
Date: Tue, 25 Feb 2020 16:35:57 -0500
Subject: [PATCH] Ensure new directory exists before unwatching old

---
 worker/maildir/worker.go | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/worker/maildir/worker.go b/worker/maildir/worker.go
index 1df4e09..3c15f2c 100644
--- a/worker/maildir/worker.go
+++ b/worker/maildir/worker.go
@@ -236,6 +236,12 @@ func (w *Worker) handleListDirectories(msg *types.ListDirectories) error {
 func (w *Worker) handleOpenDirectory(msg *types.OpenDirectory) error {
 	w.worker.Logger.Printf("opening %s", msg.Directory)
 
+	// open the directory
+	dir, err := w.c.OpenDirectory(msg.Directory)
+	if err != nil {
+		return err
+	}
+
 	// remove existing watch path
 	if w.selected != nil {
 		prevDir := filepath.Join(string(*w.selected), "new")
@@ -244,11 +250,6 @@ func (w *Worker) handleOpenDirectory(msg *types.OpenDirectory) error {
 		}
 	}
 
-	// open the directory
-	dir, err := w.c.OpenDirectory(msg.Directory)
-	if err != nil {
-		return err
-	}
 	w.selected = &dir
 	w.selectedName = msg.Directory