refactor: virtual message feed

This commit is contained in:
Tristan Yang
2023-03-14 08:32:26 +08:00
parent 0bf167e4e8
commit 184191643a
11 changed files with 245 additions and 455 deletions
@@ -1,3 +1,4 @@
import localforage from "localforage";
import clearTable from "./clear.handler";
interface Params {
payload: any;
@@ -5,7 +6,7 @@ interface Params {
operation: string;
}
export default async function handler({ operation, data = {}, payload }: Params) {
const table = window.CACHE["footprint"];
const table = window.CACHE["footprint"] as typeof localforage;;
if (operation.startsWith("reset")) {
clearTable("footprint");
return;
@@ -20,7 +21,14 @@ export default async function handler({ operation, data = {}, payload }: Params)
case "updateAfterMid":
{
const afterMid = payload;
await table?.setItem("afterMid", afterMid);
// console.log("local after mid", afterMid, data);
table.getItem("afterMid").then((val) => {
const storedNum = Number(val ?? 0);
if (storedNum < afterMid) {
table?.setItem("afterMid", afterMid);
}
});
}
break;
case "updateMute":
+2 -1
View File
@@ -160,9 +160,10 @@ export const messageApi = createApi({
},
async onQueryStarted(params, { dispatch, getState, queryFulfilled }) {
const { data: messages } = await queryFulfilled;
const fromHistory = true;
if (messages?.length) {
messages.forEach((msg) => {
handleChatMessage(msg, dispatch, getState() as RootState);
handleChatMessage(msg, dispatch, getState() as RootState, fromHistory);
});
}
}
+5 -1
View File
@@ -57,7 +57,11 @@ const footprintSlice = createSlice({
state.usersVersion = action.payload;
},
updateAfterMid(state, action: PayloadAction<number>) {
state.afterMid = action.payload;
const newMid = action.payload;
// 如果新mid小于已有的afterMid,则不必更新
if (state.afterMid < newMid) {
state.afterMid = action.payload;
}
},
updateAutoDeleteSetting(state, action: PayloadAction<AutoDeleteMessageSettingDTO>) {
const payload = action.payload;