Provide name when pushing new roster item in shared roster group (#3427)

This commit is contained in:
Badlop 2020-11-19 17:04:07 +01:00
parent 9e1f3862cb
commit 3581d90d9d
1 changed files with 8 additions and 4 deletions

View File

@ -755,7 +755,8 @@ push_members_to_user(LUser, LServer, Group, Host,
GroupLabel = proplists:get_value(label, GroupOpts, Group), %++ GroupLabel = proplists:get_value(label, GroupOpts, Group), %++
Members = get_group_users(Host, Group), Members = get_group_users(Host, Group),
lists:foreach(fun ({U, S}) -> lists:foreach(fun ({U, S}) ->
push_roster_item(LUser, LServer, U, S, GroupLabel, N = get_rosteritem_name(U, S),
push_roster_item(LUser, LServer, U, S, N, GroupLabel,
Subscription) Subscription)
end, end,
Members). Members).
@ -775,6 +776,7 @@ remove_user(User, Server) ->
push_user_to_members(User, Server, Subscription) -> push_user_to_members(User, Server, Subscription) ->
LUser = jid:nodeprep(User), LUser = jid:nodeprep(User),
LServer = jid:nameprep(Server), LServer = jid:nameprep(Server),
RosterName = get_rosteritem_name(LUser, LServer),
GroupsOpts = groups_with_opts(LServer), GroupsOpts = groups_with_opts(LServer),
SpecialGroups = SpecialGroups =
get_special_displayed_groups(GroupsOpts), get_special_displayed_groups(GroupsOpts),
@ -790,6 +792,7 @@ push_user_to_members(User, Server, Subscription) ->
lists:foreach(fun ({U, S}) -> lists:foreach(fun ({U, S}) ->
push_roster_item(U, S, LUser, push_roster_item(U, S, LUser,
LServer, LServer,
RosterName,
GroupLabel, GroupLabel,
Subscription) Subscription)
end, end,
@ -806,13 +809,14 @@ push_user_to_displayed(LUser, LServer, Group, Host, Subscription, DisplayedToGro
push_user_to_group(LUser, LServer, Group, Host, push_user_to_group(LUser, LServer, Group, Host,
GroupLabel, Subscription) -> GroupLabel, Subscription) ->
RosterName = get_rosteritem_name(LUser, LServer),
lists:foreach(fun ({U, S}) lists:foreach(fun ({U, S})
when (U == LUser) and (S == LServer) -> when (U == LUser) and (S == LServer) ->
ok; ok;
({U, S}) -> ({U, S}) ->
case lists:member(S, ejabberd_option:hosts()) of case lists:member(S, ejabberd_option:hosts()) of
true -> true ->
push_roster_item(U, S, LUser, LServer, GroupLabel, push_roster_item(U, S, LUser, LServer, RosterName, GroupLabel,
Subscription); Subscription);
_ -> _ ->
ok ok
@ -836,12 +840,12 @@ push_item(User, Server, Item) ->
Item#roster{subscription = none}, Item#roster{subscription = none},
Item). Item).
push_roster_item(User, Server, ContactU, ContactS, push_roster_item(User, Server, ContactU, ContactS, ContactN,
GroupLabel, Subscription) -> GroupLabel, Subscription) ->
Item = #roster{usj = Item = #roster{usj =
{User, Server, {ContactU, ContactS, <<"">>}}, {User, Server, {ContactU, ContactS, <<"">>}},
us = {User, Server}, jid = {ContactU, ContactS, <<"">>}, us = {User, Server}, jid = {ContactU, ContactS, <<"">>},
name = <<"">>, subscription = Subscription, ask = none, name = ContactN, subscription = Subscription, ask = none,
groups = [GroupLabel]}, groups = [GroupLabel]},
push_item(User, Server, Item). push_item(User, Server, Item).