vmail 1.4.5 → 1.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,6 @@ module Vmail
28
28
  @current_mail = nil
29
29
  @current_message_uid = nil
30
30
  @width = 140
31
- @prefix = "Gmail"
32
31
  end
33
32
 
34
33
  # holds mail objects keyed by [mailbox, uid]
@@ -140,28 +139,36 @@ module Vmail
140
139
 
141
140
  def list_mailboxes
142
141
  log 'loading mailboxes...'
143
- @mailboxes ||= ((@imap.list("[#@prefix]/", "%") || []) + (@imap.list("", "*")) || []).
142
+ @mailboxes ||= (@imap.list("", "*") || []).
144
143
  select {|struct| struct.attr.none? {|a| a == :Noselect} }.
145
- map {|struct| struct.name}
144
+ map {|struct| struct.name}.uniq
146
145
  @mailboxes.delete("INBOX")
147
146
  @mailboxes.unshift("INBOX")
148
147
  log "loaded mailboxes: #{@mailboxes.inspect}"
149
- if @mailboxes.detect {|m| m =~ /^\[Google Mail\]/}
150
- @prefix = "Google Mail"
151
- end
152
148
  @mailboxes = @mailboxes.map {|name| mailbox_aliases.invert[name] || name}
153
149
  @mailboxes.join("\n")
154
150
  end
155
151
 
152
+ # do this just once
156
153
  def mailbox_aliases
157
- { "sent" => "[#@prefix]/Sent Mail",
158
- "all" => "[#@prefix]/All Mail",
159
- "starred" => "[#@prefix]/Starred",
160
- "important" => "[#@prefix]/Important",
161
- "drafts" => "[#@prefix]/Drafts",
162
- "spam" => "[#@prefix]/Spam",
163
- "trash" => "[#@prefix]/Trash"
164
- }
154
+ return @mailbox_aliases if @mailbox_aliases
155
+ aliases = {"sent" => "Sent Mail",
156
+ "all" => "All Mail",
157
+ "starred" => "Starred",
158
+ "important" => "Important",
159
+ "drafts" => "Drafts",
160
+ "spam" => "Spam",
161
+ "trash" => "Trash"}
162
+ @mailbox_aliases = {}
163
+ aliases.each do |shortname, fullname|
164
+ [ "[Gmail]", "[Google Mail" ].each do |prefix|
165
+ if @mailboxes.include?( "#{prefix}/#{fullname}" )
166
+ @mailbox_aliases[shortname] = "#{prefix}/#{fullname}"
167
+ end
168
+ end
169
+ end
170
+ log "setting aliases to #{@mailbox_aliases.inspect}"
171
+ @mailbox_aliases
165
172
  end
166
173
 
167
174
  # called internally, not by vim client
@@ -215,7 +222,7 @@ module Vmail
215
222
  envelope = fetch_data.attr["ENVELOPE"]
216
223
  size = fetch_data.attr["RFC822.SIZE"]
217
224
  flags = fetch_data.attr["FLAGS"]
218
- address_struct = if @mailbox == "[#@prefix]/Sent Mail"
225
+ address_struct = if @mailbox == mailbox_aliases['sent']
219
226
  structs = envelope.to || envelope.cc
220
227
  structs.nil? ? nil : structs.first
221
228
  else
@@ -228,7 +235,7 @@ module Vmail
228
235
  else
229
236
  [Mail::Encodings.unquote_and_convert_to(address_struct.mailbox, 'UTF-8'), Mail::Encodings.unquote_and_convert_to(address_struct.host, 'UTF-8')].join('@')
230
237
  end
231
- if @mailbox == "[#@prefix]/Sent Mail" && envelope.to && envelope.cc
238
+ if @mailbox == mailbox_aliases['sent'] && envelope.to && envelope.cc
232
239
  total_recips = (envelope.to + envelope.cc).size
233
240
  address += " + #{total_recips - 1}"
234
241
  end
@@ -506,21 +513,21 @@ EOF
506
513
  decrement_max_seqno(uid_set.size)
507
514
  # for delete, do in a separate thread because deletions are slow
508
515
  spawn_thread_if_tty do
509
- unless @mailbox == "[#@prefix]/Trash"
510
- log "@imap.uid_copy #{uid_set.inspect} to [#@prefix]/Trash"
511
- log @imap.uid_copy(uid_set, "[#@prefix]/Trash")
516
+ unless @mailbox == mailbox_aliases['trash']
517
+ log "@imap.uid_copy #{uid_set.inspect} to #{mailbox_aliases['trash']}"
518
+ log @imap.uid_copy(uid_set, mailbox_aliases['trash'])
512
519
  end
513
520
  log "@imap.uid_store #{uid_set.inspect} #{action} [#{flg.to_sym}]"
514
521
  log @imap.uid_store(uid_set, action, [flg.to_sym])
515
522
  reload_mailbox
516
523
  clear_cached_message
517
524
  end
518
- elsif flg == 'spam' || flg == "[#@prefix]/Spam"
525
+ elsif flg == 'spam' || flg == mailbox_aliases['spam']
519
526
  log "Marking as spam uid_set: #{uid_set.inspect}"
520
527
  decrement_max_seqno(uid_set.size)
521
528
  spawn_thread_if_tty do
522
- log "@imap.uid_copy #{uid_set.inspect} to [#@prefix]/Spam"
523
- log @imap.uid_copy(uid_set, "[#@prefix]/Spam")
529
+ log "@imap.uid_copy #{uid_set.inspect} to #{mailbox_aliases['spam']}"
530
+ log @imap.uid_copy(uid_set, mailbox_aliases['spam'])
524
531
  log "@imap.uid_store #{uid_set.inspect} #{action} [:Deleted]"
525
532
  log @imap.uid_store(uid_set, action, [:Deleted])
526
533
  reload_mailbox
data/lib/vmail/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vmail
2
- VERSION = "1.4.5"
2
+ VERSION = "1.4.6"
3
3
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 4
8
- - 5
9
- version: 1.4.5
8
+ - 6
9
+ version: 1.4.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - Daniel Choi