diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt index 3267c7b1..724db235 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/dao/DownloadDao.kt @@ -39,9 +39,15 @@ interface DownloadDao { @Query("DELETE FROM downloads WHERE status='Processing'") suspend fun deleteProcessing() + @Query("DELETE FROM downloads WHERE status='Processing' AND id=:id") + suspend fun deleteSingleProcessing(id: Long) + @Update(onConflict = OnConflictStrategy.REPLACE) suspend fun update(item: DownloadItem) @Query("SELECT * FROM downloads ORDER BY id DESC LIMIT 1") fun getLatest() : DownloadItem + + @Query("UPDATE downloads SET status='Queued' WHERE status='Processing'") + suspend fun queueAllProcessing() } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt index 10340ef3..3629f3a2 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/repository/DownloadRepository.kt @@ -1,5 +1,6 @@ package com.deniscerri.ytdlnis.database.repository +import android.util.Log import androidx.lifecycle.LiveData import com.deniscerri.ytdlnis.database.dao.DownloadDao import com.deniscerri.ytdlnis.database.models.DownloadItem @@ -43,4 +44,12 @@ class DownloadRepository(private val downloadDao: DownloadDao) { suspend fun deleteProcessing(){ downloadDao.deleteProcessing() } + + suspend fun deleteSingleProcessing(item: DownloadItem){ + downloadDao.deleteSingleProcessing(item.id) + } + + suspend fun queueAllProcessing(){ + downloadDao.queueAllProcessing() + } } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt index 404e0a0b..7775140f 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/database/viewmodel/DownloadViewModel.kt @@ -14,6 +14,7 @@ import com.deniscerri.ytdlnis.database.models.DownloadItem import com.deniscerri.ytdlnis.database.models.Format import com.deniscerri.ytdlnis.database.models.ResultItem import com.deniscerri.ytdlnis.database.repository.DownloadRepository +import com.google.gson.Gson import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -139,7 +140,20 @@ class DownloadViewModel(application: Application) : AndroidViewModel(application return result } + fun deleteSingleProcessing(item: DownloadItem) = viewModelScope.launch(Dispatchers.IO) { + repository.deleteSingleProcessing(item) + } + fun deleteProcessing() = viewModelScope.launch(Dispatchers.IO) { repository.deleteProcessing() } + + fun cloneDownloadItem(item: DownloadItem) : DownloadItem { + val string = Gson().toJson(item, DownloadItem::class.java) + return Gson().fromJson(string, DownloadItem::class.java) + } + + fun queueAllProcessing()= viewModelScope.launch(Dispatchers.IO) { + repository.queueAllProcessing(); + } } \ No newline at end of file diff --git a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt index c8b2dd3b..52a71c1d 100644 --- a/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt +++ b/app/src/main/java/com/deniscerri/ytdlnis/ui/downloadcard/ConfigureDownloadBottomSheetDialog.kt @@ -8,6 +8,7 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.widget.Button +import android.widget.Toast import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.findFragment import androidx.lifecycle.ViewModelProvider @@ -22,6 +23,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.bottomsheet.BottomSheetDialogFragment import com.google.android.material.button.MaterialButton import com.google.android.material.tabs.TabLayout +import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -30,8 +32,7 @@ class ConfigureDownloadBottomSheetDialog(private val downloadItem: DownloadItem) private lateinit var tabLayout: TabLayout private lateinit var viewPager2: ViewPager2 private lateinit var fragmentAdapter : DownloadFragmentAdapter - private val currentItem = downloadItem.copy() - + private lateinit var currentItem : DownloadItem private lateinit var downloadViewModel: DownloadViewModel private lateinit var resultViewModel: ResultViewModel @@ -39,6 +40,7 @@ class ConfigureDownloadBottomSheetDialog(private val downloadItem: DownloadItem) super.onCreate(savedInstanceState) downloadViewModel = ViewModelProvider(this)[DownloadViewModel::class.java] resultViewModel = ViewModelProvider(this)[ResultViewModel::class.java] + currentItem = downloadViewModel.cloneDownloadItem(downloadItem) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -99,12 +101,12 @@ class ConfigureDownloadBottomSheetDialog(private val downloadItem: DownloadItem) val cancelBtn = view.findViewById(R.id.bottomsheet_cancel_button) cancelBtn.setOnClickListener{ - returnPreviousState(); dismiss() } val download = view.findViewById