diff --git a/frontend_tests/node_tests/stream_data.js b/frontend_tests/node_tests/stream_data.js index 91a1147481..d08c276797 100644 --- a/frontend_tests/node_tests/stream_data.js +++ b/frontend_tests/node_tests/stream_data.js @@ -119,6 +119,9 @@ test("basics", () => { "invite-only-public-history", ); assert.equal(stream_data.get_stream_privacy_policy(web_public_stream.stream_id), "web-public"); + assert.ok(stream_data.is_web_public_by_stream_name(web_public_stream.name)); + assert.ok(!stream_data.is_web_public_by_stream_name(social.name)); + assert.ok(!stream_data.is_web_public_by_stream_name("unknown")); assert.ok(stream_data.get_invite_only("social")); assert.ok(!stream_data.get_invite_only("unknown")); diff --git a/static/js/stream_bar.js b/static/js/stream_bar.js index d65ee6b188..cc8200a764 100644 --- a/static/js/stream_bar.js +++ b/static/js/stream_bar.js @@ -4,14 +4,21 @@ import * as color_class from "./color_class"; import * as stream_data from "./stream_data"; function update_compose_stream_icon(stream_name) { - const icon = $("#compose-lock-icon"); const streamfield = $("#stream_message_recipient_stream"); + const globe_icon = $("#compose-globe-icon"); + const lock_icon = $("#compose-lock-icon"); + + // Reset state + globe_icon.hide(); + lock_icon.hide(); + streamfield.removeClass("lock-padding"); + if (stream_data.get_invite_only(stream_name)) { - icon.show(); + lock_icon.show(); + streamfield.addClass("lock-padding"); + } else if (stream_data.is_web_public_by_stream_name(stream_name)) { + globe_icon.show(); streamfield.addClass("lock-padding"); - } else { - icon.hide(); - streamfield.removeClass("lock-padding"); } } diff --git a/static/js/stream_data.js b/static/js/stream_data.js index f4978bc385..b96e6e6784 100644 --- a/static/js/stream_data.js +++ b/static/js/stream_data.js @@ -581,6 +581,14 @@ export function get_invite_only(stream_name) { return sub.invite_only; } +export function is_web_public_by_stream_name(stream_name) { + const sub = get_sub(stream_name); + if (sub === undefined) { + return false; + } + return sub.is_web_public; +} + export function set_realm_default_streams(realm_default_streams) { default_stream_ids.clear(); diff --git a/static/styles/compose.css b/static/styles/compose.css index b1de2de6db..7cfa01d6d2 100644 --- a/static/styles/compose.css +++ b/static/styles/compose.css @@ -128,12 +128,19 @@ font-weight: 600; } - #compose-lock-icon { + #compose-lock-icon, + #compose-globe-icon { position: relative; left: 5px; width: 0; } + #compose-globe-icon { + top: 1px; + left: 4.5px; + padding-right: 2px; + } + .message_header { background: none; background-color: hsl(0, 0%, 92%); diff --git a/static/templates/compose.hbs b/static/templates/compose.hbs index 0a34c82858..39dcb24878 100644 --- a/static/templates/compose.hbs +++ b/static/templates/compose.hbs @@ -64,6 +64,9 @@ + + +