From b6e9871b4b48d2e5b176accf921014f7b447b721 Mon Sep 17 00:00:00 2001 From: Guo Xiang Tan <tgx_world@hotmail.com> Date: Fri, 31 Mar 2017 15:02:36 +0800 Subject: [PATCH] Update `Topic#closed` client side when closing/opening a topic temporarily. --- .../discourse/controllers/edit-topic-status-update.js.es6 | 1 + app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 | 1 - app/controllers/topics_controller.rb | 3 ++- spec/integration/managing_topic_status_spec.rb | 2 ++ 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/edit-topic-status-update.js.es6 b/app/assets/javascripts/discourse/controllers/edit-topic-status-update.js.es6 index b07fcd2f3ef..27c3a13c164 100644 --- a/app/assets/javascripts/discourse/controllers/edit-topic-status-update.js.es6 +++ b/app/assets/javascripts/discourse/controllers/edit-topic-status-update.js.es6 @@ -71,6 +71,7 @@ export default Ember.Controller.extend(ModalFunctionality, { this.send('closeModal'); this.set('topicStatusUpdate.execute_at', result.execute_at); this.set('topicStatusUpdate.duration', result.duration); + this.set('model.closed', result.closed); } else { this.set('topicStatusUpdate', Ember.Object.create({})); this.set('selection', null); diff --git a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 index ca925d343db..6b927c05fcf 100644 --- a/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 +++ b/app/assets/javascripts/discourse/widgets/topic-timeline.js.es6 @@ -347,7 +347,6 @@ export default createWidget('topic-timeline', { result.push(h('div.title', elems)); } - if (!attrs.fullScreen && currentUser && currentUser.get('canManageTopic')) { result.push(h('div.timeline-controls', this.attach('topic-admin-menu-button', { topic }))); } diff --git a/app/controllers/topics_controller.rb b/app/controllers/topics_controller.rb index 257744a359a..42d76310f33 100644 --- a/app/controllers/topics_controller.rb +++ b/app/controllers/topics_controller.rb @@ -310,7 +310,8 @@ class TopicsController < ApplicationController render json: success_json.merge!({ execute_at: topic_status_update&.execute_at, duration: topic_status_update&.duration, - based_on_last_post: topic_status_update&.based_on_last_post + based_on_last_post: topic_status_update&.based_on_last_post, + closed: topic.closed }) else render_json_error(topic) diff --git a/spec/integration/managing_topic_status_spec.rb b/spec/integration/managing_topic_status_spec.rb index 4e59f9c3df7..a70f2141d0d 100644 --- a/spec/integration/managing_topic_status_spec.rb +++ b/spec/integration/managing_topic_status_spec.rb @@ -56,6 +56,7 @@ RSpec.describe "Managing a topic's status update", type: :request do .to be_within(1.seconds).of(DateTime.parse(topic_status_update.execute_at.to_s)) expect(json['duration']).to eq(topic_status_update.duration) + expect(json['closed']).to eq(topic.reload.closed) end it 'should be able to delete a topic status update' do @@ -72,6 +73,7 @@ RSpec.describe "Managing a topic's status update", type: :request do expect(json['execute_at']).to eq(nil) expect(json['duration']).to eq(nil) + expect(json['closed']).to eq(topic.closed) end describe 'invalid status type' do