about summary refs log tree commit diff
path: root/app/serializers/initial_state_serializer.rb
diff options
context:
space:
mode:
authorEugen Rochko <eugen@zeonfederated.com>2017-07-08 14:51:05 +0200
committerGitHub <noreply@github.com>2017-07-08 14:51:05 +0200
commit864e3f8d9ca652e10a28bddbb0d0df629d2849d4 (patch)
tree3fb2f9c97fca49cc467622ab532252f8044146f6 /app/serializers/initial_state_serializer.rb
parent102466ac5842b20f32a9c5e2fa3f35414c34574b (diff)
Replace OEmbed and initial state Rabl templates with serializers (#4110)
* Replace OEmbed Rabl template with serializer

* Replace initial state rabl with serializer
Diffstat (limited to 'app/serializers/initial_state_serializer.rb')
-rw-r--r--app/serializers/initial_state_serializer.rb39
1 files changed, 39 insertions, 0 deletions
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
new file mode 100644
index 000000000..84f9e23a6
--- /dev/null
+++ b/app/serializers/initial_state_serializer.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+class InitialStateSerializer < ActiveModel::Serializer
+  attributes :meta, :compose, :accounts,
+             :media_attachments, :settings
+
+  def meta
+    {
+      streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
+      access_token: object.token,
+      locale: I18n.locale,
+      domain: Rails.configuration.x.local_domain,
+      me: object.current_account.id,
+      admin: object.admin&.id,
+      boost_modal: object.current_account.user.setting_boost_modal,
+      delete_modal: object.current_account.user.setting_delete_modal,
+      auto_play_gif: object.current_account.user.setting_auto_play_gif,
+      system_font_ui: object.current_account.user.setting_system_font_ui,
+    }
+  end
+
+  def compose
+    {
+      me: object.current_account.id,
+      default_privacy: object.current_account.user.setting_default_privacy,
+    }
+  end
+
+  def accounts
+    store = {}
+    store[object.current_account.id] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer)
+    store[object.admin.id]           = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) unless object.admin.nil?
+    store
+  end
+
+  def media_attachments
+    { accept_content_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES }
+  end
+end