@24i/bigscreen-sdk 1.0.54-alpha.2835 → 1.1.0
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/.vscode/settings.json +6 -0
- package/README.md +3 -2
- package/package.json +10 -10
- package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +14 -10
- package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +2 -10
- package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +1 -6
- package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +0 -1
- package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +24 -36
- package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +1 -5
- package/packages/analytics/src/clients/TealiumAnalytics/findIdForLanguage.ts +9 -0
- package/packages/analytics/src/clients/TealiumAnalytics/index.ts +1 -1
- package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +1 -3
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +14 -16
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +1 -1
- package/packages/analytics/src/clients/TealiumAnalytics/types.ts +14 -19
- package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +22 -13
- package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +3 -15
- package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +4 -7
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +13 -0
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +16 -0
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +3 -6
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +3 -4
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +3 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +3 -4
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +3 -4
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +3 -4
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/types.ts +28 -45
- package/packages/create-package/dist/createPackage.js +66 -0
- package/packages/create-package/dist/createPackage.js.map +1 -0
- package/packages/create-package/dist/index.js +5 -0
- package/packages/create-package/dist/index.js.map +1 -0
- package/packages/create-package/dist/questionnaire/questions.js +35 -0
- package/packages/create-package/dist/questionnaire/questions.js.map +1 -0
- package/packages/create-package/dist/settings/Settings.js +10 -0
- package/packages/create-package/dist/settings/Settings.js.map +1 -0
- package/packages/create-package/dist/types.js +3 -0
- package/packages/create-package/dist/types.js.map +1 -0
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +2 -23
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +0 -8
- package/packages/developer-tools/src/TechnicalInfo/translations.ts +0 -4
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +0 -38
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +0 -9
- package/packages/driver-androidtv/src/index.ts +0 -1
- package/packages/driver-androidtv/src/types.ts +0 -42
- package/packages/driver-base/src/DeviceBase.ts +0 -19
- package/packages/driver-base/src/__mocks__/DeviceBase.ts +0 -24
- package/packages/driver-base/src/index.ts +0 -3
- package/packages/driver-browser/src/DeviceBrowser.ts +0 -26
- package/packages/driver-entone/src/DeviceEntone.ts +1 -31
- package/packages/driver-firetv/src/DeviceFireTV.ts +1 -74
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +0 -9
- package/packages/driver-hbbtv/src/DeviceHbbTV.ts +0 -26
- package/packages/driver-kreatv/src/DeviceKreaTV.ts +0 -26
- package/packages/driver-saphi/src/DeviceSaphi.ts +0 -26
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +1 -78
- package/packages/driver-smartcast/src/__mocks__/api.ts +2 -32
- package/packages/driver-smartcast/src/types.ts +2 -48
- package/packages/driver-tizen/src/DeviceTizen.ts +7 -126
- package/packages/driver-tizen/src/ITizen.ts +202 -15116
- package/packages/driver-tizen/src/IWebapis.ts +87 -8643
- package/packages/driver-tizen/src/TizenKeys.ts +2 -2
- package/packages/driver-tizen/src/__mocks__/tizen.ts +8 -7
- package/packages/driver-tizen/src/constants.ts +195 -1
- package/packages/driver-tizen/src/types.ts +14 -0
- package/packages/driver-vidaa/src/DeviceVidaa.ts +0 -26
- package/packages/driver-webos/src/DeviceWebos.ts +0 -47
- package/packages/driver-webos/src/__mocks__/webos.ts +0 -33
- package/packages/driver-webos/src/constants.ts +0 -1
- package/packages/driver-webos/src/types.ts +0 -30
- package/packages/driver-xbox/src/DeviceXbox.ts +1 -30
- package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +6 -6
- package/packages/input/README.md +3 -0
- package/packages/input/src/Input.tsx +62 -26
- package/packages/input/src/utils.ts +71 -0
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +0 -1
- package/packages/keyboard/src/utils/caret.ts +8 -5
- package/packages/keyboard/src/utils/input.ts +6 -5
- package/packages/list/src/BasicList/BasicList.tsx +7 -7
- package/packages/list/src/CenteredList/CenteredList.tsx +2 -2
- package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +7 -7
- package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +2 -2
- package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +2 -2
- package/packages/list/src/FixedToEndList/FixedToEndList.tsx +2 -2
- package/packages/list/src/interface.ts +2 -2
- package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +1 -7
- package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +1 -3
- package/packages/router/README.md +0 -1
- package/packages/router/src/Router.tsx +1 -4
- package/packages/router/src/utils.ts +1 -1
- package/utils/release/release.ts +5 -7
- package/ci/is_ci_job_skippable.sh +0 -153
- package/packages/analytics/src/clients/TealiumAnalytics/findForLanguage.ts +0 -9
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppOpen.ts +0 -13
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdEvent.ts +0 -20
- package/packages/driver-base/src/types/AdInfo.ts +0 -5
- package/packages/driver-base/src/types/InAppPurchase.ts +0 -25
- package/packages/driver-firetv/src/types.ts +0 -1
- package/packages/input/src/handleOverflow.ts +0 -29
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/spanish.ts +0 -26
- package/packages/keyboard/src/utils/setInputSelectionRange.ts +0 -10
|
@@ -1,20 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DeviceBase, ConnectionType, ScreenSaverStatus, VolumeRange,
|
|
3
|
-
IAPSuccessPayload,
|
|
4
|
-
IAPPurchaseProductData,
|
|
5
3
|
} from '@24i/bigscreen-sdk/driver-base';
|
|
6
4
|
import { runAsync } from '@24i/bigscreen-sdk/utils/timers';
|
|
7
5
|
import { ipify } from '@24i/bigscreen-sdk/ipify';
|
|
8
|
-
import { VendorType } from '@24i/smartapps-datalayer/api';
|
|
9
6
|
import { getKeyMap } from './keymap';
|
|
10
|
-
import {
|
|
11
|
-
ISmartCastApi,
|
|
12
|
-
IFA,
|
|
13
|
-
DEFAULT_TTS_TIMEOUT,
|
|
14
|
-
DevicePlaybackQuality,
|
|
15
|
-
DeviceLanguage,
|
|
16
|
-
PurchaseData,
|
|
17
|
-
} from './types';
|
|
7
|
+
import { ISmartCastApi, IFA, DEFAULT_TTS_TIMEOUT, DevicePlaybackQuality } from './types';
|
|
18
8
|
|
|
19
9
|
declare const window: Window & { VIZIO: ISmartCastApi };
|
|
20
10
|
|
|
@@ -39,8 +29,6 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
39
29
|
|
|
40
30
|
lastTextToSpeechItem?: { delay: number, text: string } | null;
|
|
41
31
|
|
|
42
|
-
deviceLanguage?: DeviceLanguage;
|
|
43
|
-
|
|
44
32
|
API?: ISmartCastApi;
|
|
45
33
|
|
|
46
34
|
IFA?: IFA;
|
|
@@ -52,7 +40,6 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
52
40
|
this.initVisibilityChangeListener();
|
|
53
41
|
this.initMouseActiveListener();
|
|
54
42
|
await this.initPlatformApiListeners();
|
|
55
|
-
this.setSubscriptionFeaturesConfiguration();
|
|
56
43
|
}
|
|
57
44
|
|
|
58
45
|
async initPlatformApiListeners(): Promise<void> {
|
|
@@ -97,13 +84,6 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
97
84
|
});
|
|
98
85
|
}));
|
|
99
86
|
|
|
100
|
-
promises.push(new Promise<void>((r) => {
|
|
101
|
-
API.setDeviceLanguageHandler((deviceLanguage: DeviceLanguage) => {
|
|
102
|
-
this.deviceLanguage = deviceLanguage;
|
|
103
|
-
r();
|
|
104
|
-
});
|
|
105
|
-
}));
|
|
106
|
-
|
|
107
87
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
108
88
|
API.setContentChangeHandler(this.handleDeeplink);
|
|
109
89
|
|
|
@@ -249,12 +229,6 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
249
229
|
.replace('{{us_privacy}}', IFAObject.LMT ? '1YYN' : '1YNN');
|
|
250
230
|
}
|
|
251
231
|
|
|
252
|
-
async getUserMetadata() {
|
|
253
|
-
await this.checkAndLinkTv();
|
|
254
|
-
const result = await this.API!.Account.getUserMetadata();
|
|
255
|
-
return result?.data || null;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
232
|
async getManufacturerName() {
|
|
259
233
|
return 'VIZIO';
|
|
260
234
|
}
|
|
@@ -291,19 +265,6 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
291
265
|
return this.deviceId;
|
|
292
266
|
}
|
|
293
267
|
|
|
294
|
-
async getAdInfo() {
|
|
295
|
-
const adId = this.IFA?.IFA ?? null;
|
|
296
|
-
const type = this.IFA?.IFA_TYPE ?? 'vida';
|
|
297
|
-
const latEnabled = (this.IFA?.LMT !== null || this.IFA?.LMT !== undefined)
|
|
298
|
-
? Boolean(this.IFA?.LMT)
|
|
299
|
-
: true;
|
|
300
|
-
return { adId, type, latEnabled };
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
async getOsLanguage() {
|
|
304
|
-
return this.deviceLanguage?.code || '';
|
|
305
|
-
}
|
|
306
|
-
|
|
307
268
|
async getVolume() {
|
|
308
269
|
return VolumeRange.UNSUPPORTED;
|
|
309
270
|
}
|
|
@@ -353,42 +314,4 @@ export class DeviceSmartCast extends DeviceBase {
|
|
|
353
314
|
// not supported on SmartCast platform
|
|
354
315
|
return '';
|
|
355
316
|
}
|
|
356
|
-
|
|
357
|
-
setSubscriptionFeaturesConfiguration() {
|
|
358
|
-
try {
|
|
359
|
-
this.subscriptionFeaturesConfiguration.purchase = this.API?.Account.isSVODEnabled?.()
|
|
360
|
-
|| false;
|
|
361
|
-
} catch {}
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
registerPartner(callback: (challenge: string) => Promise<string>, appKeyId: string) {
|
|
365
|
-
this.API!.Account.registerPartner(callback, appKeyId);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
async checkAndLinkTv() {
|
|
369
|
-
const isLinked = await this.API!.Account.getLinkStatus();
|
|
370
|
-
if (!isLinked) await this.API!.Account.startTVLink();
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
async purchaseProduct({ sku, serviceId }: IAPPurchaseProductData): Promise<IAPSuccessPayload> {
|
|
374
|
-
await this.checkAndLinkTv();
|
|
375
|
-
await this.API!.Account.getPlans({ includeBundlePlans: true });
|
|
376
|
-
const purchaseResult = await this.API!.Account.startSVODPurchase(
|
|
377
|
-
sku!, serviceId ?? '',
|
|
378
|
-
);
|
|
379
|
-
const receiptPayload: PurchaseData = {
|
|
380
|
-
customerId: purchaseResult.data.customerId,
|
|
381
|
-
partnerAccountId: purchaseResult.data.partnerAccountId,
|
|
382
|
-
planCode: purchaseResult.data.planCode,
|
|
383
|
-
addOnCodes: purchaseResult.data.addOnCodes,
|
|
384
|
-
subscriptionId: purchaseResult.data.subscriptionId,
|
|
385
|
-
};
|
|
386
|
-
return { platform: VendorType.VIZIO, receiptPayload };
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
390
|
-
async cancelSubscription(data: IAPPurchaseProductData): Promise<void> {
|
|
391
|
-
// not supported
|
|
392
|
-
throw new Error('Not supported');
|
|
393
|
-
}
|
|
394
317
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IFA, ISmartCastApi, DevicePlaybackQuality
|
|
1
|
+
import { IFA, ISmartCastApi, DevicePlaybackQuality } from '../types';
|
|
2
2
|
|
|
3
3
|
export const deviceId = '2bd671ef-02cd-445f-9295-b3565dbaf1e8';
|
|
4
4
|
export const deviceModel = 'D24f4-J01';
|
|
@@ -31,16 +31,12 @@ export const SmartCastMockApi: ISmartCastApi = {
|
|
|
31
31
|
setAdvertiserIDListener: (callback: (advertiserID: IFA) => void): void => callback({
|
|
32
32
|
IFA: deviceId,
|
|
33
33
|
IFA_TYPE: 'vida',
|
|
34
|
-
LMT:
|
|
34
|
+
LMT: false,
|
|
35
35
|
}),
|
|
36
36
|
|
|
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
|
-
|
|
44
40
|
Chromevox: {
|
|
45
41
|
cancel: (): void => {
|
|
46
42
|
throw new Error('Function not implemented.');
|
|
@@ -50,30 +46,4 @@ export const SmartCastMockApi: ISmartCastApi = {
|
|
|
50
46
|
console.log(text);
|
|
51
47
|
},
|
|
52
48
|
},
|
|
53
|
-
|
|
54
|
-
Account: {
|
|
55
|
-
isSVODEnabled: () => true,
|
|
56
|
-
startSVODPurchase: async () => ({
|
|
57
|
-
id: 'id',
|
|
58
|
-
data: {
|
|
59
|
-
customerId: 'customerId',
|
|
60
|
-
partnerAccountId: 'partnerAccountId',
|
|
61
|
-
planCode: 'planCode',
|
|
62
|
-
subscriptionId: 'subscriptionId',
|
|
63
|
-
},
|
|
64
|
-
}),
|
|
65
|
-
registerPartner: jest.fn(),
|
|
66
|
-
getLinkStatus: async () => true,
|
|
67
|
-
getUserMetadata: async () => ({
|
|
68
|
-
id: 'id',
|
|
69
|
-
data: {
|
|
70
|
-
customerId: 'customerId',
|
|
71
|
-
email: 'email@example.com',
|
|
72
|
-
firstName: 'First',
|
|
73
|
-
lastName: 'Last',
|
|
74
|
-
},
|
|
75
|
-
}),
|
|
76
|
-
startTVLink: async () => ({}),
|
|
77
|
-
getPlans: async () => ({ id: 'id', data: [] }),
|
|
78
|
-
},
|
|
79
49
|
};
|
|
@@ -34,29 +34,6 @@ 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
|
-
|
|
42
|
-
Account: {
|
|
43
|
-
isSVODEnabled: () => boolean,
|
|
44
|
-
startSVODPurchase: (
|
|
45
|
-
planCode: string,
|
|
46
|
-
partnerAccountId: string,
|
|
47
|
-
couponCode?: string,
|
|
48
|
-
addOnCodes?: string[],
|
|
49
|
-
noFreeTrial?: boolean,
|
|
50
|
-
) => Promise<{ id: string, data: PurchaseData }>
|
|
51
|
-
registerPartner: (callback:(challenge: string) => Promise<string>, keyId: string) => void
|
|
52
|
-
getLinkStatus: () => Promise<boolean>
|
|
53
|
-
getUserMetadata: () => Promise<{ id: string, data: UserMetadata }>
|
|
54
|
-
startTVLink: () => Promise<object>
|
|
55
|
-
getPlans: (options: { includeBundlePlans?: boolean }) => Promise<{
|
|
56
|
-
id: string, data: object[]
|
|
57
|
-
}>
|
|
58
|
-
}
|
|
59
|
-
|
|
60
37
|
/**
|
|
61
38
|
* Device model.
|
|
62
39
|
*/
|
|
@@ -70,24 +47,6 @@ export type ISmartCastApi = {
|
|
|
70
47
|
play: (text: string) => void,
|
|
71
48
|
};
|
|
72
49
|
};
|
|
73
|
-
/**
|
|
74
|
-
* Data type when purchase successfull.
|
|
75
|
-
*/
|
|
76
|
-
|
|
77
|
-
export type PurchaseData = {
|
|
78
|
-
customerId: string,
|
|
79
|
-
partnerAccountId: string,
|
|
80
|
-
planCode: string,
|
|
81
|
-
addOnCodes?: string[],
|
|
82
|
-
subscriptionId: string
|
|
83
|
-
};
|
|
84
|
-
|
|
85
|
-
export type UserMetadata = {
|
|
86
|
-
customerId: string;
|
|
87
|
-
email: string;
|
|
88
|
-
firstName: string;
|
|
89
|
-
lastName: string;
|
|
90
|
-
};
|
|
91
50
|
|
|
92
51
|
/**
|
|
93
52
|
* Identifier For Advertising (IFA) and Limited Tracking parameter object
|
|
@@ -97,15 +56,10 @@ export type IFA = {
|
|
|
97
56
|
IFA: string,
|
|
98
57
|
/** String value for IFA type ("vida") */
|
|
99
58
|
IFA_TYPE: string,
|
|
100
|
-
/**
|
|
101
|
-
LMT:
|
|
59
|
+
/** true=Limited tracking enabled, false=Limited tracking disabled */
|
|
60
|
+
LMT: boolean,
|
|
102
61
|
};
|
|
103
62
|
|
|
104
63
|
export type DevicePlaybackQuality = 'UHD' | 'HD' | 'SD';
|
|
105
64
|
|
|
106
65
|
export const DEFAULT_TTS_TIMEOUT = 3000;
|
|
107
|
-
|
|
108
|
-
export type DeviceLanguage = {
|
|
109
|
-
code: string,
|
|
110
|
-
name: string,
|
|
111
|
-
};
|
|
@@ -4,29 +4,20 @@ import {
|
|
|
4
4
|
ScreenSaverStatus,
|
|
5
5
|
VolumeRange,
|
|
6
6
|
ExitOptions,
|
|
7
|
-
IAPSuccessPayload,
|
|
8
|
-
IAPPurchaseProductData,
|
|
9
7
|
} from '@24i/bigscreen-sdk/driver-base';
|
|
10
8
|
import { Storage } from '@24i/bigscreen-sdk/storage';
|
|
11
9
|
import { runAsync } from '@24i/bigscreen-sdk/utils/timers';
|
|
12
|
-
import {
|
|
10
|
+
import { TizenKeys } from './TizenKeys';
|
|
13
11
|
import {
|
|
14
|
-
|
|
15
|
-
BillingBuyData,
|
|
12
|
+
VENDOR,
|
|
16
13
|
NetworkState,
|
|
17
14
|
NetworkActiveConnectionType,
|
|
18
15
|
AppCommonScreenSaverState,
|
|
19
|
-
CancelSubscriptionData,
|
|
20
|
-
CancelSubscriptionAPIResult,
|
|
21
|
-
} from './IWebapis';
|
|
22
|
-
import { Tizen, Application } from './ITizen';
|
|
23
|
-
import { TizenKeys } from './TizenKeys';
|
|
24
|
-
import {
|
|
25
|
-
VENDOR,
|
|
26
16
|
} from './constants';
|
|
17
|
+
import { IWebapis, ITizen, TizenApplication } from './types';
|
|
27
18
|
|
|
28
|
-
declare const webapis:
|
|
29
|
-
declare const tizen:
|
|
19
|
+
declare const webapis: IWebapis;
|
|
20
|
+
declare const tizen: ITizen;
|
|
30
21
|
|
|
31
22
|
const isNetworkConnected = (state: NetworkState) => {
|
|
32
23
|
switch (state) {
|
|
@@ -45,7 +36,7 @@ const isNetworkConnected = (state: NetworkState) => {
|
|
|
45
36
|
export class DeviceTizen extends DeviceBase {
|
|
46
37
|
// MARK: Properties
|
|
47
38
|
|
|
48
|
-
application:
|
|
39
|
+
application: TizenApplication = tizen.application.getCurrentApplication();
|
|
49
40
|
|
|
50
41
|
keys: TizenKeys = new TizenKeys();
|
|
51
42
|
|
|
@@ -55,11 +46,6 @@ export class DeviceTizen extends DeviceBase {
|
|
|
55
46
|
|
|
56
47
|
screenSaverStatus: AppCommonScreenSaverState = AppCommonScreenSaverState.SCREEN_SAVER_OFF;
|
|
57
48
|
|
|
58
|
-
subscriptionFeaturesConfiguration = {
|
|
59
|
-
purchase: true,
|
|
60
|
-
management: true,
|
|
61
|
-
};
|
|
62
|
-
|
|
63
49
|
// MARK: Initialization
|
|
64
50
|
|
|
65
51
|
async initDevice(): Promise<void> {
|
|
@@ -211,30 +197,6 @@ export class DeviceTizen extends DeviceBase {
|
|
|
211
197
|
return '';
|
|
212
198
|
}
|
|
213
199
|
|
|
214
|
-
async getAdInfo() {
|
|
215
|
-
let adId = null;
|
|
216
|
-
let latEnabled = null;
|
|
217
|
-
const type = 'tifa';
|
|
218
|
-
try {
|
|
219
|
-
adId = webapis.adinfo.getTIFA() ?? null;
|
|
220
|
-
latEnabled = webapis.adinfo.isLATEnabled() ?? true;
|
|
221
|
-
} catch (e) {
|
|
222
|
-
latEnabled = true;
|
|
223
|
-
console.error('[DeviceTizen] Failed getAdInfo', e);
|
|
224
|
-
}
|
|
225
|
-
return { adId, type, latEnabled };
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
async getOsLanguage() {
|
|
229
|
-
return new Promise<string>((resolve) => {
|
|
230
|
-
tizen.systeminfo.getPropertyValue(
|
|
231
|
-
'LOCALE',
|
|
232
|
-
({ language }) => resolve(language),
|
|
233
|
-
() => resolve(''),
|
|
234
|
-
);
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
|
|
238
200
|
async getVolume() {
|
|
239
201
|
try {
|
|
240
202
|
const volume = tizen.tvaudiocontrol.getVolume();
|
|
@@ -284,7 +246,7 @@ export class DeviceTizen extends DeviceBase {
|
|
|
284
246
|
? AppCommonScreenSaverState.SCREEN_SAVER_ON
|
|
285
247
|
: AppCommonScreenSaverState.SCREEN_SAVER_OFF;
|
|
286
248
|
return new Promise((resolve) => {
|
|
287
|
-
webapis.
|
|
249
|
+
webapis.appCommon.setScreenSaver(
|
|
288
250
|
status,
|
|
289
251
|
() => {
|
|
290
252
|
this.screenSaverStatus = status;
|
|
@@ -333,85 +295,4 @@ export class DeviceTizen extends DeviceBase {
|
|
|
333
295
|
async getMacAddress() {
|
|
334
296
|
return webapis.network.getMac();
|
|
335
297
|
}
|
|
336
|
-
|
|
337
|
-
async purchaseProduct({
|
|
338
|
-
sku, product, appId,
|
|
339
|
-
}: IAPPurchaseProductData): Promise<IAPSuccessPayload> {
|
|
340
|
-
return new Promise((resolve, reject) => {
|
|
341
|
-
if (!product || !appId) reject(new Error('Missing product or appId'));
|
|
342
|
-
const paymentDetails = {
|
|
343
|
-
OrderItemID: sku,
|
|
344
|
-
OrderTitle: product!.title,
|
|
345
|
-
OrderTotal: product!.price![0].amount,
|
|
346
|
-
OrderCurrencyID: product!.price![0].currency,
|
|
347
|
-
OrderCustomID: webapis.sso.getLoginUid(),
|
|
348
|
-
};
|
|
349
|
-
const onSuccess = (data: BillingBuyData) => {
|
|
350
|
-
try {
|
|
351
|
-
if (data.payResult !== 'SUCCESS') throw new Error('Purchase failed');
|
|
352
|
-
const countryCode = webapis.productinfo.getSystemConfig(
|
|
353
|
-
webapis.productinfo.ProductInfoConfigKey.CONFIG_KEY_SERVICE_COUNTRY,
|
|
354
|
-
);
|
|
355
|
-
const detail = JSON.parse(data.payDetail);
|
|
356
|
-
resolve({
|
|
357
|
-
platform: VendorType.SAMSUNG,
|
|
358
|
-
receiptPayload: {
|
|
359
|
-
appId,
|
|
360
|
-
samsungInvoiceId: detail.InvoiceID,
|
|
361
|
-
samsungCustomId: paymentDetails.OrderCustomID,
|
|
362
|
-
countryCode,
|
|
363
|
-
},
|
|
364
|
-
});
|
|
365
|
-
} catch (e) {
|
|
366
|
-
reject(e);
|
|
367
|
-
}
|
|
368
|
-
};
|
|
369
|
-
webapis.billing.buyItem(
|
|
370
|
-
appId!, 'PRD', JSON.stringify(paymentDetails), onSuccess, reject,
|
|
371
|
-
);
|
|
372
|
-
});
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
async cancelSubscription(
|
|
376
|
-
{ product, appId }: IAPPurchaseProductData,
|
|
377
|
-
): Promise<void> {
|
|
378
|
-
return new Promise((resolve, reject) => {
|
|
379
|
-
if (!product || !appId) {
|
|
380
|
-
reject(new Error('Missing product or appId'));
|
|
381
|
-
}
|
|
382
|
-
const UID = webapis.sso.getLoginUid();
|
|
383
|
-
const countryCode = webapis.productinfo.getSystemConfig(
|
|
384
|
-
webapis.productinfo.ProductInfoConfigKey.CONFIG_KEY_SERVICE_COUNTRY,
|
|
385
|
-
);
|
|
386
|
-
try {
|
|
387
|
-
const vendorTransactionId = product?.vendorTransactionId;
|
|
388
|
-
if (!vendorTransactionId) {
|
|
389
|
-
reject(new Error('Missing vendorTransactionId'));
|
|
390
|
-
}
|
|
391
|
-
const onSuccess = (data: CancelSubscriptionData) => {
|
|
392
|
-
try {
|
|
393
|
-
const result: CancelSubscriptionAPIResult = JSON.parse(data.apiResult);
|
|
394
|
-
if (result.CPStatus === '100000') {
|
|
395
|
-
resolve();
|
|
396
|
-
} else {
|
|
397
|
-
reject(new Error(`Cancel subscription failed: ${result.CPStatus}`));
|
|
398
|
-
}
|
|
399
|
-
} catch (e) {
|
|
400
|
-
reject(e);
|
|
401
|
-
}
|
|
402
|
-
};
|
|
403
|
-
webapis.billing.cancelSubscription(
|
|
404
|
-
appId!,
|
|
405
|
-
product!.vendorTransactionId!.toString(),
|
|
406
|
-
UID,
|
|
407
|
-
countryCode,
|
|
408
|
-
'PRD',
|
|
409
|
-
onSuccess,
|
|
410
|
-
reject,
|
|
411
|
-
);
|
|
412
|
-
} catch (e) {
|
|
413
|
-
reject(e);
|
|
414
|
-
}
|
|
415
|
-
});
|
|
416
|
-
}
|
|
417
298
|
}
|