plugins/trello_plugin.rb in ladder_drive-0.6.5 vs plugins/trello_plugin.rb in ladder_drive-0.6.6

- old
+ new

@@ -100,10 +100,15 @@ Thread.start { thread_proc } end + def label_in_board_with_color board, color + l = board.labels.find{|l| l.name == color} + l ||= Trello::Label.create board_id:board.id, name:color, color:color + end + def thread_proc while arg = @worker_queue.pop begin event = arg[:event] @@ -112,19 +117,26 @@ card_name = event[:card_name].dup || "" card_name.gsub!(/__value__/, arg[:value] || "") if arg[:value].is_a? String next if (card_name || "").empty? - list_name = event[:list_name] - next unless list_name - list = board.lists.find{|l| l.name == list_name} - next unless list + card = board.cards.find{|c| c.name == card_name} + card ||= Trello::Card.create name:card_name - card = board.lists.map{|l| l.cards.map{|c| c}}.flatten.find{|c| c.name == card_name} - if card - card.move_to_list list - else - card = Trello::Card.create name:card_name, list_id:list.id + # move card into a list + list = board.lists.find{|l| l.name == event[:list_name]} if event[:list_name] + card.move_to_list list if list + + # set color label + if event[:color] + if event[:color][:add] + label = label_in_board_with_color board, event[:color][:add] + card.add_label label + end + if event[:color][:remove] + label = label_in_board_with_color board, event[:color][:remove] + card.remove_label label + end end rescue => e # TODO: Resend if it fails. p e