this repo has no description
at main 3.6 kB view raw
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