mirror of
https://github.com/hkalexling/Mango.git
synced 2025-08-03 03:15:31 -04:00
Cancel a download job when deleted from web UI
This commit is contained in:
parent
1cd90926df
commit
9dcc9665ce
@ -91,6 +91,7 @@ module MangaDex
|
|||||||
end
|
end
|
||||||
|
|
||||||
channel.send page_job
|
channel.send page_job
|
||||||
|
break unless @queue.exists? job
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -98,6 +99,9 @@ module MangaDex
|
|||||||
page_jobs = [] of PageJob
|
page_jobs = [] of PageJob
|
||||||
chapter.pages.size.times do
|
chapter.pages.size.times do
|
||||||
page_job = channel.receive
|
page_job = channel.receive
|
||||||
|
|
||||||
|
break unless @queue.exists? job
|
||||||
|
|
||||||
Logger.debug "[#{page_job.success ? "success" : "failed"}] " \
|
Logger.debug "[#{page_job.success ? "success" : "failed"}] " \
|
||||||
"#{page_job.url}"
|
"#{page_job.url}"
|
||||||
page_jobs << page_job
|
page_jobs << page_job
|
||||||
@ -110,6 +114,13 @@ module MangaDex
|
|||||||
Logger.error msg
|
Logger.error msg
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless @queue.exists? job
|
||||||
|
Logger.debug "Download cancelled"
|
||||||
|
@downloading = false
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
fail_count = page_jobs.count { |j| !j.success }
|
fail_count = page_jobs.count { |j| !j.success }
|
||||||
Logger.debug "Download completed. " \
|
Logger.debug "Download completed. " \
|
||||||
"#{fail_count}/#{page_jobs.size} failed"
|
"#{fail_count}/#{page_jobs.size} failed"
|
||||||
|
@ -66,6 +66,8 @@ class Plugin
|
|||||||
fail_count = 0
|
fail_count = 0
|
||||||
|
|
||||||
while page = plugin.next_page
|
while page = plugin.next_page
|
||||||
|
break unless @queue.exists? job
|
||||||
|
|
||||||
fn = process_filename page["filename"].as_s
|
fn = process_filename page["filename"].as_s
|
||||||
url = page["url"].as_s
|
url = page["url"].as_s
|
||||||
headers = HTTP::Headers.new
|
headers = HTTP::Headers.new
|
||||||
@ -109,6 +111,12 @@ class Plugin
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
unless @queue.exists? job
|
||||||
|
Logger.debug "Download cancelled"
|
||||||
|
@downloading = false
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
Logger.debug "Download completed. #{fail_count}/#{pages} failed"
|
Logger.debug "Download completed. #{fail_count}/#{pages} failed"
|
||||||
writer.close
|
writer.close
|
||||||
filename = File.join File.dirname(zip_path), File.basename(zip_path,
|
filename = File.join File.dirname(zip_path), File.basename(zip_path,
|
||||||
|
15
src/queue.cr
15
src/queue.cr
@ -196,6 +196,21 @@ class Queue
|
|||||||
self.delete job.id
|
self.delete job.id
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def exists?(id : String)
|
||||||
|
res = false
|
||||||
|
MainFiber.run do
|
||||||
|
DB.open "sqlite3://#{@path}" do |db|
|
||||||
|
res = db.query_one "select count(*) from queue where id = (?)", id,
|
||||||
|
as: Bool
|
||||||
|
end
|
||||||
|
end
|
||||||
|
res
|
||||||
|
end
|
||||||
|
|
||||||
|
def exists?(job : Job)
|
||||||
|
self.exists? job.id
|
||||||
|
end
|
||||||
|
|
||||||
def delete_status(status : JobStatus)
|
def delete_status(status : JobStatus)
|
||||||
MainFiber.run do
|
MainFiber.run do
|
||||||
DB.open "sqlite3://#{@path}" do |db|
|
DB.open "sqlite3://#{@path}" do |db|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user