summaryrefslogtreecommitdiff
path: root/node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js
blob: 809b04206bc06dd218cb75cf3d361f10392bd8d7 (plain)
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