instance: Prevent loop of updates

This commit is contained in:
Haelwenn (lanodan) Monnier 2020-07-07 12:07:30 +02:00
parent 013e2c5057
commit 8c9df2d2e6
No known key found for this signature in database
GPG key ID: D5B7A8E43C997DEE

View file

@ -127,30 +127,23 @@ def get_or_update_favicon(%URI{host: host} = instance_uri) do
existing_record = Repo.get_by(Instance, %{host: host})
now = NaiveDateTime.utc_now()
if existing_record && existing_record.favicon &&
if existing_record && existing_record.favicon_updated_at &&
NaiveDateTime.diff(now, existing_record.favicon_updated_at) < 86_400 do
existing_record.favicon
else
favicon = scrape_favicon(instance_uri)
cond do
is_binary(favicon) && existing_record ->
existing_record
|> changeset(%{favicon: favicon, favicon_updated_at: now})
|> Repo.update()
favicon
is_binary(favicon) ->
%Instance{}
|> changeset(%{host: host, favicon: favicon, favicon_updated_at: now})
|> Repo.insert()
favicon
true ->
nil
if existing_record do
existing_record
|> changeset(%{favicon: favicon, favicon_updated_at: now})
|> Repo.update()
else
%Instance{}
|> changeset(%{host: host, favicon: favicon, favicon_updated_at: now})
|> Repo.insert()
end
favicon
end
end