@tiledev/sdk-apptile-live-selling 0.15.4 → 0.16.0
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/README.md +48 -5
- package/dist/attribution.d.ts +16 -2
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +10 -4
- package/dist/attribution.js.map +1 -1
- package/dist/auctions.d.ts.map +1 -1
- package/dist/auctions.js +2 -1
- package/dist/auctions.js.map +1 -1
- package/dist/cartAttributes.d.ts +10 -0
- package/dist/cartAttributes.d.ts.map +1 -1
- package/dist/cartAttributes.js +20 -1
- package/dist/cartAttributes.js.map +1 -1
- package/dist/checkoutRefused.d.ts +9 -0
- package/dist/checkoutRefused.d.ts.map +1 -0
- package/dist/checkoutRefused.js +16 -0
- package/dist/checkoutRefused.js.map +1 -0
- package/dist/clips.d.ts +4 -2
- package/dist/clips.d.ts.map +1 -1
- package/dist/clips.js +76 -15
- package/dist/clips.js.map +1 -1
- package/dist/giveawayPrizes.d.ts +20 -0
- package/dist/giveawayPrizes.d.ts.map +1 -0
- package/dist/giveawayPrizes.js +50 -0
- package/dist/giveawayPrizes.js.map +1 -0
- package/dist/index.d.ts +13 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -4
- package/dist/index.js.map +1 -1
- package/dist/livePages.d.ts +11 -1
- package/dist/livePages.d.ts.map +1 -1
- package/dist/livePages.js +29 -0
- package/dist/livePages.js.map +1 -1
- package/dist/liveShow.d.ts +7 -0
- package/dist/liveShow.d.ts.map +1 -1
- package/dist/liveShow.js +10 -0
- package/dist/liveShow.js.map +1 -1
- package/dist/missedPolls.d.ts +27 -0
- package/dist/missedPolls.d.ts.map +1 -0
- package/dist/missedPolls.js +16 -0
- package/dist/missedPolls.js.map +1 -0
- package/dist/pageOptions.d.ts +31 -0
- package/dist/pageOptions.d.ts.map +1 -1
- package/dist/pageOptions.js +25 -1
- package/dist/pageOptions.js.map +1 -1
- package/dist/pageTypes.d.ts +1 -1
- package/dist/pageTypes.d.ts.map +1 -1
- package/dist/react/LiveSellingProvider.d.ts +16 -2
- package/dist/react/LiveSellingProvider.d.ts.map +1 -1
- package/dist/react/LiveSellingProvider.js +15 -4
- package/dist/react/LiveSellingProvider.js.map +1 -1
- package/dist/react/index.d.ts +6 -5
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +6 -2
- package/dist/react/index.js.map +1 -1
- package/dist/react/index.web.d.ts +5 -4
- package/dist/react/index.web.d.ts.map +1 -1
- package/dist/react/index.web.js +5 -2
- package/dist/react/index.web.js.map +1 -1
- package/dist/react/replayPlayer.d.ts +2 -0
- package/dist/react/replayPlayer.d.ts.map +1 -1
- package/dist/react/replayPlayer.js +11 -1
- package/dist/react/replayPlayer.js.map +1 -1
- package/dist/react/shopifyProviders.d.ts +18 -5
- package/dist/react/shopifyProviders.d.ts.map +1 -1
- package/dist/react/shopifyProviders.js +17 -4
- package/dist/react/shopifyProviders.js.map +1 -1
- package/dist/react/showPages.d.ts.map +1 -1
- package/dist/react/showPages.js +4 -2
- package/dist/react/showPages.js.map +1 -1
- package/dist/react/useAuctionBidGate.d.ts +8 -2
- package/dist/react/useAuctionBidGate.d.ts.map +1 -1
- package/dist/react/useAuctionBidGate.js +59 -2
- package/dist/react/useAuctionBidGate.js.map +1 -1
- package/dist/react/useAuctionWins.d.ts +5 -3
- package/dist/react/useAuctionWins.d.ts.map +1 -1
- package/dist/react/useAuctionWins.js +7 -2
- package/dist/react/useAuctionWins.js.map +1 -1
- package/dist/react/useClips.d.ts +7 -1
- package/dist/react/useClips.d.ts.map +1 -1
- package/dist/react/useClips.js +20 -7
- package/dist/react/useClips.js.map +1 -1
- package/dist/react/useFeaturedClip.d.ts +5 -1
- package/dist/react/useFeaturedClip.d.ts.map +1 -1
- package/dist/react/useFeaturedClip.js +6 -4
- package/dist/react/useFeaturedClip.js.map +1 -1
- package/dist/react/useGiveawayPrizes.d.ts +4 -0
- package/dist/react/useGiveawayPrizes.d.ts.map +1 -0
- package/dist/react/useGiveawayPrizes.js +58 -0
- package/dist/react/useGiveawayPrizes.js.map +1 -0
- package/dist/react/useLiveAuction.d.ts.map +1 -1
- package/dist/react/useLiveAuction.js +12 -6
- package/dist/react/useLiveAuction.js.map +1 -1
- package/dist/react/useLiveChat.d.ts +1 -1
- package/dist/react/useLiveChat.d.ts.map +1 -1
- package/dist/react/useLiveChat.js +30 -9
- package/dist/react/useLiveChat.js.map +1 -1
- package/dist/react/useLivePage.d.ts +8 -6
- package/dist/react/useLivePage.d.ts.map +1 -1
- package/dist/react/useLivePage.js +33 -18
- package/dist/react/useLivePage.js.map +1 -1
- package/dist/react/useLiveSession.d.ts.map +1 -1
- package/dist/react/useLiveSession.js +51 -0
- package/dist/react/useLiveSession.js.map +1 -1
- package/dist/react/useLiveShop.d.ts +2 -1
- package/dist/react/useLiveShop.d.ts.map +1 -1
- package/dist/react/useLiveShop.js +4 -2
- package/dist/react/useLiveShop.js.map +1 -1
- package/dist/react/useReplayPage.d.ts +22 -3
- package/dist/react/useReplayPage.d.ts.map +1 -1
- package/dist/react/useReplayPage.js +109 -102
- package/dist/react/useReplayPage.js.map +1 -1
- package/dist/react/useSilentAuctionLot.d.ts +2 -0
- package/dist/react/useSilentAuctionLot.d.ts.map +1 -1
- package/dist/react/useSilentAuctionLot.js +17 -1
- package/dist/react/useSilentAuctionLot.js.map +1 -1
- package/dist/react/useSilentAuctionLots.d.ts +2 -0
- package/dist/react/useSilentAuctionLots.d.ts.map +1 -1
- package/dist/react/useSilentAuctionLots.js +1 -0
- package/dist/react/useSilentAuctionLots.js.map +1 -1
- package/dist/react/useSilentAuctionRounds.d.ts +2 -1
- package/dist/react/useSilentAuctionRounds.d.ts.map +1 -1
- package/dist/react/useSilentAuctionRounds.js +1 -1
- package/dist/react/useSilentAuctionRounds.js.map +1 -1
- package/dist/react/useStreamInfo.d.ts.map +1 -1
- package/dist/react/useStreamInfo.js +5 -3
- package/dist/react/useStreamInfo.js.map +1 -1
- package/dist/shopifyCommerce.d.ts +18 -5
- package/dist/shopifyCommerce.d.ts.map +1 -1
- package/dist/shopifyCommerce.js +45 -11
- package/dist/shopifyCommerce.js.map +1 -1
- package/dist/showCredit.d.ts +4 -2
- package/dist/showCredit.d.ts.map +1 -1
- package/dist/showCredit.js +2 -2
- package/dist/showCredit.js.map +1 -1
- package/dist/showLots.d.ts +16 -0
- package/dist/showLots.d.ts.map +1 -1
- package/dist/showLots.js +19 -0
- package/dist/showLots.js.map +1 -1
- package/dist/silentAuctionFeed.d.ts +2 -0
- package/dist/silentAuctionFeed.d.ts.map +1 -1
- package/dist/silentAuctionFeed.js +12 -2
- package/dist/silentAuctionFeed.js.map +1 -1
- package/dist/silentAuctionRules.d.ts +46 -0
- package/dist/silentAuctionRules.d.ts.map +1 -1
- package/dist/silentAuctionRules.js +65 -1
- package/dist/silentAuctionRules.js.map +1 -1
- package/dist/storeData.d.ts +16 -0
- package/dist/storeData.d.ts.map +1 -0
- package/dist/storeData.js +19 -0
- package/dist/storeData.js.map +1 -0
- package/dist/types.d.ts +27 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/LiveBubble.d.ts +7 -1
- package/dist/ui/LiveBubble.d.ts.map +1 -1
- package/dist/ui/LiveBubble.js +19 -4
- package/dist/ui/LiveBubble.js.map +1 -1
- package/dist/unreadRoomMessages.d.ts +26 -0
- package/dist/unreadRoomMessages.d.ts.map +1 -0
- package/dist/unreadRoomMessages.js +62 -0
- package/dist/unreadRoomMessages.js.map +1 -0
- package/dist/viewerRules.d.ts +38 -0
- package/dist/viewerRules.d.ts.map +1 -0
- package/dist/viewerRules.js +46 -0
- package/dist/viewerRules.js.map +1 -0
- package/dist/winsAttribution.d.ts +22 -0
- package/dist/winsAttribution.d.ts.map +1 -0
- package/dist/winsAttribution.js +49 -0
- package/dist/winsAttribution.js.map +1 -0
- package/dist/zegoEngine.d.ts.map +1 -1
- package/dist/zegoEngine.js +14 -7
- package/dist/zegoEngine.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useGiveawayPrizes = useGiveawayPrizes;
|
|
4
|
+
/**
|
|
5
|
+
* `useGiveawayPrizes({ active })` — collects the signed-in shopper's giveaway prizes into their cart each
|
|
6
|
+
* time the cart comes on screen (0.16.0, `collectGiveawayPrizes`), and re-reads the cart when one landed.
|
|
7
|
+
* Owed something with no cart yet, it makes one, adopts it, and collects into it. At most once per 5 s.
|
|
8
|
+
* `active` defaults to the screen's focus, so a cart tab that stays mounted collects on every visit (as
|
|
9
|
+
* 33.2.0 did); pass it to decide yourself.
|
|
10
|
+
*/
|
|
11
|
+
const sdk_shopify_1 = require("@tiledev/sdk-shopify");
|
|
12
|
+
const navigation_1 = require("./navigation");
|
|
13
|
+
const react_1 = require("react");
|
|
14
|
+
const giveawayPrizes_1 = require("../giveawayPrizes");
|
|
15
|
+
const MIN_GAP_MS = 5000;
|
|
16
|
+
function useGiveawayPrizes(options = {}) {
|
|
17
|
+
var _a, _b, _c, _d, _e;
|
|
18
|
+
const focused = (0, navigation_1.useIsFocused)();
|
|
19
|
+
const active = (_a = options.active) !== null && _a !== void 0 ? _a : focused;
|
|
20
|
+
const { ready } = (0, sdk_shopify_1.useShopify)();
|
|
21
|
+
const { cart, adopt, refresh, loading } = (0, sdk_shopify_1.useCart)();
|
|
22
|
+
const customer = (0, sdk_shopify_1.useCustomer)();
|
|
23
|
+
const customerId = customer.loggedIn ? (_c = (_b = customer.customer) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : null : null;
|
|
24
|
+
// Read through refs, so a line changing while the cart is open doesn't collect again.
|
|
25
|
+
const latest = (0, react_1.useRef)({ cartId: (_d = cart === null || cart === void 0 ? void 0 : cart.id) !== null && _d !== void 0 ? _d : null, adopt, refresh });
|
|
26
|
+
latest.current = { cartId: (_e = cart === null || cart === void 0 ? void 0 : cart.id) !== null && _e !== void 0 ? _e : null, adopt, refresh };
|
|
27
|
+
const lastAt = (0, react_1.useRef)(0);
|
|
28
|
+
const busy = (0, react_1.useRef)(false);
|
|
29
|
+
// "No cart" is only true once the saved cart has been restored.
|
|
30
|
+
const settled = ready && !loading;
|
|
31
|
+
const collect = (0, react_1.useCallback)(async () => {
|
|
32
|
+
if (!customerId || !settled || busy.current || Date.now() - lastAt.current < MIN_GAP_MS)
|
|
33
|
+
return;
|
|
34
|
+
busy.current = true;
|
|
35
|
+
try {
|
|
36
|
+
let result = await (0, giveawayPrizes_1.collectGiveawayPrizes)(customerId, latest.current.cartId);
|
|
37
|
+
if (result && result.pending > 0 && !latest.current.cartId) {
|
|
38
|
+
const created = await sdk_shopify_1.shopify.cart.create({});
|
|
39
|
+
await latest.current.adopt(created.id);
|
|
40
|
+
result = await (0, giveawayPrizes_1.collectGiveawayPrizes)(customerId, created.id);
|
|
41
|
+
}
|
|
42
|
+
if (result === null || result === void 0 ? void 0 : result.delivered.length)
|
|
43
|
+
await latest.current.refresh();
|
|
44
|
+
lastAt.current = Date.now();
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// A prize that didn't arrive arrives next time.
|
|
48
|
+
}
|
|
49
|
+
finally {
|
|
50
|
+
busy.current = false;
|
|
51
|
+
}
|
|
52
|
+
}, [customerId, settled]);
|
|
53
|
+
(0, react_1.useEffect)(() => {
|
|
54
|
+
if (active)
|
|
55
|
+
void collect();
|
|
56
|
+
}, [active, collect]);
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=useGiveawayPrizes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGiveawayPrizes.js","sourceRoot":"","sources":["../../src/react/useGiveawayPrizes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveAuction.d.ts","sourceRoot":"","sources":["../../src/react/useLiveAuction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"useLiveAuction.d.ts","sourceRoot":"","sources":["../../src/react/useLiveAuction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAuC,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAMzF,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAiBnI,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAcD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,cAAc,CAAC,EAAE,eAAe,EAAE,EAAE,iBAAiB;;;;;;;;;;;;;;;;wBAsFxD,MAAM;;;;;;;;;;;;;;;;;;IA0Gf,2EAA2E;;;;IAE3E,qEAAqE;;;;EAGxE;AAED,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -10,6 +10,7 @@ const sdk_shopify_1 = require("@tiledev/sdk-shopify");
|
|
|
10
10
|
const react_1 = require("react");
|
|
11
11
|
const auctionRules_1 = require("../auctionRules");
|
|
12
12
|
const linkLots_1 = require("../linkLots");
|
|
13
|
+
const showLots_1 = require("../showLots");
|
|
13
14
|
const LiveSellingProvider_1 = require("./LiveSellingProvider");
|
|
14
15
|
const platformSession_1 = require("./platformSession");
|
|
15
16
|
const navigation_1 = require("./navigation");
|
|
@@ -75,7 +76,8 @@ function useLiveAuction({ openItemsYouWon }) {
|
|
|
75
76
|
const { placeBid, dismissAuctionWin } = session.actions;
|
|
76
77
|
const customer = (0, sdk_shopify_1.useCustomer)();
|
|
77
78
|
const nav = (0, navigation_1.useNavigation)();
|
|
78
|
-
const { routes, shopName, canOpenLinks } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
79
|
+
const { routes, shopName, canOpenLinks, viewerRestrictions } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
80
|
+
const bidding = viewerRestrictions.bidding;
|
|
79
81
|
const signIn = (0, sdk_shopify_1.useSignIn)({ onOpenSignInPage: (method) => routes.openSignIn(method, nav) });
|
|
80
82
|
const { auction } = session;
|
|
81
83
|
// ─── Which show ────────────────────────────────────────────────────────────────────────────────
|
|
@@ -197,20 +199,23 @@ function useLiveAuction({ openItemsYouWon }) {
|
|
|
197
199
|
return [{ product: item.raw, startingBid: startingBid !== null ? money(startingBid) : null, state: stateOf(item.storeProductId) }];
|
|
198
200
|
});
|
|
199
201
|
}, [isAuction, session.products, money, stateOf, canOpenLinks]);
|
|
200
|
-
|
|
202
|
+
// The card's product, as `useLiveShop` draws it: the round's lot while one is open (ENG-974).
|
|
203
|
+
const featured = (0, showLots_1.productOnCard)(session.activeProduct, session.products, auction);
|
|
201
204
|
const auctionRound = (0, react_1.useMemo)(() => {
|
|
202
205
|
// A featured link is never on the block.
|
|
203
206
|
if (!isAuction || !featured || (!featured.raw && featured.externalUrl))
|
|
204
207
|
return null;
|
|
205
208
|
const state = stateOf(featured.storeProductId);
|
|
206
209
|
const onThisLot = state === 'open';
|
|
210
|
+
// Barred by the store (0.16.0): never shown leading, whatever the room says.
|
|
211
|
+
const barred = bidding === 'blocked';
|
|
207
212
|
return {
|
|
208
213
|
state,
|
|
209
214
|
highestBid: onThisLot && auction.highestBid > 0 ? money(auction.highestBid) : null,
|
|
210
|
-
leaderName: onThisLot ? auction.leaderName || null : null,
|
|
211
|
-
leaderIsYou: onThisLot && auction.isLeading,
|
|
215
|
+
leaderName: onThisLot && !barred ? auction.leaderName || null : null,
|
|
216
|
+
leaderIsYou: onThisLot && !barred && auction.isLeading,
|
|
212
217
|
};
|
|
213
|
-
}, [isAuction, featured, stateOf, auction.highestBid, auction.leaderName, auction.isLeading, money]);
|
|
218
|
+
}, [isAuction, featured, stateOf, auction.highestBid, auction.leaderName, auction.isLeading, money, bidding]);
|
|
214
219
|
return {
|
|
215
220
|
bidBar: {
|
|
216
221
|
visible: roundOpen,
|
|
@@ -220,7 +225,8 @@ function useLiveAuction({ openItemsYouWon }) {
|
|
|
220
225
|
closesAt: auction.closesAt,
|
|
221
226
|
extended: auction.extended,
|
|
222
227
|
extendedSeconds: Math.round(auction.extendedBiddingMs / 1000),
|
|
223
|
-
|
|
228
|
+
// Barred by the store: never shown leading here either, as on the product card.
|
|
229
|
+
isLeading: bidding !== 'blocked' && auction.isLeading,
|
|
224
230
|
bidCap: auction.bidCap,
|
|
225
231
|
busy: gate.bidOnItsWay && !lastBidFailed,
|
|
226
232
|
step: roundOpen ? step : null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveAuction.js","sourceRoot":"","sources":["../../src/react/useLiveAuction.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useLiveAuction.js","sourceRoot":"","sources":["../../src/react/useLiveAuction.ts"],"names":[],"mappings":"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"}
|
|
@@ -93,7 +93,7 @@ export declare function useLiveChat({ onAir, canComment, canReact, openLink, auc
|
|
|
93
93
|
};
|
|
94
94
|
reactionButton: {
|
|
95
95
|
visible: boolean;
|
|
96
|
-
onReact: (reactionUrl: string) =>
|
|
96
|
+
onReact: (reactionUrl: string) => void;
|
|
97
97
|
};
|
|
98
98
|
reactions: {
|
|
99
99
|
visible: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveChat.d.ts","sourceRoot":"","sources":["../../src/react/useLiveChat.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"useLiveChat.d.ts","sourceRoot":"","sources":["../../src/react/useLiveChat.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AASvD,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,UAAU,EAAE,OAAO,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,sIAAsI;IACtI,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAe,EAAE,EAAE,YAAY;;IAkIhG,wGAAwG;;;;;;;6BAjDvE,MAAM;2BAnIxB,MAAM,KAAK,IAAI;;;;;;;;;;;;;;uBAsGjB,MAAM;2BAaqB,MAAM;uCAO5B,MAAM,YAAY,MAAM;8BATH,MAAM;;;;;+BAqC/B,MAAM;;;;;;;;;;;EA0EvB;AAED,2EAA2E;AAC3E,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -12,6 +12,7 @@ const react_native_1 = require("react-native");
|
|
|
12
12
|
const livePages_1 = require("../livePages");
|
|
13
13
|
const showNames_1 = require("../showNames");
|
|
14
14
|
const viewer_1 = require("../viewer");
|
|
15
|
+
const viewerRules_1 = require("../viewerRules");
|
|
15
16
|
const LiveSellingProvider_1 = require("./LiveSellingProvider");
|
|
16
17
|
const platformSession_1 = require("./platformSession");
|
|
17
18
|
const useAccountName_1 = require("./useAccountName");
|
|
@@ -62,13 +63,15 @@ const navigation_1 = require("./navigation");
|
|
|
62
63
|
* away (iOS has no key for that).
|
|
63
64
|
*/
|
|
64
65
|
function useLiveChat({ onAir, canComment, canReact, openLink, auction = false }) {
|
|
65
|
-
var _a, _b, _c, _d, _e;
|
|
66
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
66
67
|
// The session changes only on the room's events, never on a clock.
|
|
67
68
|
const session = (0, platformSession_1.useLiveSession)();
|
|
68
69
|
const { sendComment, sendReaction, chooseViewerName } = session.actions;
|
|
69
70
|
const { loggedIn, restoring } = (0, sdk_shopify_1.useCustomer)();
|
|
70
71
|
const { accountLoading, nameToComplete, saveNameToAccount } = (0, useAccountName_1.useAccountName)();
|
|
71
|
-
const { routes, blockedNames, canOpenLinks } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
72
|
+
const { routes, blockedNames, canOpenLinks, viewerRestrictions, reactionLimit, onReactionLimitReached } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
73
|
+
// The store's mute (`APPBLOCKED`, 0.16.0): the viewer sees their own comments, nobody else does.
|
|
74
|
+
const muted = viewerRestrictions.commentsMuted;
|
|
72
75
|
// ─── Who the shopper is in the room ──────────────────────────────────────────────────────────────
|
|
73
76
|
// A stored sign-in is still being read on app open: not a signed-out shopper to ask.
|
|
74
77
|
const signedIn = !!loggedIn || !!restoring;
|
|
@@ -113,12 +116,12 @@ function useLiveChat({ onAir, canComment, canReact, openLink, auction = false })
|
|
|
113
116
|
const send = (0, react_1.useCallback)(async (text) => {
|
|
114
117
|
setSending(true);
|
|
115
118
|
try {
|
|
116
|
-
await sendComment(text);
|
|
119
|
+
await (muted ? sendComment(text, { forceMuted: true }) : sendComment(text));
|
|
117
120
|
}
|
|
118
121
|
finally {
|
|
119
122
|
setSending(false);
|
|
120
123
|
}
|
|
121
|
-
}, [sendComment]);
|
|
124
|
+
}, [sendComment, muted]);
|
|
122
125
|
/** False for a name the show's team goes by: the sheet says so before Save. */
|
|
123
126
|
const isNameAllowed = (0, react_1.useCallback)((name) => !(0, showNames_1.isBlockedViewerName)(name, blockedNames), [blockedNames]);
|
|
124
127
|
/** Signed out: true once the session has saved the name on this phone, and the engine has it for the comment that follows. */
|
|
@@ -141,7 +144,25 @@ function useLiveChat({ onAir, canComment, canReact, openLink, auction = false })
|
|
|
141
144
|
const [commentsHidden, setCommentsHidden] = (0, react_1.useState)(false);
|
|
142
145
|
const toggleComments = (0, react_1.useCallback)(() => setCommentsHidden((hidden) => !hidden), []);
|
|
143
146
|
// ─── Reacting ───────────────────────────────────────────────────────────────────────────────────
|
|
144
|
-
|
|
147
|
+
// The app's reaction limit (0.16.0, `reactionLimit`; none unless set): so many taps, back to that many when
|
|
148
|
+
// the host moves on to another product; a tap past it sends nothing and tells the app.
|
|
149
|
+
const budget = (0, react_1.useRef)(null);
|
|
150
|
+
if (reactionLimit === null)
|
|
151
|
+
budget.current = null;
|
|
152
|
+
else if (((_b = budget.current) === null || _b === void 0 ? void 0 : _b.limit) !== reactionLimit)
|
|
153
|
+
budget.current = { limit: reactionLimit, left: (0, viewerRules_1.createReactionBudget)(reactionLimit) };
|
|
154
|
+
const featuredId = (_d = (_c = session.activeProduct) === null || _c === void 0 ? void 0 : _c.id) !== null && _d !== void 0 ? _d : null;
|
|
155
|
+
(0, react_1.useEffect)(() => {
|
|
156
|
+
var _a;
|
|
157
|
+
(_a = budget.current) === null || _a === void 0 ? void 0 : _a.left.productChanged();
|
|
158
|
+
}, [featuredId]);
|
|
159
|
+
const react = (0, react_1.useCallback)((reactionUrl) => {
|
|
160
|
+
if (budget.current && !budget.current.left.take()) {
|
|
161
|
+
onReactionLimitReached();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
void sendReaction(reactionUrl);
|
|
165
|
+
}, [sendReaction, onReactionLimitReached]);
|
|
145
166
|
// ─── The keyboard ───────────────────────────────────────────────────────────────────────────────
|
|
146
167
|
const [keyboardUp, setKeyboardUp] = (0, react_1.useState)(false);
|
|
147
168
|
/**
|
|
@@ -165,7 +186,7 @@ function useLiveChat({ onAir, canComment, canReact, openLink, auction = false })
|
|
|
165
186
|
typing: commentBoxShown && typing,
|
|
166
187
|
comments: {
|
|
167
188
|
visible: onAir,
|
|
168
|
-
comments: (
|
|
189
|
+
comments: (_e = session.comments) !== null && _e !== void 0 ? _e : [],
|
|
169
190
|
hidden: commentsHidden,
|
|
170
191
|
onToggleHidden: toggleComments,
|
|
171
192
|
// Only with a comment box to reply into.
|
|
@@ -197,12 +218,12 @@ function useLiveChat({ onAir, canComment, canReact, openLink, auction = false })
|
|
|
197
218
|
},
|
|
198
219
|
reactions: {
|
|
199
220
|
visible: onAir,
|
|
200
|
-
reactions: (
|
|
201
|
-
reactionStyle: (
|
|
221
|
+
reactions: (_f = session.reactions) !== null && _f !== void 0 ? _f : [],
|
|
222
|
+
reactionStyle: (_g = session.reactionStyle) !== null && _g !== void 0 ? _g : 'single',
|
|
202
223
|
},
|
|
203
224
|
pinnedComment: {
|
|
204
225
|
visible: onAir,
|
|
205
|
-
pinnedComment: (
|
|
226
|
+
pinnedComment: (_h = session.pinnedComment) !== null && _h !== void 0 ? _h : null,
|
|
206
227
|
},
|
|
207
228
|
};
|
|
208
229
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveChat.js","sourceRoot":"","sources":["../../src/react/useLiveChat.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useLiveChat.js","sourceRoot":"","sources":["../../src/react/useLiveChat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** How often the Live screen reads the store's restrictions again while on show. */
|
|
2
|
+
export declare const RESTRICTIONS_REFRESH_MS = 60000;
|
|
1
3
|
/**
|
|
2
4
|
* Everything the Live screen wires, so the screen stays plain tiles. Call it from the Live screen and
|
|
3
5
|
* from each of its tiles' wiring: every call reads the same session.
|
|
@@ -20,11 +22,11 @@
|
|
|
20
22
|
* the bubble: this screen shows the picture again.
|
|
21
23
|
* - **Back, every kind** (the header's arrow, the iOS swipe, Android's back; decided 2026-10-05,
|
|
22
24
|
* amore-v2's Head of Engineering) shrinks a show that is playing or waiting for its host into the
|
|
23
|
-
* bubble as the screen leaves, and closes one that has ended
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* bubble as the screen leaves, and closes one that has ended: the screen's `beforeRemove`, for the
|
|
26
|
+
* navigation's back actions (`BACK_ACTIONS`). **Where back goes: Home, for every app** (decided
|
|
27
|
+
* 2026-10-22; `routes.openHome`): the arrow, ✕ and Android's back, the show shrinking first. The iOS
|
|
28
|
+
* swipe back is turned off on this screen (`gestureEnabled: false`), so no path goes to the screen behind. Picture-in-picture is a back that always shrinks; the cart shrinks the
|
|
29
|
+
* show and opens the Cart over this screen (Items You Won on an auction show: `routes.openCart`).
|
|
28
30
|
* - **A link from the show** (`openLink`, 0.15.0; decided 2026-10-19 by amore-v2's Head of Engineering)
|
|
29
31
|
* opens inside the app, never the phone's browser: the show goes into the bubble, as for the cart, and
|
|
30
32
|
* the app's `routes.openLink` opens the page (amore-v2: the store's product or collection on its
|
|
@@ -114,7 +116,7 @@ export declare function useLivePage(): {
|
|
|
114
116
|
};
|
|
115
117
|
reactionButton: {
|
|
116
118
|
visible: boolean;
|
|
117
|
-
onReact: (reactionUrl: string) =>
|
|
119
|
+
onReact: (reactionUrl: string) => void;
|
|
118
120
|
};
|
|
119
121
|
reactions: {
|
|
120
122
|
visible: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLivePage.d.ts","sourceRoot":"","sources":["../../src/react/useLivePage.ts"],"names":[],"mappings":"AA8CA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,WAAW;
|
|
1
|
+
{"version":3,"file":"useLivePage.d.ts","sourceRoot":"","sources":["../../src/react/useLivePage.ts"],"names":[],"mappings":"AA8CA,oFAAoF;AACpF,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,WAAW;IAyMvB;;;;;;OAMG;;IAEH,4FAA4F;;;;;;;;;;;;;;;;;;;;;;;;;IAgC5F,8GAA8G;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAE9G,8GAA8G;oBA3IxG,MAAM,UAAU,MAAM,GAAG,IAAI;EA8ItC;AAED,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RESTRICTIONS_REFRESH_MS = void 0;
|
|
3
4
|
exports.useLivePage = useLivePage;
|
|
4
5
|
/**
|
|
5
6
|
* The Live screen's page model (0.14.0, moved from amore-v2's `src/core/hooks/useLivePage.ts`:
|
|
@@ -31,6 +32,8 @@ const navigation_1 = require("./navigation");
|
|
|
31
32
|
* L5: production reported on every viewer-count tick).
|
|
32
33
|
*/
|
|
33
34
|
const joinedThisRun = new Set();
|
|
35
|
+
/** How often the Live screen reads the store's restrictions again while on show. */
|
|
36
|
+
exports.RESTRICTIONS_REFRESH_MS = 60000;
|
|
34
37
|
/**
|
|
35
38
|
* Everything the Live screen wires, so the screen stays plain tiles. Call it from the Live screen and
|
|
36
39
|
* from each of its tiles' wiring: every call reads the same session.
|
|
@@ -53,11 +56,11 @@ const joinedThisRun = new Set();
|
|
|
53
56
|
* the bubble: this screen shows the picture again.
|
|
54
57
|
* - **Back, every kind** (the header's arrow, the iOS swipe, Android's back; decided 2026-10-05,
|
|
55
58
|
* amore-v2's Head of Engineering) shrinks a show that is playing or waiting for its host into the
|
|
56
|
-
* bubble as the screen leaves, and closes one that has ended
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
59
|
+
* bubble as the screen leaves, and closes one that has ended: the screen's `beforeRemove`, for the
|
|
60
|
+
* navigation's back actions (`BACK_ACTIONS`). **Where back goes: Home, for every app** (decided
|
|
61
|
+
* 2026-10-22; `routes.openHome`): the arrow, ✕ and Android's back, the show shrinking first. The iOS
|
|
62
|
+
* swipe back is turned off on this screen (`gestureEnabled: false`), so no path goes to the screen behind. Picture-in-picture is a back that always shrinks; the cart shrinks the
|
|
63
|
+
* show and opens the Cart over this screen (Items You Won on an auction show: `routes.openCart`).
|
|
61
64
|
* - **A link from the show** (`openLink`, 0.15.0; decided 2026-10-19 by amore-v2's Head of Engineering)
|
|
62
65
|
* opens inside the app, never the phone's browser: the show goes into the bubble, as for the cart, and
|
|
63
66
|
* the app's `routes.openLink` opens the page (amore-v2: the store's product or collection on its
|
|
@@ -87,7 +90,7 @@ function useLivePage() {
|
|
|
87
90
|
const route = (0, navigation_1.useRoute)();
|
|
88
91
|
const streamId = (_b = (_a = route.params) === null || _a === void 0 ? void 0 : _a.streamId) !== null && _b !== void 0 ? _b : '';
|
|
89
92
|
const isFocused = (0, navigation_1.useIsFocused)();
|
|
90
|
-
const { routes, track, canOpenLinks } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
93
|
+
const { routes, track, canOpenLinks, viewerRestrictions } = (0, LiveSellingProvider_1.useLivePageOptions)();
|
|
91
94
|
// The session changes only on the room's events, never on a clock: the header and the auction tiles keep their own.
|
|
92
95
|
const session = (0, platformSession_1.useLiveSession)();
|
|
93
96
|
const { holdStream, releaseStream, enterPip, exitPip, setMuted } = session.actions;
|
|
@@ -201,12 +204,24 @@ function useLivePage() {
|
|
|
201
204
|
(0, react_1.useEffect)(() => nav.addListener('beforeRemove', (event) => {
|
|
202
205
|
if (!livePages_1.BACK_ACTIONS.has(event.data.action.type))
|
|
203
206
|
return;
|
|
204
|
-
if (leavingForGood.current || !canShrinkNow.current || pipModeNow.current !== 'none')
|
|
207
|
+
if (leavingForGood.current || shrunk.current || !canShrinkNow.current || pipModeNow.current !== 'none')
|
|
205
208
|
return;
|
|
206
209
|
shrunk.current = true;
|
|
207
210
|
enterPip();
|
|
208
211
|
}), [nav, enterPip]);
|
|
209
212
|
(0, useKeepScreenAwake_1.useKeepScreenAwake)(showing && onAir, 'live');
|
|
213
|
+
// ─── The store's restrictions, kept current while the show is on screen (0.16.0) ───────────────
|
|
214
|
+
// Read again as the screen comes on show and every `RESTRICTIONS_REFRESH_MS` while it stays: a customer
|
|
215
|
+
// blocked from the admin mid-show stops at once (33.2.0's SPR-87), not at their next app start.
|
|
216
|
+
const restrictionsNow = (0, react_1.useRef)(viewerRestrictions);
|
|
217
|
+
restrictionsNow.current = viewerRestrictions;
|
|
218
|
+
(0, react_1.useEffect)(() => {
|
|
219
|
+
if (!isFocused)
|
|
220
|
+
return;
|
|
221
|
+
restrictionsNow.current.refresh();
|
|
222
|
+
const timer = setInterval(() => restrictionsNow.current.refresh(), exports.RESTRICTIONS_REFRESH_MS);
|
|
223
|
+
return () => clearInterval(timer);
|
|
224
|
+
}, [isFocused]);
|
|
210
225
|
// ─── liveJoin, once per show per app run ───────────────────────────────────────────────────────
|
|
211
226
|
const viewerCount = session.viewerCount;
|
|
212
227
|
(0, react_1.useEffect)(() => {
|
|
@@ -218,13 +233,12 @@ function useLivePage() {
|
|
|
218
233
|
track(sdk_analytics_core_1.DefaultEvents.LIVE_JOIN, (0, sdk_analytics_core_1.liveJoinParams)(sessionShow.streamingId, viewerCount));
|
|
219
234
|
}, [isFocused, sessionShow, viewerCount, track]);
|
|
220
235
|
// ─── The header's buttons ──────────────────────────────────────────────────────────────────────
|
|
221
|
-
/** Back:
|
|
236
|
+
/** Back: Home, for every app (decided 2026-10-22), a show on air shrinking into the bubble first. */
|
|
222
237
|
const goBack = (0, react_1.useCallback)(() => {
|
|
223
|
-
if (
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
}, [nav, routes]);
|
|
238
|
+
if (!leavingForGood.current && !shrunk.current)
|
|
239
|
+
shrinkForAnotherPage();
|
|
240
|
+
routes.openHome(nav);
|
|
241
|
+
}, [nav, routes, shrinkForAnotherPage]);
|
|
228
242
|
const close = (0, react_1.useCallback)(() => {
|
|
229
243
|
leavingForGood.current = true;
|
|
230
244
|
// Stopped outright: without `stopVideo` the room plays on with no surface.
|
|
@@ -233,19 +247,20 @@ function useLivePage() {
|
|
|
233
247
|
goBack();
|
|
234
248
|
}, [exitPip, releaseStream, goBack]);
|
|
235
249
|
const back = canShrink ? goBack : close;
|
|
236
|
-
// Android's back
|
|
237
|
-
// what the arrow does instead. With a screen behind, the navigator goes back, through `beforeRemove`.
|
|
250
|
+
// Android's back does what the arrow does: Home, the show shrinking first.
|
|
238
251
|
const backNow = (0, react_1.useRef)(back);
|
|
239
252
|
backNow.current = back;
|
|
240
253
|
(0, navigation_1.useFocusEffect)((0, react_1.useCallback)(() => {
|
|
241
254
|
const subscription = react_native_1.BackHandler.addEventListener('hardwareBackPress', () => {
|
|
242
|
-
if (nav.canGoBack())
|
|
243
|
-
return false;
|
|
244
255
|
backNow.current();
|
|
245
256
|
return true;
|
|
246
257
|
});
|
|
247
258
|
return () => subscription.remove();
|
|
248
|
-
}, [
|
|
259
|
+
}, []));
|
|
260
|
+
// The iOS swipe back would go to the screen behind: off here, so every back goes Home.
|
|
261
|
+
(0, react_1.useEffect)(() => {
|
|
262
|
+
nav.setOptions({ gestureEnabled: false });
|
|
263
|
+
}, [nav]);
|
|
249
264
|
const isAuction = capabilities.canBid;
|
|
250
265
|
const openCart = (0, react_1.useCallback)(() => {
|
|
251
266
|
shrinkForAnotherPage();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLivePage.js","sourceRoot":"","sources":["../../src/react/useLivePage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useLivePage.js","sourceRoot":"","sources":["../../src/react/useLivePage.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useLiveSession.d.ts","sourceRoot":"","sources":["../../src/react/useLiveSession.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"useLiveSession.d.ts","sourceRoot":"","sources":["../../src/react/useLiveSession.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAgDvC,OAAO,KAAK,EASV,WAAW,EAEZ,MAAM,iBAAiB,CAAC;AAwCzB;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAG,OAAO,KAAK,WAAW,CAAC,IAAI,CAAC,CAIlE;AAED,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACzD,QAAQ,EAAE,SAAS,CAAC;CACrB;AAqkDD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,wBAAwB,+FA0CnF"}
|
|
@@ -37,6 +37,9 @@ const showNames_1 = require("../showNames");
|
|
|
37
37
|
const showLots_1 = require("../showLots");
|
|
38
38
|
const heldComments_1 = require("../heldComments");
|
|
39
39
|
const liveSelling_1 = require("../liveSelling");
|
|
40
|
+
const missedPolls_1 = require("../missedPolls");
|
|
41
|
+
const pageOptions_1 = require("../pageOptions");
|
|
42
|
+
const unreadRoomMessages_1 = require("../unreadRoomMessages");
|
|
40
43
|
const sdk_apptile_live_selling_native_1 = require("@tiledev/sdk-apptile-live-selling-native");
|
|
41
44
|
const pipWindow_1 = require("../pipWindow");
|
|
42
45
|
const session_1 = require("../session");
|
|
@@ -244,7 +247,26 @@ function useSessionValue(props) {
|
|
|
244
247
|
liveSelling_1.liveSelling.engine.setViewerName(namedBy);
|
|
245
248
|
void heldCommentsRef.current.release();
|
|
246
249
|
}, [namedBy, nameResolving]);
|
|
250
|
+
/**
|
|
251
|
+
* Room messages this version doesn't read (ENG-969, `unreadRoomMessages.ts`): the first of each kind
|
|
252
|
+
* per show goes to the app's `onWarning` (`reportLiveWarning`; the console without one), so a message
|
|
253
|
+
* the dashboard renamed or moved is seen. Not the config's `logger`, which is silent unless an app sets one.
|
|
254
|
+
*/
|
|
255
|
+
const unreadRoomMessagesRef = (0, react_1.useRef)(new unreadRoomMessages_1.UnreadRoomMessages());
|
|
256
|
+
(0, react_1.useEffect)(() => {
|
|
257
|
+
unreadRoomMessagesRef.current = new unreadRoomMessages_1.UnreadRoomMessages();
|
|
258
|
+
}, [watching]);
|
|
247
259
|
(0, react_1.useEffect)(() => liveSelling_1.liveSelling.engine.subscribe((event) => {
|
|
260
|
+
if (event.type === 'unknown') {
|
|
261
|
+
const kind = unreadRoomMessagesRef.current.firstOfItsKind(event.channel, event.payload);
|
|
262
|
+
if (kind) {
|
|
263
|
+
(0, pageOptions_1.reportLiveWarning)(new Error(`Live room: a message this version doesn't read (${kind})`), {
|
|
264
|
+
at: 'liveSession.unreadRoomMessage',
|
|
265
|
+
channel: event.channel,
|
|
266
|
+
message: (0, unreadRoomMessages_1.reportedCopyOf)(event.payload),
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
}
|
|
248
270
|
dispatch({ kind: 'event', event, at: Date.now() });
|
|
249
271
|
}), []);
|
|
250
272
|
(0, react_1.useEffect)(() => {
|
|
@@ -354,6 +376,35 @@ function useSessionValue(props) {
|
|
|
354
376
|
return () => clearTimeout(timer);
|
|
355
377
|
}, [nothingOnAir, forcedReadAt, graceMs]);
|
|
356
378
|
const status = (0, session_1.withOffAirSettled)(derivedStatus, settledOffAir);
|
|
379
|
+
/**
|
|
380
|
+
* A poll the room never told this phone about (ENG-969, `missedPolls.ts`): while a show is on air
|
|
381
|
+
* with no poll up, its record is read for one every `MISSED_POLL_READ_MS`, so a poll opened
|
|
382
|
+
* meanwhile shows within that time rather than after the shopper leaves and comes back.
|
|
383
|
+
*
|
|
384
|
+
* Only the poll is taken from the read, through `pollSynced`, which keeps the state as it is unless
|
|
385
|
+
* the poll is one this phone has never seen. It doesn't go through `useStreamInfo`: a record set every
|
|
386
|
+
* 20 s would re-render everything that reads the session and restart the off-air wait, and that file
|
|
387
|
+
* keeps no timer by design (read its header). This one is the exception, for as long as the room's
|
|
388
|
+
* own `START_POLL` can't be relied on: one record by id, per watching phone, every 20 s, only while
|
|
389
|
+
* no poll is up.
|
|
390
|
+
*/
|
|
391
|
+
const readingForMissedPoll = (0, missedPolls_1.readsForMissedPoll)({ status, connected: state.connected, pollShowing: !!state.poll });
|
|
392
|
+
(0, react_1.useEffect)(() => {
|
|
393
|
+
if (!readingForMissedPoll || !watching)
|
|
394
|
+
return;
|
|
395
|
+
const timer = setInterval(() => {
|
|
396
|
+
liveSelling_1.liveSelling.streams
|
|
397
|
+
.byId(watching)
|
|
398
|
+
.then((record) => {
|
|
399
|
+
var _a;
|
|
400
|
+
if (record === null || record === void 0 ? void 0 : record.poll)
|
|
401
|
+
dispatch({ kind: 'pollSynced', poll: record.poll, results: (_a = record.pollResults) !== null && _a !== void 0 ? _a : null });
|
|
402
|
+
})
|
|
403
|
+
.catch((caught) => logger.error(caught, { at: 'liveSession.missedPollRead', streamingId: watching }));
|
|
404
|
+
}, missedPolls_1.MISSED_POLL_READ_MS);
|
|
405
|
+
return () => clearInterval(timer);
|
|
406
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
407
|
+
}, [readingForMissedPoll, watching]);
|
|
357
408
|
// A PIP surface outlives the screen that opened it, so nothing else would take it down when the
|
|
358
409
|
// host ends the stream — it would sit there over the app showing a frozen last frame.
|
|
359
410
|
(0, react_1.useEffect)(() => {
|