Skip to content

Commit 7cfdb4a

Browse files
authored
Merge pull request #130 from pravinyo/fix_downloads_not_clearing_120_issue
Fix downloads not clearing 120 issue
2 parents 669b2e2 + 4990db8 commit 7cfdb4a

File tree

8 files changed

+50
-28
lines changed

8 files changed

+50
-28
lines changed

app/src/main/java/com/allsoftdroid/audiobook/presentation/MainActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import com.allsoftdroid.audiobook.feature_downloader.presentation.DownloadManage
1818
import com.allsoftdroid.audiobook.feature_mini_player.presentation.MiniPlayerFragment
1919
import com.allsoftdroid.audiobook.presentation.viewModel.MainActivityViewModel
2020
import com.allsoftdroid.audiobook.utility.MovableFrameLayout
21-
import com.allsoftdroid.audiobook.utility.StoragePermissionHandler
21+
import com.allsoftdroid.common.base.utils.StoragePermissionHandler
2222
import com.allsoftdroid.common.base.activity.BaseActivity
2323
import com.allsoftdroid.common.base.extension.Event
2424
import com.allsoftdroid.common.base.network.ConnectionLiveData

app/src/main/java/com/allsoftdroid/audiobook/utility/StoragePermissionHandler.kt renamed to common/src/main/java/com/allsoftdroid/common/base/utils/StoragePermissionHandler.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.allsoftdroid.audiobook.utility
1+
package com.allsoftdroid.common.base.utils
22

33
import android.Manifest
44
import android.app.Activity
@@ -22,7 +22,8 @@ class StoragePermissionHandler {
2222
fun requestPermission(context: Activity){
2323
ActivityCompat.requestPermissions(context,
2424
arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE),
25-
MY_PERMISSIONS_REQUEST_READ_WRITE_STORAGE)
25+
MY_PERMISSIONS_REQUEST_READ_WRITE_STORAGE
26+
)
2627
}
2728

