diff --git a/app/build.gradle b/app/build.gradle index 3913a0074..dca6633c8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -110,7 +110,7 @@ dependencies { // https://developer.android.com/jetpack/androidx/releases/compose-material3 implementation platform("androidx.compose:compose-bom:2023.01.00") implementation "androidx.compose.material:material-icons-extended" - implementation "androidx.compose.material3:material3" + implementation "androidx.compose.material3:material3:1.1.0-alpha04" implementation "androidx.constraintlayout:constraintlayout:2.2.0-alpha05" implementation "androidx.coordinatorlayout:coordinatorlayout:1.2.0" diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt index 29e418256..443293896 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/history/HistoryScreen.kt @@ -20,16 +20,19 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Menu import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card +import androidx.compose.material3.DismissDirection import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedCard import androidx.compose.material3.Scaffold +import androidx.compose.material3.SwipeToDismiss import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.rememberDismissState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf @@ -113,15 +116,30 @@ fun HistoryScreen(hostFragment: HistoryComposeScreenFragmentBridge) { items( items = historyData, key = { item -> item.gid } - ) { - it?.let { - InfoCard( - { hostFragment.navToDetail(it) }, - { - selectedGalleryInfo = it - dialogStatus = HistoryScreenDialogStatus.SELECT_ITEM + ) { info -> + info?.let { + val dismissState = rememberDismissState( + confirmValueChange = { + coroutineScope.launchIO { + EhDB.deleteHistoryInfo(info) + } + true + } + ) + SwipeToDismiss( + state = dismissState, + background = {}, + dismissContent = { + InfoCard( + { hostFragment.navToDetail(it) }, + { + selectedGalleryInfo = it + dialogStatus = HistoryScreenDialogStatus.SELECT_ITEM + }, + info = it, + ) }, - info = it, + directions = setOf(DismissDirection.EndToStart) ) } }