Edit File by line
/home/zeestwma/ceyloniy.../wp-conte.../plugins/extendif.../src/HelpCent.../state
File: knowledge-base.js
import { safeParseJson } from '@shared/lib/parsing';
[0] Fix | Delete
import apiFetch from '@wordpress/api-fetch';
[1] Fix | Delete
import { create } from 'zustand';
[2] Fix | Delete
import { createJSONStorage, devtools, persist } from 'zustand/middleware';
[3] Fix | Delete
[4] Fix | Delete
const startingState = {
[5] Fix | Delete
articles: [],
[6] Fix | Delete
recentArticles: [],
[7] Fix | Delete
viewedArticles: [],
[8] Fix | Delete
searchTerm: '',
[9] Fix | Delete
// initialize the state with default values
[10] Fix | Delete
...(safeParseJson(window.extHelpCenterData.userData.supportArticlesData)
[11] Fix | Delete
?.state ?? {}),
[12] Fix | Delete
};
[13] Fix | Delete
[14] Fix | Delete
const state = (set, get) => ({
[15] Fix | Delete
...startingState,
[16] Fix | Delete
pushArticle: (article) => {
[17] Fix | Delete
const { slug, title } = article;
[18] Fix | Delete
const state = get();
[19] Fix | Delete
const lastViewedAt = new Date().toISOString();
[20] Fix | Delete
const firstViewedAt = lastViewedAt;
[21] Fix | Delete
const viewed = state.viewedArticles.find((a) => a.slug === slug);
[22] Fix | Delete
const viewedArticles = [
[23] Fix | Delete
// Remove the article if it's already in the list
[24] Fix | Delete
...state.viewedArticles.filter((a) => a.slug !== slug),
[25] Fix | Delete
// Either add the article or update the count
[26] Fix | Delete
viewed
[27] Fix | Delete
? { ...viewed, count: viewed.count + 1, lastViewedAt }
[28] Fix | Delete
: {
[29] Fix | Delete
slug,
[30] Fix | Delete
title,
[31] Fix | Delete
firstViewedAt,
[32] Fix | Delete
lastViewedAt,
[33] Fix | Delete
count: 1,
[34] Fix | Delete
},
[35] Fix | Delete
];
[36] Fix | Delete
[37] Fix | Delete
// Persist the detailed history to the server (don't wait for response)
[38] Fix | Delete
apiFetch({
[39] Fix | Delete
path: '/extendify/v1/help-center/support-articles-data',
[40] Fix | Delete
method: 'POST',
[41] Fix | Delete
data: { state: { viewedArticles } },
[42] Fix | Delete
});
[43] Fix | Delete
[44] Fix | Delete
set({
[45] Fix | Delete
articles: [article, ...state.articles],
[46] Fix | Delete
recentArticles: [article, ...state.recentArticles.slice(0, 9)],
[47] Fix | Delete
viewedArticles,
[48] Fix | Delete
});
[49] Fix | Delete
},
[50] Fix | Delete
popArticle: () => set((state) => ({ articles: state.articles.slice(1) })),
[51] Fix | Delete
clearArticles: () => set({ articles: [] }),
[52] Fix | Delete
reset: () => set({ articles: [], searchTerm: '' }),
[53] Fix | Delete
updateTitle: (slug, title) =>
[54] Fix | Delete
set((state) => ({
[55] Fix | Delete
articles: state.articles.map((article) => {
[56] Fix | Delete
// We don't always know the title until after we fetch the article data
[57] Fix | Delete
if (article.slug === slug) {
[58] Fix | Delete
article.title = title;
[59] Fix | Delete
}
[60] Fix | Delete
return article;
[61] Fix | Delete
}),
[62] Fix | Delete
})),
[63] Fix | Delete
clearSearchTerm: () => set({ searchTerm: '' }),
[64] Fix | Delete
setSearchTerm: (searchTerm) => set({ searchTerm }),
[65] Fix | Delete
});
[66] Fix | Delete
[67] Fix | Delete
export const useKnowledgeBaseStore = create(
[68] Fix | Delete
persist(devtools(state, { name: 'Extendify Help Center Knowledge Base' }), {
[69] Fix | Delete
name: `extendify-help-center-knowledge-base-${window.extSharedData.siteId}`,
[70] Fix | Delete
storage: createJSONStorage(() => sessionStorage),
[71] Fix | Delete
}),
[72] Fix | Delete
);
[73] Fix | Delete
[74] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function