X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;ds=sidebyside;f=lib%2Fsup%2Fmodes%2Flabel-list-mode.rb;h=f65ec2e2080f2f823b1fa102fb77d2cc5f4cbae5;hb=aef0216d7f988ab87a3430c9a65210f0d55dfc64;hp=132b654066a8f107e2e52d7d2622c722e1e65ea6;hpb=f4adc029a972c56d22def1e903dae7d7be89e0b0;p=sup diff --git a/lib/sup/modes/label-list-mode.rb b/lib/sup/modes/label-list-mode.rb index 132b654..f65ec2e 100644 --- a/lib/sup/modes/label-list-mode.rb +++ b/lib/sup/modes/label-list-mode.rb @@ -48,12 +48,12 @@ protected def regen_text @text = [] - labels = LabelManager.listable_labels + labels = LabelManager.all_labels counts = labels.map do |label| string = LabelManager.string_for label total = Index.num_results_for :label => label - unread = Index.num_results_for :labels => [label, :unread] + unread = (label == :unread)? total : Index.num_results_for(:labels => [label, :unread]) [label, string, total, unread] end.sort_by { |l, s, t, u| s.downcase } @@ -65,8 +65,15 @@ protected @labels = [] counts.map do |label, string, total, unread| - if total == 0 && !LabelManager::RESERVED_LABELS.include?(label) - Redwood::log "no hits for label #{label}, deleting" + ## if we've done a search and there are no messages for this label, we can delete it from the + ## list. BUT if it's a brand-new label, the user may not have sync'ed it to the index yet, so + ## don't delete it in this case. + ## + ## this is all a hack. what should happen is: + ## TODO make the labelmanager responsible for label counts + ## and then it can listen to labeled and unlabeled events, etc. + if total == 0 && !LabelManager::RESERVED_LABELS.include?(label) && !LabelManager.new_label?(label) + debug "no hits for label #{label}, deleting" LabelManager.delete label next end