Disable address autocomplete where required (nominatim)

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel
2019-11-20 13:49:57 +01:00
parent 280a79918c
commit 3b210a33a2
17 changed files with 220 additions and 80 deletions

View File

@@ -34,6 +34,21 @@ defmodule Mobilizon.Config do
def instance_user_agent,
do: "#{instance_name()} #{instance_hostname()} - Mobilizon #{Mix.Project.config()[:version]}"
@spec instance_geocoding_provider :: atom()
def instance_geocoding_provider,
do: get_in(Application.get_env(:mobilizon, Mobilizon.Service.Geospatial), [:service])
@spec instance_geocoding_autocomplete :: boolean
def instance_geocoding_autocomplete,
do: instance_geocoding_provider() !== Mobilizon.Service.Geospatial.Nominatim
@spec instance_maps_tiles_endpoint :: String.t()
def instance_maps_tiles_endpoint, do: Application.get_env(:mobilizon, :maps)[:tiles][:endpoint]
@spec instance_maps_tiles_attribution :: String.t()
def instance_maps_tiles_attribution,
do: Application.get_env(:mobilizon, :maps)[:tiles][:attribution]
@spec get(module | atom) :: any
def get(key), do: get(key, nil)

View File

@@ -32,7 +32,17 @@ defmodule MobilizonWeb.Resolvers.Config do
registrations_open: Config.instance_registrations_open?(),
description: Config.instance_description(),
location: location,
country_code: country_code
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()
}
}
}}
end
end

View File

@@ -15,6 +15,8 @@ defmodule MobilizonWeb.Schema.ConfigType do
field(:registrations_open, :boolean)
field(:country_code, :string)
field(:location, :lonlat)
field(:geocoding, :geocoding)
field(:maps, :maps)
end
object :lonlat do
@@ -23,6 +25,20 @@ defmodule MobilizonWeb.Schema.ConfigType do
field(:accuracy_radius, :integer)
end
object :geocoding do
field(:autocomplete, :boolean)
field(:provider, :string)
end
object :maps do
field(:tiles, :tiles)
end
object :tiles do
field(:endpoint, :string)
field(:attribution, :string)
end
object :config_queries do
@desc "Get the instance config"
field :config, :config do

View File

@@ -29,6 +29,8 @@ defmodule Mobilizon.Service.Geospatial.Addok do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end
@@ -47,6 +49,8 @@ defmodule Mobilizon.Service.Geospatial.Addok do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end

View File

@@ -32,6 +32,8 @@ defmodule Mobilizon.Service.Geospatial.Mimirsbrunn do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end
@@ -50,6 +52,8 @@ defmodule Mobilizon.Service.Geospatial.Mimirsbrunn do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end

View File

@@ -29,6 +29,8 @@ defmodule Mobilizon.Service.Geospatial.Nominatim do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
features |> process_data() |> Enum.filter(& &1)
else
_ -> []
end
end
@@ -47,6 +49,8 @@ defmodule Mobilizon.Service.Geospatial.Nominatim do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
features |> process_data() |> Enum.filter(& &1)
else
_ -> []
end
end

View File

@@ -30,6 +30,8 @@ defmodule Mobilizon.Service.Geospatial.Pelias do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end
@@ -48,6 +50,8 @@ defmodule Mobilizon.Service.Geospatial.Pelias do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end

View File

@@ -30,6 +30,8 @@ defmodule Mobilizon.Service.Geospatial.Photon do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end
@@ -48,6 +50,8 @@ defmodule Mobilizon.Service.Geospatial.Photon do
HTTPoison.get(url, headers),
{:ok, %{"features" => features}} <- Poison.decode(body) do
process_data(features)
else
_ -> []
end
end