forked from AkkomaGang/akkoma
Add support for a first
reference in pinned objects
This commit is contained in:
parent
4da9a12bf8
commit
0a3a552696
3 changed files with 38 additions and 6 deletions
|
@ -1662,6 +1662,36 @@ def maybe_handle_clashing_nickname(data) do
|
|||
end
|
||||
end
|
||||
|
||||
def pin_data_from_featured_collection(%{
|
||||
"type" => "OrderedCollection",
|
||||
"first" => first
|
||||
}) do
|
||||
with {:ok, page} <- Fetcher.fetch_and_contain_remote_object_from_id(first) do
|
||||
page
|
||||
|> Map.get("orderedItems")
|
||||
|> Map.new(fn %{"id" => object_ap_id} -> {object_ap_id, NaiveDateTime.utc_now()} end)
|
||||
else
|
||||
e ->
|
||||
Logger.error("Could not decode featured collection at fetch #{first}, #{inspect(e)}")
|
||||
{:ok, %{}}
|
||||
end
|
||||
end
|
||||
|
||||
def pin_data_from_featured_collection(%{
|
||||
"type" => "Collection",
|
||||
"first" => first
|
||||
}) do
|
||||
with {:ok, page} <- Fetcher.fetch_and_contain_remote_object_from_id(first) do
|
||||
page
|
||||
|> Map.get("items")
|
||||
|> Map.new(fn %{"id" => object_ap_id} -> {object_ap_id, NaiveDateTime.utc_now()} end)
|
||||
else
|
||||
e ->
|
||||
Logger.error("Could not decode featured collection at fetch #{first}, #{inspect(e)}")
|
||||
{:ok, %{}}
|
||||
end
|
||||
end
|
||||
|
||||
def pin_data_from_featured_collection(%{
|
||||
"type" => type,
|
||||
"orderedItems" => objects
|
||||
|
|
|
@ -26,5 +26,9 @@
|
|||
"type": "OrderedCollectionPage",
|
||||
"totalItems": 0,
|
||||
"partOf": "https://friendica.example.com/featured/raha",
|
||||
"orderedItems": []
|
||||
"orderedItems": [
|
||||
{
|
||||
"id": "http://inserted"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -315,16 +315,15 @@ test "fetches user featured collection" do
|
|||
end
|
||||
|
||||
test "fetches user featured collection using the first property" do
|
||||
ap_id = "https://friendica.example.com/raha"
|
||||
featured_url = "https://friendica.example.com/raha/collections/featured"
|
||||
first_url = "https://friendica.mnementh.co.uk/featured/spyro?page=1"
|
||||
first_url = "https://friendica.example.com/featured/raha?page=1"
|
||||
|
||||
featured_data =
|
||||
"test/fixtures/friendica/friendica_featured_collection.json"
|
||||
|> File.read!()
|
||||
|
||||
page_data =
|
||||
"test/fixtures/friendica/friendica_featured_collection.json"
|
||||
"test/fixtures/friendica/friendica_featured_collection_first.json"
|
||||
|> File.read!()
|
||||
|
||||
Tesla.Mock.mock(fn
|
||||
|
@ -337,9 +336,7 @@ test "fetches user featured collection using the first property" do
|
|||
body: featured_data,
|
||||
headers: [{"content-type", "application/activity+json"}]
|
||||
}
|
||||
end)
|
||||
|
||||
Tesla.Mock.mock_global(fn
|
||||
%{
|
||||
method: :get,
|
||||
url: ^first_url
|
||||
|
@ -352,6 +349,7 @@ test "fetches user featured collection using the first property" do
|
|||
end)
|
||||
|
||||
{:ok, data} = ActivityPub.fetch_and_prepare_featured_from_ap_id(featured_url)
|
||||
assert Map.has_key?(data, "http://inserted")
|
||||
end
|
||||
|
||||
test "it fetches the appropriate tag-restricted posts" do
|
||||
|
|
Loading…
Reference in a new issue