diff options
author | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-09-19 10:59:09 +0300 |
---|---|---|
committer | Ivan Tashkinov <ivantashkinov@gmail.com> | 2019-09-19 10:59:09 +0300 |
commit | 6f67aed3acf557bb1e37415af82acd97e46c9ac4 (patch) | |
tree | 9155b5d55ad25d6e82ea1d365dd973addc30d1da /lib/pleroma/object.ex | |
parent | e4f3d7f69d5d3db787f8b4906cacc673e2f970f1 (diff) | |
parent | f95a2b2cda236f7c0e5ced2a4698e2b10d99fa53 (diff) | |
download | pleroma-6f67aed3acf557bb1e37415af82acd97e46c9ac4.tar.gz |
[#1234] Merge remote-tracking branch 'remotes/upstream/develop' into 1234-mastodon-2-4-3-oauth-scopes
# Conflicts:
# lib/pleroma/web/admin_api/admin_api_controller.ex
Diffstat (limited to 'lib/pleroma/object.ex')
-rw-r--r-- | lib/pleroma/object.ex | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/pleroma/object.ex b/lib/pleroma/object.ex index 5033798ae..3fa407931 100644 --- a/lib/pleroma/object.ex +++ b/lib/pleroma/object.ex @@ -38,6 +38,24 @@ defmodule Pleroma.Object do def get_by_id(nil), do: nil def get_by_id(id), do: Repo.get(Object, id) + def get_by_id_and_maybe_refetch(id, opts \\ []) do + %{updated_at: updated_at} = object = get_by_id(id) + + if opts[:interval] && + NaiveDateTime.diff(NaiveDateTime.utc_now(), updated_at) > opts[:interval] do + case Fetcher.refetch_object(object) do + {:ok, %Object{} = object} -> + object + + e -> + Logger.error("Couldn't refresh #{object.data["id"]}:\n#{inspect(e)}") + object + end + else + object + end + end + def get_by_ap_id(nil), do: nil def get_by_ap_id(ap_id) do |