index = NewIndex}}
end.
-get_subscribed_rooms(_ServerHost, Host1, From) ->
- Rooms = get_vh_rooms(Host1),
+get_subscribed_rooms(ServerHost, Host, From) ->
+ Rooms = get_rooms(ServerHost, Host),
BareFrom = jid:remove_resource(From),
lists:flatmap(
- fun(#muc_online_room{name_host = {Name, Host}, pid = Pid}) ->
- case gen_fsm:sync_send_all_state_event(Pid, {is_subscribed, BareFrom}) of
+ fun(#muc_room{name_host = {Name, _}, opts = Opts}) ->
+ Subscribers = proplists:get_value(subscribers, Opts, []),
+ case lists:keymember(BareFrom, 1, Subscribers) of
true -> [jid:make(Name, Host, <<>>)];
false -> []
end;
{error, Err} ->
{reply, {error, get_error_text(Err)}, StateName, StateData}
end;
-handle_sync_event({is_subscribed, From}, _From, StateName, StateData) ->
- Subscribers = (?DICT):fold(
- fun(_LJID, #user{is_subscriber = true} = User, Acc) ->
- [User#user.jid | Acc];
- (_, _, Acc) ->
- Acc
- end, [], StateData#state.users),
- {reply, lists:member(From, Subscribers), StateName, StateData};
handle_sync_event(_Event, _From, StateName,
StateData) ->
Reply = ok, {reply, Reply, StateName, StateData}.