diff --git a/electron-projects/ucap-webmessenger-electron/src/index.ts b/electron-projects/ucap-webmessenger-electron/src/index.ts
index 1ae23473..0a3914b9 100644
--- a/electron-projects/ucap-webmessenger-electron/src/index.ts
+++ b/electron-projects/ucap-webmessenger-electron/src/index.ts
@@ -14,6 +14,8 @@ import fse from 'fs-extra';
import semver from 'semver';
import os from 'os';
import ChildProcess from 'child_process';
+import * as url from 'url';
+import * as tmp from 'tmp';
import AutoLaunch from 'auto-launch';
@@ -31,7 +33,8 @@ import {
MessengerChannel,
MessageChannel,
AppChannel,
- ClipboardChannel
+ ClipboardChannel,
+ ExternalChannel
} from '@ucap-webmessenger/native-electron';
import { ElectronNotificationService } from '@ucap-webmessenger/electron-notification';
import { ElectronUpdateWindowService } from '@ucap-webmessenger/electron-update-window';
@@ -92,6 +95,8 @@ let preventQuit = false;
let notificationService: ElectronNotificationService | null;
let updateWindowService: ElectronUpdateWindowService | null;
+tmp.setGracefulCleanup();
+
function handleUncaughtException(error: Error) {
preventQuit = true;
@@ -771,6 +776,39 @@ ipcMain.on(AppChannel.Exit, (event: IpcMainEvent, ...args: any[]) => {
appExit();
});
+ipcMain.on(ExternalChannel.OpenUrl, (event: IpcMainEvent, ...args: any[]) => {
+ const targetUrl = args[0];
+ const options = JSON.stringify(args[1] || {});
+
+ tmp.file({ postfix: '.html' }, (err, name, fd, cb) => {
+ fse.writeFileSync(
+ name,
+ `
+
+
+
+ DS Talk Link
+
+
+
+
+
+
+
+ `
+ );
+
+ shell.openExternal(name);
+ });
+});
+
autoUpdater.on('checking-for-update', () => {
log.info('Checking for update...');
});
diff --git a/package-lock.json b/package-lock.json
index ef621c0c..d1bd62ae 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "ucap-webmessenger",
- "version": "0.0.17",
+ "version": "0.0.19",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -3494,6 +3494,12 @@
"integrity": "sha512-78AdXtlhpCHT0K3EytMpn4JNxaf5tbqbLcbIRoQIHzpTIyjpxLQKRoxU55ujBXAtg3Nl2h/XWvfDa9dsMOd0pQ==",
"dev": true
},
+ "@types/tmp": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.1.0.tgz",
+ "integrity": "sha512-6IwZ9HzWbCq6XoQWhxLpDjuADodH/MKXRUIDFudvgjcVdjFknvmR+DNsoUeer4XPrEnrZs04Jj+kfV9pFsrhmA==",
+ "dev": true
+ },
"@types/tween.js": {
"version": "17.2.0",
"resolved": "https://registry.npmjs.org/@types/tween.js/-/tween.js-17.2.0.tgz",
@@ -7615,6 +7621,17 @@
"chardet": "^0.7.0",
"iconv-lite": "^0.4.24",
"tmp": "^0.0.33"
+ },
+ "dependencies": {
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ }
}
},
"extglob": {
@@ -10449,6 +10466,15 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
"to-regex-range": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
@@ -15119,12 +15145,23 @@
}
},
"tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz",
+ "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==",
"dev": true,
"requires": {
- "os-tmpdir": "~1.0.2"
+ "rimraf": "^2.6.3"
+ },
+ "dependencies": {
+ "rimraf": {
+ "version": "2.7.1",
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "dev": true,
+ "requires": {
+ "glob": "^7.1.3"
+ }
+ }
}
},
"to-array": {
@@ -15694,6 +15731,15 @@
"yallist": "^2.1.2"
}
},
+ "tmp": {
+ "version": "0.0.33",
+ "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
+ "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
+ "dev": true,
+ "requires": {
+ "os-tmpdir": "~1.0.2"
+ }
+ },
"yallist": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
diff --git a/package.json b/package.json
index 1ae32ab1..2a428e9e 100644
--- a/package.json
+++ b/package.json
@@ -95,6 +95,7 @@
"@types/moment-timezone": "^0.5.12",
"@types/node": "^10.17.13",
"@types/semver": "^6.2.0",
+ "@types/tmp": "^0.1.0",
"@types/uglifyjs-webpack-plugin": "^1.1.0",
"@types/webpack": "^4.41.2",
"@types/webpack-merge": "^4.1.5",
@@ -142,6 +143,7 @@
"protractor": "~5.4.0",
"queueing-subject": "^0.3.4",
"rimraf": "^3.0.0",
+ "tmp": "^0.1.0",
"ts-node": "~7.0.0",
"tsickle": "^0.37.1",
"tslib": "^1.10.0",
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.ts
index 52616bd7..a2ad1c78 100644
--- a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.ts
+++ b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.ts
@@ -409,7 +409,10 @@ export class TopBarComponent implements OnInit, OnDestroy {
.replace(/(\(%USER_ID%\))/g, loginId)
.replace(/(\(%USER_PASS%\))/g, loginPw);
- this.nativeService.openDefaultBrowser(url);
+ this.nativeService.openDefaultBrowser(url, {
+ features:
+ 'menubar=no,location=no,resizable=yes,scrollbars=yes,status=no,width=400,height=400'
+ });
}
onClosedProfileMenu() {
diff --git a/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts b/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts
index 0bf8371d..cb833db0 100644
--- a/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts
+++ b/projects/ucap-webmessenger-native-browser/src/lib/services/browser-native.service.ts
@@ -277,7 +277,10 @@ export class BrowserNativeService extends NativeService {
return new TranslateLoaderService(this, prefix, suffix);
}
- openDefaultBrowser(url: string): void {
+ openDefaultBrowser(
+ url: string,
+ options?: { name?: string; features?: string; replace?: boolean }
+ ): void {
open(url);
}
diff --git a/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts b/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts
index 90aa84fc..1895b446 100644
--- a/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts
+++ b/projects/ucap-webmessenger-native-electron/src/lib/services/electron-native.service.ts
@@ -24,7 +24,8 @@ import {
MessageChannel,
ProcessChannel,
AppChannel,
- ClipboardChannel
+ ClipboardChannel,
+ ExternalChannel
} from '../types/channel.type';
import { Injectable } from '@angular/core';
import { TranslateLoaderService } from '../translate/electron-loader';
@@ -467,8 +468,12 @@ export class ElectronNativeService implements NativeService {
return new TranslateLoaderService(this, prefix, suffix);
}
- openDefaultBrowser(url: string): void {
- this.shell.openExternal(url);
+ openDefaultBrowser(
+ url: string,
+ options?: { name?: string; features?: string; replace?: boolean }
+ ): void {
+ // shell.openExternal(url);
+ this.ipcRenderer.send(ExternalChannel.OpenUrl, url, options);
}
readFromClipboard(): Promise<{
diff --git a/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts b/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts
index 1348c92a..a944bf11 100644
--- a/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts
+++ b/projects/ucap-webmessenger-native-electron/src/lib/types/channel.type.ts
@@ -62,3 +62,7 @@ export enum ClipboardChannel {
export enum AppChannel {
Exit = 'UCAP::app::exit'
}
+
+export enum ExternalChannel {
+ OpenUrl = 'UCAP::external::openUrl'
+}
diff --git a/projects/ucap-webmessenger-native/src/lib/services/native.service.ts b/projects/ucap-webmessenger-native/src/lib/services/native.service.ts
index 80ec8fde..03f97d15 100644
--- a/projects/ucap-webmessenger-native/src/lib/services/native.service.ts
+++ b/projects/ucap-webmessenger-native/src/lib/services/native.service.ts
@@ -87,7 +87,10 @@ export abstract class NativeService {
suffix?: string
): TranslateLoader;
- abstract openDefaultBrowser(url: string): void;
+ abstract openDefaultBrowser(
+ url: string,
+ options?: { name?: string; features?: string; replace?: boolean }
+ ): void;
abstract readFromClipboard(): Promise<{
text?: string;