FEATURE: Topic slow mode. (#10904)

Adds a new slow mode for topics that are heating up. Users will have to wait for a period of time before being able to post again.

We store this interval inside the topics table and track the last time a user posted using the last_posted_at datetime in the TopicUser relation.
This commit is contained in:
Roman Rizzi
2020-10-16 16:24:38 -03:00
committed by GitHub
parent 4669e60ce5
commit 21c53ed249
27 changed files with 460 additions and 6 deletions

View File

@ -28,7 +28,8 @@ class TopicsController < ApplicationController
:convert_topic,
:bookmark,
:publish,
:reset_bump_date
:reset_bump_date,
:set_slow_mode
]
before_action :consider_user_for_promotion, only: :show
@ -932,6 +933,15 @@ class TopicsController < ApplicationController
render body: nil
end
def set_slow_mode
topic = Topic.find(params[:topic_id])
guardian.ensure_can_moderate!(topic)
topic.update!(slow_mode_seconds: params[:seconds])
head :ok
end
private
def topic_params