Reduce profile sub spam

This commit is contained in:
2023-01-05 19:48:26 +00:00
parent e61d25664b
commit 6a28f2dc5a

View File

@ -1,4 +1,5 @@
import { createSlice } from '@reduxjs/toolkit' import { createSlice } from '@reduxjs/toolkit'
import { ProfileCacheExpire } from '../Const';
const UsersSlice = createSlice({ const UsersSlice = createSlice({
name: "Users", name: "Users",
@ -19,21 +20,33 @@ const UsersSlice = createSlice({
if (!Array.isArray(keys)) { if (!Array.isArray(keys)) {
keys = [keys]; keys = [keys];
} }
let changes = false;
let fromCache = false;
let temp = new Set(state.pubKeys); let temp = new Set(state.pubKeys);
for (let k of keys) { for (let k of keys) {
if (!temp.has(k)) {
changes = true;
temp.add(k); temp.add(k);
// load from cache // load from cache
let cache = window.localStorage.getItem(`user:${k}`); let cache = window.localStorage.getItem(`user:${k}`);
if (cache) { if (cache) {
let ud = JSON.parse(cache); let ud = JSON.parse(cache);
if (ud.loaded > new Date().getTime() - ProfileCacheExpire) {
state.users[ud.pubkey] = ud; state.users[ud.pubkey] = ud;
fromCache = true;
} }
} }
}
}
if (changes) {
state.pubKeys = Array.from(temp); state.pubKeys = Array.from(temp);
if (fromCache) {
state.users = { state.users = {
...state.users ...state.users
}; };
}
}
}, },
setUserData: (state, action) => { setUserData: (state, action) => {
let ud = action.payload; let ud = action.payload;