about summary refs log tree commit diff
path: root/app/serializers
diff options
context:
space:
mode:
Diffstat (limited to 'app/serializers')
-rw-r--r--app/serializers/initial_state_serializer.rb39
-rw-r--r--app/serializers/oembed_serializer.rb56
2 files changed, 95 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
diff --git a/app/serializers/oembed_serializer.rb b/app/serializers/oembed_serializer.rb
new file mode 100644
index 000000000..78376d253
--- /dev/null
+++ b/app/serializers/oembed_serializer.rb
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+class OEmbedSerializer < ActiveModel::Serializer
+  include RoutingHelper
+  include ActionView::Helpers::TagHelper
+
+  attributes :type, :version, :title, :author_name,
+             :author_url, :provider_name, :provider_url,
+             :cache_age, :html, :width, :height
+
+  def type
+    'rich'
+  end
+
+  def version
+    '1.0'
+  end
+
+  def author_name
+    object.account.display_name.presence || object.account.username
+  end
+
+  def author_url
+    account_url(object.account)
+  end
+
+  def provider_name
+    Rails.configuration.x.local_domain
+  end
+
+  def provider_url
+    root_url
+  end
+
+  def cache_age
+    86_400
+  end
+
+  def html
+    tag :iframe,
+        src: embed_account_stream_entry_url(object.account, object),
+        style: 'width: 100%; overflow: hidden',
+        frameborder: '0',
+        scrolling: 'no',
+        width: width,
+        height: height
+  end
+
+  def width
+    instance_options[:width]
+  end
+
+  def height
+    instance_options[:height]
+  end
+end