1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
import * as validation from "@jet/environment/json/validation";
import { TodayCardInAppPurchase } from "../../../api/models";
import { isNullOrEmpty } from "../../../foundation/json-parsing/server-data";
import { inAppPurchaseLockupFromData } from "../../lockups/lockups";
import { applyTodayCardOverridesForAcquisitionStoryIfNecessary } from "../today-card-overlay-util";
import { cardDisplayStyleFromData, popTodayCardLocation, pushTodayCardLocation, relatedCardContentsContentsFromData, } from "../today-card-util";
import { createTodayBaseCard } from "./today-base-card-builder";
/**
* Create TodayCard displaying an in app purchase
*
* @param objectGraph The dependency graph for the App Store
* @param data The media api data to build the card from
* @param cardConfig The configuration for the card
* @param context The parse context for the over all today page
* @param augmentingData that stores some additional responses that may be used to enhance the contents of `data`
* @returns The newly created TodayCard, using the in app purchase media.
*/
export function createTodayInAppPurchaseCard(objectGraph, data, cardConfig, context, augmentingData) {
return validation.context("createTodayInAppPurchaseCard", () => {
const inAppPurchaseCard = createTodayBaseCard(objectGraph, data, cardConfig, context);
pushTodayCardLocation(objectGraph, data, cardConfig, context);
const iAPData = inAppPurchaseDataFromRelatedContent(objectGraph, relatedCardContentsContentsFromData(objectGraph, data));
if (isNullOrEmpty(iAPData)) {
popTodayCardLocation(context);
return null;
}
const lockup = inAppPurchaseLockupFromData(objectGraph, iAPData, {
offerStyle: "colored",
metricsOptions: {
pageInformation: context.pageInformation,
locationTracker: context.locationTracker,
},
artworkUseCase: 1 /* ArtworkUseCase.LockupIconSmall */,
});
if (isNullOrEmpty(lockup)) {
popTodayCardLocation(context);
return null;
}
lockup.theme = "infer";
inAppPurchaseCard.media = new TodayCardInAppPurchase(lockup);
// we need to add impressions to the media here because
// there is no overlay on an IAP inAppPurchaseCard for some reason
inAppPurchaseCard.media.impressionMetrics = lockup.impressionMetrics;
inAppPurchaseCard.media.impressionMetrics.fields["parentId"] = inAppPurchaseCard.impressionMetrics.fields["id"];
inAppPurchaseCard.style = "white";
// Special post-processing step for Acquisition story cards.
// This is needed to splice in data not included in initial response.
applyTodayCardOverridesForAcquisitionStoryIfNecessary(objectGraph, inAppPurchaseCard, cardConfig, cardDisplayStyleFromData(data, cardConfig.coercedCollectionTodayCardDisplayStyle), data, augmentingData, context);
popTodayCardLocation(context);
return inAppPurchaseCard;
});
}
function inAppPurchaseDataFromRelatedContent(objectGraph, relatedContent) {
if (relatedContent.length === 1) {
const contentData = relatedContent[0];
if (contentData.type === "in-apps") {
return contentData;
}
}
return null;
}
//# sourceMappingURL=today-in-app-purchase-card-builder.js.map
|