@eventlook/sdk 1.7.4 → 1.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/{index-EJYDEfV5.js → index-Dh-sV_wk.js} +34 -13
- package/dist/cjs/index-Dh-sV_wk.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/{index.umd-CfKeY_Zj.js → index.umd-CJ-ZDtw8.js} +2 -2
- package/dist/cjs/{index.umd-CfKeY_Zj.js.map → index.umd-CJ-ZDtw8.js.map} +1 -1
- package/dist/esm/{index-CAjHrQdF.js → index-DPHu9Sfs.js} +34 -13
- package/dist/esm/index-DPHu9Sfs.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/{index.umd-5znOX_Ww.js → index.umd-DPIwz_aJ.js} +2 -2
- package/dist/esm/{index.umd-DjIEPZqJ.js.map → index.umd-DPIwz_aJ.js.map} +1 -1
- package/package.json +1 -1
- package/src/form/tickets/TicketSelection.tsx +17 -5
- package/src/form/tickets/TicketWithMerchandiseSelection.tsx +14 -5
- package/dist/cjs/index-CXsZ9BsP.js +0 -39500
- package/dist/cjs/index-CXsZ9BsP.js.map +0 -1
- package/dist/cjs/index-EJYDEfV5.js.map +0 -1
- package/dist/cjs/index.umd-DR37hmpO.js +0 -13397
- package/dist/cjs/index.umd-DR37hmpO.js.map +0 -1
- package/dist/esm/index-CAjHrQdF.js.map +0 -1
- package/dist/esm/index-z31XSEKz.js +0 -39479
- package/dist/esm/index-z31XSEKz.js.map +0 -1
- package/dist/esm/index.umd-5znOX_Ww.js.map +0 -1
- package/dist/esm/index.umd-DjIEPZqJ.js +0 -13395
package/package.json
CHANGED
|
@@ -121,7 +121,13 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
|
|
|
121
121
|
};
|
|
122
122
|
|
|
123
123
|
const selectedTickets = async () => {
|
|
124
|
-
|
|
124
|
+
// Use the cache we already have instead of revalidating here. A network
|
|
125
|
+
// revalidate refetches active-releases and returns the next wave as
|
|
126
|
+
// locked again, clobbering the local unlock below (mutate(..., false)).
|
|
127
|
+
// Since this runs in an effect keyed on [tickets, activeReleases], that
|
|
128
|
+
// re-locking re-fires the effect and we ping-pong, hammering
|
|
129
|
+
// /active-releases several times a second (and dropping the user's add).
|
|
130
|
+
const releases = activeReleases;
|
|
125
131
|
const currentReleases = releases || activeReleases || [];
|
|
126
132
|
const allFilled = tickets.filter((item) => !item.releaseId || !item.quantity);
|
|
127
133
|
|
|
@@ -142,19 +148,25 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
|
|
|
142
148
|
item.order === release.order - 1
|
|
143
149
|
);
|
|
144
150
|
|
|
145
|
-
|
|
151
|
+
// The first wave in a category is never gated by a previous one.
|
|
152
|
+
if (!previousRelease) return release;
|
|
146
153
|
|
|
147
154
|
const previousTicket = tickets.find((ticket) => ticket.releaseId === previousRelease.id);
|
|
148
155
|
const previousMaxSelectable = Math.min(
|
|
149
156
|
previousRelease.availableTickets || 0,
|
|
150
157
|
maxTicketsPerOrder
|
|
151
158
|
);
|
|
152
|
-
|
|
159
|
+
// A later wave is unlocked only while the previous wave is filled to its
|
|
160
|
+
// max. Derive the lock from the cart both ways: unlock when the previous
|
|
161
|
+
// wave is maxed, re-lock when the customer reduces it again. (We can't
|
|
162
|
+
// lean on a server refetch to re-lock — that revalidation was the cause
|
|
163
|
+
// of the active-releases loop.)
|
|
164
|
+
const shouldBeLocked = Number(previousTicket?.quantity || 0) < previousMaxSelectable;
|
|
153
165
|
|
|
154
|
-
if (
|
|
166
|
+
if (release.locked === shouldBeLocked) return release;
|
|
155
167
|
|
|
156
168
|
hasChanges = true;
|
|
157
|
-
return { ...release, locked:
|
|
169
|
+
return { ...release, locked: shouldBeLocked };
|
|
158
170
|
});
|
|
159
171
|
|
|
160
172
|
if (hasChanges) {
|
|
@@ -62,7 +62,11 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
62
62
|
const isReleaseSelected = (id: number) => !!tickets.find((ticket) => ticket.releaseId === id);
|
|
63
63
|
|
|
64
64
|
const selectedTickets = async () => {
|
|
65
|
-
|
|
65
|
+
// Use the cache we already have instead of revalidating here. A network
|
|
66
|
+
// revalidate refetches active-releases and returns the next wave as locked
|
|
67
|
+
// again, clobbering the local lock state below and ping-ponging the effect
|
|
68
|
+
// (deps [tickets, activeReleases]) into an active-releases refetch loop.
|
|
69
|
+
const releases = activeReleases;
|
|
66
70
|
const currentReleases = releases || activeReleases || [];
|
|
67
71
|
const allFilled = tickets.filter((item) => !item.releaseId || !item.quantity);
|
|
68
72
|
|
|
@@ -84,19 +88,24 @@ const TicketWithMerchandiseSelection: React.FC<Props> = ({ event }) => {
|
|
|
84
88
|
item.order === release.order - 1
|
|
85
89
|
);
|
|
86
90
|
|
|
87
|
-
|
|
91
|
+
// The first wave in a category is never gated by a previous one.
|
|
92
|
+
if (!previousRelease) return release;
|
|
88
93
|
|
|
89
94
|
const previousTicket = tickets.find((ticket) => ticket.releaseId === previousRelease.id);
|
|
90
95
|
const previousMaxSelectable = Math.min(
|
|
91
96
|
previousRelease.availableTickets || 0,
|
|
92
97
|
maxTicketsPerOrder
|
|
93
98
|
);
|
|
94
|
-
|
|
99
|
+
// Derive the lock from the cart both ways: unlock the next wave while the
|
|
100
|
+
// previous one is filled to its max, re-lock it when the customer reduces
|
|
101
|
+
// it again (we can't lean on a server refetch to re-lock — that was the
|
|
102
|
+
// active-releases loop).
|
|
103
|
+
const shouldBeLocked = Number(previousTicket?.quantity || 0) < previousMaxSelectable;
|
|
95
104
|
|
|
96
|
-
if (
|
|
105
|
+
if (release.locked === shouldBeLocked) return release;
|
|
97
106
|
|
|
98
107
|
hasChanges = true;
|
|
99
|
-
return { ...release, locked:
|
|
108
|
+
return { ...release, locked: shouldBeLocked };
|
|
100
109
|
});
|
|
101
110
|
|
|
102
111
|
if (hasChanges) {
|