Browse Source

Add a preferences API so apps can share basic behaviours (#10109)

pull/4/head
Eugen Rochko 5 years ago
committed by GitHub
parent
commit
d94e21f933
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 43 additions and 0 deletions
  1. +12
    -0
      app/controllers/api/v1/preferences_controller.rb
  2. +30
    -0
      app/serializers/rest/preferences_serializer.rb
  3. +1
    -0
      config/routes.rb

+ 12
- 0
app/controllers/api/v1/preferences_controller.rb View File

@ -0,0 +1,12 @@
# frozen_string_literal: true
class Api::V1::PreferencesController < Api::BaseController
before_action -> { doorkeeper_authorize! :read, :'read:accounts' }
before_action :require_user!
respond_to :json
def index
render json: current_account, serializer: REST::PreferencesSerializer
end
end

+ 30
- 0
app/serializers/rest/preferences_serializer.rb View File

@ -0,0 +1,30 @@
# frozen_string_literal: true
class REST::PreferencesSerializer < ActiveModel::Serializer
attribute :posting_default_privacy, key: 'posting:default:visibility'
attribute :posting_default_sensitive, key: 'posting:default:sensitive'
attribute :posting_default_language, key: 'posting:default:language'
attribute :reading_default_sensitive_media, key: 'reading:expand:media'
attribute :reading_default_sensitive_text, key: 'reading:expand:spoilers'
def posting_default_privacy
object.user.setting_default_privacy
end
def posting_default_sensitive
object.user.setting_default_sensitive
end
def posting_default_language
object.user.setting_default_language.presence
end
def reading_default_sensitive_media
object.user.setting_display_media
end
def reading_default_sensitive_text
object.user.setting_expand_spoilers
end
end

+ 1
- 0
config/routes.rb View File

@ -286,6 +286,7 @@ Rails.application.routes.draw do
resources :custom_emojis, only: [:index]
resources :suggestions, only: [:index, :destroy]
resources :scheduled_statuses, only: [:index, :show, :update, :destroy]
resources :preferences, only: [:index]
resources :conversations, only: [:index, :destroy] do
member do

Loading…
Cancel
Save