diff --git a/images/trash.png b/images/trash.png new file mode 100644 index 0000000000..0d83bb9685 Binary files /dev/null and b/images/trash.png differ diff --git a/src/syng_im/handlers.cljs b/src/syng_im/handlers.cljs index a30f0bc35a..882653c19f 100644 --- a/src/syng_im/handlers.cljs +++ b/src/syng_im/handlers.cljs @@ -136,6 +136,14 @@ :content (str (or inviter-name from) " invited " (or invitee-name identity)) :content-type text-content-type}))) +(defn participant-removed-from-group-msg [chat-id identity from msg-id] + (let [remover-name (:name (contacts/contact-by-identity from)) + removed-name (:name (contacts/contact-by-identity identity))] + (save-message chat-id {:from "system" + :msg-id msg-id + :content (str (or remover-name from) " removed " (or removed-name identity)) + :content-type text-content-type}))) + (defn removed-participant-msg [chat-id identity] (let [contact-name (:name (contacts/contact-by-identity identity))] (save-message chat-id {:from "system" @@ -149,6 +157,13 @@ (joined-chat-msg group-id from ack-msg-id) (signal-chat-updated db group-id))) +(register-handler :participant-removed-from-group + (fn [db [action from group-id identity msg-id]] + (log/debug action msg-id from group-id identity) + (chat-remove-participants group-id [identity]) + (participant-removed-from-group-msg group-id identity from msg-id) + (signal-chat-updated db group-id))) + (register-handler :participant-invited-to-group (fn [db [action from group-id identity msg-id]] (log/debug action msg-id from group-id identity) diff --git a/src/syng_im/protocol/protocol_handler.cljs b/src/syng_im/protocol/protocol_handler.cljs index 24f8a564af..2eacd6f4a7 100644 --- a/src/syng_im/protocol/protocol_handler.cljs +++ b/src/syng_im/protocol/protocol_handler.cljs @@ -34,9 +34,8 @@ (dispatch [:group-chat-invite-acked from group-id ack-msg-id])) :group-new-participant (let [{:keys [group-id identity from msg-id]} event] (dispatch [:participant-invited-to-group from group-id identity msg-id])) - ;:group-removed-participant (let [{:keys [group-id identity from]} event] - ; (add-to-chat "group-chat" ":" (str (shorten from) " removed " (shorten identity) " from group chat")) - ; (remove-identity-from-group-list identity)) + :group-removed-participant (let [{:keys [group-id identity from msg-id]} event] + (dispatch [:participant-removed-from-group from group-id identity msg-id])) ;:removed-from-group (let [{:keys [group-id from]} event] ; (add-to-chat "group-chat" ":" (str (shorten from) " removed you from group chat"))) ;:participant-left-group (let [{:keys [group-id from]} event]