summaryrefslogtreecommitdiff
path: root/node_modules/@jet-app/app-store/tmp/src/common/content/game-controller.js
blob: 7071edd81404378da83e3290d979221c54035b85 (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
import { isFeatureEnabledForCurrentUser } from "../../common/util/lottery";
import * as serverData from "../../foundation/json-parsing/server-data";
import * as platformAttributes from "../../foundation/media/platform-attributes";
import * as contentAttributes from "./attributes";
export function isGameControllerSupported(objectGraph, data) {
    switch (controllerRequirementFromData(objectGraph, data)) {
        case "CONTROLLER_OPTIONAL":
        case "CONTROLLER_REQUIRED":
        case "SIRI_REMOTE_REQUIRED":
        case "SIRI_REMOTE_OR_CONTROLLER_REQUIRED":
        case "CONTROLLER_RECOMMENDED":
            return true;
        default:
            return false;
    }
}
export function isGameControllerRecommended(objectGraph, data) {
    return (objectGraph.client.isiOS &&
        isFeatureEnabledForCurrentUser(objectGraph, objectGraph.bag.gameControllerRecommendedRolloutRate) &&
        controllerRequirementFromData(objectGraph, data) === "CONTROLLER_RECOMMENDED");
}
export function isGameControllerRequired(objectGraph, data) {
    switch (controllerRequirementFromData(objectGraph, data)) {
        case "CONTROLLER_REQUIRED":
        case "SIRI_REMOTE_REQUIRED":
        case "SIRI_REMOTE_OR_CONTROLLER_REQUIRED":
            return true;
        default:
            return false;
    }
}
export function isSpatialControllerRequired(objectGraph, data) {
    return spatialControllerRequirementFromData(objectGraph, data) === "REQUIRED";
}
export function isSpatialControllerSupported(objectGraph, data) {
    return (spatialControllerRequirementFromData(objectGraph, data) === "SUPPORTED" ||
        spatialControllerRequirementFromData(objectGraph, data) === "REQUIRED");
}
export function controllerRequirementFromData(objectGraph, data) {
    // If the data does not contain the current device's OS, we need to use the best alternative that it is compatible with.
    const platformAttributeForClient = contentAttributes.defaultAttributePlatform(objectGraph);
    if (platformAttributeForClient === null) {
        return "NO_BADGE";
    }
    const requiresBinaryCompatibilityMode = !platformAttributes.hasPlatformAttribute(data, platformAttributeForClient);
    if (requiresBinaryCompatibilityMode) {
        const compatibilityControllerRequirementData = contentAttributes.contentAttributeAsDictionary(objectGraph, data, "compatibilityControllerRequirement");
        if (compatibilityControllerRequirementData === null ||
            serverData.isNullOrEmpty(compatibilityControllerRequirementData)) {
            return "NO_BADGE";
        }
        const compatibilityControllerRequirement = compatibilityControllerRequirementData[platformAttributeForClient];
        if (serverData.isNullOrEmpty(compatibilityControllerRequirement)) {
            return "NO_BADGE";
        }
        return compatibilityControllerRequirement;
    }
    const remoteControllerRequirement = contentAttributes.contentAttributeAsString(objectGraph, data, "remoteControllerRequirement");
    if (serverData.isDefinedNonNullNonEmpty(remoteControllerRequirement)) {
        return remoteControllerRequirement;
    }
    return "NO_BADGE";
}
export function spatialControllerRequirementFromData(objectGraph, data) {
    const platformAttributeForClient = contentAttributes.defaultAttributePlatform(objectGraph);
    if (!objectGraph.client.isVision ||
        platformAttributeForClient === null ||
        !objectGraph.featureFlags.isEnabled("spatial_controllers_2025A")) {
        return "NOT_SUPPORTED";
    }
    const spatialRequirement = platformAttributes.platformAttributeAsString(data, platformAttributeForClient, "spatialControllerRequirement");
    if (serverData.isDefinedNonNullNonEmpty(spatialRequirement)) {
        return spatialRequirement;
    }
    return "NOT_SUPPORTED";
}
//# sourceMappingURL=game-controller.js.map