Skip to content

Commit 6f132d3

Browse files
authored
Merge pull request #2207 from akto-api-security/hotfix/fix_store_capacity
Removing deactivated collections from storage
2 parents b5cec10 + a087e00 commit 6f132d3

File tree

4 files changed

+46
-41
lines changed

4 files changed

+46
-41
lines changed

apps/dashboard/web/polaris_web/web/src/apps/dashboard/components/layouts/header/Headers.js

+1-10
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import SemiCircleProgress from '../../shared/SemiCircleProgress';
1111
import { usePolling } from '../../../../main/PollingProvider';
1212
import { debounce } from 'lodash';
1313
import LocalStore from '../../../../main/LocalStorageStore';
14-
import homeFunctions from '../../../../dashboard/pages/home/module';
1514

1615
function ContentWithIcon({icon,text, isAvatar= false}) {
1716
return(
@@ -40,7 +39,6 @@ export default function Header() {
4039

4140
const allRoutes = Store((state) => state.allRoutes)
4241
const allCollections = PersistStore((state) => state.allCollections)
43-
const setAllCollections = PersistStore(state => state.setAllCollections)
4442
var searchItemsArr = useMemo(() => func.getSearchItemsArr(allRoutes, allCollections), [])
4543
const [filteredItemsArr, setFilteredItemsArr] = useState(searchItemsArr)
4644
const toggleIsUserMenuOpen = useCallback(
@@ -65,15 +63,8 @@ export default function Header() {
6563
}
6664

6765
const debouncedSearch = debounce(async (searchQuery) => {
68-
69-
let apiCollections = []
70-
if (allCollections.length === 0 && searchItemsArr.length === 0) {
71-
apiCollections = await homeFunctions.getAllCollections()
72-
setAllCollections(apiCollections)
73-
}
74-
7566
if (searchItemsArr.length === 0) {
76-
searchItemsArr = func.getSearchItemsArr(allRoutes, apiCollections)
67+
searchItemsArr = func.getSearchItemsArr(allRoutes, allCollections)
7768
}
7869

7970
if(searchQuery.length === 0){

apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/Dashboard.jsx

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ function Dashboard() {
4242
const setSendEventOnLogin = LocalStore(state => state.setSendEventOnLogin)
4343
const fetchAllCollections = async () => {
4444
let apiCollections = await homeFunctions.getAllCollections()
45+
apiCollections = apiCollections.filter((x) => x?.deactivated !== true)
4546
const allCollectionsMap = func.mapCollectionIdToName(apiCollections)
4647
const allHostNameMap = func.mapCollectionIdToHostName(apiCollections)
4748
setHostNameMap(allHostNameMap)

apps/dashboard/web/polaris_web/web/src/apps/dashboard/pages/observe/api_collections/ApiCollections.jsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ function ApiCollections() {
306306
envTypeObj[c.id] = c.envType
307307
})
308308
setEnvTypeMap(envTypeObj)
309-
setAllCollections(apiCollectionsResp.apiCollections || [])
309+
setAllCollections(apiCollectionsResp.apiCollections.filter(x => x?.deactivated !== true) || [])
310310

311311
const shouldCallHeavyApis = (func.timeNow() - lastFetchedInfo.lastRiskScoreInfo) >= (5 * 60)
312312
// const shouldCallHeavyApis = false;
@@ -425,8 +425,8 @@ function ApiCollections() {
425425
summary.totalSensitiveEndpoints = sensitiveInfo.sensitiveUrls
426426
setSummaryData(summary)
427427

428-
setCollectionsMap(func.mapCollectionIdToName(tmp))
429-
const allHostNameMap = func.mapCollectionIdToHostName(tmp)
428+
setCollectionsMap(func.mapCollectionIdToName(tmp.filter(x => !x?.deactivated)))
429+
const allHostNameMap = func.mapCollectionIdToHostName(tmp.filter(x => !x?.deactivated))
430430
setHostNameMap(allHostNameMap)
431431

432432
tmp = {}
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,36 @@
1-
import {create} from "zustand"
2-
import {devtools, persist, createJSONStorage} from "zustand/middleware"
1+
import { create } from "zustand";
2+
import { devtools, persist, createJSONStorage } from "zustand/middleware";
33

44
const initialState = {
55
quickstartTasksCompleted: 0,
66
subCategoryFromSourceConfigMap: {},
77
active: '',
8-
collectionsMap: {},
9-
allCollections: [],
10-
hostNameMap: {},
11-
lastFetchedInfo: {
12-
lastRiskScoreInfo: 0,
13-
lastSensitiveInfo: 0,
14-
},
15-
lastFetchedResp: {
16-
criticalUrls: 0,
17-
riskScoreMap: {},
18-
},
8+
allCollections: [], // Persist only this
9+
collectionsMap: {}, // Keep in memory (not persisted)
10+
hostNameMap: {}, // Keep in memory (not persisted)
11+
lastFetchedInfo: { lastRiskScoreInfo: 0, lastSensitiveInfo: 0 },
12+
lastFetchedResp: { criticalUrls: 0, riskScoreMap: {} },
1913
lastFetchedSeverityResp: {},
2014
lastCalledSensitiveInfo: 0,
2115
lastFetchedSensitiveResp: [],
2216
selectedSampleApi: {},
23-
coverageMap:{},
24-
filtersMap:{},
17+
coverageMap: {},
18+
filtersMap: {},
2519
tableInitialState: {},
2620
trafficAlerts: [],
2721
sendEventOnLogin: false,
2822
tableSelectedTab: {},
2923
threatFiltersMap: null,
3024
};
3125

32-
let persistStore = (set) => ({
26+
let persistStore = (set, get) => ({
3327
...initialState,
3428
accessToken: null,
35-
storeAccessToken: (accessToken) => set({ accessToken: accessToken }),
29+
storeAccessToken: (accessToken) => set({ accessToken }),
3630
setQuickstartTasksCompleted: (quickstartTasksCompleted) => set({ quickstartTasksCompleted }),
3731
setSubCategoryFromSourceConfigMap: (subCategoryFromSourceConfigMap) => set({ subCategoryFromSourceConfigMap }),
3832
setActive: (selected) => set({ active: selected }),
39-
setCollectionsMap: (collectionsMap) => set({ collectionsMap }),
33+
4034
setAllCollections: (allCollections) => {
4135
const optimizedCollections = allCollections.map(({ id, displayName, urlsCount, deactivated, type, automated, startTs }) => ({
4236
id,
@@ -49,27 +43,46 @@ let persistStore = (set) => ({
4943
}));
5044
set({ allCollections: optimizedCollections });
5145
},
46+
setCollectionsMap: (collectionsMap) => set({ collectionsMap }),
5247
setHostNameMap: (hostNameMap) => set({ hostNameMap }),
5348
setLastFetchedInfo: (lastFetchedInfo) => set({ lastFetchedInfo }),
5449
setLastFetchedResp: (lastFetchedResp) => set({ lastFetchedResp }),
5550
setLastFetchedSeverityResp: (lastFetchedSeverityResp) => set({ lastFetchedSeverityResp }),
5651
setLastCalledSensitiveInfo: (lastCalledSensitiveInfo) => set({ lastCalledSensitiveInfo }),
5752
setLastFetchedSensitiveResp: (lastFetchedSensitiveResp) => set({ lastFetchedSensitiveResp }),
58-
setSelectedSampleApi: (selectedSampleApi) => set({selectedSampleApi: selectedSampleApi}),
59-
setCoverageMap:(coverageMap)=>{set({coverageMap: coverageMap})},
53+
setSelectedSampleApi: (selectedSampleApi) => set({ selectedSampleApi }),
54+
setCoverageMap: (coverageMap) => set({ coverageMap }),
6055
setFiltersMap: (filtersMap) => set({ filtersMap }),
6156
setTableInitialState: (tableInitialState) => set({ tableInitialState }),
62-
setTrafficAlerts: (trafficAlerts) =>set ({trafficAlerts}),
63-
setTableSelectedTab: (tableSelectedTab) => set({tableSelectedTab}),
64-
setThreatFiltersMap: (threatFiltersMap) => set({threatFiltersMap}),
57+
setTrafficAlerts: (trafficAlerts) => set({ trafficAlerts }),
58+
setTableSelectedTab: (tableSelectedTab) => set({ tableSelectedTab }),
59+
setThreatFiltersMap: (threatFiltersMap) => set({ threatFiltersMap }),
6560

6661
resetAll: () => set(initialState), // Reset function
67-
})
62+
});
6863

69-
persistStore = devtools(persistStore)
70-
persistStore = persist(persistStore,{storage: createJSONStorage(() => sessionStorage)})
64+
persistStore = devtools(persistStore);
65+
persistStore = persist(persistStore, {
66+
name: "persistedStore",
67+
storage: createJSONStorage(() => sessionStorage),
68+
partialize: (state) => ({
69+
allCollections: state.allCollections, // Persist only allCollections
70+
lastFetchedInfo: state.lastFetchedInfo,
71+
lastFetchedResp: state.lastFetchedResp,
72+
lastFetchedSeverityResp: state.lastFetchedSeverityResp,
73+
lastCalledSensitiveInfo: state.lastCalledSensitiveInfo,
74+
lastFetchedSensitiveResp: state.lastFetchedSensitiveResp,
75+
selectedSampleApi: state.selectedSampleApi,
76+
coverageMap: state.coverageMap,
77+
filtersMap: state.filtersMap,
78+
tableInitialState: state.tableInitialState,
79+
trafficAlerts: state.trafficAlerts,
80+
sendEventOnLogin: state.sendEventOnLogin,
81+
tableSelectedTab: state.tableSelectedTab,
82+
threatFiltersMap: state.threatFiltersMap,
83+
})
84+
});
7185

7286
const PersistStore = create(persistStore);
7387

74-
export default PersistStore
75-
88+
export default PersistStore;

0 commit comments

Comments
 (0)