Skip to content

Commit 986673d

Browse files
author
Fatme
authored
Merge pull request #4132 from NativeScript/fatme/preview-api-device-warnings
feat(preview-api): expose public api for getting device's warnings
2 parents 5df9866 + b3bc007 commit 986673d

File tree

5 files changed

+32
-7
lines changed

5 files changed

+32
-7
lines changed

lib/definitions/preview-app-livesync.d.ts

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ declare global {
1818
}
1919

2020
interface IPreviewAppPluginsService {
21+
getPluginsUsageWarnings(data: IPreviewAppLiveSyncData, device: Device): string[];
2122
comparePluginsOnDevice(data: IPreviewAppLiveSyncData, device: Device): Promise<void>;
2223
getExternalPlugins(device: Device): string[];
2324
}
@@ -49,5 +50,6 @@ declare global {
4950
updateConnectedDevices(devices: Device[]): void;
5051
getDeviceById(id: string): Device;
5152
getDevicesForPlatform(platform: string): Device[];
53+
getPluginsUsageWarnings(data: IPreviewAppLiveSyncData, device: Device): string[];
5254
}
5355
}

lib/services/livesync/playground/devices/preview-devices-service.ts

+8-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@ import { DeviceDiscoveryEventNames, DEVICE_LOG_EVENT_NAME } from "../../../../co
55
export class PreviewDevicesService extends EventEmitter implements IPreviewDevicesService {
66
private connectedDevices: Device[] = [];
77

8-
constructor(private $previewAppLogProvider: IPreviewAppLogProvider) {
9-
super();
8+
constructor(private $previewAppLogProvider: IPreviewAppLogProvider,
9+
private $previewAppPluginsService: IPreviewAppPluginsService) {
10+
super();
1011

11-
this.initialize();
12+
this.initialize();
1213
}
1314

1415
public getConnectedDevices(): Device[] {
@@ -33,6 +34,10 @@ export class PreviewDevicesService extends EventEmitter implements IPreviewDevic
3334
return _.filter(this.connectedDevices, { platform: platform.toLowerCase() });
3435
}
3536

37+
public getPluginsUsageWarnings(data: IPreviewAppLiveSyncData, device: Device): string[] {
38+
return this.$previewAppPluginsService.getPluginsUsageWarnings(data, device);
39+
}
40+
3641
private initialize(): void {
3742
this.$previewAppLogProvider.on(DEVICE_LOG_EVENT_NAME, (deviceId: string, message: string) => {
3843
this.emit(DEVICE_LOG_EVENT_NAME, deviceId, message);

lib/services/livesync/playground/preview-app-plugins-service.ts

+17-3
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,20 @@ import { PLATFORMS_DIR_NAME, PACKAGE_JSON_FILE_NAME } from "../../../constants";
99
export class PreviewAppPluginsService implements IPreviewAppPluginsService {
1010
private previewAppVersionWarnings: IDictionary<string[]> = {};
1111

12-
constructor(private $fs: IFileSystem,
12+
constructor(private $errors: IErrors,
13+
private $fs: IFileSystem,
1314
private $logger: ILogger,
1415
private $pluginsService: IPluginsService) { }
1516

16-
public async comparePluginsOnDevice(data: IPreviewAppLiveSyncData, device: Device): Promise<void> {
17+
public getPluginsUsageWarnings(data: IPreviewAppLiveSyncData, device: Device): string[] {
18+
if (!device) {
19+
this.$errors.failWithoutHelp("No device provided.");
20+
}
21+
22+
if (!device.previewAppVersion) {
23+
this.$errors.failWithoutHelp("No version of preview app provided.");
24+
}
25+
1726
if (!this.previewAppVersionWarnings[device.previewAppVersion]) {
1827
const devicePlugins = this.getDevicePlugins(device);
1928
const localPlugins = this.getLocalPlugins(data.projectDir);
@@ -27,7 +36,12 @@ export class PreviewAppPluginsService implements IPreviewAppPluginsService {
2736
this.previewAppVersionWarnings[device.previewAppVersion] = warnings;
2837
}
2938

30-
this.previewAppVersionWarnings[device.previewAppVersion].map(warning => this.$logger.warn(warning));
39+
return this.previewAppVersionWarnings[device.previewAppVersion];
40+
}
41+
42+
public async comparePluginsOnDevice(data: IPreviewAppLiveSyncData, device: Device): Promise<void> {
43+
const warnings = this.getPluginsUsageWarnings(data, device);
44+
_.map(warnings, warning => this.$logger.warn(warning));
3145
}
3246

3347
public getExternalPlugins(device: Device): string[] {

test/services/playground/preview-app-plugins-service.ts

+2
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { Device } from "nativescript-preview-sdk";
44
import { assert } from "chai";
55
import * as util from "util";
66
import { PluginComparisonMessages } from "../../../lib/services/livesync/playground/preview-app-constants";
7+
import { ErrorsStub } from "../../stubs";
78

89
let readJsonParams: string[] = [];
910
let warnParams: string[] = [];
@@ -43,6 +44,7 @@ function createTestInjector(localPlugins: IStringDictionary, options?: { isNativ
4344
trace: () => ({}),
4445
warn: (message: string) => warnParams.push(message)
4546
});
47+
injector.register("errors", ErrorsStub);
4648
injector.register("previewAppPluginsService", PreviewAppPluginsService);
4749
return injector;
4850
}

test/services/preview-devices-service.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,19 @@ import { PreviewDevicesService } from "../../lib/services/livesync/playground/de
33
import { Device } from "nativescript-preview-sdk";
44
import { assert } from "chai";
55
import { DeviceDiscoveryEventNames } from "../../lib/common/constants";
6-
import { LoggerStub } from "../stubs";
6+
import { LoggerStub, ErrorsStub } from "../stubs";
77

88
let foundDevices: Device[] = [];
99
let lostDevices: Device[] = [];
1010

1111
function createTestInjector(): IInjector {
1212
const injector = new Yok();
13+
injector.register("errors", ErrorsStub);
1314
injector.register("previewDevicesService", PreviewDevicesService);
1415
injector.register("previewAppLogProvider", {
1516
on: () => ({})
1617
});
18+
injector.register("previewAppPluginsService", {});
1719
injector.register("logger", LoggerStub);
1820
return injector;
1921
}

0 commit comments

Comments
 (0)