2023-03-13 14:29:34 +01:00
|
|
|
import { create } from 'zustand';
|
|
|
|
|
|
2023-04-08 13:27:17 +02:00
|
|
|
const useGeneralStore = create((set) => ({
|
2023-03-13 14:29:34 +01:00
|
|
|
bodyStyle: JSON.parse(localStorage.getItem('bodyStyle')) || {
|
2023-04-29 12:47:30 +02:00
|
|
|
background: '#ffe url(assets/fade.png) top repeat-x',
|
2023-03-13 14:29:34 +01:00
|
|
|
color: 'maroon',
|
|
|
|
|
fontFamily: 'Helvetica, Arial, sans-serif',
|
|
|
|
|
},
|
|
|
|
|
setBodyStyle: (bodyStyle) => {
|
|
|
|
|
localStorage.setItem('bodyStyle', JSON.stringify(bodyStyle));
|
|
|
|
|
set(() => ({ bodyStyle }));
|
|
|
|
|
},
|
|
|
|
|
|
2023-04-07 17:47:51 +02:00
|
|
|
captchaResponse: '',
|
|
|
|
|
setCaptchaResponse: (response) => set({ captchaResponse: response }),
|
|
|
|
|
|
|
|
|
|
challengesArray: [],
|
|
|
|
|
setChallengesArray: (challengesArray) => set({ challengesArray }),
|
|
|
|
|
|
2023-03-20 17:08:05 +01:00
|
|
|
defaultSubplebbits: [],
|
|
|
|
|
setDefaultSubplebbits: (subplebbits) => set({ defaultSubplebbits: subplebbits }),
|
|
|
|
|
|
2023-10-02 21:40:47 +02:00
|
|
|
defaultNsfwSubplebbits: [],
|
|
|
|
|
setDefaultNsfwSubplebbits: (subplebbits) => set({ defaultNsfwSubplebbits: subplebbits }),
|
|
|
|
|
|
2023-08-09 12:11:53 +02:00
|
|
|
deletePost: false,
|
|
|
|
|
setDeletePost: (deletePost) => set({ deletePost }),
|
|
|
|
|
|
2023-05-23 14:56:25 +02:00
|
|
|
editedComment: '',
|
|
|
|
|
setEditedComment: (comment) => set({ editedComment: comment }),
|
|
|
|
|
|
2023-09-16 17:29:14 +02:00
|
|
|
editedComments: {},
|
|
|
|
|
setEditedComments: (comments) => set({ editedComments: comments }),
|
|
|
|
|
|
2023-07-14 20:57:47 +02:00
|
|
|
feedCacheStates: {},
|
2023-09-28 21:05:03 +02:00
|
|
|
setFeedCacheState: (address, isCached) =>
|
|
|
|
|
set((prev) => ({
|
|
|
|
|
feedCacheStates: {
|
|
|
|
|
...prev.feedCacheStates,
|
|
|
|
|
[address]: isCached,
|
|
|
|
|
},
|
|
|
|
|
})),
|
2023-07-14 20:57:47 +02:00
|
|
|
|
2023-05-26 10:10:51 +02:00
|
|
|
isAuthorDelete: false,
|
|
|
|
|
setIsAuthorDelete: (isAuthorDelete) => set({ isAuthorDelete }),
|
|
|
|
|
|
|
|
|
|
isAuthorEdit: false,
|
|
|
|
|
setIsAuthorEdit: (isAuthorEdit) => set({ isAuthorEdit }),
|
|
|
|
|
|
2023-04-09 20:55:55 +02:00
|
|
|
isCaptchaOpen: false,
|
|
|
|
|
setIsCaptchaOpen: (isOpen) => set({ isCaptchaOpen: isOpen }),
|
|
|
|
|
|
2023-08-09 12:11:53 +02:00
|
|
|
isEditModalOpen: false,
|
|
|
|
|
setIsEditModalOpen: (isOpen) => set({ isEditModalOpen: isOpen }),
|
|
|
|
|
|
2023-09-28 21:05:03 +02:00
|
|
|
canModerate: false,
|
|
|
|
|
setCanModerate: (canModerate) => set({ canModerate }),
|
2023-08-09 12:11:53 +02:00
|
|
|
|
2023-05-19 16:20:02 +02:00
|
|
|
isModerationOpen: false,
|
|
|
|
|
setIsModerationOpen: (isOpen) => set({ isModerationOpen: isOpen }),
|
|
|
|
|
|
2023-05-26 10:10:51 +02:00
|
|
|
isModEdit: false,
|
|
|
|
|
setIsModEdit: (isModEdit) => set({ isModEdit }),
|
|
|
|
|
|
2023-03-20 17:08:05 +01:00
|
|
|
isSettingsOpen: false,
|
|
|
|
|
setIsSettingsOpen: (isOpen) => set({ isSettingsOpen: isOpen }),
|
2023-04-07 17:47:51 +02:00
|
|
|
|
2023-05-19 18:10:22 +02:00
|
|
|
moderatingCommentCid: '',
|
|
|
|
|
setModeratingCommentCid: (cid) => set({ moderatingCommentCid: cid }),
|
|
|
|
|
|
2023-08-09 12:11:53 +02:00
|
|
|
originalCommentContent: null,
|
|
|
|
|
setOriginalCommentContent: (content) => set({ originalCommentContent: content }),
|
|
|
|
|
|
2023-04-07 17:47:51 +02:00
|
|
|
pendingComment: '',
|
|
|
|
|
setPendingComment: (comment) => set({ pendingComment: comment }),
|
|
|
|
|
|
2023-04-24 15:48:30 +02:00
|
|
|
pendingCommentIndex: null,
|
|
|
|
|
setPendingCommentIndex: (index) => set({ pendingCommentIndex: index }),
|
|
|
|
|
|
2023-04-07 17:47:51 +02:00
|
|
|
publishedComment: '',
|
|
|
|
|
setPublishedComment: (comment) => set({ publishedComment: comment }),
|
2023-04-22 14:02:20 +02:00
|
|
|
|
2023-06-24 11:44:36 +02:00
|
|
|
replyQuoteCid: '',
|
|
|
|
|
setReplyQuoteCid: (cid) => set({ replyQuoteCid: cid }),
|
|
|
|
|
|
2023-04-22 14:02:20 +02:00
|
|
|
resolveCaptchaPromise: null,
|
|
|
|
|
setResolveCaptchaPromise: (resolve) => set({ resolveCaptchaPromise: resolve }),
|
2023-09-28 21:05:03 +02:00
|
|
|
|
2023-03-13 14:29:34 +01:00
|
|
|
selectedAddress: '',
|
|
|
|
|
setSelectedAddress: (address) => set({ selectedAddress: address }),
|
2023-04-12 21:56:25 +02:00
|
|
|
|
|
|
|
|
selectedParentCid: '',
|
|
|
|
|
setSelectedParentCid: (parentCid) => set({ selectedParentCid: parentCid }),
|
|
|
|
|
|
|
|
|
|
selectedShortCid: '',
|
|
|
|
|
setSelectedShortCid: (shortCid) => set({ selectedShortCid: shortCid }),
|
2023-09-28 21:05:03 +02:00
|
|
|
|
2023-03-13 14:29:34 +01:00
|
|
|
selectedStyle: localStorage.getItem('selectedStyle') || 'Yotsuba',
|
|
|
|
|
setSelectedStyle: (style) => {
|
|
|
|
|
localStorage.setItem('selectedStyle', style);
|
|
|
|
|
set({ selectedStyle: style });
|
|
|
|
|
},
|
2023-06-24 16:36:59 +02:00
|
|
|
|
|
|
|
|
selectedText: '',
|
|
|
|
|
setSelectedText: (text) => set({ selectedText: text }),
|
2023-09-28 21:05:03 +02:00
|
|
|
|
2023-03-20 17:08:05 +01:00
|
|
|
selectedThread: '',
|
|
|
|
|
setSelectedThread: (thread) => set({ selectedThread: thread }),
|
|
|
|
|
|
|
|
|
|
selectedTitle: '',
|
|
|
|
|
setSelectedTitle: (title) => set({ selectedTitle: title }),
|
|
|
|
|
|
|
|
|
|
showPostForm: false,
|
|
|
|
|
setShowPostForm: (show) => set({ showPostForm: show }),
|
|
|
|
|
|
|
|
|
|
showPostFormLink: true,
|
|
|
|
|
setShowPostFormLink: (show) => set({ showPostFormLink: show }),
|
2023-03-13 14:29:34 +01:00
|
|
|
|
2023-06-24 12:38:14 +02:00
|
|
|
triggerInsertion: 0,
|
|
|
|
|
setTriggerInsertion: (trigger) => set({ triggerInsertion: trigger }),
|
2023-03-13 14:29:34 +01:00
|
|
|
}));
|
|
|
|
|
|
2023-09-28 21:05:03 +02:00
|
|
|
export default useGeneralStore;
|