summaryrefslogtreecommitdiff
path: root/node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js
diff options
context:
space:
mode:
authorrxliuli <rxliuli@gmail.com>2025-11-04 05:03:50 +0800
committerrxliuli <rxliuli@gmail.com>2025-11-04 05:03:50 +0800
commitbce557cc2dc767628bed6aac87301a1be7c5431b (patch)
treeb51a051228d01fe3306cd7626d4a96768aadb944 /node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js
init commit
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js')
-rw-r--r--node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js b/node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js
new file mode 100644
index 0000000..809b042
--- /dev/null
+++ b/node_modules/@jet-app/app-store/tmp/src/common/privacy/privacy-footer-shelf.js
@@ -0,0 +1,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 \ No newline at end of file