PluginProbe
Extendify / 3.2.2
Extendify v3.2.2
3.2.2 3.2.1 3.2.0 3.1.6 3.1.5 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.6 3.0.5 3.0.4 trunk 0.1.0 0.10.0 0.10.1 0.10.2 0.11.0 0.11.1 0.2.0 0.3.0 0.3.1 0.4.0 0.5.0 All 128 releases
← All changes | src/Shared/state/generate-images.js +16 -18 3.1.3 → 3.2.2 View file →
@@ -8,9 +8,8 @@
8 8 getItem: async () => await apiFetch({ path }),
9 9 setItem: async (_name, state) =>
10 10 await apiFetch({ path, method: 'POST', data: { state } }),
11 11 };
12 -// Values added here should also be added to Admin.php ln ~200
13 12 const startingState = {
14 13 aiImageOptions: {
15 14 prompt: '',
16 15 size: '1024x1024',
@@ -17,24 +16,28 @@
17 16 },
18 17 imageCredits: {
19 18 remaining: 10,
20 19 total: 10,
21 - refresh: undefined,
22 20 },
23 21 };
24 -const store = (set) => ({
22 +const store = (set, get) => ({
25 23 ...startingState,
26 24 ...safeParseJson(window.extSharedData?.globalState)?.state,
27 - updateImageCredits({ remaining, total, refresh }) {
28 - set((state) => ({
29 - imageCredits: {
30 - ...state.imageCredits,
31 - // Only update truthy values
32 - ...(remaining && { remaining }),
33 - ...(total && { total }),
34 - ...(refresh && { refresh }),
35 - },
36 - }));
25 + updateImageCredits({ remaining, total }) {
26 + const current = get().imageCredits;
27 + const next = {
28 + ...current,
29 + // A reported 0 has to survive the merge.
30 + ...(remaining != null && { remaining }),
31 + ...(total != null && { total }),
32 + };
33 +
34 + // Every set() costs a WP option write through the persist adapter.
35 + if (next.remaining === current.remaining && next.total === current.total) {
36 + return;
37 + }
38 +
39 + set({ imageCredits: next });
37 40 },
38 41 subtractOneCredit() {
39 42 set((state) => ({
40 43 imageCredits: {
@@ -39,15 +42,10 @@
39 42 set((state) => ({
40 43 imageCredits: {
41 44 ...state.imageCredits,
42 45 remaining: state.imageCredits.remaining - 1,
43 - // set to 24 hours from now (in ms)
44 - refresh: new Date(Date.now() + 24 * 60 * 60 * 1000).getTime(),
45 46 },
46 47 }));
47 - },
48 - resetImageCredits() {
49 - set({ imageCredits: startingState.imageCredits });
50 48 },
51 49 setAiImageOption(option, value) {
52 50 set((state) => ({
53 51 aiImageOptions: { ...state.aiImageOptions, [option]: value },