logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

masto_fe_view.ex (2712B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Web.MastoFEView do
  5. use Pleroma.Web, :view
  6. alias Pleroma.Config
  7. alias Pleroma.User
  8. alias Pleroma.Web.MastodonAPI.AccountView
  9. alias Pleroma.Web.MastodonAPI.CustomEmojiView
  10. def initial_state(token, user, custom_emojis) do
  11. limit = Config.get([:instance, :limit])
  12. %{
  13. meta: %{
  14. streaming_api_base_url: Pleroma.Web.Endpoint.websocket_url(),
  15. access_token: token,
  16. locale: "en",
  17. domain: Pleroma.Web.Endpoint.host(),
  18. admin: "1",
  19. me: "#{user.id}",
  20. unfollow_modal: false,
  21. boost_modal: false,
  22. delete_modal: true,
  23. auto_play_gif: false,
  24. display_sensitive_media: false,
  25. reduce_motion: false,
  26. max_toot_chars: limit,
  27. mascot: User.get_mascot(user)["url"]
  28. },
  29. poll_limits: Config.get([:instance, :poll_limits]),
  30. rights: %{
  31. delete_others_notice: present?(user.is_moderator),
  32. admin: present?(user.is_admin)
  33. },
  34. compose: %{
  35. me: "#{user.id}",
  36. default_privacy: user.default_scope,
  37. default_sensitive: false,
  38. allow_content_types: Config.get([:instance, :allowed_post_formats])
  39. },
  40. media_attachments: %{
  41. accept_content_types: [
  42. ".jpg",
  43. ".jpeg",
  44. ".png",
  45. ".gif",
  46. ".webm",
  47. ".mp4",
  48. ".m4v",
  49. "image\/jpeg",
  50. "image\/png",
  51. "image\/gif",
  52. "video\/webm",
  53. "video\/mp4"
  54. ]
  55. },
  56. settings: user.mastofe_settings || %{},
  57. push_subscription: nil,
  58. accounts: %{user.id => render(AccountView, "show.json", user: user, for: user)},
  59. custom_emojis: render(CustomEmojiView, "index.json", custom_emojis: custom_emojis),
  60. char_limit: limit
  61. }
  62. |> Jason.encode!()
  63. |> Phoenix.HTML.raw()
  64. end
  65. defp present?(nil), do: false
  66. defp present?(false), do: false
  67. defp present?(_), do: true
  68. def render("manifest.json", _params) do
  69. %{
  70. name: Config.get([:instance, :name]),
  71. description: Config.get([:instance, :description]),
  72. icons: Config.get([:manifest, :icons]),
  73. theme_color: Config.get([:manifest, :theme_color]),
  74. background_color: Config.get([:manifest, :background_color]),
  75. display: "standalone",
  76. scope: Pleroma.Web.Endpoint.url(),
  77. start_url: Routes.masto_fe_path(Pleroma.Web.Endpoint, :index, ["getting-started"]),
  78. categories: [
  79. "social"
  80. ],
  81. serviceworker: %{
  82. src: "/sw.js"
  83. }
  84. }
  85. end
  86. end