Readjusted code to not use localstorage, and just used redux for indicator

This commit is contained in:
Eshwar Tangirala
2025-05-22 20:10:52 -04:00
parent 0199a36238
commit 7b33717333
4 changed files with 18 additions and 27 deletions

View File

@@ -40,29 +40,18 @@ export const treeSlice = createSlice({
}
})
},
setHasNewEntries: (state, action: PayloadAction<{ feedId: number; value: boolean }>) => {
if (!state.rootCategory) return
visitCategoryTree(state.rootCategory, category => {
category.feeds = category.feeds.map(feed =>
feed.id === action.payload.feedId ? { ...feed, hasNewEntries: action.payload.value } : feed
)
})
},
},
extraReducers: builder => {
builder.addCase(reloadTree.fulfilled, (state, action) => {
visitCategoryTree(action.payload, category => {
category.feeds = category.feeds.map(feed => {
const storageKey = `feed-${feed.id}-unread`
const existing = localStorage.getItem(storageKey)
const prevUnread = Number.parseInt(existing || "0", 10)
const isNewFeed = existing === null
const hasNewEntries = isNewFeed ? true : feed.unread > prevUnread
if (!isNewFeed) {
localStorage.setItem(storageKey, feed.unread.toString())
}
return {
...feed,
hasNewEntries,
}
})
})
state.rootCategory = action.payload
})
builder.addCase(collapseTreeCategory.pending, (state, action) => {
@@ -85,4 +74,4 @@ export const treeSlice = createSlice({
},
})
export const { setMobileMenuOpen, toggleSidebar, incrementUnreadCount } = treeSlice.actions
export const { setMobileMenuOpen, toggleSidebar, incrementUnreadCount, setHasNewEntries } = treeSlice.actions

View File

@@ -1,7 +1,7 @@
import { createAppAsyncThunk } from "app/async-thunk"
import { client } from "app/client"
import { redirectToCategory, redirectToFeed } from "app/redirect/thunks"
import { incrementUnreadCount } from "app/tree/slice"
import { incrementUnreadCount, setHasNewEntries } from "app/tree/slice"
import type { CollapseRequest, Subscription } from "app/types"
import { flattenCategoryTree, visitCategoryTree } from "app/utils"
@@ -11,7 +11,6 @@ export const collapseTreeCategory = createAppAsyncThunk(
"tree/category/collapse",
async (req: CollapseRequest) => await client.category.collapse(req).then(r => r.data)
)
export const selectNextUnreadTreeItem = createAppAsyncThunk(
"tree/selectNextUnreadItem",
(
@@ -75,6 +74,7 @@ export const newFeedEntriesDiscovered = createAppAsyncThunk(
amount,
})
)
thunkApi.dispatch(setHasNewEntries({ feedId, value: true }))
}
}
)