bugfix: use List instead of Collection for ModelDao's deletion

This commit is contained in:
Han Yin 2025-04-14 18:51:35 -07:00
parent 5de0b5d6d0
commit 290a6bfebe
4 changed files with 5 additions and 4 deletions

View File

@ -16,7 +16,7 @@ interface ModelDao {
suspend fun getModelById(id: String): ModelEntity? suspend fun getModelById(id: String): ModelEntity?
@Query("SELECT * FROM models WHERE id IN (:ids)") @Query("SELECT * FROM models WHERE id IN (:ids)")
suspend fun getModelsByIds(ids: Collection<String>): List<ModelEntity> suspend fun getModelsByIds(ids: List<String>): List<ModelEntity>
@Insert(onConflict = OnConflictStrategy.REPLACE) @Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insertModel(model: ModelEntity) suspend fun insertModel(model: ModelEntity)

View File

@ -44,7 +44,7 @@ interface ModelRepository {
suspend fun importModel(uri: Uri, progressTracker: ImportProgressTracker? = null): ModelInfo suspend fun importModel(uri: Uri, progressTracker: ImportProgressTracker? = null): ModelInfo
suspend fun deleteModel(modelId: String) suspend fun deleteModel(modelId: String)
suspend fun deleteModels(modelIds: Collection<String>) suspend fun deleteModels(modelIds: List<String>)
fun interface ImportProgressTracker { fun interface ImportProgressTracker {
fun onProgress(progress: Float) // 0.0f to 1.0f fun onProgress(progress: Float) // 0.0f to 1.0f
@ -229,7 +229,7 @@ class ModelRepositoryImpl @Inject constructor(
} }
} }
override suspend fun deleteModels(modelIds: Collection<String>) { override suspend fun deleteModels(modelIds: List<String>) {
modelDao.getModelsByIds(modelIds).let { models -> modelDao.getModelsByIds(modelIds).let { models ->
models.forEach { model -> models.forEach { model ->
File(model.path).let { File(model.path).let {

View File

@ -137,6 +137,7 @@ fun ModelsManagementScreen(
onClick = { onClick = {
// Delete selected // Delete selected
if (selectedModels.isNotEmpty()) { if (selectedModels.isNotEmpty()) {
// TODO-han.yin: pop up an AlertDialog asking user for confirmation
viewModel.deleteModels(selectedModels) viewModel.deleteModels(selectedModels)
exitSelectionMode() exitSelectionMode()
} }

View File

@ -73,7 +73,7 @@ class ModelsManagementViewModel @Inject constructor(
fun deleteModels(models: Map<String, ModelInfo>) = fun deleteModels(models: Map<String, ModelInfo>) =
viewModelScope.launch { viewModelScope.launch {
modelRepository.deleteModels(models.keys) modelRepository.deleteModels(models.keys.toList())
} }
private val _importState = MutableStateFlow<ModelImportState>(ModelImportState.Idle) private val _importState = MutableStateFlow<ModelImportState>(ModelImportState.Idle)