this repo has no description
1import { defaultAdditionalPlatformsForClient, Request } from "../../foundation/media/data-fetching";
2import { shouldFetchCustomAttributes } from "../product-page/product-page-variants";
3import { appEventsAreEnabled, appOfferItemsAreEnabled } from "../app-promotions/app-promotions-common";
4import { shouldUsePrerenderedIconArtwork } from "../content/content";
5import { AppEventsAttributes } from "../../gameservicesui/src/foundation/media-api/requests/recommendation-request-types";
6function buildAttributesForArticlePageRequest(objectGraph) {
7 const attributes = [
8 "screenshotsByType",
9 "videoPreviewsByType",
10 "requiredCapabilities",
11 "minimumOSVersion",
12 "editorialArtwork",
13 "editorialVideo",
14 "editorialClientParams",
15 "shortEditorialNotes",
16 "enrichedEditorialNotes",
17 ];
18 if (objectGraph.bag.enableUpdatedAgeRatings) {
19 attributes.push("ageRating");
20 }
21 if (objectGraph.appleSilicon.isSupportEnabled) {
22 attributes.push("macRequiredCapabilities");
23 }
24 if (objectGraph.client.isMac) {
25 attributes.push("hasMacIPAPackage");
26 }
27 if (objectGraph.client.isVision) {
28 attributes.push("compatibilityControllerRequirement");
29 }
30 if (shouldUsePrerenderedIconArtwork(objectGraph)) {
31 attributes.push("iconArtwork");
32 }
33 return attributes;
34}
35/**
36 * Create a Media API request for an `editorial-item`
37 *
38 * This corresponsd to an "Article" or "Story" page
39 */
40export function buildArticlePageRequest(objectGraph, intent, isIncomingURL) {
41 const request = new Request(objectGraph)
42 .withIdOfType(intent.id, "editorial-items")
43 .includingAdditionalPlatforms(defaultAdditionalPlatformsForClient(objectGraph))
44 .includingAttributes(buildAttributesForArticlePageRequest(objectGraph))
45 .includingRelationships(["canvas"])
46 .includingRelationshipsForUpsell(true)
47 .includingMacOSCompatibleIOSAppsWhenSupported(true)
48 .usingCustomAttributes(shouldFetchCustomAttributes(objectGraph));
49 if (!isIncomingURL) {
50 request.includingAgeRestrictions();
51 }
52 if (appEventsAreEnabled(objectGraph)) {
53 request.enablingFeature("appEvents");
54 request.includingScopedAttributes("app-events", AppEventsAttributes);
55 request.includingScopedRelationships("app-events", ["app"]);
56 request.includingScopedRelationships("editorial-item-shelves", ["app-events"]);
57 request.includingScopedAvailableIn("app-events", ["past"]);
58 }
59 if (appOfferItemsAreEnabled(objectGraph)) {
60 request.enablingFeature("offerItems");
61 request.includingScopedRelationships("offer-items", ["salables"]);
62 request.includingAssociateKeys("editorial-items", ["editorial-cards"]);
63 request.includingMetaKeys("offer-items:salables", ["discountOffer"]);
64 request.includingScopedAttributes("offer-items", [
65 "title",
66 "subtitle",
67 "additionalTerms",
68 "redemptionExpirationDate",
69 ]);
70 }
71 if (objectGraph.client.isVision) {
72 request.enablingFeature("supportsCustomTextColor");
73 request.includingScopedAttributes("editorial-items", ["enrichedEditorialNotes"]);
74 }
75 if (objectGraph.client.isWeb) {
76 request.includingAttributes([
77 // Publication date is used as part of SEO meta-data
78 "lastPublishedDate",
79 ]);
80 }
81 if (preprocessor.GAMES_TARGET) {
82 request.includingScopedAttributes("apps", ["isEligibleForGamesApp"]);
83 }
84 return request;
85}
86//# sourceMappingURL=article-request.js.map