Various UI stuff (mainly implement mookup)

Fix lint

Disable modern mode

Fixes

UI fixes

Fixes

Ignore .po~ files

Fixes

Fix homepage

Fixes

Fixes

Mix format

Fix tests

Fix tests (yeah…)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-04-03 17:29:03 +02:00
parent 2dcd65ea78
commit da2a0593ca
66 changed files with 14247 additions and 15872 deletions

View File

@@ -14,6 +14,11 @@ defmodule Mobilizon.CommonConfig do
|> get_in([:name])
end
def instance_description() do
instance_config()
|> get_in([:description])
end
defp instance_config(), do: Application.get_env(:mobilizon, :instance)
defp to_bool(v), do: v == true or v == "true" or v == "True"

View File

@@ -9,6 +9,11 @@ defmodule MobilizonWeb.Resolvers.Config do
Get config
"""
def get_config(_parent, _params, _context) do
{:ok, %{name: instance_name(), registrations_open: registrations_open?()}}
{:ok,
%{
name: instance_name(),
registrations_open: registrations_open?(),
description: instance_description()
}}
end
end

View File

@@ -141,7 +141,7 @@ defmodule MobilizonWeb.Resolvers.Group do
actor_id: actor.id,
role: role
}) do
{:ok, %{parent: group, person: actor, role: role}}
{:ok, %{parent: group, actor: actor, role: role}}
else
{:is_owned, false} ->
{:error, "Actor id is not owned by authenticated user"}
@@ -185,7 +185,7 @@ defmodule MobilizonWeb.Resolvers.Group do
parent: %{
id: group_id
},
person: %{
actor: %{
id: actor_id
}
}

View File

@@ -0,0 +1,15 @@
defmodule MobilizonWeb.Resolvers.Member do
@moduledoc """
Handles the member-related GraphQL calls
"""
alias Mobilizon.Actors
alias Mobilizon.Actors.{Actor}
@doc """
Find members for group
"""
def find_members_for_group(%Actor{} = actor, _args, _resolution) do
members = Actors.memberships_for_group(actor)
{:ok, members}
end
end

View File

@@ -31,6 +31,7 @@ defmodule MobilizonWeb.Router do
end
pipeline :browser do
plug(Plug.Static, at: "/", from: "priv/static")
plug(:accepts, ["html"])
plug(:fetch_session)
plug(:fetch_flash)

View File

@@ -6,6 +6,7 @@ defmodule MobilizonWeb.Schema.Actors.GroupType do
import Absinthe.Resolution.Helpers, only: [dataloader: 1]
import_types(MobilizonWeb.Schema.Actors.MemberType)
alias MobilizonWeb.Resolvers
alias Mobilizon.Events
@desc """
Represents a group of actors
@@ -49,7 +50,10 @@ defmodule MobilizonWeb.Schema.Actors.GroupType do
description: "Whether the group is opened to all or has restricted access"
)
field(:members, non_null(list_of(:member)), description: "List of group members")
field(:members, non_null(list_of(:member)),
resolve: &Resolvers.Member.find_members_for_group/3,
description: "List of group members"
)
end
@desc """

View File

@@ -11,14 +11,14 @@ defmodule MobilizonWeb.Schema.Actors.MemberType do
"""
object :member do
field(:parent, :group, description: "Of which the profile is member")
field(:person, :person, description: "Which profile is member of")
field(:actor, :person, description: "Which profile is member of")
field(:role, :integer, description: "The role of this membership")
end
@desc "Represents a deleted member"
object :deleted_member do
field(:parent, :deleted_object)
field(:person, :deleted_object)
field(:actor, :deleted_object)
end
object :member_mutations do

View File

@@ -10,6 +10,7 @@ defmodule MobilizonWeb.Schema.ConfigType do
object :config do
# Instance name
field(:name, :string)
field(:description, :string)
field(:registrations_open, :boolean)
end

View File

@@ -18,7 +18,7 @@ defmodule Mobilizon.Service.Export.ICalendar do
@spec export_public_event(Event.t()) :: {:ok, String.t()}
def export_public_event(%Event{visibility: visibility} = event)
when visibility in [:public, :unlisted] do
{:ok, %ICalendar{events: [do_export_event(event)]} |> ICalendar.to_ics()}
{:ok, %ICalendar{events: [do_export_event(event)]} |> ICalendar.to_ics(vendor: "Mobilizon")}
end
@spec export_public_event(Event.t()) :: {:error, :event_not_public}
@@ -29,6 +29,7 @@ defmodule Mobilizon.Service.Export.ICalendar do
%ICalendar.Event{
summary: event.title,
dtstart: event.begins_on,
dtstamp: event.publish_at || DateTime.utc_now(),
dtend: event.ends_on,
description: event.description,
uid: event.uuid,