Merge branch 'feature/mastofe-pwa' into 'develop'
MastoFE: Add PWA manifest. See merge request pleroma/pleroma!1834
This commit is contained in:
commit
f01dbc450c
7 changed files with 114 additions and 1 deletions
|
@ -322,6 +322,16 @@ config :pleroma, :assets,
|
||||||
],
|
],
|
||||||
default_mascot: :pleroma_fox_tan
|
default_mascot: :pleroma_fox_tan
|
||||||
|
|
||||||
|
config :pleroma, :manifest,
|
||||||
|
icons: [
|
||||||
|
%{
|
||||||
|
src: "/static/logo.png",
|
||||||
|
type: "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
theme_color: "#282c37",
|
||||||
|
background_color: "#191b22"
|
||||||
|
|
||||||
config :pleroma, :activitypub,
|
config :pleroma, :activitypub,
|
||||||
unfollow_blocked: true,
|
unfollow_blocked: true,
|
||||||
outgoing_blocks: true,
|
outgoing_blocks: true,
|
||||||
|
|
|
@ -1098,6 +1098,45 @@ config :pleroma, :config_description, [
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
%{
|
||||||
|
group: :pleroma,
|
||||||
|
key: :manifest,
|
||||||
|
type: :group,
|
||||||
|
description:
|
||||||
|
"This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE",
|
||||||
|
children: [
|
||||||
|
%{
|
||||||
|
key: :icons,
|
||||||
|
type: {:list, :map},
|
||||||
|
description: "Describe the icons of the app",
|
||||||
|
suggestion: [
|
||||||
|
%{
|
||||||
|
src: "/static/logo.png"
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
src: "/static/icon.png",
|
||||||
|
type: "image/png"
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
src: "/static/icon.ico",
|
||||||
|
sizes: "72x72 96x96 128x128 256x256"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
key: :theme_color,
|
||||||
|
type: :string,
|
||||||
|
description: "Describe the theme color of the app",
|
||||||
|
suggestions: ["#282c37", "mediumpurple"]
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
key: :background_color,
|
||||||
|
type: :string,
|
||||||
|
description: "Describe the background color of the app",
|
||||||
|
suggestions: ["#191b22", "aliceblue"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
%{
|
%{
|
||||||
group: :pleroma,
|
group: :pleroma,
|
||||||
key: :mrf_simple,
|
key: :mrf_simple,
|
||||||
|
|
|
@ -247,6 +247,35 @@ relates to mascots on the mastodon frontend
|
||||||
* `default_mascot`: An element from `mascots` - This will be used as the default mascot
|
* `default_mascot`: An element from `mascots` - This will be used as the default mascot
|
||||||
on MastoFE (default: `:pleroma_fox_tan`)
|
on MastoFE (default: `:pleroma_fox_tan`)
|
||||||
|
|
||||||
|
## :manifest
|
||||||
|
|
||||||
|
This section describe PWA manifest instance-specific values. Currently this option relate only for MastoFE.
|
||||||
|
|
||||||
|
* `icons`: Describe the icons of the app, this a list of maps describing icons in the same way as the
|
||||||
|
[spec](https://www.w3.org/TR/appmanifest/#imageresource-and-its-members) describes it.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
config :pleroma, :manifest,
|
||||||
|
icons: [
|
||||||
|
%{
|
||||||
|
src: "/static/logo.png"
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
src: "/static/icon.png",
|
||||||
|
type: "image/png"
|
||||||
|
},
|
||||||
|
%{
|
||||||
|
src: "/static/icon.ico",
|
||||||
|
sizes: "72x72 96x96 128x128 256x256"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
* `theme_color`: Describe the theme color of the app. (Example: `"#282c37"`, `"rebeccapurple"`)
|
||||||
|
* `background_color`: Describe the background color of the app. (Example: `"#191b22"`, `"aliceblue"`)
|
||||||
|
|
||||||
## :mrf_simple
|
## :mrf_simple
|
||||||
* `media_removal`: List of instances to remove medias from
|
* `media_removal`: List of instances to remove medias from
|
||||||
* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from
|
* `media_nsfw`: List of instances to put medias as NSFW(sensitive) from
|
||||||
|
|
|
@ -34,6 +34,12 @@ defmodule Pleroma.Web.MastoFEController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@doc "GET /web/manifest.json"
|
||||||
|
def manifest(conn, _params) do
|
||||||
|
conn
|
||||||
|
|> render("manifest.json")
|
||||||
|
end
|
||||||
|
|
||||||
@doc "PUT /api/web/settings"
|
@doc "PUT /api/web/settings"
|
||||||
def put_settings(%{assigns: %{user: user}} = conn, %{"data" => settings} = _params) do
|
def put_settings(%{assigns: %{user: user}} = conn, %{"data" => settings} = _params) do
|
||||||
with {:ok, _} <- User.update_info(user, &User.Info.mastodon_settings_update(&1, settings)) do
|
with {:ok, _} <- User.update_info(user, &User.Info.mastodon_settings_update(&1, settings)) do
|
||||||
|
|
|
@ -592,6 +592,12 @@ defmodule Pleroma.Web.Router do
|
||||||
get("/:version", Nodeinfo.NodeinfoController, :nodeinfo)
|
get("/:version", Nodeinfo.NodeinfoController, :nodeinfo)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
scope "/", Pleroma.Web do
|
||||||
|
pipe_through(:api)
|
||||||
|
|
||||||
|
get("/web/manifest.json", MastoFEController, :manifest)
|
||||||
|
end
|
||||||
|
|
||||||
scope "/", Pleroma.Web do
|
scope "/", Pleroma.Web do
|
||||||
pipe_through(:mastodon_html)
|
pipe_through(:mastodon_html)
|
||||||
|
|
||||||
|
|
|
@ -4,9 +4,13 @@
|
||||||
<meta charset='utf-8'>
|
<meta charset='utf-8'>
|
||||||
<meta content='width=device-width, initial-scale=1' name='viewport'>
|
<meta content='width=device-width, initial-scale=1' name='viewport'>
|
||||||
<title>
|
<title>
|
||||||
<%= Pleroma.Config.get([:instance, :name]) %>
|
<%= Config.get([:instance, :name]) %>
|
||||||
</title>
|
</title>
|
||||||
<link rel="icon" type="image/png" href="/favicon.png"/>
|
<link rel="icon" type="image/png" href="/favicon.png"/>
|
||||||
|
<link rel="manifest" type="applicaton/manifest+json" href="<%= masto_fe_path(Pleroma.Web.Endpoint, :manifest) %>" />
|
||||||
|
|
||||||
|
<meta name="theme-color" content="<%= Config.get([:manifest, :theme_color]) %>" />
|
||||||
|
|
||||||
<script crossorigin='anonymous' src="/packs/locales.js"></script>
|
<script crossorigin='anonymous' src="/packs/locales.js"></script>
|
||||||
<script crossorigin='anonymous' src="/packs/locales/glitch/en.js"></script>
|
<script crossorigin='anonymous' src="/packs/locales/glitch/en.js"></script>
|
||||||
|
|
||||||
|
|
|
@ -99,4 +99,23 @@ defmodule Pleroma.Web.MastoFEView do
|
||||||
defp present?(nil), do: false
|
defp present?(nil), do: false
|
||||||
defp present?(false), do: false
|
defp present?(false), do: false
|
||||||
defp present?(_), do: true
|
defp present?(_), do: true
|
||||||
|
|
||||||
|
def render("manifest.json", _params) do
|
||||||
|
%{
|
||||||
|
name: Config.get([:instance, :name]),
|
||||||
|
description: Config.get([:instance, :description]),
|
||||||
|
icons: Config.get([:manifest, :icons]),
|
||||||
|
theme_color: Config.get([:manifest, :theme_color]),
|
||||||
|
background_color: Config.get([:manifest, :background_color]),
|
||||||
|
display: "standalone",
|
||||||
|
scope: Pleroma.Web.base_url(),
|
||||||
|
start_url: masto_fe_path(Pleroma.Web.Endpoint, :index, ["getting-started"]),
|
||||||
|
categories: [
|
||||||
|
"social"
|
||||||
|
],
|
||||||
|
serviceworker: %{
|
||||||
|
src: "/sw.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue