mirror of https://github.com/zulip/zulip.git
Move some code from notify_subscriptions_removed().
There are two reasons for this change. First, we want to be consistent with notify_subscriptions_added(), which doesn't handle "peer" events. Second, we want to fix this code in a subsequent commit not to do one user at a time, which is inefficient.
This commit is contained in:
parent
dda4c61f2a
commit
d706bfa69f
|
@ -1492,24 +1492,6 @@ def notify_subscriptions_removed(user_profile, streams, no_log=False):
|
||||||
subscriptions=payload)
|
subscriptions=payload)
|
||||||
send_event(event, [user_profile.id])
|
send_event(event, [user_profile.id])
|
||||||
|
|
||||||
# As with a subscription add, send a 'peer subscription' notice to other
|
|
||||||
# subscribers so they know the user unsubscribed.
|
|
||||||
# FIXME: This code was mostly a copy-paste from notify_subscriptions_added.
|
|
||||||
# We have since streamlined how we do notifications for adds, and
|
|
||||||
# we should do the same for removes.
|
|
||||||
notifications_for = get_subscribers_to_streams(streams, requesting_user=user_profile)
|
|
||||||
|
|
||||||
for event_recipient, notifications in six.iteritems(notifications_for):
|
|
||||||
# Don't send a peer subscription notice to yourself.
|
|
||||||
if event_recipient == user_profile:
|
|
||||||
continue
|
|
||||||
|
|
||||||
stream_names = [stream.name for stream in notifications]
|
|
||||||
event = dict(type="subscription", op="peer_remove",
|
|
||||||
subscriptions=stream_names,
|
|
||||||
user_email=user_profile.email)
|
|
||||||
send_event(event, [event_recipient.id])
|
|
||||||
|
|
||||||
def bulk_remove_subscriptions(users, streams):
|
def bulk_remove_subscriptions(users, streams):
|
||||||
# type: (Iterable[UserProfile], Iterable[Stream]) -> Tuple[List[Tuple[UserProfile, Stream]], List[Tuple[UserProfile, Stream]]]
|
# type: (Iterable[UserProfile], Iterable[Stream]) -> Tuple[List[Tuple[UserProfile, Stream]], List[Tuple[UserProfile, Stream]]]
|
||||||
recipients_map = bulk_get_recipients(Recipient.STREAM,
|
recipients_map = bulk_get_recipients(Recipient.STREAM,
|
||||||
|
@ -1560,6 +1542,21 @@ def bulk_remove_subscriptions(users, streams):
|
||||||
continue
|
continue
|
||||||
notify_subscriptions_removed(user_profile, streams_by_user[user_profile.id])
|
notify_subscriptions_removed(user_profile, streams_by_user[user_profile.id])
|
||||||
|
|
||||||
|
notifications_for = get_subscribers_to_streams(streams, requesting_user=user_profile)
|
||||||
|
|
||||||
|
for event_recipient, notifications in six.iteritems(notifications_for):
|
||||||
|
# Don't send a peer subscription notice to yourself.
|
||||||
|
if event_recipient == user_profile:
|
||||||
|
continue
|
||||||
|
|
||||||
|
stream_names = [stream.name for stream in notifications]
|
||||||
|
peer_event = dict(
|
||||||
|
type="subscription",
|
||||||
|
op="peer_remove",
|
||||||
|
subscriptions=stream_names,
|
||||||
|
user_email=user_profile.email)
|
||||||
|
send_event(peer_event, [event_recipient.id])
|
||||||
|
|
||||||
return ([(sub.user_profile, stream) for (sub, stream) in subs_to_deactivate],
|
return ([(sub.user_profile, stream) for (sub, stream) in subs_to_deactivate],
|
||||||
not_subscribed)
|
not_subscribed)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue