@24i/bigscreen-sdk 1.0.51-alpha.2785 → 1.0.51-alpha.2791
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/package.json +1 -1
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +23 -2
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +8 -0
- package/packages/developer-tools/src/TechnicalInfo/translations.ts +4 -0
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +9 -0
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +1 -0
- package/packages/driver-androidtv/src/types.ts +5 -0
- package/packages/driver-base/src/DeviceBase.ts +2 -0
- package/packages/driver-base/src/__mocks__/DeviceBase.ts +4 -0
- package/packages/driver-browser/src/DeviceBrowser.ts +4 -0
- package/packages/driver-entone/src/DeviceEntone.ts +4 -0
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +1 -0
- package/packages/driver-hbbtv/src/DeviceHbbTV.ts +4 -0
- package/packages/driver-kreatv/src/DeviceKreaTV.ts +4 -0
- package/packages/driver-saphi/src/DeviceSaphi.ts +4 -0
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +20 -1
- package/packages/driver-smartcast/src/__mocks__/api.ts +5 -1
- package/packages/driver-smartcast/src/types.ts +10 -0
- package/packages/driver-tizen/src/DeviceTizen.ts +10 -0
- package/packages/driver-tizen/src/__mocks__/tizen.ts +3 -0
- package/packages/driver-vidaa/src/DeviceVidaa.ts +4 -0
- package/packages/driver-webos/src/DeviceWebos.ts +26 -0
- package/packages/driver-webos/src/__mocks__/webos.ts +33 -0
- package/packages/driver-webos/src/constants.ts +1 -0
- package/packages/driver-webos/src/types.ts +30 -0
- package/packages/driver-xbox/src/DeviceXbox.ts +4 -0
package/package.json
CHANGED
|
@@ -111,6 +111,15 @@ class TechnicalInfoProvider implements ITechnicalInfoProvider {
|
|
|
111
111
|
return value || unknown;
|
|
112
112
|
}
|
|
113
113
|
|
|
114
|
+
async getDeviceOsLanguage() {
|
|
115
|
+
let value;
|
|
116
|
+
const { unknown } = this.translations;
|
|
117
|
+
try {
|
|
118
|
+
value = await this.props.device.getOsLanguage();
|
|
119
|
+
} catch (e) {}
|
|
120
|
+
return value || unknown;
|
|
121
|
+
}
|
|
122
|
+
|
|
114
123
|
async getPlatformType() {
|
|
115
124
|
let value;
|
|
116
125
|
const { unknown } = this.translations;
|
|
@@ -137,6 +146,16 @@ class TechnicalInfoProvider implements ITechnicalInfoProvider {
|
|
|
137
146
|
return value || unknown;
|
|
138
147
|
}
|
|
139
148
|
|
|
149
|
+
async getAdInfo() {
|
|
150
|
+
let value;
|
|
151
|
+
const { unknown } = this.translations;
|
|
152
|
+
try {
|
|
153
|
+
const { adId, type, latEnabled } = await this.props.device.getAdInfo();
|
|
154
|
+
value = `LAT: ${latEnabled}, AD ID TYPE: ${type}, AD ID: ${adId}`;
|
|
155
|
+
} catch (e) {}
|
|
156
|
+
return value || unknown;
|
|
157
|
+
}
|
|
158
|
+
|
|
140
159
|
async getLocalIpAddress() {
|
|
141
160
|
let value;
|
|
142
161
|
const { unknown } = this.translations;
|
|
@@ -283,8 +302,8 @@ class TechnicalInfoProvider implements ITechnicalInfoProvider {
|
|
|
283
302
|
async getSourceDataLayout() {
|
|
284
303
|
const {
|
|
285
304
|
username, profile, appVersion, firmwareVersion, deviceModel,
|
|
286
|
-
deviceManufacturer, platform, player, serialNumber,
|
|
287
|
-
publicIpAddress, connectionType, macAddress, memoryHeapSize,
|
|
305
|
+
deviceManufacturer, deviceLanguage, platform, player, serialNumber, adInfo,
|
|
306
|
+
localIpAddress, publicIpAddress, connectionType, macAddress, memoryHeapSize,
|
|
288
307
|
usedLocalStorage, timeZone, dateAndTime, flavour, userAgent,
|
|
289
308
|
emeSupport, emeDrmSystems, mseSupport, fourKSupport, resolution, baseUrl,
|
|
290
309
|
appCoreVersions, androidWrapperVersion,
|
|
@@ -297,9 +316,11 @@ class TechnicalInfoProvider implements ITechnicalInfoProvider {
|
|
|
297
316
|
{ label: firmwareVersion, getter: this.getFirmwareVersion },
|
|
298
317
|
{ label: deviceModel, getter: this.getDeviceModelName },
|
|
299
318
|
{ label: deviceManufacturer, getter: this.getDeviceManufacturer },
|
|
319
|
+
{ label: deviceLanguage, getter: this.getDeviceOsLanguage },
|
|
300
320
|
{ label: platform, getter: this.getPlatformType },
|
|
301
321
|
{ label: player, getter: this.getPlayerType },
|
|
302
322
|
{ label: serialNumber, getter: this.getDeviceSerialNumber },
|
|
323
|
+
{ label: adInfo, getter: this.getAdInfo },
|
|
303
324
|
{ label: localIpAddress, getter: this.getLocalIpAddress },
|
|
304
325
|
{ label: publicIpAddress, getter: this.getPublicIpAddress },
|
|
305
326
|
{ label: connectionType, getter: this.getConnectionType },
|
|
@@ -43,6 +43,14 @@ class Device {
|
|
|
43
43
|
return 'connection type';
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
async getOsLanguage() {
|
|
47
|
+
return 'device language';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
async getAdInfo() {
|
|
51
|
+
return { adId: 'ad-id', type: 'ad-id-type', latEnabled: false };
|
|
52
|
+
}
|
|
53
|
+
|
|
46
54
|
async getMacAddress() {
|
|
47
55
|
return 'mac address';
|
|
48
56
|
}
|
|
@@ -15,9 +15,11 @@ export type TranslationKeys = {
|
|
|
15
15
|
firmwareVersion: string,
|
|
16
16
|
deviceModel: string,
|
|
17
17
|
deviceManufacturer: string,
|
|
18
|
+
deviceLanguage: string;
|
|
18
19
|
platform: string,
|
|
19
20
|
player: string,
|
|
20
21
|
serialNumber: string,
|
|
22
|
+
adInfo: string,
|
|
21
23
|
localIpAddress: string,
|
|
22
24
|
publicIpAddress: string,
|
|
23
25
|
connectionType: string,
|
|
@@ -54,9 +56,11 @@ export const defaultTranslations = {
|
|
|
54
56
|
firmwareVersion: 'Firmware version',
|
|
55
57
|
deviceModel: 'Device model',
|
|
56
58
|
deviceManufacturer: 'Device manufacturer',
|
|
59
|
+
deviceLanguage: 'Device Language',
|
|
57
60
|
platform: 'Platform',
|
|
58
61
|
player: 'Player',
|
|
59
62
|
serialNumber: 'Serial number',
|
|
63
|
+
adInfo: 'Ad info',
|
|
60
64
|
localIpAddress: 'Local IP address',
|
|
61
65
|
publicIpAddress: 'Public IP address',
|
|
62
66
|
connectionType: 'Connection type',
|
|
@@ -177,6 +177,15 @@ export class DeviceAndroidTV extends DeviceBase {
|
|
|
177
177
|
return { adId, type, latEnabled };
|
|
178
178
|
}
|
|
179
179
|
|
|
180
|
+
async getOsLanguage() {
|
|
181
|
+
try {
|
|
182
|
+
return window.JavaScriptBridge.bridgeJavaScriptToAndroid_GetOsLanguage() || '';
|
|
183
|
+
} catch (e) {
|
|
184
|
+
console.error('[DeviceAndroidTV] Failed to getOsLanguage', e);
|
|
185
|
+
return '';
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
180
189
|
async getVolume(): Promise<number> {
|
|
181
190
|
return VolumeRange.UNSUPPORTED;
|
|
182
191
|
}
|
|
@@ -15,6 +15,7 @@ export const mockJavaScriptBridge: IJavaScriptBridge = {
|
|
|
15
15
|
),
|
|
16
16
|
bridgeJavaScriptToAndroid_GetAdId: () => 'gaid-id',
|
|
17
17
|
bridgeJavaScriptToAndroid_GetLimitAdTracking: () => false,
|
|
18
|
+
bridgeJavaScriptToAndroid_GetOsLanguage: () => '',
|
|
18
19
|
bridgeJavaScriptToAndroid_GetMediaInfo: () => '{}',
|
|
19
20
|
bridgeJavaScriptToAndroid_Back: () => {},
|
|
20
21
|
bridgeJavaScriptToAndroid_StopVideo: () => {},
|
|
@@ -18,6 +18,11 @@ interface JavaScriptBridge {
|
|
|
18
18
|
* @return true if limit ad tracking is enabled, false if not and null if not available.
|
|
19
19
|
*/
|
|
20
20
|
bridgeJavaScriptToAndroid_GetLimitAdTracking: () => boolean | null,
|
|
21
|
+
/**
|
|
22
|
+
* It returns the language of the OS.
|
|
23
|
+
* @return Language of the OS. Ex. "en"
|
|
24
|
+
*/
|
|
25
|
+
bridgeJavaScriptToAndroid_GetOsLanguage: () => string,
|
|
21
26
|
/**
|
|
22
27
|
* It returns media info including statistics
|
|
23
28
|
*/
|
|
@@ -128,6 +128,10 @@ export class DeviceEntone extends DeviceBase {
|
|
|
128
128
|
return { adId, type, latEnabled };
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
async getOsLanguage() {
|
|
132
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
133
|
+
}
|
|
134
|
+
|
|
131
135
|
async getVolume() {
|
|
132
136
|
try {
|
|
133
137
|
const { leftVolPercentage, rightVolPercentage } = ENTONE.stb.getAudioVolume();
|
|
@@ -15,6 +15,7 @@ export const mockJavaScriptBridge: IJavaScriptBridge = {
|
|
|
15
15
|
),
|
|
16
16
|
bridgeJavaScriptToAndroid_GetAdId: () => 'afai-id',
|
|
17
17
|
bridgeJavaScriptToAndroid_GetLimitAdTracking: () => false,
|
|
18
|
+
bridgeJavaScriptToAndroid_GetOsLanguage: () => '',
|
|
18
19
|
bridgeJavaScriptToAndroid_GetMediaInfo: () => '{}',
|
|
19
20
|
bridgeJavaScriptToAndroid_Back: () => {},
|
|
20
21
|
bridgeJavaScriptToAndroid_StopVideo: () => {},
|
|
@@ -253,6 +253,10 @@ export class DeviceHbbTV extends DeviceBase {
|
|
|
253
253
|
return { adId, type, latEnabled };
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
async getOsLanguage() {
|
|
257
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
258
|
+
}
|
|
259
|
+
|
|
256
260
|
async getVolume() {
|
|
257
261
|
// TODO: not yet implemented
|
|
258
262
|
return VolumeRange.UNSUPPORTED;
|
|
@@ -167,6 +167,10 @@ export class DeviceKreaTV extends DeviceBase {
|
|
|
167
167
|
return { adId, type, latEnabled };
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
+
async getOsLanguage() {
|
|
171
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
172
|
+
}
|
|
173
|
+
|
|
170
174
|
getSupportedAudioConnections() {
|
|
171
175
|
const { audioOutputService } = this.toiInstance;
|
|
172
176
|
const { ToiAudioOutputService } = this.toiInstance.consts;
|
|
@@ -89,6 +89,10 @@ export class DeviceSaphi extends DeviceBase {
|
|
|
89
89
|
return { adId, type, latEnabled };
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
+
async getOsLanguage() {
|
|
93
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
94
|
+
}
|
|
95
|
+
|
|
92
96
|
async getVolume(): Promise<number> {
|
|
93
97
|
return VolumeRange.UNSUPPORTED;
|
|
94
98
|
}
|
|
@@ -4,7 +4,13 @@ import {
|
|
|
4
4
|
import { runAsync } from '@24i/bigscreen-sdk/utils/timers';
|
|
5
5
|
import { ipify } from '@24i/bigscreen-sdk/ipify';
|
|
6
6
|
import { getKeyMap } from './keymap';
|
|
7
|
-
import {
|
|
7
|
+
import {
|
|
8
|
+
ISmartCastApi,
|
|
9
|
+
IFA,
|
|
10
|
+
DEFAULT_TTS_TIMEOUT,
|
|
11
|
+
DevicePlaybackQuality,
|
|
12
|
+
DeviceLanguage,
|
|
13
|
+
} from './types';
|
|
8
14
|
|
|
9
15
|
declare const window: Window & { VIZIO: ISmartCastApi };
|
|
10
16
|
|
|
@@ -29,6 +35,8 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
29
35
|
|
|
30
36
|
lastTextToSpeechItem?: { delay: number, text: string } | null;
|
|
31
37
|
|
|
38
|
+
deviceLanguage?: DeviceLanguage;
|
|
39
|
+
|
|
32
40
|
API?: ISmartCastApi;
|
|
33
41
|
|
|
34
42
|
IFA?: IFA;
|
|
@@ -84,6 +92,13 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
84
92
|
});
|
|
85
93
|
}));
|
|
86
94
|
|
|
95
|
+
promises.push(new Promise<void>((r) => {
|
|
96
|
+
API.setDeviceLanguageHandler((deviceLanguage: DeviceLanguage) => {
|
|
97
|
+
this.deviceLanguage = deviceLanguage;
|
|
98
|
+
r();
|
|
99
|
+
});
|
|
100
|
+
}));
|
|
101
|
+
|
|
87
102
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
88
103
|
API.setContentChangeHandler(this.handleDeeplink);
|
|
89
104
|
|
|
@@ -272,6 +287,10 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
272
287
|
return { adId, type, latEnabled };
|
|
273
288
|
}
|
|
274
289
|
|
|
290
|
+
async getOsLanguage() {
|
|
291
|
+
return this.deviceLanguage?.code || '';
|
|
292
|
+
}
|
|
293
|
+
|
|
275
294
|
async getVolume() {
|
|
276
295
|
return VolumeRange.UNSUPPORTED;
|
|
277
296
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IFA, ISmartCastApi, DevicePlaybackQuality } from '../types';
|
|
1
|
+
import { IFA, ISmartCastApi, DevicePlaybackQuality, DeviceLanguage } from '../types';
|
|
2
2
|
|
|
3
3
|
export const deviceId = '2bd671ef-02cd-445f-9295-b3565dbaf1e8';
|
|
4
4
|
export const deviceModel = 'D24f4-J01';
|
|
@@ -37,6 +37,10 @@ export const SmartCastMockApi: ISmartCastApi = {
|
|
|
37
37
|
setContentChangeHandler:
|
|
38
38
|
(callback: (contentUrl: string) => void): void => callback(deeplinkUrl),
|
|
39
39
|
|
|
40
|
+
setDeviceLanguageHandler: (
|
|
41
|
+
callback: (deviceLanguage: DeviceLanguage) => void,
|
|
42
|
+
): void => callback({ code: 'en', name: 'English' }),
|
|
43
|
+
|
|
40
44
|
Chromevox: {
|
|
41
45
|
cancel: (): void => {
|
|
42
46
|
throw new Error('Function not implemented.');
|
|
@@ -34,6 +34,11 @@ export type ISmartCastApi = {
|
|
|
34
34
|
*/
|
|
35
35
|
setContentChangeHandler: (callback: (contentUrl: string) => void) => void;
|
|
36
36
|
|
|
37
|
+
/**
|
|
38
|
+
* Sets the callback to receive device language object.
|
|
39
|
+
*/
|
|
40
|
+
setDeviceLanguageHandler: (callback: (deviceLanguage: DeviceLanguage) => void) => void;
|
|
41
|
+
|
|
37
42
|
/**
|
|
38
43
|
* Device model.
|
|
39
44
|
*/
|
|
@@ -63,3 +68,8 @@ export type IFA = {
|
|
|
63
68
|
export type DevicePlaybackQuality = 'UHD' | 'HD' | 'SD';
|
|
64
69
|
|
|
65
70
|
export const DEFAULT_TTS_TIMEOUT = 3000;
|
|
71
|
+
|
|
72
|
+
export type DeviceLanguage = {
|
|
73
|
+
code: string,
|
|
74
|
+
name: string,
|
|
75
|
+
};
|
|
@@ -211,6 +211,16 @@ export class DeviceTizen extends DeviceBase {
|
|
|
211
211
|
return { adId, type, latEnabled };
|
|
212
212
|
}
|
|
213
213
|
|
|
214
|
+
async getOsLanguage() {
|
|
215
|
+
return new Promise<string>((resolve) => {
|
|
216
|
+
tizen.systeminfo.getPropertyValue(
|
|
217
|
+
'LOCALE',
|
|
218
|
+
({ language }) => resolve(language),
|
|
219
|
+
() => resolve(''),
|
|
220
|
+
);
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
|
|
214
224
|
async getVolume() {
|
|
215
225
|
try {
|
|
216
226
|
const volume = tizen.tvaudiocontrol.getVolume();
|
|
@@ -88,6 +88,10 @@ export class DeviceVidaa extends DeviceBase {
|
|
|
88
88
|
return { adId, type, latEnabled };
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
+
async getOsLanguage() {
|
|
92
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
93
|
+
}
|
|
94
|
+
|
|
91
95
|
async getVolume(): Promise<number> {
|
|
92
96
|
return VolumeRange.UNSUPPORTED;
|
|
93
97
|
}
|
|
@@ -252,6 +252,32 @@ export class DeviceWebos extends DeviceBase {
|
|
|
252
252
|
return { adId, type, latEnabled };
|
|
253
253
|
}
|
|
254
254
|
|
|
255
|
+
async getOsLanguage(): Promise<string> {
|
|
256
|
+
return new Promise<string>((resolve) => {
|
|
257
|
+
webOS.service.request(ApiUrls.SETTINGS_SERVICE, {
|
|
258
|
+
method: 'getSystemSettings',
|
|
259
|
+
parameters: {
|
|
260
|
+
keys: ['localeInfo'],
|
|
261
|
+
},
|
|
262
|
+
onSuccess: (response) => {
|
|
263
|
+
if (response.returnValue) {
|
|
264
|
+
const uiLanguage = response?.settings?.localeInfo?.locales?.UI;
|
|
265
|
+
resolve((uiLanguage || '').slice(0, 2));
|
|
266
|
+
}
|
|
267
|
+
resolve('');
|
|
268
|
+
},
|
|
269
|
+
onFailure: (error) => {
|
|
270
|
+
// ex. returns error for webOS 1.0, 2.0 as not supported
|
|
271
|
+
const { errorCode = '0', errorText } = error || {};
|
|
272
|
+
console.error(
|
|
273
|
+
`[DeviceWebos] getOsLanguage onFailure: [${errorCode}] ${errorText}`,
|
|
274
|
+
);
|
|
275
|
+
resolve('');
|
|
276
|
+
},
|
|
277
|
+
});
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
|
|
255
281
|
async getVolume() {
|
|
256
282
|
// TODO: not yet implemented
|
|
257
283
|
return VolumeRange.UNSUPPORTED;
|
|
@@ -63,6 +63,39 @@ const mockServices = {
|
|
|
63
63
|
callbackName: 'onSuccess',
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
|
+
'luna://com.webos.settingsservice#getSystemSettings': {
|
|
67
|
+
responses: {
|
|
68
|
+
success: {
|
|
69
|
+
returnValue: true,
|
|
70
|
+
method: 'getSystemSettings',
|
|
71
|
+
settings: {
|
|
72
|
+
localeInfo: {
|
|
73
|
+
locales: {
|
|
74
|
+
UI: 'en-GB',
|
|
75
|
+
TV: 'en-GB',
|
|
76
|
+
FMT: 'en-GB',
|
|
77
|
+
NLP: 'en-GB',
|
|
78
|
+
STT: 'fr-FR',
|
|
79
|
+
AUD: 'fr-FR',
|
|
80
|
+
AUD2: 'en-GB',
|
|
81
|
+
},
|
|
82
|
+
clock: 'locale',
|
|
83
|
+
keyboards: ['en'],
|
|
84
|
+
timezone: '',
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
error: {
|
|
89
|
+
returnValue: false,
|
|
90
|
+
errorCode: 'ERR.001',
|
|
91
|
+
errorText: 'There is no matched result from DB',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
selected: {
|
|
95
|
+
responseId: 'success',
|
|
96
|
+
callbackName: 'onSuccess',
|
|
97
|
+
},
|
|
98
|
+
},
|
|
66
99
|
'luna://com.webos.service.connectionmanager#getStatus': {
|
|
67
100
|
responses: {
|
|
68
101
|
successWired: {
|
|
@@ -17,4 +17,5 @@ export const ApiUrls = {
|
|
|
17
17
|
CONNECTION_MANAGER_WEBOS: 'luna://com.webos.service.connectionmanager',
|
|
18
18
|
SYSTEM_PROPERTY: 'luna://com.webos.service.tv.systemproperty',
|
|
19
19
|
SM: 'luna://com.webos.service.sm',
|
|
20
|
+
SETTINGS_SERVICE: 'luna://com.webos.settingsservice',
|
|
20
21
|
} as const;
|
|
@@ -331,11 +331,41 @@ export type DuidOptions = {
|
|
|
331
331
|
onComplete?: (response: NegativeResponse | DuidResponse) => any,
|
|
332
332
|
};
|
|
333
333
|
|
|
334
|
+
type SettingsService = {
|
|
335
|
+
method: 'getSystemSettings',
|
|
336
|
+
settings: {
|
|
337
|
+
localeInfo: {
|
|
338
|
+
locales: {
|
|
339
|
+
UI: string,
|
|
340
|
+
TV: string,
|
|
341
|
+
FMT: string,
|
|
342
|
+
NLP: string,
|
|
343
|
+
STT: string,
|
|
344
|
+
AUD: string,
|
|
345
|
+
AUD2: string,
|
|
346
|
+
},
|
|
347
|
+
clock: string,
|
|
348
|
+
keyboards: string[],
|
|
349
|
+
timezone: string,
|
|
350
|
+
},
|
|
351
|
+
},
|
|
352
|
+
};
|
|
353
|
+
export type SettingsServiceResponse = PositiveResponse & SettingsService;
|
|
354
|
+
export type SettingsServiceOptions = {
|
|
355
|
+
method: 'getSystemSettings',
|
|
356
|
+
parameters: {
|
|
357
|
+
keys: ['localeInfo'],
|
|
358
|
+
},
|
|
359
|
+
onSuccess?: (response: NegativeResponse | SettingsServiceResponse) => any,
|
|
360
|
+
onFailure?: (response: NegativeResponse) => any,
|
|
361
|
+
};
|
|
362
|
+
|
|
334
363
|
interface RequestTypeMap {
|
|
335
364
|
[ApiUrls.CONNECTION_MANAGER_PALM]: ConnectionManagerOptions,
|
|
336
365
|
[ApiUrls.CONNECTION_MANAGER_WEBOS]: ConnectionManagerOptions,
|
|
337
366
|
[ApiUrls.SYSTEM_PROPERTY]: SystemPropertyOptions,
|
|
338
367
|
[ApiUrls.SM]: DuidOptions,
|
|
368
|
+
[ApiUrls.SETTINGS_SERVICE]: SettingsServiceOptions,
|
|
339
369
|
}
|
|
340
370
|
|
|
341
371
|
// MARK: IPalmSystem
|
|
@@ -159,6 +159,10 @@ export class DeviceXbox extends DeviceBase {
|
|
|
159
159
|
return { adId, type, latEnabled };
|
|
160
160
|
}
|
|
161
161
|
|
|
162
|
+
async getOsLanguage() {
|
|
163
|
+
return (window.navigator.language || '').slice(0, 2);
|
|
164
|
+
}
|
|
165
|
+
|
|
162
166
|
async getVolume() {
|
|
163
167
|
return VolumeRange.UNSUPPORTED;
|
|
164
168
|
}
|