sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 5a5e955182c1a53279bd0d62647e4c12dfebc66e
parent bc9851870f116b066b6e53c55e1cd5bac6f20d5d
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Tue,  8 Sep 2009 15:36:29 -0400

Merge branch 'restore-state'

Conflicts:
	bin/sup-sync

Diffstat:
M bin/sup-sync | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/bin/sup-sync b/bin/sup-sync
@@ -173,18 +173,22 @@ begin
 
       ## decide what to do based on message labels and the operation we're performing
       dothis, new_labels = case
-      when (op == :restore) && restored_state[m.id] && old_m && (old_m.labels != restored_state[m.id])
-        num_restored += 1
-        [:update_message_state, restored_state[m.id]]
-      when (op == :restore) && restored_state[m.id] && !old_m
-        num_restored += 1
-        m.labels = restored_state[m.id]
-        :add_message
+      when (op == :restore) && restored_state[m.id]
+        if old_m && (old_m.labels != restored_state[m.id])
+          num_restored += 1
+          [:update_message_state, restored_state[m.id]]
+        elsif old_m.nil?
+          num_restored += 1
+          m.labels = restored_state[m.id]
+          :add_message
+        else
+          # labels are the same; don't do anything
+        end
       when op == :discard
         if old_m && (old_m.labels != m.labels)
           [:update_message_state, m.labels]
         else
-          # don't do anything
+          # labels are the same; don't do anything
         end
       else
         ## duplicate behavior of poll mode: if index_state is non-nil, this is a newer