this repo has no description
1import { isNothing } from "@jet/environment/types/optional";
2import { fetchData } from "../../foundation/media/network";
3import { withActiveIntent } from "../../foundation/dependencies/active-intent";
4import { makeBaseGroupingPageRequest, prepareGroupingPageRequest } from "../../common/grouping/grouping-request";
5import { flattenedGroupingFromDataContainer, groupingPageFromFlattenedGrouping, groupingParseContextFromDataContainer, } from "../../common/grouping/render-grouping-page";
6import { injectWebNavigation } from "../../common/web-navigation/inject-web-navigation";
7import { setPreviewPlatform } from "../../common/preview-platform";
8import { groupingPageRoutes as routes, makeGroupingPageCanonicalURL } from "../../common/grouping/grouping-page-url";
9import { injectSEOData } from "../../api/models/web-renderable-page";
10import { validateGroupingId } from "../../foundation/media/util";
11function makeMediaApiGroupingPageRequest(objectGraph, intent) {
12 const mediaApiRequest = makeBaseGroupingPageRequest(objectGraph);
13 if ("name" in intent) {
14 mediaApiRequest.addingQuery("name", intent.name);
15 }
16 else {
17 mediaApiRequest.withIdOfType(intent.id, "groupings");
18 }
19 if ("tabs" in intent) {
20 mediaApiRequest.addingQuery("tabs", intent.tabs);
21 }
22 prepareGroupingPageRequest(objectGraph, mediaApiRequest);
23 setPreviewPlatform(objectGraph, mediaApiRequest);
24 return mediaApiRequest;
25}
26export const GroupingPageIntentController = {
27 $intentKind: "GroupingPageIntent",
28 routes,
29 async perform(intent, objectGraphWithoutActiveIntent) {
30 return await withActiveIntent(objectGraphWithoutActiveIntent, intent, async (objectGraph) => {
31 var _a;
32 if ("id" in intent) {
33 // See: https://github.pie.apple.com/its/Jingle/blob/aaccec936f1feed227fd171ae66bb160cf38e497/MZStorePlatform/src/main/clojure/jingle/store/platform/api/realm/apps/apps_endpoints.clj#L1554
34 // See: https://github.pie.apple.com/its/Jingle/blob/aaccec936f1feed227fd171ae66bb160cf38e497/MZStorePlatform/src/main/clojure/jingle/store/platform/api/controller/editorial_resource.clj#L9
35 // See: https://github.pie.apple.com/its/Jingle/blob/aaccec936f1feed227fd171ae66bb160cf38e497/MZStorePlatform/src/main/java/com/apple/jingle/store/mediaapi/util/SFMediaAPIEditorialUtil.java#L585
36 // See: https://github.pie.apple.com/its/Jingle/blob/aaccec936f1feed227fd171ae66bb160cf38e497/MZStorePlatform/src/main/java/com/apple/jingle/store/mediaapi/util/SFMediaAPIEditorialUtil.java#L633-L639
37 validateGroupingId(objectGraph, intent.id);
38 }
39 const mediaApiRequest = makeMediaApiGroupingPageRequest(objectGraph, intent);
40 const response = await fetchData(objectGraph, mediaApiRequest);
41 const flattenedGrouping = flattenedGroupingFromDataContainer(objectGraph, response);
42 const groupingParseContext = groupingParseContextFromDataContainer(objectGraph, response);
43 if (isNothing(flattenedGrouping) || isNothing(groupingParseContext)) {
44 return null;
45 }
46 const page = groupingPageFromFlattenedGrouping(objectGraph, flattenedGrouping, groupingParseContext);
47 if ("id" in intent) {
48 page.canonicalURL = makeGroupingPageCanonicalURL(objectGraph, intent);
49 }
50 if (objectGraph.client.isWeb) {
51 injectWebNavigation(objectGraph, page, intent.platform);
52 injectSEOData(page, (_a = objectGraph.seo) === null || _a === void 0 ? void 0 : _a.getSEODataForGroupingPage(objectGraph, page, response));
53 }
54 return page;
55 });
56 },
57};
58//# sourceMappingURL=grouping-page-intent-controller.js.map