sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/
commit 4eb5cf1f7a7087463f2898c2c94fbcbb87242e75
parent 75ca131934f1e38852949703163f67e653f51e09
Author: William Morgan <wmorgan-sup@masanjin.net>
Date:   Mon, 31 Aug 2009 22:24:05 -0400

rejigger sup-sync logic slightly

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