forked from Archives/Athou_commafeed
mark all as read confirmation now also applies to the "shift+a" keyboard shortcut (#1744)
This commit is contained in:
@@ -28,6 +28,7 @@ interface EntriesState {
|
||||
loading: boolean
|
||||
search?: string
|
||||
scrollingToEntry: boolean
|
||||
markAllAsReadConfirmationDialogOpen: boolean
|
||||
}
|
||||
|
||||
const initialState: EntriesState = {
|
||||
@@ -41,6 +42,7 @@ const initialState: EntriesState = {
|
||||
hasMore: true,
|
||||
loading: false,
|
||||
scrollingToEntry: false,
|
||||
markAllAsReadConfirmationDialogOpen: false,
|
||||
}
|
||||
|
||||
export const entriesSlice = createSlice({
|
||||
@@ -61,6 +63,9 @@ export const entriesSlice = createSlice({
|
||||
setSearch: (state, action: PayloadAction<string>) => {
|
||||
state.search = action.payload
|
||||
},
|
||||
setMarkAllAsReadConfirmationDialogOpen: (state, action: PayloadAction<boolean>) => {
|
||||
state.markAllAsReadConfirmationDialogOpen = action.payload
|
||||
},
|
||||
},
|
||||
extraReducers: builder => {
|
||||
builder.addCase(markEntry.pending, (state, action) => {
|
||||
@@ -119,4 +124,4 @@ export const entriesSlice = createSlice({
|
||||
},
|
||||
})
|
||||
|
||||
export const { setSearch } = entriesSlice.actions
|
||||
export const { setSearch, setMarkAllAsReadConfirmationDialogOpen } = entriesSlice.actions
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { createAppAsyncThunk } from "app/async-thunk"
|
||||
import { client } from "app/client"
|
||||
import { Constants } from "app/constants"
|
||||
import { type EntrySource, type EntrySourceType, entriesSlice, setSearch } from "app/entries/slice"
|
||||
import { type EntrySource, type EntrySourceType, entriesSlice, setMarkAllAsReadConfirmationDialogOpen, setSearch } from "app/entries/slice"
|
||||
import type { RootState } from "app/store"
|
||||
import { reloadTree } from "app/tree/thunks"
|
||||
import type { Entry, MarkRequest, TagRequest } from "app/types"
|
||||
@@ -123,6 +123,32 @@ export const markAllEntries = createAppAsyncThunk(
|
||||
}
|
||||
)
|
||||
|
||||
export const markAllAsReadWithConfirmationIfRequired = createAppAsyncThunk(
|
||||
"entries/entry/markAllAsReadWithConfirmationIfRequired",
|
||||
async (_, thunkApi) => {
|
||||
const state = thunkApi.getState()
|
||||
const source = state.entries.source
|
||||
const entriesTimestamp = state.entries.timestamp ?? Date.now()
|
||||
const markAllAsReadConfirmation = state.user.settings?.markAllAsReadConfirmation
|
||||
|
||||
if (markAllAsReadConfirmation) {
|
||||
thunkApi.dispatch(setMarkAllAsReadConfirmationDialogOpen(true))
|
||||
} else {
|
||||
thunkApi.dispatch(
|
||||
markAllEntries({
|
||||
sourceType: source.type,
|
||||
req: {
|
||||
id: source.id,
|
||||
read: true,
|
||||
olderThan: Date.now(),
|
||||
insertedBefore: entriesTimestamp,
|
||||
},
|
||||
})
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
export const starEntry = createAppAsyncThunk(
|
||||
"entries/entry/star",
|
||||
(arg: { entry: Entry; starred: boolean }) => {
|
||||
|
||||
Reference in New Issue
Block a user