Skip to content

Commit 4a0c101

Browse files
committed
Clear history
1 parent fc554cf commit 4a0c101

File tree

5 files changed

+39
-1
lines changed

5 files changed

+39
-1
lines changed

app/src/main/java/com/paulcoding/hviewer/database/PostItemDao.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,7 @@ interface PostItemDao {
4444

4545
@Query("SELECT favorite FROM post_items WHERE url = :url")
4646
suspend fun isFavorite(url: String): Boolean
47+
48+
@Query("UPDATE post_items SET viewed = 0, viewedAt = 0 WHERE viewed = 1")
49+
suspend fun clearHistory()
4750
}

app/src/main/java/com/paulcoding/hviewer/ui/page/AppEntry.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,8 @@ fun AppEntry(intent: Intent?, appViewModel: AppViewModel) {
235235
navToCustomTag = { post, tag ->
236236
navToCustomTag(post, tag)
237237
},
238-
deleteHistory = appViewModel::deleteHistory
238+
clearHistory = appViewModel::clearHistory,
239+
deleteHistory = appViewModel::deleteHistory,
239240
)
240241
}
241242
animatedComposable(Route.WEBVIEW) {

app/src/main/java/com/paulcoding/hviewer/ui/page/AppViewModel.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,13 @@ class AppViewModel : ViewModel() {
109109
viewModelScope.launch {
110110
DatabaseProvider.getInstance().postItemDao()
111111
.setViewed(postItem.url, false)
112+
}
113+
}
112114

115+
fun clearHistory() {
116+
viewModelScope.launch {
117+
DatabaseProvider.getInstance().postItemDao()
118+
.clearHistory()
113119
}
114120
}
115121

app/src/main/java/com/paulcoding/hviewer/ui/page/history/HistoryPage.kt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,25 @@ import androidx.compose.foundation.lazy.staggeredgrid.StaggeredGridCells
1010
import androidx.compose.foundation.lazy.staggeredgrid.items
1111
import androidx.compose.material.icons.Icons
1212
import androidx.compose.material.icons.outlined.Delete
13+
import androidx.compose.material.icons.outlined.DeleteForever
1314
import androidx.compose.material3.ExperimentalMaterial3Api
15+
import androidx.compose.material3.MaterialTheme
1416
import androidx.compose.material3.Scaffold
1517
import androidx.compose.material3.Text
1618
import androidx.compose.material3.TopAppBar
1719
import androidx.compose.runtime.Composable
1820
import androidx.compose.runtime.collectAsState
1921
import androidx.compose.runtime.getValue
22+
import androidx.compose.runtime.mutableStateOf
23+
import androidx.compose.runtime.remember
24+
import androidx.compose.runtime.setValue
2025
import androidx.compose.ui.Modifier
2126
import androidx.compose.ui.res.stringResource
2227
import androidx.compose.ui.unit.dp
2328
import com.paulcoding.hviewer.R
2429
import com.paulcoding.hviewer.model.PostItem
2530
import com.paulcoding.hviewer.model.Tag
31+
import com.paulcoding.hviewer.ui.component.ConfirmDialog
2632
import com.paulcoding.hviewer.ui.component.HBackIcon
2733
import com.paulcoding.hviewer.ui.component.HEmpty
2834
import com.paulcoding.hviewer.ui.component.HIcon
@@ -35,9 +41,11 @@ fun HistoryPage(
3541
goBack: () -> Unit, appViewModel: AppViewModel,
3642
navToImages: (PostItem) -> Unit,
3743
navToCustomTag: (PostItem, Tag) -> Unit,
44+
clearHistory: () -> Unit,
3845
deleteHistory: (post: PostItem) -> Unit
3946
) {
4047
val historyPosts by appViewModel.historyPosts.collectAsState(initial = listOf())
48+
var showsConfirmClearHistory by remember { mutableStateOf(false) }
4149

4250
Scaffold(
4351
modifier = Modifier.fillMaxSize(),
@@ -47,6 +55,15 @@ fun HistoryPage(
4755
navigationIcon = {
4856
HBackIcon { goBack() }
4957
},
58+
actions = {
59+
HIcon(
60+
Icons.Outlined.DeleteForever,
61+
"Delete",
62+
tint = MaterialTheme.colorScheme.error
63+
) {
64+
showsConfirmClearHistory = true
65+
}
66+
}
5067
)
5168
}
5269
) { paddings ->
@@ -82,5 +99,14 @@ fun HistoryPage(
8299
message = "Such empty"
83100
)
84101
}
102+
103+
ConfirmDialog(showDialog = showsConfirmClearHistory,
104+
onDismiss = { showsConfirmClearHistory = false },
105+
title = stringResource(R.string.clear_history),
106+
text = stringResource(R.string.clear_history_confirm),
107+
onConfirm = {
108+
clearHistory()
109+
showsConfirmClearHistory = true
110+
})
85111
}
86112
}

app/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,6 @@
4545
<string name="up_to_Date">Up to date</string>
4646
<string name="h_viewer_scripts_url">https://github.com/paulcoding810/h-viewer-scripts</string>
4747
<string name="branch">Branch</string>
48+
<string name="clear_history">Clear history</string>
49+
<string name="clear_history_confirm">Are you sure you want to clear history?</string>
4850
</resources>

0 commit comments

Comments
 (0)