diff options
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/common/app-events/app-events-common.js')
| -rw-r--r-- | node_modules/@jet-app/app-store/tmp/src/common/app-events/app-events-common.js | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/common/app-events/app-events-common.js b/node_modules/@jet-app/app-store/tmp/src/common/app-events/app-events-common.js new file mode 100644 index 0000000..cf5fd18 --- /dev/null +++ b/node_modules/@jet-app/app-store/tmp/src/common/app-events/app-events-common.js @@ -0,0 +1,83 @@ +import { GenericPage, AppEventDetailShelf, Shelf, Banner } from "../../api/models"; +import { attributeAsString } from "../../foundation/media/attributes"; +import { defaultAdditionalPlatformsForClient, Request } from "../../foundation/media/data-fetching"; +import { dataFromDataContainer } from "../../foundation/media/data-structure"; +import { relationshipData } from "../../foundation/media/relationships"; +import { appEventOrPromotionStartDateFromData } from "../app-promotions/app-event"; +import { appEventDetailPageFromData } from "../app-promotions/app-event-detail"; +import { supportedAppPlatformsFromData } from "../content/content"; +import { newLocationTracker } from "../metrics/helpers/location"; +import { metricsPageInformationFromMediaApiResponse } from "../metrics/helpers/page"; +import { create as createBanner } from "../product-page/banner"; +/** + * Generates a {@linkcode Request} to the `app-events` Media API endpoint + */ +export function makeAppEventPageRequest(objectGraph, intent) { + const mediaApiRequest = new Request(objectGraph) + .withIdOfType(intent.id, "app-events") + .includingAdditionalPlatforms(defaultAdditionalPlatformsForClient(objectGraph)) + .includingRelationships(["app"]); + if (objectGraph.client.isWeb) { + mediaApiRequest.includingScopedAttributes("app-events", ["description", "productArtwork", "productVideo"]); + mediaApiRequest.includingScopedAvailableIn("app-events", ["past"]); + } + return mediaApiRequest; +} +/** + * Builds a `GenericPage` that represents an App Event detail page + * + * This is used by the "web" client to build the view-model for the standalone + * "app event" pages + */ +export function makeShelfBasedAppEventDetailPage(objectGraph, container) { + const data = dataFromDataContainer(objectGraph, container); + if (!data) { + return null; + } + const parentApp = relationshipData(objectGraph, data, "app"); + if (!parentApp) { + return null; + } + const metricsOptions = { + pageInformation: metricsPageInformationFromMediaApiResponse(objectGraph, "EventDetails", data.id, container), + locationTracker: newLocationTracker(), + }; + const appEvent = appEventOrPromotionStartDateFromData(objectGraph, data, parentApp, false, // `hideLockupWhenNotInstalled` + false, // `includeClickAction` + "light", // `offerEnvironment` + "infer", // `offerStyle` + false, // `includeCrossLinkStyles` + metricsOptions, true, // `allowEndedEvents` + true, // `includeLockupClickAction` + null, // `editorialKind` + false, // `isArcadePage` + false); + if (!appEvent || appEvent instanceof Date) { + return null; + } + const appEventDetailPage = appEventDetailPageFromData(objectGraph, data, parentApp, appEvent, metricsOptions, true, // `includeLockupClickAction` + null, // `referrerData` + false); + if (!appEventDetailPage) { + return null; + } + const shelves = []; + // Build the "banner" if necessary + const bannerContext = { + appPlatforms: supportedAppPlatformsFromData(objectGraph, data), + offerButtonShouldBeDisabled: true, + metricsPageInformation: metricsOptions.pageInformation, + metricsLocationTracker: metricsOptions.locationTracker, + webBrowser: false, + }; + const maybeBanner = createBanner(objectGraph, parentApp, bannerContext); + if (maybeBanner instanceof Banner) { + shelves.push(new Shelf("banner", null, [maybeBanner])); + } + const appEventDetailShelf = new AppEventDetailShelf(appEventDetailPage); + shelves.push(appEventDetailShelf); + const page = new GenericPage(shelves); + page.canonicalURL = attributeAsString(data, "url"); + return page; +} +//# sourceMappingURL=app-events-common.js.map
\ No newline at end of file |
