@iternio/react-native-auto-play 0.1.18 → 0.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -8
- package/android/build.gradle +15 -1
- package/android/gradle.properties +1 -1
- package/android/src/{main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoTelemetryObserver.kt → auto/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidTelemetryObserver.kt} +31 -76
- package/android/src/automotive/AndroidManifest.xml +91 -0
- package/android/src/automotive/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidTelemetryObserver.kt +191 -0
- package/android/src/main/AndroidManifest.xml +0 -10
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoScreen.kt +3 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/AndroidAutoTelemetryHolder.kt +97 -19
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutoTelemetry.kt +39 -3
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSignInTemplate.kt +22 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/TelemetryObserver.kt +56 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/VirtualRenderer.kt +15 -10
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/AutomotivePermissionRequestTemplate.kt +103 -0
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/GridTemplate.kt +0 -2
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/Parser.kt +8 -2
- package/android/src/main/java/com/margelo/nitro/swe/iternio/reactnativeautoplay/template/SignInTemplate.kt +159 -0
- package/ios/extensions/CarPlayExtensions.swift +4 -2
- package/ios/extensions/NitroImageExtensions.swift +4 -4
- package/ios/hybrid/HybridAutoPlay.swift +31 -42
- package/ios/hybrid/HybridCluster.swift +4 -2
- package/ios/hybrid/HybridGridTemplate.swift +11 -11
- package/ios/hybrid/HybridInformationTemplate.swift +12 -13
- package/ios/hybrid/HybridListTemplate.swift +12 -13
- package/ios/hybrid/HybridMapTemplate.swift +13 -16
- package/ios/hybrid/HybridMessageTemplate.swift +7 -4
- package/ios/hybrid/HybridSearchTemplate.swift +12 -13
- package/ios/scenes/AutoPlayInterfaceController.swift +41 -13
- package/ios/scenes/AutoPlayScene.swift +2 -1
- package/ios/scenes/AutoPlaySceneViewController.swift +8 -2
- package/ios/scenes/DashboardSceneDelegate.swift +15 -7
- package/ios/scenes/HeadUnitSceneDelegate.swift +7 -5
- package/ios/scenes/WindowApplicationSceneDelegate.swift +1 -1
- package/ios/templates/AutoPlayTemplate.swift +23 -15
- package/ios/templates/GridTemplate.swift +23 -16
- package/ios/templates/InformationTemplate.swift +12 -11
- package/ios/templates/ListTemplate.swift +11 -11
- package/ios/templates/MapTemplate.swift +44 -42
- package/ios/templates/MessageTemplate.swift +8 -12
- package/ios/templates/Parser.swift +2 -1
- package/ios/templates/SearchTemplate.swift +19 -17
- package/ios/templates/TemplateStore.swift +17 -9
- package/ios/utils/RootModule.swift +19 -12
- package/ios/utils/SymbolFont.swift +2 -1
- package/ios/utils/ViewUtils.swift +2 -2
- package/lib/hooks/useAndroidAutoTelemetry.d.ts +22 -4
- package/lib/hooks/useAndroidAutoTelemetry.js +52 -24
- package/lib/index.d.ts +2 -0
- package/lib/index.js +2 -0
- package/lib/specs/AndroidAutoTelemetry.nitro.d.ts +14 -1
- package/lib/types/Telemetry.d.ts +27 -0
- package/lib/types/Telemetry.js +7 -0
- package/nitro.json +3 -0
- package/nitrogen/generated/android/ReactNativeAutoPlay+autolinking.cmake +3 -0
- package/nitrogen/generated/android/ReactNativeAutoPlayOnLoad.cpp +12 -2
- package/nitrogen/generated/android/c++/JBooleanTelemetryItem.hpp +61 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_Telemetry_.hpp +87 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +10 -10
- package/nitrogen/generated/android/c++/JHybridAndroidAutoTelemetrySpec.cpp +41 -5
- package/nitrogen/generated/android/c++/JHybridAndroidAutoTelemetrySpec.hpp +2 -1
- package/nitrogen/generated/android/c++/JHybridSignInTemplateSpec.cpp +133 -0
- package/nitrogen/generated/android/c++/JHybridSignInTemplateSpec.hpp +66 -0
- package/nitrogen/generated/android/c++/JInputSignIn.hpp +103 -0
- package/nitrogen/generated/android/c++/JKeyboardType.hpp +65 -0
- package/nitrogen/generated/android/c++/JPermissionRequestResult.hpp +98 -0
- package/nitrogen/generated/android/c++/JPinSignIn.hpp +63 -0
- package/nitrogen/generated/android/c++/JQrSignIn.hpp +63 -0
- package/nitrogen/generated/android/c++/JSignInMethods.hpp +65 -0
- package/nitrogen/generated/android/c++/JSignInTemplateConfig.hpp +217 -0
- package/nitrogen/generated/android/c++/JTelemetry.hpp +25 -3
- package/nitrogen/generated/android/c++/JTextInputType.hpp +59 -0
- package/nitrogen/generated/android/c++/JVariant_QrSignIn_PinSignIn_InputSignIn.cpp +30 -0
- package/nitrogen/generated/android/c++/JVariant_QrSignIn_PinSignIn_InputSignIn.hpp +99 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AssetImage.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/AutoText.kt +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/BooleanTelemetryItem.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Distance.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/DurationWithTimeZone.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/{Func_void_std__optional_Telemetry__std__optional_std__string_.kt → Func_void_std__optional_Telemetry_.kt} +14 -14
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__string.kt +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GlyphImage.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/GridTemplateConfig.kt +9 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridAndroidAutoTelemetrySpec.kt +7 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSignInTemplateSpec.kt +62 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ImageLane.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/InformationTemplateConfig.kt +10 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/InputSignIn.kt +63 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/KeyboardType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/LaneGuidance.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/ListTemplateConfig.kt +10 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Location.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/MapTemplateConfig.kt +18 -18
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/MessageTemplateConfig.kt +12 -12
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NavigationAlertAction.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAction.kt +7 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAttributedString.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroAttributedStringImage.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroBaseMapTemplateConfig.kt +10 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroColor.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroGridButton.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroLoadingManeuver.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMapButton.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroMessageManeuver.kt +3 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroNavigationAlert.kt +6 -6
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRoutingManeuver.kt +13 -13
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroRow.kt +7 -7
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NitroSection.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/NumericTelemetryItem.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/PermissionRequestResult.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/PinSignIn.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Point.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/PreferredImageLane.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/QrSignIn.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/RouteChoice.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SafeAreaInsets.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SearchTemplateConfig.kt +10 -10
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SignInMethods.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/SignInTemplateConfig.kt +78 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/StringTelemetryItem.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Telemetry.kt +24 -9
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TextInputType.kt +21 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TravelEstimates.kt +2 -2
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripConfig.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripPoint.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripPreviewTextConfiguration.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripSelectorCallback.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/TripsConfig.kt +1 -1
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/Variant_QrSignIn_PinSignIn_InputSignIn.kt +72 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/swe/iternio/reactnativeautoplay/VehicleTelemetryItem.kt +4 -4
- package/nitrogen/generated/shared/c++/BooleanTelemetryItem.hpp +79 -0
- package/nitrogen/generated/shared/c++/HybridAndroidAutoTelemetrySpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridAndroidAutoTelemetrySpec.hpp +7 -1
- package/nitrogen/generated/shared/c++/HybridSignInTemplateSpec.cpp +22 -0
- package/nitrogen/generated/shared/c++/HybridSignInTemplateSpec.hpp +66 -0
- package/nitrogen/generated/shared/c++/InputSignIn.hpp +113 -0
- package/nitrogen/generated/shared/c++/KeyboardType.hpp +64 -0
- package/nitrogen/generated/shared/c++/PermissionRequestResult.hpp +80 -0
- package/nitrogen/generated/shared/c++/PinSignIn.hpp +81 -0
- package/nitrogen/generated/shared/c++/QrSignIn.hpp +81 -0
- package/nitrogen/generated/shared/c++/SignInMethods.hpp +64 -0
- package/nitrogen/generated/shared/c++/SignInTemplateConfig.hpp +138 -0
- package/nitrogen/generated/shared/c++/Telemetry.hpp +25 -2
- package/nitrogen/generated/shared/c++/TextInputType.hpp +62 -0
- package/package.json +3 -2
- package/src/hooks/useAndroidAutoTelemetry.ts +80 -27
- package/src/index.ts +2 -0
- package/src/specs/AndroidAutoTelemetry.nitro.ts +19 -1
- package/src/specs/SignInTemplate.nitro.ts +10 -0
- package/src/templates/SignInTemplate.ts +117 -0
- package/src/types/SignInMethod.ts +41 -0
- package/src/types/Telemetry.ts +29 -0
- package/lib/hooks/useIsAutoPlayFocused.d.ts +0 -7
- package/lib/hooks/useIsAutoPlayFocused.js +0 -20
- package/lib/hybrid.d.ts +0 -2
- package/lib/hybrid.js +0 -2
- package/lib/specs/AutomotivePermissionRequestTemplate.d.ts +0 -11
- package/lib/specs/AutomotivePermissionRequestTemplate.js +0 -1
- package/lib/specs/AutomotivePermissionRequestTemplate.nitro.d.ts +0 -11
- package/lib/specs/AutomotivePermissionRequestTemplate.nitro.js +0 -1
- package/lib/templates/AutomotivePermissionRequestTemplate.d.ts +0 -23
- package/lib/templates/AutomotivePermissionRequestTemplate.js +0 -18
- package/nitrogen/generated/android/c++/JFunc_void_std__optional_Telemetry__std__optional_std__string_.hpp +0 -85
|
@@ -8,8 +8,8 @@ import { HybridAndroidAutoTelemetry, HybridAutoPlay } from '..';
|
|
|
8
8
|
* @param requestTelemetryPermissions If true, the telemetry permissions will be requested from the user. Can be set to false initially, in case other permissions need to be requested first, so the permission request dialogs do not overlap.
|
|
9
9
|
* @param requiredPermissions The permissions to check.
|
|
10
10
|
*/
|
|
11
|
-
export const useAndroidAutoTelemetry = ({ requestTelemetryPermissions = true, requiredPermissions, }) => {
|
|
12
|
-
const [permissionsGranted, setPermissionsGranted] = useState(
|
|
11
|
+
export const useAndroidAutoTelemetry = ({ requestTelemetryPermissions = true, requiredPermissions, automotivePermissionRequest, }) => {
|
|
12
|
+
const [permissionsGranted, setPermissionsGranted] = useState(null);
|
|
13
13
|
const [telemetry, setTelemetry] = useState(undefined);
|
|
14
14
|
const [error, setError] = useState(undefined);
|
|
15
15
|
const [isConnected, setIsConnected] = useState(false);
|
|
@@ -27,43 +27,71 @@ export const useAndroidAutoTelemetry = ({ requestTelemetryPermissions = true, re
|
|
|
27
27
|
const state = await Promise.all(requiredPermissions.map((permission) => PermissionsAndroid.check(permission).catch(() => false)));
|
|
28
28
|
setPermissionsGranted(state.every((granted) => granted));
|
|
29
29
|
};
|
|
30
|
-
checkPermissions();
|
|
30
|
+
void checkPermissions();
|
|
31
31
|
}, [requiredPermissions]);
|
|
32
32
|
useEffect(() => {
|
|
33
33
|
if (!isConnected || !permissionsGranted) {
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
36
|
+
try {
|
|
37
|
+
const remove = HybridAndroidAutoTelemetry?.registerTelemetryListener(setTelemetry);
|
|
38
|
+
return () => remove?.();
|
|
39
|
+
}
|
|
40
|
+
catch (e) {
|
|
41
|
+
if (e instanceof Error) {
|
|
42
|
+
setError(`${e.name}: ${e.message}\n${e.stack ?? ''}`.trim());
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
setError(String(e));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
43
49
|
}, [isConnected, permissionsGranted]);
|
|
44
50
|
useEffect(() => {
|
|
45
|
-
if (requestTelemetryPermissions
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
if (!requestTelemetryPermissions || requiredPermissions.length === 0) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (permissionsGranted !== false) {
|
|
55
|
+
// either wait for permission request to finish or do nothing in case permissions are granted already
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (automotivePermissionRequest?.message != null) {
|
|
59
|
+
HybridAndroidAutoTelemetry?.requestAutomotivePermissions(requiredPermissions, automotivePermissionRequest.message, automotivePermissionRequest.grantButtonText, automotivePermissionRequest.cancelButtonText).then(({ granted, denied }) => {
|
|
60
|
+
const isGranted = granted.length === requiredPermissions.length;
|
|
61
|
+
setPermissionsGranted(isGranted);
|
|
50
62
|
if (!isGranted) {
|
|
51
|
-
|
|
52
|
-
return;
|
|
63
|
+
setError(`Android Automotive permissions denied: [${denied.join(',')}]`);
|
|
53
64
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
.catch((e) => console.error('*** Android Auto telemetry permissions error', e));
|
|
65
|
+
});
|
|
66
|
+
return;
|
|
57
67
|
}
|
|
58
|
-
|
|
59
|
-
|
|
68
|
+
// PermissionsAndroid is not aware of Android Auto related permissions
|
|
69
|
+
PermissionsAndroid.requestMultiple(requiredPermissions)
|
|
70
|
+
.then((result) => {
|
|
71
|
+
const isGranted = requiredPermissions.every((permission) => result[permission] === 'granted');
|
|
72
|
+
if (!isGranted) {
|
|
73
|
+
console.warn('Android Auto telemetry permissions not granted');
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
setPermissionsGranted(true);
|
|
77
|
+
})
|
|
78
|
+
.catch((e) => console.error('Android Auto telemetry permissions error', e));
|
|
79
|
+
}, [
|
|
80
|
+
requestTelemetryPermissions,
|
|
81
|
+
requiredPermissions,
|
|
82
|
+
permissionsGranted,
|
|
83
|
+
automotivePermissionRequest?.cancelButtonText,
|
|
84
|
+
automotivePermissionRequest?.grantButtonText,
|
|
85
|
+
automotivePermissionRequest?.message,
|
|
86
|
+
]);
|
|
60
87
|
return {
|
|
61
88
|
/**
|
|
62
|
-
* True if the telemetry permissions are granted, false otherwise.
|
|
89
|
+
* null on pending permission check, True if the telemetry permissions are granted, false otherwise.
|
|
63
90
|
*/
|
|
64
91
|
permissionsGranted,
|
|
65
92
|
/**
|
|
66
|
-
* The telemetry data.
|
|
93
|
+
* The telemetry data, might be a partial update not containing all properties of the regular timed updates.
|
|
94
|
+
* For example gear changes are emitted immediately without all the other telemetry data.
|
|
67
95
|
*/
|
|
68
96
|
telemetry,
|
|
69
97
|
/**
|
package/lib/index.d.ts
CHANGED
|
@@ -25,12 +25,14 @@ export * from './templates/ListTemplate';
|
|
|
25
25
|
export * from './templates/MapTemplate';
|
|
26
26
|
export * from './templates/MessageTemplate';
|
|
27
27
|
export * from './templates/SearchTemplate';
|
|
28
|
+
export * from './templates/SignInTemplate';
|
|
28
29
|
export * from './templates/Template';
|
|
29
30
|
export * from './types/Button';
|
|
30
31
|
export * from './types/Event';
|
|
31
32
|
export * from './types/Image';
|
|
32
33
|
export * from './types/Maneuver';
|
|
33
34
|
export * from './types/RootComponent';
|
|
35
|
+
export * from './types/SignInMethod';
|
|
34
36
|
export * from './types/Telemetry';
|
|
35
37
|
export * from './types/Text';
|
|
36
38
|
export * from './types/Trip';
|
package/lib/index.js
CHANGED
|
@@ -30,12 +30,14 @@ export * from './templates/ListTemplate';
|
|
|
30
30
|
export * from './templates/MapTemplate';
|
|
31
31
|
export * from './templates/MessageTemplate';
|
|
32
32
|
export * from './templates/SearchTemplate';
|
|
33
|
+
export * from './templates/SignInTemplate';
|
|
33
34
|
export * from './templates/Template';
|
|
34
35
|
export * from './types/Button';
|
|
35
36
|
export * from './types/Event';
|
|
36
37
|
export * from './types/Image';
|
|
37
38
|
export * from './types/Maneuver';
|
|
38
39
|
export * from './types/RootComponent';
|
|
40
|
+
export * from './types/SignInMethod';
|
|
39
41
|
export * from './types/Telemetry';
|
|
40
42
|
export * from './types/Text';
|
|
41
43
|
export * from './types/Trip';
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { HybridObject } from 'react-native-nitro-modules';
|
|
2
2
|
import type { CleanupCallback } from '../types/Event';
|
|
3
3
|
import type { Telemetry } from '../types/Telemetry';
|
|
4
|
+
type PermissionRequestResult = {
|
|
5
|
+
granted: Array<string>;
|
|
6
|
+
denied: Array<string>;
|
|
7
|
+
};
|
|
4
8
|
export interface AndroidAutoTelemetry extends HybridObject<{
|
|
5
9
|
android: 'kotlin';
|
|
6
10
|
}> {
|
|
@@ -11,5 +15,14 @@ export interface AndroidAutoTelemetry extends HybridObject<{
|
|
|
11
15
|
* @returns callback to remove the listener
|
|
12
16
|
* @namespace Android
|
|
13
17
|
*/
|
|
14
|
-
registerTelemetryListener(callback: (tlm?: Telemetry
|
|
18
|
+
registerTelemetryListener(callback: (tlm?: Telemetry) => void): CleanupCallback;
|
|
19
|
+
/**
|
|
20
|
+
* Brings up a template to request specified permissions from the user
|
|
21
|
+
* @param permissions some of `AndroidAutoPermissions`
|
|
22
|
+
* @param message text shown on the template
|
|
23
|
+
* @param grantButtonText primary action button text
|
|
24
|
+
* @param cancelButtonText secondary action button text, if not specified button will not be shown
|
|
25
|
+
*/
|
|
26
|
+
requestAutomotivePermissions(permissions: Array<string>, message: string, grantButtonText: string, cancelButtonText?: string): Promise<PermissionRequestResult>;
|
|
15
27
|
}
|
|
28
|
+
export {};
|
package/lib/types/Telemetry.d.ts
CHANGED
|
@@ -30,11 +30,24 @@ type StringTelemetryItem = {
|
|
|
30
30
|
timestamp: number;
|
|
31
31
|
value: string;
|
|
32
32
|
};
|
|
33
|
+
type BooleanTelemetryItem = {
|
|
34
|
+
/**
|
|
35
|
+
* timestamp in seconds when the value was received on native side
|
|
36
|
+
*/
|
|
37
|
+
timestamp: number;
|
|
38
|
+
value: boolean;
|
|
39
|
+
};
|
|
33
40
|
type VehicleTelemetryItem = {
|
|
34
41
|
name?: StringTelemetryItem;
|
|
35
42
|
year?: NumericTelemetryItem;
|
|
36
43
|
manufacturer?: StringTelemetryItem;
|
|
37
44
|
};
|
|
45
|
+
export declare enum VehicleGear {
|
|
46
|
+
Neutral = 1,
|
|
47
|
+
Reverse = 2,
|
|
48
|
+
Park = 4,
|
|
49
|
+
Drive = 8
|
|
50
|
+
}
|
|
38
51
|
export type Telemetry = {
|
|
39
52
|
/**
|
|
40
53
|
* Speed in km/h
|
|
@@ -60,5 +73,19 @@ export type Telemetry = {
|
|
|
60
73
|
* Vehicle information
|
|
61
74
|
*/
|
|
62
75
|
vehicle?: VehicleTelemetryItem;
|
|
76
|
+
/**
|
|
77
|
+
* one of VehicleGear enum
|
|
78
|
+
*/
|
|
79
|
+
selectedGear?: NumericTelemetryItem;
|
|
80
|
+
/**
|
|
81
|
+
* Outside temperature in celsius.
|
|
82
|
+
*/
|
|
83
|
+
envOutsideTemperature?: NumericTelemetryItem;
|
|
84
|
+
evChargePortConnected?: BooleanTelemetryItem;
|
|
85
|
+
/**
|
|
86
|
+
* EV instantaneous charge rate in kW.
|
|
87
|
+
*/
|
|
88
|
+
evBatteryInstantaneousChargeRate?: NumericTelemetryItem;
|
|
89
|
+
parkingBrakeOn?: BooleanTelemetryItem;
|
|
63
90
|
};
|
|
64
91
|
export {};
|
package/lib/types/Telemetry.js
CHANGED
|
@@ -12,3 +12,10 @@ export var AndroidAutomotiveTelemetryPermissions;
|
|
|
12
12
|
AndroidAutomotiveTelemetryPermissions["ExteriorEnvironment"] = "android.car.permission.CAR_EXTERIOR_ENVIRONMENT";
|
|
13
13
|
AndroidAutomotiveTelemetryPermissions["EnergyPorts"] = "android.car.permission.CAR_ENERGY_PORTS";
|
|
14
14
|
})(AndroidAutomotiveTelemetryPermissions || (AndroidAutomotiveTelemetryPermissions = {}));
|
|
15
|
+
export var VehicleGear;
|
|
16
|
+
(function (VehicleGear) {
|
|
17
|
+
VehicleGear[VehicleGear["Neutral"] = 1] = "Neutral";
|
|
18
|
+
VehicleGear[VehicleGear["Reverse"] = 2] = "Reverse";
|
|
19
|
+
VehicleGear[VehicleGear["Park"] = 4] = "Park";
|
|
20
|
+
VehicleGear[VehicleGear["Drive"] = 8] = "Drive";
|
|
21
|
+
})(VehicleGear || (VehicleGear = {}));
|
package/nitro.json
CHANGED
|
@@ -43,6 +43,7 @@ target_sources(
|
|
|
43
43
|
../nitrogen/generated/shared/c++/HybridMapTemplateSpec.cpp
|
|
44
44
|
../nitrogen/generated/shared/c++/HybridMessageTemplateSpec.cpp
|
|
45
45
|
../nitrogen/generated/shared/c++/HybridSearchTemplateSpec.cpp
|
|
46
|
+
../nitrogen/generated/shared/c++/HybridSignInTemplateSpec.cpp
|
|
46
47
|
# Android-specific Nitrogen C++ sources
|
|
47
48
|
../nitrogen/generated/android/c++/JHybridAndroidAutoTelemetrySpec.cpp
|
|
48
49
|
../nitrogen/generated/android/c++/JHybridAutoPlaySpec.cpp
|
|
@@ -57,6 +58,8 @@ target_sources(
|
|
|
57
58
|
../nitrogen/generated/android/c++/JVariant_PreferredImageLane_ImageLane.cpp
|
|
58
59
|
../nitrogen/generated/android/c++/JHybridMessageTemplateSpec.cpp
|
|
59
60
|
../nitrogen/generated/android/c++/JHybridSearchTemplateSpec.cpp
|
|
61
|
+
../nitrogen/generated/android/c++/JHybridSignInTemplateSpec.cpp
|
|
62
|
+
../nitrogen/generated/android/c++/JVariant_QrSignIn_PinSignIn_InputSignIn.cpp
|
|
60
63
|
)
|
|
61
64
|
|
|
62
65
|
# From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
#include "JHybridAndroidAutoTelemetrySpec.hpp"
|
|
19
19
|
#include "JFunc_void.hpp"
|
|
20
|
-
#include "
|
|
20
|
+
#include "JFunc_void_std__optional_Telemetry_.hpp"
|
|
21
21
|
#include "JHybridAutoPlaySpec.hpp"
|
|
22
22
|
#include "JFunc_void_VisibilityState.hpp"
|
|
23
23
|
#include "JFunc_void_std__optional_Location__std__optional_std__string_.hpp"
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
#include "JFunc_void_std__string_std__string.hpp"
|
|
42
42
|
#include "JHybridMessageTemplateSpec.hpp"
|
|
43
43
|
#include "JHybridSearchTemplateSpec.hpp"
|
|
44
|
+
#include "JHybridSignInTemplateSpec.hpp"
|
|
44
45
|
#include <NitroModules/DefaultConstructableObject.hpp>
|
|
45
46
|
|
|
46
47
|
namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
@@ -54,7 +55,7 @@ int initialize(JavaVM* vm) {
|
|
|
54
55
|
// Register native JNI methods
|
|
55
56
|
margelo::nitro::swe::iternio::reactnativeautoplay::JHybridAndroidAutoTelemetrySpec::registerNatives();
|
|
56
57
|
margelo::nitro::swe::iternio::reactnativeautoplay::JFunc_void_cxx::registerNatives();
|
|
57
|
-
margelo::nitro::swe::iternio::reactnativeautoplay::
|
|
58
|
+
margelo::nitro::swe::iternio::reactnativeautoplay::JFunc_void_std__optional_Telemetry__cxx::registerNatives();
|
|
58
59
|
margelo::nitro::swe::iternio::reactnativeautoplay::JHybridAutoPlaySpec::registerNatives();
|
|
59
60
|
margelo::nitro::swe::iternio::reactnativeautoplay::JFunc_void_VisibilityState_cxx::registerNatives();
|
|
60
61
|
margelo::nitro::swe::iternio::reactnativeautoplay::JFunc_void_std__optional_Location__std__optional_std__string__cxx::registerNatives();
|
|
@@ -78,6 +79,7 @@ int initialize(JavaVM* vm) {
|
|
|
78
79
|
margelo::nitro::swe::iternio::reactnativeautoplay::JFunc_void_std__string_std__string_cxx::registerNatives();
|
|
79
80
|
margelo::nitro::swe::iternio::reactnativeautoplay::JHybridMessageTemplateSpec::registerNatives();
|
|
80
81
|
margelo::nitro::swe::iternio::reactnativeautoplay::JHybridSearchTemplateSpec::registerNatives();
|
|
82
|
+
margelo::nitro::swe::iternio::reactnativeautoplay::JHybridSignInTemplateSpec::registerNatives();
|
|
81
83
|
|
|
82
84
|
// Register Nitro Hybrid Objects
|
|
83
85
|
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
@@ -96,6 +98,14 @@ int initialize(JavaVM* vm) {
|
|
|
96
98
|
return instance->cthis()->shared();
|
|
97
99
|
}
|
|
98
100
|
);
|
|
101
|
+
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
102
|
+
"SignInTemplate",
|
|
103
|
+
[]() -> std::shared_ptr<HybridObject> {
|
|
104
|
+
static DefaultConstructableObject<JHybridSignInTemplateSpec::javaobject> object("com/margelo/nitro/swe/iternio/reactnativeautoplay/HybridSignInTemplate");
|
|
105
|
+
auto instance = object.create();
|
|
106
|
+
return instance->cthis()->shared();
|
|
107
|
+
}
|
|
108
|
+
);
|
|
99
109
|
HybridObjectRegistry::registerHybridObjectConstructor(
|
|
100
110
|
"ListTemplate",
|
|
101
111
|
[]() -> std::shared_ptr<HybridObject> {
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JBooleanTelemetryItem.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include "BooleanTelemetryItem.hpp"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
16
|
+
|
|
17
|
+
using namespace facebook;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The C++ JNI bridge between the C++ struct "BooleanTelemetryItem" and the the Kotlin data class "BooleanTelemetryItem".
|
|
21
|
+
*/
|
|
22
|
+
struct JBooleanTelemetryItem final: public jni::JavaClass<JBooleanTelemetryItem> {
|
|
23
|
+
public:
|
|
24
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/BooleanTelemetryItem;";
|
|
25
|
+
|
|
26
|
+
public:
|
|
27
|
+
/**
|
|
28
|
+
* Convert this Java/Kotlin-based struct to the C++ struct BooleanTelemetryItem by copying all values to C++.
|
|
29
|
+
*/
|
|
30
|
+
[[maybe_unused]]
|
|
31
|
+
[[nodiscard]]
|
|
32
|
+
BooleanTelemetryItem toCpp() const {
|
|
33
|
+
static const auto clazz = javaClassStatic();
|
|
34
|
+
static const auto fieldTimestamp = clazz->getField<double>("timestamp");
|
|
35
|
+
double timestamp = this->getFieldValue(fieldTimestamp);
|
|
36
|
+
static const auto fieldValue = clazz->getField<jboolean>("value");
|
|
37
|
+
jboolean value = this->getFieldValue(fieldValue);
|
|
38
|
+
return BooleanTelemetryItem(
|
|
39
|
+
timestamp,
|
|
40
|
+
static_cast<bool>(value)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
public:
|
|
45
|
+
/**
|
|
46
|
+
* Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java.
|
|
47
|
+
*/
|
|
48
|
+
[[maybe_unused]]
|
|
49
|
+
static jni::local_ref<JBooleanTelemetryItem::javaobject> fromCpp(const BooleanTelemetryItem& value) {
|
|
50
|
+
using JSignature = JBooleanTelemetryItem(double, jboolean);
|
|
51
|
+
static const auto clazz = javaClassStatic();
|
|
52
|
+
static const auto create = clazz->getStaticMethod<JSignature>("fromCpp");
|
|
53
|
+
return create(
|
|
54
|
+
clazz,
|
|
55
|
+
value.timestamp,
|
|
56
|
+
value.value
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
} // namespace margelo::nitro::swe::iternio::reactnativeautoplay
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
///
|
|
2
|
+
/// JFunc_void_std__optional_Telemetry_.hpp
|
|
3
|
+
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
4
|
+
/// https://github.com/mrousavy/nitro
|
|
5
|
+
/// Copyright © 2025 Marc Rousavy @ Margelo
|
|
6
|
+
///
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <fbjni/fbjni.h>
|
|
11
|
+
#include <functional>
|
|
12
|
+
|
|
13
|
+
#include "Telemetry.hpp"
|
|
14
|
+
#include <optional>
|
|
15
|
+
#include <functional>
|
|
16
|
+
#include <NitroModules/JNICallable.hpp>
|
|
17
|
+
#include "JTelemetry.hpp"
|
|
18
|
+
#include "NumericTelemetryItem.hpp"
|
|
19
|
+
#include "JNumericTelemetryItem.hpp"
|
|
20
|
+
#include "VehicleTelemetryItem.hpp"
|
|
21
|
+
#include "JVehicleTelemetryItem.hpp"
|
|
22
|
+
#include "StringTelemetryItem.hpp"
|
|
23
|
+
#include "JStringTelemetryItem.hpp"
|
|
24
|
+
#include <string>
|
|
25
|
+
#include "BooleanTelemetryItem.hpp"
|
|
26
|
+
#include "JBooleanTelemetryItem.hpp"
|
|
27
|
+
|
|
28
|
+
namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
29
|
+
|
|
30
|
+
using namespace facebook;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Represents the Java/Kotlin callback `(tlm: Telemetry?) -> Unit`.
|
|
34
|
+
* This can be passed around between C++ and Java/Kotlin.
|
|
35
|
+
*/
|
|
36
|
+
struct JFunc_void_std__optional_Telemetry_: public jni::JavaClass<JFunc_void_std__optional_Telemetry_> {
|
|
37
|
+
public:
|
|
38
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Telemetry_;";
|
|
39
|
+
|
|
40
|
+
public:
|
|
41
|
+
/**
|
|
42
|
+
* Invokes the function this `JFunc_void_std__optional_Telemetry_` instance holds through JNI.
|
|
43
|
+
*/
|
|
44
|
+
void invoke(const std::optional<Telemetry>& tlm) const {
|
|
45
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JTelemetry> /* tlm */)>("invoke");
|
|
46
|
+
method(self(), tlm.has_value() ? JTelemetry::fromCpp(tlm.value()) : nullptr);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* An implementation of Func_void_std__optional_Telemetry_ that is backed by a C++ implementation (using `std::function<...>`)
|
|
52
|
+
*/
|
|
53
|
+
class JFunc_void_std__optional_Telemetry__cxx final: public jni::HybridClass<JFunc_void_std__optional_Telemetry__cxx, JFunc_void_std__optional_Telemetry_> {
|
|
54
|
+
public:
|
|
55
|
+
static jni::local_ref<JFunc_void_std__optional_Telemetry_::javaobject> fromCpp(const std::function<void(const std::optional<Telemetry>& /* tlm */)>& func) {
|
|
56
|
+
return JFunc_void_std__optional_Telemetry__cxx::newObjectCxxArgs(func);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public:
|
|
60
|
+
/**
|
|
61
|
+
* Invokes the C++ `std::function<...>` this `JFunc_void_std__optional_Telemetry__cxx` instance holds.
|
|
62
|
+
*/
|
|
63
|
+
void invoke_cxx(jni::alias_ref<JTelemetry> tlm) {
|
|
64
|
+
_func(tlm != nullptr ? std::make_optional(tlm->toCpp()) : std::nullopt);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
public:
|
|
68
|
+
[[nodiscard]]
|
|
69
|
+
inline const std::function<void(const std::optional<Telemetry>& /* tlm */)>& getFunction() const {
|
|
70
|
+
return _func;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
public:
|
|
74
|
+
static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/swe/iternio/reactnativeautoplay/Func_void_std__optional_Telemetry__cxx;";
|
|
75
|
+
static void registerNatives() {
|
|
76
|
+
registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_std__optional_Telemetry__cxx::invoke_cxx)});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private:
|
|
80
|
+
explicit JFunc_void_std__optional_Telemetry__cxx(const std::function<void(const std::optional<Telemetry>& /* tlm */)>& func): _func(func) { }
|
|
81
|
+
|
|
82
|
+
private:
|
|
83
|
+
friend HybridBase;
|
|
84
|
+
std::function<void(const std::optional<Telemetry>& /* tlm */)> _func;
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
} // namespace margelo::nitro::swe::iternio::reactnativeautoplay
|
|
@@ -19,7 +19,7 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
19
19
|
using namespace facebook;
|
|
20
20
|
|
|
21
21
|
/**
|
|
22
|
-
* Represents the Java/Kotlin callback `(
|
|
22
|
+
* Represents the Java/Kotlin callback `(text: String) -> Unit`.
|
|
23
23
|
* This can be passed around between C++ and Java/Kotlin.
|
|
24
24
|
*/
|
|
25
25
|
struct JFunc_void_std__string: public jni::JavaClass<JFunc_void_std__string> {
|
|
@@ -30,9 +30,9 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
30
30
|
/**
|
|
31
31
|
* Invokes the function this `JFunc_void_std__string` instance holds through JNI.
|
|
32
32
|
*/
|
|
33
|
-
void invoke(const std::string&
|
|
34
|
-
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /*
|
|
35
|
-
method(self(), jni::make_jstring(
|
|
33
|
+
void invoke(const std::string& text) const {
|
|
34
|
+
static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* text */)>("invoke");
|
|
35
|
+
method(self(), jni::make_jstring(text));
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
|
|
@@ -41,7 +41,7 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
41
41
|
*/
|
|
42
42
|
class JFunc_void_std__string_cxx final: public jni::HybridClass<JFunc_void_std__string_cxx, JFunc_void_std__string> {
|
|
43
43
|
public:
|
|
44
|
-
static jni::local_ref<JFunc_void_std__string::javaobject> fromCpp(const std::function<void(const std::string& /*
|
|
44
|
+
static jni::local_ref<JFunc_void_std__string::javaobject> fromCpp(const std::function<void(const std::string& /* text */)>& func) {
|
|
45
45
|
return JFunc_void_std__string_cxx::newObjectCxxArgs(func);
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -49,13 +49,13 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
49
49
|
/**
|
|
50
50
|
* Invokes the C++ `std::function<...>` this `JFunc_void_std__string_cxx` instance holds.
|
|
51
51
|
*/
|
|
52
|
-
void invoke_cxx(jni::alias_ref<jni::JString>
|
|
53
|
-
_func(
|
|
52
|
+
void invoke_cxx(jni::alias_ref<jni::JString> text) {
|
|
53
|
+
_func(text->toStdString());
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
public:
|
|
57
57
|
[[nodiscard]]
|
|
58
|
-
inline const std::function<void(const std::string& /*
|
|
58
|
+
inline const std::function<void(const std::string& /* text */)>& getFunction() const {
|
|
59
59
|
return _func;
|
|
60
60
|
}
|
|
61
61
|
|
|
@@ -66,11 +66,11 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
private:
|
|
69
|
-
explicit JFunc_void_std__string_cxx(const std::function<void(const std::string& /*
|
|
69
|
+
explicit JFunc_void_std__string_cxx(const std::function<void(const std::string& /* text */)>& func): _func(func) { }
|
|
70
70
|
|
|
71
71
|
private:
|
|
72
72
|
friend HybridBase;
|
|
73
|
-
std::function<void(const std::string& /*
|
|
73
|
+
std::function<void(const std::string& /* text */)> _func;
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
} // namespace margelo::nitro::swe::iternio::reactnativeautoplay
|
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
|
|
8
8
|
#include "JHybridAndroidAutoTelemetrySpec.hpp"
|
|
9
9
|
|
|
10
|
+
// Forward declaration of `PermissionRequestResult` to properly resolve imports.
|
|
11
|
+
namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct PermissionRequestResult; }
|
|
10
12
|
// Forward declaration of `Telemetry` to properly resolve imports.
|
|
11
13
|
namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct Telemetry; }
|
|
12
14
|
// Forward declaration of `NumericTelemetryItem` to properly resolve imports.
|
|
@@ -15,14 +17,21 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct NumericTele
|
|
|
15
17
|
namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct VehicleTelemetryItem; }
|
|
16
18
|
// Forward declaration of `StringTelemetryItem` to properly resolve imports.
|
|
17
19
|
namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct StringTelemetryItem; }
|
|
20
|
+
// Forward declaration of `BooleanTelemetryItem` to properly resolve imports.
|
|
21
|
+
namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct BooleanTelemetryItem; }
|
|
18
22
|
|
|
19
23
|
#include <functional>
|
|
20
24
|
#include "JFunc_void.hpp"
|
|
21
25
|
#include <NitroModules/JNICallable.hpp>
|
|
26
|
+
#include "PermissionRequestResult.hpp"
|
|
27
|
+
#include <NitroModules/Promise.hpp>
|
|
28
|
+
#include <NitroModules/JPromise.hpp>
|
|
29
|
+
#include "JPermissionRequestResult.hpp"
|
|
30
|
+
#include <string>
|
|
31
|
+
#include <vector>
|
|
22
32
|
#include "Telemetry.hpp"
|
|
23
33
|
#include <optional>
|
|
24
|
-
#include
|
|
25
|
-
#include "JFunc_void_std__optional_Telemetry__std__optional_std__string_.hpp"
|
|
34
|
+
#include "JFunc_void_std__optional_Telemetry_.hpp"
|
|
26
35
|
#include "JTelemetry.hpp"
|
|
27
36
|
#include "NumericTelemetryItem.hpp"
|
|
28
37
|
#include "JNumericTelemetryItem.hpp"
|
|
@@ -30,6 +39,8 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay { struct StringTelem
|
|
|
30
39
|
#include "JVehicleTelemetryItem.hpp"
|
|
31
40
|
#include "StringTelemetryItem.hpp"
|
|
32
41
|
#include "JStringTelemetryItem.hpp"
|
|
42
|
+
#include "BooleanTelemetryItem.hpp"
|
|
43
|
+
#include "JBooleanTelemetryItem.hpp"
|
|
33
44
|
|
|
34
45
|
namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
35
46
|
|
|
@@ -63,9 +74,9 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
63
74
|
|
|
64
75
|
|
|
65
76
|
// Methods
|
|
66
|
-
std::function<void()> JHybridAndroidAutoTelemetrySpec::registerTelemetryListener(const std::function<void(const std::optional<Telemetry>& /* tlm
|
|
67
|
-
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<
|
|
68
|
-
auto __result = method(_javaPart,
|
|
77
|
+
std::function<void()> JHybridAndroidAutoTelemetrySpec::registerTelemetryListener(const std::function<void(const std::optional<Telemetry>& /* tlm */)>& callback) {
|
|
78
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_std__optional_Telemetry_::javaobject> /* callback */)>("registerTelemetryListener_cxx");
|
|
79
|
+
auto __result = method(_javaPart, JFunc_void_std__optional_Telemetry__cxx::fromCpp(callback));
|
|
69
80
|
return [&]() -> std::function<void()> {
|
|
70
81
|
if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
|
|
71
82
|
auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(__result);
|
|
@@ -76,5 +87,30 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
76
87
|
}
|
|
77
88
|
}();
|
|
78
89
|
}
|
|
90
|
+
std::shared_ptr<Promise<PermissionRequestResult>> JHybridAndroidAutoTelemetrySpec::requestAutomotivePermissions(const std::vector<std::string>& permissions, const std::string& message, const std::string& grantButtonText, const std::optional<std::string>& cancelButtonText) {
|
|
91
|
+
static const auto method = javaClassStatic()->getMethod<jni::local_ref<JPromise::javaobject>(jni::alias_ref<jni::JArrayClass<jni::JString>> /* permissions */, jni::alias_ref<jni::JString> /* message */, jni::alias_ref<jni::JString> /* grantButtonText */, jni::alias_ref<jni::JString> /* cancelButtonText */)>("requestAutomotivePermissions");
|
|
92
|
+
auto __result = method(_javaPart, [&]() {
|
|
93
|
+
size_t __size = permissions.size();
|
|
94
|
+
jni::local_ref<jni::JArrayClass<jni::JString>> __array = jni::JArrayClass<jni::JString>::newArray(__size);
|
|
95
|
+
for (size_t __i = 0; __i < __size; __i++) {
|
|
96
|
+
const auto& __element = permissions[__i];
|
|
97
|
+
auto __elementJni = jni::make_jstring(__element);
|
|
98
|
+
__array->setElement(__i, *__elementJni);
|
|
99
|
+
}
|
|
100
|
+
return __array;
|
|
101
|
+
}(), jni::make_jstring(message), jni::make_jstring(grantButtonText), cancelButtonText.has_value() ? jni::make_jstring(cancelButtonText.value()) : nullptr);
|
|
102
|
+
return [&]() {
|
|
103
|
+
auto __promise = Promise<PermissionRequestResult>::create();
|
|
104
|
+
__result->cthis()->addOnResolvedListener([=](const jni::alias_ref<jni::JObject>& __boxedResult) {
|
|
105
|
+
auto __result = jni::static_ref_cast<JPermissionRequestResult>(__boxedResult);
|
|
106
|
+
__promise->resolve(__result->toCpp());
|
|
107
|
+
});
|
|
108
|
+
__result->cthis()->addOnRejectedListener([=](const jni::alias_ref<jni::JThrowable>& __throwable) {
|
|
109
|
+
jni::JniException __jniError(__throwable);
|
|
110
|
+
__promise->reject(std::make_exception_ptr(__jniError));
|
|
111
|
+
});
|
|
112
|
+
return __promise;
|
|
113
|
+
}();
|
|
114
|
+
}
|
|
79
115
|
|
|
80
116
|
} // namespace margelo::nitro::swe::iternio::reactnativeautoplay
|
|
@@ -54,7 +54,8 @@ namespace margelo::nitro::swe::iternio::reactnativeautoplay {
|
|
|
54
54
|
|
|
55
55
|
public:
|
|
56
56
|
// Methods
|
|
57
|
-
std::function<void()> registerTelemetryListener(const std::function<void(const std::optional<Telemetry>& /* tlm
|
|
57
|
+
std::function<void()> registerTelemetryListener(const std::function<void(const std::optional<Telemetry>& /* tlm */)>& callback) override;
|
|
58
|
+
std::shared_ptr<Promise<PermissionRequestResult>> requestAutomotivePermissions(const std::vector<std::string>& permissions, const std::string& message, const std::string& grantButtonText, const std::optional<std::string>& cancelButtonText) override;
|
|
58
59
|
|
|
59
60
|
private:
|
|
60
61
|
friend HybridBase;
|