%% API
-export([add_delay_info/3, add_delay_info/4,
- unwrap_carbon/1, is_standalone_chat_state/1,
+ unwrap_carbon/1, unwrap_mucsub_message/1, is_standalone_chat_state/1,
tolower/1, term_to_base64/1, base64_to_term/1, ip_to_list/1,
hex_to_bin/1, hex_to_base64/1, url_encode/1, expand_keyword/3,
atom_to_binary/1, binary_to_atom/1, tuple_to_binary/1,
end;
unwrap_carbon(Stanza) -> Stanza.
+-spec unwrap_mucsub_message(xmpp_element()) -> message() | false.
+unwrap_mucsub_message(#message{} = OuterMsg) ->
+ case xmpp:get_subtag(OuterMsg, #ps_event{}) of
+ #ps_event{
+ items = #ps_items{
+ node = Node,
+ items = [
+ #ps_item{
+ sub_els = [#message{} = InnerMsg]} | _]}}
+ when Node == ?NS_MUCSUB_NODES_MESSAGES;
+ Node == ?NS_MUCSUB_NODES_SUBJECT ->
+ InnerMsg;
+ _ ->
+ false
+ end;
+unwrap_mucsub_message(_Packet) ->
+ false.
+
-spec is_standalone_chat_state(stanza()) -> boolean().
is_standalone_chat_state(Stanza) ->
case unwrap_carbon(Stanza) of
true ->
true;
_ ->
- case mod_muc_room:unwrap_mucsub_message(Pkt) of
+ case misc:unwrap_mucsub_message(Pkt) of
#message{type = groupchat} = Msg ->
should_archive(Msg#message{type = chat}, LServer);
#message{} = Msg ->
is_occupant_or_admin/2,
route/2,
expand_opts/1,
- config_fields/0,
- unwrap_mucsub_message/1]).
+ config_fields/0]).
%% gen_fsm callbacks
-export([init/1,
id = p1_rand:get_string(),
sub_els = [El]}]}}]}.
--spec unwrap_mucsub_message(xmpp_element()) -> message() | false.
-unwrap_mucsub_message(#message{} = Packet) ->
- case xmpp:get_subtag(Packet, #ps_event{}) of
- #ps_event{
- items = #ps_items{
- node = Node,
- items = [
- #ps_item{
- sub_els = [#message{} = Message]} | _]}}
- when Node == ?NS_MUCSUB_NODES_MESSAGES;
- Node == ?NS_MUCSUB_NODES_SUBJECT ->
- Message;
- _ ->
- false
- end;
-unwrap_mucsub_message(_Packet) ->
- false.
-
%% -spec send_multiple(jid(), binary(), [#user{}], stanza()) -> ok.
%% send_multiple(From, Server, Users, Packet) ->
%% JIDs = [ User#user.jid || {_, User} <- ?DICT:to_list(Users)],