module Vmail::FlaggingAndMoving
Public Instance Methods
convert_to_message_ids(message_ids)
click to toggle source
# File lib/vmail/flagging_and_moving.rb, line 4 def convert_to_message_ids(message_ids) message_ids.split(',').map {|message_id| labeling = Labeling[message_id: message_id, label_id: @label.label_id] labeling.uid } end
copy_to(message_ids, mailbox)
click to toggle source
# File lib/vmail/flagging_and_moving.rb, line 75 def copy_to(message_ids, mailbox) uid_set = convert_to_message_ids(message_ids) if mailbox_aliases[mailbox] mailbox = mailbox_aliases[mailbox] end create_if_necessary mailbox log "Copying #{ uid_set.inspect } to #{ mailbox }" spawn_thread_if_tty do log @imap.uid_copy(uid_set, mailbox) log "Copied uid_set #{ uid_set.inspect } to #{ mailbox }" end rescue log $! end
flag(message_ids, action, flg)
click to toggle source
uid_set is a string comming from the vim client action is -FLAGS or +FLAGS
# File lib/vmail/flagging_and_moving.rb, line 13 def flag(message_ids, action, flg) uid_set = convert_to_message_ids(message_ids) log "Flag #{ uid_set } #{ flg } #{ action }" if flg == 'Deleted' log "Deleting uid_set: #{ uid_set.inspect }" decrement_max_seqno(uid_set.size) # for delete, do in a separate thread because deletions are slow spawn_thread_if_tty do unless @mailbox == mailbox_aliases['trash'] log "imap.uid_copy #{ uid_set.inspect } to #{ mailbox_aliases['trash'] }" log @imap.uid_copy(uid_set, mailbox_aliases['trash']) end log "imap.uid_store #{ uid_set.inspect } #{ action } [#{ flg.to_sym }]" log @imap.uid_store(uid_set, action, [flg.to_sym]) reload_mailbox clear_cached_message end elsif flg == 'spam' || flg == mailbox_aliases['spam'] log "Marking as spam uid_set: #{ uid_set.inspect }" decrement_max_seqno(uid_set.size) spawn_thread_if_tty do log "imap.uid_copy #{ uid_set.inspect } to #{ mailbox_aliases['spam'] }" log @imap.uid_copy(uid_set, mailbox_aliases['spam']) log "imap.uid_store #{ uid_set.inspect } #{ action } [:Deleted]" log @imap.uid_store(uid_set, action, [:Deleted]) reload_mailbox clear_cached_message end else log "Flagging uid_set: #{ uid_set.inspect }" spawn_thread_if_tty do log "imap.uid_store #{ uid_set.inspect } #{ action } [#{ flg.to_sym }]" log @imap.uid_store(uid_set, action, [flg.to_sym]) end end rescue log $! end
move_to(message_ids, mailbox)
click to toggle source
# File lib/vmail/flagging_and_moving.rb, line 52 def move_to(message_ids, mailbox) uid_set = convert_to_message_ids(message_ids) decrement_max_seqno(uid_set.size) log "Move #{ uid_set.inspect } to #{ mailbox }" if mailbox == 'all' log "Archiving messages" end if mailbox_aliases[mailbox] mailbox = mailbox_aliases[mailbox] end create_if_necessary mailbox log "Moving uid_set: #{ uid_set.inspect } to #{ mailbox }" spawn_thread_if_tty do log @imap.uid_copy(uid_set, mailbox) log @imap.uid_store(uid_set, '+FLAGS', [:Deleted]) reload_mailbox clear_cached_message log "Moved uid_set #{ uid_set.inspect } to #{ mailbox }" end rescue log $! end