Add anonymous and remote participations
This commit is contained in:
@@ -25,25 +25,82 @@ defmodule Mobilizon.GraphQL.Resolvers.Config do
|
||||
_ -> nil
|
||||
end
|
||||
|
||||
{:ok,
|
||||
%{
|
||||
name: Config.instance_name(),
|
||||
registrations_open: Config.instance_registrations_open?(),
|
||||
registrations_whitelist: Config.instance_registrations_whitelist?(),
|
||||
demo_mode: Config.instance_demo_mode?(),
|
||||
description: Config.instance_description(),
|
||||
location: location,
|
||||
country_code: country_code,
|
||||
geocoding: %{
|
||||
provider: Config.instance_geocoding_provider(),
|
||||
autocomplete: Config.instance_geocoding_autocomplete()
|
||||
},
|
||||
maps: %{
|
||||
tiles: %{
|
||||
endpoint: Config.instance_maps_tiles_endpoint(),
|
||||
attribution: Config.instance_maps_tiles_attribution()
|
||||
}
|
||||
}
|
||||
}}
|
||||
data = Map.merge(config_cache(), %{location: location, country_code: country_code})
|
||||
|
||||
{:ok, data}
|
||||
end
|
||||
|
||||
def terms(_parent, %{locale: locale}, _resolution) do
|
||||
type = Config.instance_terms_type()
|
||||
|
||||
{url, body_html} =
|
||||
case type do
|
||||
"URL" -> {Config.instance_terms_url(), nil}
|
||||
"DEFAULT" -> {nil, Config.generate_terms(locale)}
|
||||
_ -> {nil, Config.instance_terms(locale)}
|
||||
end
|
||||
|
||||
{:ok, %{body_html: body_html, type: type, url: url}}
|
||||
end
|
||||
|
||||
defp config_cache do
|
||||
case Cachex.fetch(:config, "full_config", fn _key ->
|
||||
case build_config_cache() do
|
||||
value when not is_nil(value) -> {:commit, value}
|
||||
err -> {:ignore, err}
|
||||
end
|
||||
end) do
|
||||
{status, value} when status in [:ok, :commit] -> value
|
||||
_err -> nil
|
||||
end
|
||||
end
|
||||
|
||||
defp build_config_cache do
|
||||
%{
|
||||
name: Config.instance_name(),
|
||||
registrations_open: Config.instance_registrations_open?(),
|
||||
registrations_whitelist: Config.instance_registrations_whitelist?(),
|
||||
demo_mode: Config.instance_demo_mode?(),
|
||||
description: Config.instance_description(),
|
||||
anonymous: %{
|
||||
participation: %{
|
||||
allowed: Config.anonymous_participation?(),
|
||||
validation: %{
|
||||
email: %{
|
||||
enabled: Config.anonymous_participation_email_required?(),
|
||||
confirmation_required:
|
||||
Config.anonymous_event_creation_email_confirmation_required?()
|
||||
},
|
||||
captcha: %{
|
||||
enabled: Config.anonymous_event_creation_email_captcha_required?()
|
||||
}
|
||||
}
|
||||
},
|
||||
event_creation: %{
|
||||
allowed: Config.anonymous_event_creation?(),
|
||||
validation: %{
|
||||
email: %{
|
||||
enabled: Config.anonymous_event_creation_email_required?(),
|
||||
confirmation_required:
|
||||
Config.anonymous_event_creation_email_confirmation_required?()
|
||||
},
|
||||
captcha: %{
|
||||
enabled: Config.anonymous_event_creation_email_captcha_required?()
|
||||
}
|
||||
}
|
||||
},
|
||||
actor_id: Config.anonymous_actor_id()
|
||||
},
|
||||
geocoding: %{
|
||||
provider: Config.instance_geocoding_provider(),
|
||||
autocomplete: Config.instance_geocoding_autocomplete()
|
||||
},
|
||||
maps: %{
|
||||
tiles: %{
|
||||
endpoint: Config.instance_maps_tiles_endpoint(),
|
||||
attribution: Config.instance_maps_tiles_attribution()
|
||||
}
|
||||
}
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user