summaryrefslogtreecommitdiff
path: root/node_modules/@jet-app/app-store/tmp/src/common/content/device-family.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/content/device-family.js
init commit
Diffstat (limited to 'node_modules/@jet-app/app-store/tmp/src/common/content/device-family.js')
-rw-r--r--node_modules/@jet-app/app-store/tmp/src/common/content/device-family.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/node_modules/@jet-app/app-store/tmp/src/common/content/device-family.js b/node_modules/@jet-app/app-store/tmp/src/common/content/device-family.js
new file mode 100644
index 0000000..8c8c925
--- /dev/null
+++ b/node_modules/@jet-app/app-store/tmp/src/common/content/device-family.js
@@ -0,0 +1,91 @@
+import { isSome } from "@jet/environment/types/optional";
+import * as derivedData from "../../foundation/json-parsing/derived-data";
+import * as serverData from "../../foundation/json-parsing/server-data";
+import * as mediaAttributes from "../../foundation/media/attributes";
+import * as mediaRelationship from "../../foundation/media/relationships";
+export function dataHasDeviceFamily(objectGraph, data, deviceFamily, recurse = false) {
+ return derivedData.value(data, `dataHasDeviceFamily.${deviceFamily}`, () => {
+ if (!data || !deviceFamily) {
+ return false;
+ }
+ const deviceFamilies = deviceFamiliesFromData(objectGraph, data, recurse);
+ return deviceFamilies.indexOf(deviceFamily) !== -1;
+ });
+}
+export function dataOnlyHasDeviceFamily(objectGraph, data, deviceFamily, recurse = false) {
+ var _a;
+ return (((_a = dataHasDeviceFamily(objectGraph, data, deviceFamily, recurse)) !== null && _a !== void 0 ? _a : false) &&
+ deviceFamiliesFromData(objectGraph, data, recurse).length === 1);
+}
+export function dataHasAnyDeviceFamilies(objectGraph, data, deviceFamilies, recurse = false) {
+ const dataDeviceFamilies = new Set(deviceFamiliesFromData(objectGraph, data, recurse));
+ for (const deviceFamily of deviceFamilies) {
+ if (dataDeviceFamilies.has(deviceFamily)) {
+ return true;
+ }
+ }
+ return false;
+}
+export function dataOnlyHasDeviceFamilies(objectGraph, data, deviceFamilies, recurse = false) {
+ const dataDeviceFamilies = new Set(deviceFamiliesFromData(objectGraph, data, recurse));
+ // Ensure length matches
+ if (deviceFamilies.length !== dataDeviceFamilies.size) {
+ return false;
+ }
+ // Ensure content matches
+ return deviceFamilies.every((deviceFamily) => dataDeviceFamilies.has(deviceFamily));
+}
+export function deviceFamiliesFromData(objectGraph, data, recurse = false) {
+ const deviceFamilies = mediaAttributes.attributeAsArrayOrEmpty(data, "deviceFamilies");
+ // If there isn't a device families attribute...
+ if (deviceFamilies.length === 0 && recurse) {
+ // Use its related apps (if it has them)
+ const apps = mediaRelationship.relationshipCollection(data, "apps");
+ if (isSome(apps)) {
+ for (const app of apps) {
+ // Get the device families from the first app that has one (if any)
+ const appDeviceFamilies = deviceFamiliesFromData(objectGraph, app, recurse);
+ if (serverData.isDefinedNonNullNonEmpty(appDeviceFamilies)) {
+ return appDeviceFamilies;
+ }
+ }
+ }
+ }
+ return deviceFamilies;
+}
+/**
+ * Returns the DeviceFamily for a given device type and model
+ * @param {base.DeviceType} deviceType The device type to check
+ * @param {objectGraph.host.deviceModel} deviceModel The device model to check, currently used to identify iPods
+ * @returns {DeviceFamily} DeviceFamily associated with the input parameters
+ */
+export function deviceFamilyFromDeviceType(objectGraph, deviceType, deviceModel) {
+ let deviceFamily = null;
+ switch (deviceType) {
+ case "phone":
+ deviceFamily = "iphone";
+ break;
+ case "pad":
+ deviceFamily = "ipad";
+ break;
+ case "mac":
+ deviceFamily = "mac";
+ break;
+ case "tv":
+ deviceFamily = "tvos";
+ break;
+ case "watch":
+ deviceFamily = "watch";
+ break;
+ case "vision":
+ deviceFamily = "realityDevice";
+ break;
+ default:
+ break;
+ }
+ if (serverData.isDefinedNonNull(deviceModel) && deviceModel === "ipod") {
+ deviceFamily = "ipod";
+ }
+ return deviceFamily;
+}
+//# sourceMappingURL=device-family.js.map \ No newline at end of file