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:
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
15
lib/mobilizon_web/resolvers/member.ex
Normal file
15
lib/mobilizon_web/resolvers/member.ex
Normal 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
|
||||
@@ -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)
|
||||
|
||||
@@ -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 """
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user