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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
import * as validation from "@jet/environment/json/validation";
import * as models from "../../api/models";
import * as serverData from "../../foundation/json-parsing/server-data";
import * as privacyHeaderShelf from "./privacy-header-shelf";
/**
* Builder for the privacy footer shelf.
*/
export function create(objectGraph, data, pageInformation, locationTracker) {
return validation.context("create", () => {
if (serverData.isNullOrEmpty(data)) {
return null;
}
if (objectGraph.client.isWatch) {
return null;
}
const privacyTypes = privacyHeaderShelf.privacyTypesFromData(objectGraph, data, false, "detailPage", pageInformation, locationTracker);
const privacyDataNotProvided = (privacyTypes.length === 1 && privacyTypes[0].identifier === "DATA_NOT_PROVIDED") ||
privacyTypes.length === 0;
if (privacyDataNotProvided && objectGraph.client.deviceType !== "tv") {
return null;
}
const shelf = new models.Shelf("privacyFooter");
const privacyFooter = privacyFooterFromData(objectGraph, data, pageInformation, locationTracker);
shelf.items = [privacyFooter];
return shelf;
});
}
/**
* Creates a privacy footer object.
* @param data The data blob
*/
export function privacyFooterFromData(objectGraph, data, pageInformation, locationTracker) {
return validation.context("privacyFooterFromData", () => {
const bodyText = bodyTextFromData(objectGraph, data, pageInformation, locationTracker);
const actions = actionsFromData(objectGraph, data, pageInformation, locationTracker);
let privacyTypes = [];
if (objectGraph.client.isTV) {
privacyTypes = privacyHeaderShelf.privacyTypesFromData(objectGraph, data, false, "productPage", pageInformation, locationTracker);
}
return new models.PrivacyFooter(bodyText, actions, privacyTypes.length);
});
}
/**
* Creates the main body text for the footer.
* @param data The data blob
*/
function bodyTextFromData(objectGraph, data, pageInformation, locationTracker) {
let text;
const learnMoreLinkText = objectGraph.loc.string("PRODUCT_PRIVACY_LEARN_MORE_LINK");
const linkedSubstrings = {};
const learnMoreAction = privacyHeaderShelf.createLearnMoreAction(objectGraph, pageInformation, locationTracker);
if (objectGraph.client.isTV || serverData.isNull(learnMoreAction)) {
text = objectGraph.loc.string("PRODUCT_PRIVACY_LEARN_MORE_NO_LINK");
}
else {
text = objectGraph.loc.string("PRODUCT_PRIVACY_LEARN_MORE_TEMPLATE");
text = text.replace("{learnMoreLink}", learnMoreLinkText);
if (serverData.isNull(learnMoreAction)) {
text = objectGraph.loc.string("PRODUCT_PRIVACY_LEARN_MORE_NO_LINK");
}
else {
linkedSubstrings[learnMoreLinkText] = learnMoreAction;
}
}
const textType = "text/plain";
const styledText = new models.StyledText(text, textType);
return new models.LinkableText(styledText, linkedSubstrings);
}
/**
* Creates the actions for displaying in the privacy footer.
*/
function actionsFromData(objectGraph, data, pageInformation, locationTracker) {
if (objectGraph.client.deviceType !== "tv") {
return [];
}
const actions = [];
const learnMoreAction = privacyHeaderShelf.createLearnMoreAction(objectGraph, pageInformation, locationTracker);
if (serverData.isDefinedNonNull(learnMoreAction)) {
actions.push(learnMoreAction);
}
const privacyDefinitionsAction = privacyHeaderShelf.createPrivacyDefinitionsAction(objectGraph, pageInformation, locationTracker);
if (serverData.isDefinedNonNull(privacyDefinitionsAction)) {
actions.push(privacyDefinitionsAction);
}
return actions;
}
//# sourceMappingURL=privacy-footer-shelf.js.map
|