2020-09-23 17:49:16 +02:00
|
|
|
import * as child_process from 'child_process';
|
2019-03-16 03:33:19 +01:00
|
|
|
|
2021-06-03 18:58:57 +02:00
|
|
|
import { DeviceType } from 'jslib-common/enums/deviceType';
|
2021-09-29 22:37:36 +02:00
|
|
|
import { ThemeType } from 'jslib-common/enums/themeType';
|
2019-03-16 03:33:19 +01:00
|
|
|
|
2021-06-03 18:58:57 +02:00
|
|
|
import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';
|
2019-03-16 03:33:19 +01:00
|
|
|
|
2020-09-23 17:49:16 +02:00
|
|
|
// tslint:disable-next-line
|
|
|
|
const open = require('open');
|
|
|
|
|
2019-03-16 03:33:19 +01:00
|
|
|
export class CliPlatformUtilsService implements PlatformUtilsService {
|
|
|
|
identityClientId: string;
|
|
|
|
|
|
|
|
private deviceCache: DeviceType = null;
|
|
|
|
|
|
|
|
constructor(identityClientId: string, private packageJson: any) {
|
|
|
|
this.identityClientId = identityClientId;
|
|
|
|
}
|
|
|
|
|
|
|
|
getDevice(): DeviceType {
|
|
|
|
if (!this.deviceCache) {
|
|
|
|
switch (process.platform) {
|
|
|
|
case 'win32':
|
|
|
|
this.deviceCache = DeviceType.WindowsDesktop;
|
|
|
|
break;
|
|
|
|
case 'darwin':
|
|
|
|
this.deviceCache = DeviceType.MacOsDesktop;
|
|
|
|
break;
|
|
|
|
case 'linux':
|
|
|
|
default:
|
|
|
|
this.deviceCache = DeviceType.LinuxDesktop;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return this.deviceCache;
|
|
|
|
}
|
|
|
|
|
|
|
|
getDeviceString(): string {
|
|
|
|
const device = DeviceType[this.getDevice()].toLowerCase();
|
|
|
|
return device.replace('desktop', '');
|
|
|
|
}
|
|
|
|
|
|
|
|
isFirefox() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isChrome() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isEdge() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isOpera() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isVivaldi() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isSafari() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isIE() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isMacAppStore() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
isViewOpen() {
|
2019-08-20 19:47:15 +02:00
|
|
|
return Promise.resolve(false);
|
2019-03-16 03:33:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
launchUri(uri: string, options?: any): void {
|
2020-09-23 17:49:16 +02:00
|
|
|
if (process.platform === 'linux') {
|
|
|
|
child_process.spawnSync('xdg-open', [uri]);
|
|
|
|
} else {
|
|
|
|
open(uri);
|
|
|
|
}
|
2019-03-16 03:33:19 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {
|
|
|
|
throw new Error('Not implemented.');
|
|
|
|
}
|
|
|
|
|
2021-04-07 19:42:06 +02:00
|
|
|
getApplicationVersion(): Promise<string> {
|
|
|
|
return Promise.resolve(this.packageJson.version);
|
2019-03-16 03:33:19 +01:00
|
|
|
}
|
|
|
|
|
2021-03-15 16:16:51 +01:00
|
|
|
supportsWebAuthn(win: Window) {
|
2019-03-16 03:33:19 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
supportsDuo(): boolean {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],
|
|
|
|
options?: any): void {
|
|
|
|
throw new Error('Not implemented.');
|
|
|
|
}
|
|
|
|
|
|
|
|
showDialog(text: string, title?: string, confirmText?: string, cancelText?: string, type?: string):
|
|
|
|
Promise<boolean> {
|
|
|
|
throw new Error('Not implemented.');
|
|
|
|
}
|
|
|
|
|
|
|
|
isDev(): boolean {
|
|
|
|
return process.env.BWCLI_ENV === 'development';
|
|
|
|
}
|
|
|
|
|
|
|
|
isSelfHost(): boolean {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
copyToClipboard(text: string, options?: any): void {
|
|
|
|
throw new Error('Not implemented.');
|
|
|
|
}
|
|
|
|
|
|
|
|
readFromClipboard(options?: any): Promise<string> {
|
|
|
|
throw new Error('Not implemented.');
|
|
|
|
}
|
2020-07-23 19:32:20 +02:00
|
|
|
|
|
|
|
supportsBiometric(): Promise<boolean> {
|
|
|
|
return Promise.resolve(false);
|
|
|
|
}
|
|
|
|
|
|
|
|
authenticateBiometric(): Promise<boolean> {
|
|
|
|
return Promise.resolve(false);
|
|
|
|
}
|
2020-11-18 22:10:57 +01:00
|
|
|
|
2020-12-15 23:22:24 +01:00
|
|
|
getDefaultSystemTheme() {
|
2021-09-29 22:37:36 +02:00
|
|
|
return Promise.resolve(ThemeType.Light as ThemeType.Light | ThemeType.Dark);
|
2020-12-15 23:22:24 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
onDefaultSystemThemeChange() {
|
2020-12-16 01:16:22 +01:00
|
|
|
/* noop */
|
2020-12-15 23:22:24 +01:00
|
|
|
}
|
|
|
|
|
2021-09-29 22:37:36 +02:00
|
|
|
getEffectiveTheme() {
|
|
|
|
return Promise.resolve(ThemeType.Light);
|
|
|
|
}
|
|
|
|
|
2020-11-18 22:10:57 +01:00
|
|
|
supportsSecureStorage(): boolean {
|
|
|
|
return false;
|
|
|
|
}
|
2019-03-16 03:33:19 +01:00
|
|
|
}
|