diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/DownloadRoomDao.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/DownloadRoomDao.kt index a3d95885c..f90d8ea86 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/dao/DownloadRoomDao.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/dao/DownloadRoomDao.kt @@ -115,7 +115,9 @@ abstract class DownloadRoomDao { book = book, file = downloadRequest.getDestinationFile(sharedPreferenceUtil).path ) - ) + ).also { + downloadRequester.onDownloadAdded() + } } } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloadRequester.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloadRequester.kt index 063bbf713..d26ad6fd6 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloadRequester.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/DownloadRequester.kt @@ -24,4 +24,5 @@ interface DownloadRequester { fun cancel(downloadId: Long) fun retryDownload(downloadId: Long) fun pauseResumeDownload(downloadId: Long, isPause: Boolean) + fun onDownloadAdded() } diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerMonitor.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerMonitor.kt index 1754b25fc..40112634e 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerMonitor.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerMonitor.kt @@ -84,13 +84,17 @@ class DownloadManagerMonitor @Inject constructor( fun startMonitoringDownloads() { // Check if monitoring is already active. If it is, do nothing. if (monitoringDisposable?.isDisposed == false) return - monitoringDisposable = Observable.interval(0, 5, TimeUnit.SECONDS) + monitoringDisposable = Observable.interval(ZERO.toLong(), 5, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(Schedulers.io()) .subscribe( { try { synchronized(lock) { + Log.e( + "DOWNLOAD_MONITOR", + "startMonitoringDownloads: ${downloadRoomDao.downloads().blockingFirst()}" + ) if (downloadRoomDao.downloads().blockingFirst().isNotEmpty()) { checkDownloads() } else { @@ -425,7 +429,7 @@ class DownloadManagerMonitor @Inject constructor( downloadId: Long, control: Int ): Boolean { - Log.e("PAUSED", "pauseResumeDownloadInDownloadManagerContentResolver: $control") + Log.e("DOWNLOAD_MONITOR", "pauseResumeDownloadInDownloadManagerContentResolver: $control") return try { // Update the status to paused/resumed in the database val contentValues = ContentValues().apply { diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerRequester.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerRequester.kt index f5832aace..eba7549f3 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerRequester.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/downloadManager/DownloadManagerRequester.kt @@ -38,10 +38,11 @@ class DownloadManagerRequester @Inject constructor( ) : DownloadRequester { override fun enqueue(downloadRequest: DownloadRequest): Long = downloadManager.enqueue(downloadRequest.toDownloadManagerRequest(sharedPreferenceUtil)) - .also { - // Start monitoring downloads after enqueuing a new download request. - downloadManagerMonitor.startMonitoringDownloads() - } + + override fun onDownloadAdded() { + // Start monitoring downloads after enqueuing a new download request. + downloadManagerMonitor.startMonitoringDownloads() + } override fun cancel(downloadId: Long) { downloadManagerMonitor.cancelDownload(downloadId) @@ -65,7 +66,7 @@ class DownloadManagerRequester @Inject constructor( } }.also { // Start monitoring downloads after retrying. - downloadManagerMonitor.startMonitoringDownloads() + onDownloadAdded() } } catch (ignore: Exception) { Log.e( diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/fetch/FetchDownloadRequester.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/fetch/FetchDownloadRequester.kt index 3da6946d0..6497a1210 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/fetch/FetchDownloadRequester.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/downloader/fetch/FetchDownloadRequester.kt @@ -52,6 +52,10 @@ class FetchDownloadRequester @Inject constructor( else fetch.pause(downloadId.toInt()) } + + override fun onDownloadAdded() { + // empty function + } } private fun DownloadRequest.toFetchRequest(sharedPreferenceUtil: SharedPreferenceUtil) =