Fix deleting lists

pull/3207/head
Alex Baker 12 months ago
parent 932d9eec75
commit b3f29dc0fb

@ -112,7 +112,7 @@ abstract class BaseListSettingsActivity : ThemedInjectingAppCompatActivity(), Co
title: String = toolbarTitle ?: "",
requestKeyboard: Boolean = isNew,
optionButton: @Composable () -> Unit = {
if (!isNew) DeleteButton(toolbarTitle ?: "") { promptDelete() }
if (!isNew) DeleteButton(toolbarTitle ?: "") { delete() }
},
extensionContent: @Composable ColumnScope.() -> Unit = {}
) {

@ -161,10 +161,11 @@ class FilterSettingsActivity : BaseListSettingsActivity() {
}
override suspend fun delete() {
filterDao.delete(filter!!.id)
setResult(
viewModel.delete {
setResult(
Activity.RESULT_OK, Intent(TaskListFragment.ACTION_DELETED).putExtra(TOKEN_FILTER, filter))
finish()
finish()
}
}
private fun help() = openUri(R.string.url_filters)
@ -184,7 +185,7 @@ class FilterSettingsActivity : BaseListSettingsActivity() {
IconButton(onClick = { help() }) {
Icon(imageVector = Icons.Outlined.Help, contentDescription = "")
}
} else DeleteButton(filter?.title ?: ""){ promptDelete() }
} else DeleteButton(filter?.title ?: ""){ delete() }
}
) {
FilterCondition(

@ -15,6 +15,7 @@ import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import org.tasks.activities.FilterSettingsActivity.Companion.EXTRA_CRITERIA
import org.tasks.activities.FilterSettingsActivity.Companion.TOKEN_FILTER
import org.tasks.data.dao.FilterDao
import org.tasks.data.dao.TaskDao.TaskCriteria.activeAndVisible
import org.tasks.data.db.Database
import org.tasks.data.entity.Task
@ -32,7 +33,8 @@ import kotlin.math.max
class FilterSettingsViewModel @Inject constructor(
savedStateHandle: SavedStateHandle,
private val filterCriteriaProvider: FilterCriteriaProvider,
private val database: Database
private val database: Database,
private val filterDao: FilterDao,
) : ViewModel() {
data class ViewState(
val filter: CustomFilter? = null,
@ -154,4 +156,9 @@ class FilterSettingsViewModel @Inject constructor(
}
)
}
fun delete(onCompleted: () -> Unit) = viewModelScope.launch {
_viewState.value.filter?.id?.let { filterDao.delete(it) }
onCompleted()
}
}

@ -199,7 +199,7 @@ abstract class BaseCaldavCalendarSettingsActivity : BaseListSettingsActivity() {
@Composable
fun BaseCaldavSettingsContent (
optionButton: @Composable () -> Unit = { if (!isNew) DeleteButton(caldavCalendar?.name ?: "") { promptDelete() } },
optionButton: @Composable () -> Unit = { if (!isNew) DeleteButton(caldavCalendar?.name ?: "") { delete() } },
extensionContent: @Composable ColumnScope.() -> Unit = {}
) {
BaseSettingsContent (

@ -22,7 +22,7 @@ class LocalListSettingsActivity : BaseCaldavCalendarSettingsActivity() {
setContent {
TasksTheme {
BaseCaldavSettingsContent (
optionButton = { if (!isNew && canDelete) DeleteButton(caldavCalendar?.name ?: "") { promptDelete() } }
optionButton = { if (!isNew && canDelete) DeleteButton(caldavCalendar?.name ?: "") { delete() } }
)
}
}

@ -4,33 +4,34 @@ import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.Delete
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue
import androidx.compose.ui.res.stringResource
import kotlinx.coroutines.launch
import org.tasks.R
import org.tasks.compose.settings.PromptAction
@Composable
fun DeleteButton(
title: String,
onDelete: () -> Unit
onDelete: suspend () -> Unit
) {
val scope = rememberCoroutineScope()
var promptDelete by remember { mutableStateOf(false) }
IconButton(onClick = { promptDelete = true }) {
Icon(
imageVector = Icons.Outlined.Delete,
contentDescription = stringResource(id = R.string.delete),
tint = MaterialTheme.colorScheme.onSurface,
)
}
PromptAction(
showDialog = promptDelete,
title = stringResource(id = R.string.delete_tag_confirmation, title),
onAction = { onDelete() },
onAction = { scope.launch { onDelete() } },
onCancel = { promptDelete = false },
)
}

Loading…
Cancel
Save