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 -17 3.2.0 → 3.2.2 View file →
@@ -16,24 +16,28 @@
16 16 },
17 17 imageCredits: {
18 18 remaining: 10,
19 19 total: 10,
20 - refresh: undefined,
21 20 },
22 21 };
23 -const store = (set) => ({
22 +const store = (set, get) => ({
24 23 ...startingState,
25 24 ...safeParseJson(window.extSharedData?.globalState)?.state,
26 - updateImageCredits({ remaining, total, refresh }) {
27 - set((state) => ({
28 - imageCredits: {
29 - ...state.imageCredits,
30 - // Only update truthy values
31 - ...(remaining && { remaining }),
32 - ...(total && { total }),
33 - ...(refresh && { refresh }),
34 - },
35 - }));
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 });
36 40 },
37 41 subtractOneCredit() {
38 42 set((state) => ({
39 43 imageCredits: {
@@ -38,15 +42,10 @@
38 42 set((state) => ({
39 43 imageCredits: {
40 44 ...state.imageCredits,
41 45 remaining: state.imageCredits.remaining - 1,
42 - // set to 24 hours from now (in ms)
43 - refresh: new Date(Date.now() + 24 * 60 * 60 * 1000).getTime(),
44 46 },
45 47 }));
46 - },
47 - resetImageCredits() {
48 - set({ imageCredits: startingState.imageCredits });
49 48 },
50 49 setAiImageOption(option, value) {
51 50 set((state) => ({
52 51 aiImageOptions: { ...state.aiImageOptions, [option]: value },