1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
5 defmodule Pleroma.Web.MastoFEView do
9 alias Pleroma.Web.MastodonAPI.AccountView
10 alias Pleroma.Web.MastodonAPI.CustomEmojiView
42 def initial_state(token, user, custom_emojis) do
43 limit = Config.get([:instance, :limit])
47 streaming_api_base_url: Pleroma.Web.Endpoint.websocket_url(),
50 domain: Pleroma.Web.Endpoint.host(),
53 unfollow_modal: false,
57 display_sensitive_media: false,
59 max_toot_chars: limit,
60 mascot: User.get_mascot(user)["url"]
62 poll_limits: Config.get([:instance, :poll_limits]),
64 delete_others_notice: present?(user.info.is_moderator),
65 admin: present?(user.info.is_admin)
69 default_privacy: user.info.default_scope,
70 default_sensitive: false,
71 allow_content_types: Config.get([:instance, :allowed_post_formats])
74 accept_content_types: [
89 settings: user.info.settings || @default_settings,
90 push_subscription: nil,
91 accounts: %{user.id => render(AccountView, "show.json", user: user, for: user)},
92 custom_emojis: render(CustomEmojiView, "index.json", custom_emojis: custom_emojis),
99 defp present?(nil), do: false
100 defp present?(false), do: false
101 defp present?(_), do: true