diff --git a/frontend_tests/node_tests/dispatch.js b/frontend_tests/node_tests/dispatch.js index 4286d0a356..0f19aa4c39 100644 --- a/frontend_tests/node_tests/dispatch.js +++ b/frontend_tests/node_tests/dispatch.js @@ -360,6 +360,7 @@ var event_fixtures = { name: 'devel', stream_id: 42, subscribers: ['alice@example.com', 'bob@example.com'], + email_address: 'devel+0138515295f4@zulipdev.com:9991', // etc. }, ], @@ -801,15 +802,21 @@ with_overrides(function (override) { }); var event = event_fixtures.subscription__add; - global.with_stub(function (stub) { - override('stream_data.get_sub_by_id', function (stream_id) { - return {stream_id: stream_id}; + global.with_stub(function (subscription_stub) { + global.with_stub(function (stream_email_stub) { + override('stream_data.get_sub_by_id', function (stream_id) { + return {stream_id: stream_id}; + }); + override('stream_events.mark_subscribed', subscription_stub.f); + override('stream_data.update_stream_email_address', stream_email_stub.f); + dispatch(event); + var args = subscription_stub.get_args('sub', 'subscribers'); + assert_same(args.sub.stream_id, event.subscriptions[0].stream_id); + assert_same(args.subscribers, event.subscriptions[0].subscribers); + args = stream_email_stub.get_args('sub', 'email_address'); + assert_same(args.email_address, event.subscriptions[0].email_address); + assert_same(args.sub.stream_id, event.subscriptions[0].stream_id); }); - override('stream_events.mark_subscribed', stub.f); - dispatch(event); - var args = stub.get_args('sub', 'subscribers'); - assert_same(args.sub.stream_id, event.subscriptions[0].stream_id); - assert_same(args.subscribers, event.subscriptions[0].subscribers); }); event = event_fixtures.subscription__peer_add; diff --git a/frontend_tests/node_tests/stream_data.js b/frontend_tests/node_tests/stream_data.js index b5ebf3fc58..fbdbdbf71b 100644 --- a/frontend_tests/node_tests/stream_data.js +++ b/frontend_tests/node_tests/stream_data.js @@ -192,6 +192,9 @@ zrequire('marked', 'third/marked/lib/marked'); sub = stream_data.get_sub('Rome'); stream_data.update_subscribers_count(sub); assert.equal(sub.subscriber_count, 1); + var sub_email = "Rome:214125235@zulipdev.com:9991"; + stream_data.update_stream_email_address(sub, sub_email); + assert.equal(sub.email_address, sub_email); // verify that adding an already-added subscriber is a noop stream_data.add_subscriber('Rome', brutus.user_id); diff --git a/static/js/server_events_dispatch.js b/static/js/server_events_dispatch.js index 4b3479677e..f9f976eb9e 100644 --- a/static/js/server_events_dispatch.js +++ b/static/js/server_events_dispatch.js @@ -252,6 +252,7 @@ exports.dispatch_normal_event = function dispatch_normal_event(event) { _.each(event.subscriptions, function (rec) { var sub = stream_data.get_sub_by_id(rec.stream_id); if (sub) { + stream_data.update_stream_email_address(sub, rec.email_address); stream_events.mark_subscribed(sub, rec.subscribers); } else { blueslip.error('Subscribing to unknown stream with ID ' + rec.stream_id); diff --git a/static/js/stream_data.js b/static/js/stream_data.js index 91d7e2ab5c..8e3ea5627b 100644 --- a/static/js/stream_data.js +++ b/static/js/stream_data.js @@ -174,6 +174,10 @@ exports.update_subscribers_count = function (sub) { sub.subscriber_count = count; }; +exports.update_stream_email_address = function (sub, email) { + sub.email_address = email; +}; + exports.get_subscriber_count = function (stream_name) { var sub = exports.get_sub_by_name(stream_name); if (sub === undefined) { diff --git a/static/js/stream_edit.js b/static/js/stream_edit.js index f267c0128e..e6bf1be6cf 100644 --- a/static/js/stream_edit.js +++ b/static/js/stream_edit.js @@ -49,6 +49,11 @@ exports.hide_sub_settings = function (sub) { exports.show_sub_settings = function (sub) { var $settings = $(".subscription_settings[data-stream-id='" + sub.stream_id + "']"); + if ($settings.find(".email-address").val().length === 0) { + // Rerender stream email address, if not. + $settings.find(".email-address").html(sub.email_address); + $settings.find(".stream-email-box").show(); + } $settings.find(".regular_subscription_settings").addClass('in'); }; diff --git a/static/templates/subscription_settings.handlebars b/static/templates/subscription_settings.handlebars index 0ffddb80a5..9689e3ac85 100644 --- a/static/templates/subscription_settings.handlebars +++ b/static/templates/subscription_settings.handlebars @@ -96,14 +96,12 @@ - {{#if email_address}} -