@eventlook/sdk 1.7.5 → 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-JFTewzLo.js → index-Dh-sV_wk.js} +27 -12
- package/dist/cjs/index-Dh-sV_wk.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/{index.umd-5Ynq-KNn.js → index.umd-CJ-ZDtw8.js} +2 -2
- package/dist/cjs/{index.umd-5Ynq-KNn.js.map → index.umd-CJ-ZDtw8.js.map} +1 -1
- package/dist/esm/{index-xzTGq0R0.js → index-DPHu9Sfs.js} +27 -12
- package/dist/esm/index-DPHu9Sfs.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/{index.umd-hNIp9Oic.js → index.umd-DPIwz_aJ.js} +2 -2
- package/dist/esm/{index.umd-hNIp9Oic.js.map → index.umd-DPIwz_aJ.js.map} +1 -1
- package/package.json +1 -1
- package/src/form/tickets/TicketSelection.tsx +10 -4
- package/src/form/tickets/TicketWithMerchandiseSelection.tsx +14 -5
- package/dist/cjs/index-JFTewzLo.js.map +0 -1
- package/dist/esm/index-xzTGq0R0.js.map +0 -1
package/package.json
CHANGED
|
@@ -148,19 +148,25 @@ const TicketSelection: React.FC<Props> = ({ event }) => {
|
|
|
148
148
|
item.order === release.order - 1
|
|
149
149
|
);
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
// The first wave in a category is never gated by a previous one.
|
|
152
|
+
if (!previousRelease) return release;
|
|
152
153
|
|
|
153
154
|
const previousTicket = tickets.find((ticket) => ticket.releaseId === previousRelease.id);
|
|
154
155
|
const previousMaxSelectable = Math.min(
|
|
155
156
|
previousRelease.availableTickets || 0,
|
|
156
157
|
maxTicketsPerOrder
|
|
157
158
|
);
|
|
158
|
-
|
|
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;
|
|
159
165
|
|
|
160
|
-
if (
|
|
166
|
+
if (release.locked === shouldBeLocked) return release;
|
|
161
167
|
|
|
162
168
|
hasChanges = true;
|
|
163
|
-
return { ...release, locked:
|
|
169
|
+
return { ...release, locked: shouldBeLocked };
|
|
164
170
|
});
|
|
165
171
|
|
|
166
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) {
|