| ... | ... |
@@ -10,6 +10,7 @@ class Xmpp.Views.Contacts.ContactView extends Backbone.View |
| 10 | 10 |
'click .kick': 'kickFromMultiChat' |
| 11 | 11 |
'click .multichat': 'newMultiChat' |
| 12 | 12 |
'click .make-owner': 'switchOwner' |
| 13 |
+ 'click .remove': 'removeContact' |
|
| 13 | 14 |
click: 'startChat' |
| 14 | 15 |
mouseover: 'showIcons' |
| 15 | 16 |
mouseleave: 'hideIcons' |
| ... | ... |
@@ -96,6 +97,12 @@ class Xmpp.Views.Contacts.ContactView extends Backbone.View |
| 96 | 96 |
|
| 97 | 97 |
App.Com.switchMultiChatOwner(App.Models.me.get('jid'), @model.get('jid'), multichat.get('chatId'))
|
| 98 | 98 |
|
| 99 |
+ removeContact: (e) -> |
|
| 100 |
+ e.stopPropagation() |
|
| 101 |
+ App.debug 'remove from roster' |
|
| 102 |
+ App.Com.removeContactRemote(@model.get('jid'))
|
|
| 103 |
+ Backbone.Events.trigger('removeContact', @model)
|
|
| 104 |
+ |
|
| 99 | 105 |
openChatById: (chatId) -> |
| 100 | 106 |
App.Collections.chats.findById(chatId) |
| 101 | 107 |
|
| ... | ... |
@@ -122,16 +122,24 @@ class WsRosterController < WsController |
| 122 | 122 |
jid = message[:jid] |
| 123 | 123 |
client_jid = message[:client] |
| 124 | 124 |
|
| 125 |
- found_roster_item = nil |
|
| 125 |
+ found_roster_items = [] |
|
| 126 | 126 |
connection_store[:rosters].each do |roster| |
| 127 | 127 |
roster_item = roster.find(jid) |
| 128 |
- if roster_item.first[1] && connection_store[:link_roster_client][roster].jid.strip.to_s == client_jid |
|
| 129 |
- found_roster_item = roster_item.first[1] |
|
| 130 |
- break |
|
| 128 |
+ contact_obj = roster_item.first[1] |
|
| 129 |
+ |
|
| 130 |
+ if contact_obj |
|
| 131 |
+ if client_jid && connection_store[:link_roster_client][roster].jid.strip.to_s == client_jid |
|
| 132 |
+ found_roster_items = [ contact_obj ] |
|
| 133 |
+ break |
|
| 134 |
+ else |
|
| 135 |
+ found_roster_items.push(contact_obj) |
|
| 136 |
+ end |
|
| 131 | 137 |
end |
| 132 | 138 |
end |
| 133 | 139 |
|
| 134 |
- found_roster_item && found_roster_item.remove() |
|
| 140 |
+ found_roster_items.each do |contact| |
|
| 141 |
+ contact.remove() |
|
| 142 |
+ end |
|
| 135 | 143 |
end |
| 136 | 144 |
|
| 137 | 145 |
## |