Gracefully handle duplicate enqueued downloads
This commit is contained in:
parent
32d29b0209
commit
853173e30a
2 changed files with 16 additions and 1 deletions
|
|
@ -50,7 +50,13 @@ defmodule PinchflatWeb.MediaItems.MediaItemController do
|
|||
|
||||
def force_download(conn, %{"media_item_id" => id}) do
|
||||
media_item = Media.get_media_item!(id)
|
||||
{:ok, _} = MediaDownloadWorker.kickoff_with_task(media_item, %{force: true})
|
||||
|
||||
:ok =
|
||||
case MediaDownloadWorker.kickoff_with_task(media_item, %{force: true}) do
|
||||
{:ok, _} -> :ok
|
||||
{:error, :duplicate_job} -> :ok
|
||||
err -> err
|
||||
end
|
||||
|
||||
conn
|
||||
|> put_flash(:info, "Download task enqueued.")
|
||||
|
|
|
|||
|
|
@ -97,6 +97,15 @@ defmodule PinchflatWeb.MediaItemControllerTest do
|
|||
assert [_] = all_enqueued(worker: MediaDownloadWorker)
|
||||
end
|
||||
|
||||
test "doesn't freak out if the task is a duplicate", %{conn: conn} do
|
||||
media_item = media_item_fixture()
|
||||
|
||||
MediaDownloadWorker.kickoff_with_task(media_item, %{force: true})
|
||||
|
||||
post(conn, ~p"/sources/#{media_item.source_id}/media/#{media_item.id}/force_download")
|
||||
assert [_] = all_enqueued(worker: MediaDownloadWorker)
|
||||
end
|
||||
|
||||
test "forces a download even if one wouldn't normally run", %{conn: conn} do
|
||||
media_item = media_item_fixture(%{media_filepath: nil})
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue