mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Handle download cancelation from icon properly (fixes #4241)
This commit is contained in:
		@@ -212,8 +212,19 @@ class DownloadManager(private val context: Context) {
 | 
			
		||||
    fun deleteChapters(chapters: List<Chapter>, manga: Manga, source: Source): List<Chapter> {
 | 
			
		||||
        val filteredChapters = getChaptersToDelete(chapters)
 | 
			
		||||
 | 
			
		||||
        val wasRunning = downloader.isRunning
 | 
			
		||||
        downloader.pause()
 | 
			
		||||
 | 
			
		||||
        downloader.queue.remove(filteredChapters)
 | 
			
		||||
        queue.remove(filteredChapters)
 | 
			
		||||
 | 
			
		||||
        if (downloader.queue.isEmpty()) {
 | 
			
		||||
            DownloadService.stop(context)
 | 
			
		||||
            downloader.stop()
 | 
			
		||||
        } else if (wasRunning && downloader.queue.isNotEmpty()) {
 | 
			
		||||
            downloader.start()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val chapterDirs = provider.findChapterDirs(filteredChapters, manga, source)
 | 
			
		||||
        chapterDirs.forEach { it.delete() }
 | 
			
		||||
        cache.removeChapters(filteredChapters, manga)
 | 
			
		||||
 
 | 
			
		||||
@@ -165,6 +165,8 @@ internal class DownloadNotifier(private val context: Context) {
 | 
			
		||||
     *  This function shows a notification to inform download tasks are done.
 | 
			
		||||
     */
 | 
			
		||||
    fun onComplete() {
 | 
			
		||||
        dismissProgress()
 | 
			
		||||
 | 
			
		||||
        if (!errorThrown) {
 | 
			
		||||
            // Create notification
 | 
			
		||||
            with(completeNotificationBuilder) {
 | 
			
		||||
 
 | 
			
		||||
@@ -134,15 +134,16 @@ class Downloader(
 | 
			
		||||
 | 
			
		||||
        if (reason != null) {
 | 
			
		||||
            notifier.onWarning(reason)
 | 
			
		||||
        } else {
 | 
			
		||||
            if (notifier.paused) {
 | 
			
		||||
                notifier.paused = false
 | 
			
		||||
                notifier.onPaused()
 | 
			
		||||
            } else {
 | 
			
		||||
                notifier.dismissProgress()
 | 
			
		||||
                notifier.onComplete()
 | 
			
		||||
            }
 | 
			
		||||
            return
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (notifier.paused && !queue.isEmpty()) {
 | 
			
		||||
            notifier.onPaused()
 | 
			
		||||
        } else {
 | 
			
		||||
            notifier.onComplete()
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        notifier.paused = false
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,9 @@ class ChapterHolder(
 | 
			
		||||
    private val binding = ChaptersItemBinding.bind(view)
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        binding.download.setOnClickListener { onDownloadClick(it) }
 | 
			
		||||
        binding.download.setOnClickListener {
 | 
			
		||||
            onDownloadClick(it, bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun bind(item: ChapterItem, manga: Manga) {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,11 +11,11 @@ open class BaseChapterHolder(
 | 
			
		||||
    private val adapter: BaseChaptersAdapter<*>
 | 
			
		||||
) : FlexibleViewHolder(view, adapter) {
 | 
			
		||||
 | 
			
		||||
    fun onDownloadClick(view: View) {
 | 
			
		||||
        val item = adapter.getItem(bindingAdapterPosition) as? BaseChapterItem<*, *> ?: return
 | 
			
		||||
    fun onDownloadClick(view: View, position: Int) {
 | 
			
		||||
        val item = adapter.getItem(position) as? BaseChapterItem<*, *> ?: return
 | 
			
		||||
        when (item.status) {
 | 
			
		||||
            Download.State.NOT_DOWNLOADED, Download.State.ERROR -> {
 | 
			
		||||
                adapter.clickListener.downloadChapter(bindingAdapterPosition)
 | 
			
		||||
                adapter.clickListener.downloadChapter(position)
 | 
			
		||||
            }
 | 
			
		||||
            else -> {
 | 
			
		||||
                view.popupMenu(
 | 
			
		||||
@@ -28,7 +28,7 @@ open class BaseChapterHolder(
 | 
			
		||||
                        findItem(R.id.cancel_download).isVisible = item.status != Download.State.DOWNLOADED
 | 
			
		||||
                    },
 | 
			
		||||
                    onMenuItemClick = {
 | 
			
		||||
                        adapter.clickListener.deleteChapter(bindingAdapterPosition)
 | 
			
		||||
                        adapter.clickListener.deleteChapter(position)
 | 
			
		||||
                        true
 | 
			
		||||
                    }
 | 
			
		||||
                )
 | 
			
		||||
 
 | 
			
		||||
@@ -32,7 +32,9 @@ class UpdatesHolder(private val view: View, private val adapter: UpdatesAdapter)
 | 
			
		||||
            adapter.coverClickListener.onCoverClick(bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        binding.download.setOnClickListener { onDownloadClick(it) }
 | 
			
		||||
        binding.download.setOnClickListener {
 | 
			
		||||
            onDownloadClick(it, bindingAdapterPosition)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    fun bind(item: UpdatesItem) {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user