about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/api/v1/statuses_controller.rb2
-rw-r--r--app/services/post_status_service.rb10
-rw-r--r--app/views/api/v1/statuses/_show.rabl2
-rw-r--r--db/migrate/20161123093447_add_sensitive_to_statuses.rb5
-rw-r--r--db/schema.rb11
5 files changed, 19 insertions, 11 deletions
diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb
index b2b432a6b..2e0399301 100644
--- a/app/controllers/api/v1/statuses_controller.rb
+++ b/app/controllers/api/v1/statuses_controller.rb
@@ -50,7 +50,7 @@ class Api::V1::StatusesController < ApiController
   end
 
   def create
-    @status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), params[:media_ids])
+    @status = PostStatusService.new.call(current_user.account, params[:status], params[:in_reply_to_id].blank? ? nil : Status.find(params[:in_reply_to_id]), media_ids: params[:media_ids], sensitive: params[:sensitive])
     render action: :show
   end
 
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index cf824ff99..76366e984 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -5,11 +5,13 @@ class PostStatusService < BaseService
   # @param [Account] account Account from which to post
   # @param [String] text Message
   # @param [Status] in_reply_to Optional status to reply to
-  # @param [Enumerable] media_ids Optional array of media IDs to attach
+  # @param [Hash] options
+  # @option [Boolean] :sensitive
+  # @option [Enumerable] :media_ids Optional array of media IDs to attach
   # @return [Status]
-  def call(account, text, in_reply_to = nil, media_ids = nil)
-    status = account.statuses.create!(text: text, thread: in_reply_to)
-    attach_media(status, media_ids)
+  def call(account, text, in_reply_to = nil, options = {})
+    status = account.statuses.create!(text: text, thread: in_reply_to, sensitive: options[:sensitive])
+    attach_media(status, options[:media_ids])
     process_mentions_service.call(status)
     process_hashtags_service.call(status)
     DistributionWorker.perform_async(status.id)
diff --git a/app/views/api/v1/statuses/_show.rabl b/app/views/api/v1/statuses/_show.rabl
index 90457eca9..579c47b26 100644
--- a/app/views/api/v1/statuses/_show.rabl
+++ b/app/views/api/v1/statuses/_show.rabl
@@ -1,4 +1,4 @@
-attributes :id, :created_at, :in_reply_to_id
+attributes :id, :created_at, :in_reply_to_id, :sensitive
 
 node(:uri)              { |status| TagManager.instance.uri_for(status) }
 node(:content)          { |status| Formatter.instance.format(status) }
diff --git a/db/migrate/20161123093447_add_sensitive_to_statuses.rb b/db/migrate/20161123093447_add_sensitive_to_statuses.rb
new file mode 100644
index 000000000..109f761ed
--- /dev/null
+++ b/db/migrate/20161123093447_add_sensitive_to_statuses.rb
@@ -0,0 +1,5 @@
+class AddSensitiveToStatuses < ActiveRecord::Migration[5.0]
+  def change
+    add_column :statuses, :sensitive, :boolean, default: false
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 42e4e081c..356badf8e 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 20161122163057) do
+ActiveRecord::Schema.define(version: 20161123093447) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "plpgsql"
@@ -155,13 +155,14 @@ ActiveRecord::Schema.define(version: 20161122163057) do
 
   create_table "statuses", force: :cascade do |t|
     t.string   "uri"
-    t.integer  "account_id",                  null: false
-    t.text     "text",           default: "", null: false
-    t.datetime "created_at",                  null: false
-    t.datetime "updated_at",                  null: false
+    t.integer  "account_id",                     null: false
+    t.text     "text",           default: "",    null: false
+    t.datetime "created_at",                     null: false
+    t.datetime "updated_at",                     null: false
     t.integer  "in_reply_to_id"
     t.integer  "reblog_of_id"
     t.string   "url"
+    t.boolean  "sensitive",      default: false
     t.index ["account_id"], name: "index_statuses_on_account_id", using: :btree
     t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id", using: :btree
     t.index ["reblog_of_id"], name: "index_statuses_on_reblog_of_id", using: :btree