diff --git a/frontend_tests/node_tests/user_events.js b/frontend_tests/node_tests/user_events.js index bcac38aa11..5b821a7df9 100644 --- a/frontend_tests/node_tests/user_events.js +++ b/frontend_tests/node_tests/user_events.js @@ -90,12 +90,20 @@ run_test("updates", () => { person = people.get_by_email(isaac.email); assert(!person.is_guest); + user_events.update_person({ + user_id: isaac.user_id, + role: settings_config.user_role_values.moderator.code, + }); + person = people.get_by_email(isaac.email); + assert.equal(person.is_moderator, true); + user_events.update_person({ user_id: isaac.user_id, role: settings_config.user_role_values.admin.code, }); person = people.get_by_email(isaac.email); assert.equal(person.full_name, "Isaac Newton"); + assert.equal(person.is_moderator, false); assert.equal(person.is_admin, true); user_events.update_person({ diff --git a/static/js/user_events.js b/static/js/user_events.js index 0352d5fb51..c2d5cbbb1d 100644 --- a/static/js/user_events.js +++ b/static/js/user_events.js @@ -70,6 +70,7 @@ export const update_person = function update(person) { person_obj.is_admin = person.role === settings_config.user_role_values.admin.code || person_obj.is_owner; person_obj.is_guest = person.role === settings_config.user_role_values.guest.code; + person_obj.is_moderator = person.role === settings_config.user_role_values.moderator.code; settings_users.update_user_data(person.user_id, person); if (people.is_my_user_id(person.user_id) && page_params.is_owner !== person_obj.is_owner) { @@ -85,6 +86,13 @@ export const update_person = function update(person) { settings_profile_fields.maybe_disable_widgets(); settings_streams.maybe_disable_widgets(); } + + if ( + people.is_my_user_id(person.user_id) && + page_params.is_moderator !== person_obj.is_moderator + ) { + page_params.is_moderator = person_obj.is_moderator; + } } if (Object.prototype.hasOwnProperty.call(person, "avatar_url")) {