2829
fun isRequestGrantedFor(requestCode:Int,grantResults: IntArray):Boolean{

feature_book/src/main/java/com/allsoftdroid/feature_book/presentation/AudioBookListFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ class AudioBookListFragment : BaseUIFragment(){
164164
booksViewModel.audioBooks.observe(viewLifecycleOwner, Observer {
165165
it?.let {
166166
if(!booksViewModel.isSearching){
167-
// setVisibility(binding.networkNoConnection,set=false)
167+
if(it.isNotEmpty()) setVisibility(binding.networkNoConnection,set=false)
168168
bookAdapter.submitList(it)
169169
}
170170
}

feature_book_details/src/main/java/com/allsoftdroid/feature/book_details/presentation/AudioBookDetailsFragment.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.allsoftdroid.common.base.store.audioPlayer.*
1616
import com.allsoftdroid.common.base.store.downloader.*
1717
import com.allsoftdroid.common.base.utils.BindingUtils.getNormalizedText
1818
import com.allsoftdroid.common.base.utils.ShareUtils
19+
import com.allsoftdroid.common.base.utils.StoragePermissionHandler
1920
import com.allsoftdroid.feature.book_details.R
2021
import com.allsoftdroid.feature.book_details.databinding.FragmentAudiobookDetailsBinding
2122
import com.allsoftdroid.feature.book_details.di.BookDetailsModule
@@ -274,12 +275,17 @@ class AudioBookDetailsFragment : BaseUIFragment(),KoinComponent {
274275
}
275276

276277
dataBinding.imgViewBookDownload.setOnClickListener {
277-
val isSent = bookDetailsViewModel.downloadAllChapters()
278-
if (!isSent) {
279-
Toast.makeText(this.requireActivity(),getString(R.string.download_soon_start),Toast.LENGTH_SHORT).show()
280-
}
278+
if(StoragePermissionHandler.isPermissionGranted(requireActivity())){
279+
val isSent = bookDetailsViewModel.downloadAllChapters()
280+
if(!isSent){
281+
Toast.makeText(requireActivity(),getText(R.string.download_soon_start),Toast.LENGTH_SHORT).show()
282+
}else{
283+
dataBinding.imgViewBookDownload.setBackgroundResource(R.drawable.gradiant_background)
284+
}
281285

282-
it.setBackgroundResource(R.drawable.gradiant_background)
286+
}else{
287+
StoragePermissionHandler.requestPermission(requireActivity())
288+
}
283289
}
284290

285291
dataBinding.bookMediaActionsPlay.setOnClickListener {

feature_book_details/src/main/java/com/allsoftdroid/feature/book_details/presentation/viewModel/BookDetailsViewModel.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ internal class BookDetailsViewModel(
3535
private val getFetchAdditionalBookDetailsUseCase: FetchAdditionalBookDetailsUsecase,
3636
private val listenLaterUsecase: ListenLaterUsecase,
3737
private val getTrackListUsecase : GetTrackListUsecase) : ViewModel(){
38+
private var isMultiDownloadEventSent: Boolean = false
39+
3840
/**
3941
* cancelling this job cancels all the job started by this viewmodel
4042
*/
@@ -56,8 +58,6 @@ internal class BookDetailsViewModel(
5658
private var currentPlayingTrack : Int = /*state.trackPlaying*/ 0
5759
fun getCurrentPlayingTrack() = if (currentPlayingTrack<1) 1 else currentPlayingTrack
5860

59-
private var isMultiDownloadEventSent:Boolean = false /* status of multi download event*/
60-
6161
// when back button is pressed in the UI
6262
private var _backArrowPressed = MutableLiveData<Event<Boolean>>()
6363
val backArrowPressed: LiveData<Event<Boolean>>
@@ -553,6 +553,8 @@ internal class BookDetailsViewModel(
553553

554554
if (isMultiDownloadEventSent) return false
555555

556+
isMultiDownloadEventSent = true
557+
556558
viewModelScope.launch {
557559
val downloads = mutableListOf<Download>()
558560

@@ -572,11 +574,11 @@ internal class BookDetailsViewModel(
572574
)
573575
)
574576
}
577+
578+
Timber.d("Total chapters to be downloaded is ${downloads.size}")
579+
downloaderAction(MultiDownload(downloads = downloads))
575580
}
576581
}
577-
578-
downloaderAction(MultiDownload(downloads = downloads))
579-
isMultiDownloadEventSent = true
580582
}
581583

582584
return isMultiDownloadEventSent

feature_downloader/src/main/java/com/allsoftdroid/audiobook/feature_downloader/data/Downloader.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,27 +140,27 @@ else if(downloadEvent instanceof Downloaded){
140140
}
141141

142142
private void addToDownloadQueueRequest(Download obj) {
143+
143144
mDownloadQueue.put(obj.getUrl(),obj);
144145

145-
if(mDownloadQueue.size()==1){
146-
Timber.d("Downloading as it is first request");
147-
downloadOldestRequest();
148-
}else{
149-
insertDownloadDatabase(DOWNLOADER_PENDING_ID,obj.getName(),obj.getUrl());
150-
Timber.d("Added to download queue");
151-
}
146+
insertDownloadDatabase(DOWNLOADER_PENDING_ID,obj.getName(),obj.getUrl());
152147

153148
mDownloadEventStore.publish(
154149
new Event<DownloadEvent>(new Downloading(obj.getUrl(),obj.getBookId(),obj.getChapterIndex()))
155150
);
151+
152+
if(mDownloadQueue.size()==1){
153+
Timber.d("Downloading as it is first request");
154+
downloadOldestRequest();
155+
}
156156
}
157157

158158
private void downloadNext(String removeUrl) {
159159
mDownloadQueue.remove(removeUrl);
160160
mDownloadObserver.stopWatching();
161161
isDownloading = false;
162162

163-
if(mDownloadQueue.size()>0){
163+
if(!mDownloadQueue.isEmpty()){
164164
downloadOldestRequest();
165165
}
166166

@@ -232,7 +232,7 @@ private long download(String URL, String name, String description, String subPat
232232

233233

234234
if(downloadId !=DOWNLOADER_PROTOCOL_NOT_SUPPORTED){
235-
Timber.d("Downloader doesn't support this protocol for file from URL: =>%s", URL);
235+
Timber.d("Downloader support this protocol for file from URL: =>%s", URL);
236236
insertDownloadDatabase(downloadId,name,URL);
237237
}else {
238238

@@ -383,8 +383,13 @@ public void removeFromDownloadDatabase(long downloadId){
383383

384384
@Override
385385
public void bulkDownload(List<Download> downloads){
386-
for(Download download : downloads){
387-
addToDownloadQueueRequest(download);
386+
if(!downloads.isEmpty()){
387+
Timber.d("Received bulk download request:%s", downloads.size());
388+
for(Download download : downloads){
389+
addToDownloadQueueRequest(download);
390+
}
391+
}else {
392+
Timber.d("Empty multi download request");
388393
}
389394
}
390395

feature_downloader/src/main/java/com/allsoftdroid/audiobook/feature_downloader/presentation/recycleviewAdapter/DownloaderAdapter.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,6 @@ public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder _holder, fin
129129
})
130130
);
131131

132-
133-
134132
if(mDownloader.getStatusByDownloadId(holder.downloadId)==null){
135133
downloadInterrupted(holder);
136134
}else if(mDownloader.getStatusByDownloadId(holder.downloadId).length>0 &&
@@ -180,7 +178,10 @@ private void downloadCompleted(final ViewHolderDownloadCursor holder,long downlo
180178
holder.mDeleteButton.setVisibility(View.VISIBLE);
181179
holder.mDeleteButton.setOnClickListener(view -> DeleteFileHandler(mDownloader,holder.downloadId));
182180
holder.mProgressBar.setVisibility(View.GONE);
183-
holder.mProgressDetails.setText(Utility.bytes2String(mDownloader.getProgress(downloadId)[1]));
181+
long[] progress = mDownloader.getProgress(downloadId);
182+
if(progress != null){
183+
holder.mProgressDetails.setText(Utility.bytes2String(progress[1]));
184+
}
184185
holder.mFileName.setOnClickListener(view -> mDownloader.openDownloadedFile(mContext,holder.downloadId));
185186
}
186187

@@ -210,6 +211,9 @@ private void DeleteFileHandler(final IDownloader downloader, final long download
210211
AlertDialog dialog = builder.create();
211212
dialog.setCanceledOnTouchOutside(false);
212213
dialog.show();
214+
}else {
215+
downloader.removeFromDownloadDatabase(downloadId);
216+
mDownloaderRefresh.ReloadAdapter();
213217
}
214218
}
215219

feature_mini_player/src/main/java/com/allsoftdroid/audiobook/feature_mini_player/presentation/viewModel/MiniPlayerViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ class MiniPlayerViewModel(
4747
currentPlayingIndex = event.position
4848
}
4949

50+
is PlaySelectedTrack -> {
51+
setShouldPlay(play = true)
52+
}
53+
5054
is Play -> {
5155
setShouldPlay(play = true)
5256
}

0 commit comments

Comments
 (0)