auto launch is implemented
This commit is contained in:
parent
b5ceea129b
commit
65134c851e
|
@ -3,6 +3,8 @@ import path from 'path';
|
||||||
import fse from 'fs-extra';
|
import fse from 'fs-extra';
|
||||||
import semver from 'semver';
|
import semver from 'semver';
|
||||||
|
|
||||||
|
import AutoLaunch from 'auto-launch';
|
||||||
|
|
||||||
import { AppWindow } from './app/AppWindow';
|
import { AppWindow } from './app/AppWindow';
|
||||||
import { now } from './util/now';
|
import { now } from './util/now';
|
||||||
import { showUncaughtException } from './crash/show-uncaught-exception';
|
import { showUncaughtException } from './crash/show-uncaught-exception';
|
||||||
|
@ -93,6 +95,10 @@ let autoUpdaterCancellationToken: CancellationToken;
|
||||||
autoUpdater.autoDownload = false;
|
autoUpdater.autoDownload = false;
|
||||||
autoUpdater.logger = log;
|
autoUpdater.logger = log;
|
||||||
|
|
||||||
|
const ucapMessengerLauncher = new AutoLaunch({
|
||||||
|
name: app.getName()
|
||||||
|
});
|
||||||
|
|
||||||
app.on(ElectronAppChannel.SecondInstance, (event, args, workingDirectory) => {
|
app.on(ElectronAppChannel.SecondInstance, (event, args, workingDirectory) => {
|
||||||
// Someone tried to run a second instance, we should focus our window.
|
// Someone tried to run a second instance, we should focus our window.
|
||||||
if (appWindow) {
|
if (appWindow) {
|
||||||
|
@ -339,6 +345,35 @@ ipcMain.on(UpdaterChannel.Check, (event: IpcMainEvent, ...args: any[]) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.on(
|
||||||
|
MessengerChannel.ChangeAutoLaunch,
|
||||||
|
(event: IpcMainEvent, ...args: any[]) => {
|
||||||
|
const isAutoLaunch = args[0] as boolean;
|
||||||
|
|
||||||
|
if (isAutoLaunch) {
|
||||||
|
ucapMessengerLauncher
|
||||||
|
.enable()
|
||||||
|
.then(() => {
|
||||||
|
event.returnValue = true;
|
||||||
|
console.log('AutoLaunch is enabled');
|
||||||
|
})
|
||||||
|
.catch(reason => {
|
||||||
|
event.returnValue = false;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
ucapMessengerLauncher
|
||||||
|
.disable()
|
||||||
|
.then(() => {
|
||||||
|
event.returnValue = true;
|
||||||
|
console.log('AutoLaunch is disabled');
|
||||||
|
})
|
||||||
|
.catch(reason => {
|
||||||
|
event.returnValue = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
ipcMain.on(
|
ipcMain.on(
|
||||||
UpdaterChannel.StartCheckInstant,
|
UpdaterChannel.StartCheckInstant,
|
||||||
(event: IpcMainEvent, ...args: any[]) => {
|
(event: IpcMainEvent, ...args: any[]) => {
|
||||||
|
|
36
package-lock.json
generated
36
package-lock.json
generated
|
@ -2270,6 +2270,12 @@
|
||||||
"integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
|
"integrity": "sha512-/+CRPXpBDpo2RK9C68N3b2cOvO0Cf5B9aPijHsoDQTHivnGSObdOF2BRQOYjojWTDy6nQvMjmqRXIxH55VjxxA==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"@types/auto-launch": {
|
||||||
|
"version": "5.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/auto-launch/-/auto-launch-5.0.1.tgz",
|
||||||
|
"integrity": "sha512-+KQ+/koZ7sJXnf5cnCANofY6yXAdYJNEoVZEuWcwJfuWbUp9u6l09I7KhwD+ivU+cdz7JId4V5ukxscWtHdSuw==",
|
||||||
|
"dev": true
|
||||||
|
},
|
||||||
"@types/axios": {
|
"@types/axios": {
|
||||||
"version": "0.14.0",
|
"version": "0.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz",
|
"resolved": "https://registry.npmjs.org/@types/axios/-/axios-0.14.0.tgz",
|
||||||
|
@ -2974,6 +2980,11 @@
|
||||||
"default-require-extensions": "^2.0.0"
|
"default-require-extensions": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"applescript": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/applescript/-/applescript-1.0.0.tgz",
|
||||||
|
"integrity": "sha1-u4evVoytA0pOSMS9r2Bno6JwExc="
|
||||||
|
},
|
||||||
"aproba": {
|
"aproba": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
|
||||||
|
@ -3156,6 +3167,18 @@
|
||||||
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
|
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"auto-launch": {
|
||||||
|
"version": "5.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/auto-launch/-/auto-launch-5.0.5.tgz",
|
||||||
|
"integrity": "sha512-ppdF4mihhYzMYLuCcx9H/c5TUOCev8uM7en53zWVQhyYAJrurd2bFZx3qQVeJKF2jrc7rsPRNN5cD+i23l6PdA==",
|
||||||
|
"requires": {
|
||||||
|
"applescript": "^1.0.0",
|
||||||
|
"mkdirp": "^0.5.1",
|
||||||
|
"path-is-absolute": "^1.0.0",
|
||||||
|
"untildify": "^3.0.2",
|
||||||
|
"winreg": "1.2.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"autolinker": {
|
"autolinker": {
|
||||||
"version": "3.11.1",
|
"version": "3.11.1",
|
||||||
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.11.1.tgz",
|
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-3.11.1.tgz",
|
||||||
|
@ -11215,8 +11238,7 @@
|
||||||
"path-is-absolute": {
|
"path-is-absolute": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
|
||||||
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
|
"integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"path-is-inside": {
|
"path-is-inside": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
|
@ -14408,6 +14430,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"untildify": {
|
||||||
|
"version": "3.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/untildify/-/untildify-3.0.3.tgz",
|
||||||
|
"integrity": "sha512-iSk/J8efr8uPT/Z4eSUywnqyrQU7DSdMfdqK4iWEaUVVmcP5JcnpRqmVMwcwcnmI1ATFNgC5V90u09tBynNFKA=="
|
||||||
|
},
|
||||||
"upath": {
|
"upath": {
|
||||||
"version": "1.2.0",
|
"version": "1.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
|
||||||
|
@ -16425,6 +16452,11 @@
|
||||||
"string-width": "^2.1.1"
|
"string-width": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"winreg": {
|
||||||
|
"version": "1.2.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/winreg/-/winreg-1.2.4.tgz",
|
||||||
|
"integrity": "sha1-ugZWKbepJRMOFXeRCM9UCZDpjRs="
|
||||||
|
},
|
||||||
"wordwrap": {
|
"wordwrap": {
|
||||||
"version": "0.0.3",
|
"version": "0.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@angular/core": "~8.2.12",
|
"@angular/core": "~8.2.12",
|
||||||
|
"auto-launch": "^5.0.5",
|
||||||
"electron-log": "^3.0.9",
|
"electron-log": "^3.0.9",
|
||||||
"electron-updater": "^4.2.0",
|
"electron-updater": "^4.2.0",
|
||||||
"electron-window-state": "^5.0.3",
|
"electron-window-state": "^5.0.3",
|
||||||
|
@ -67,6 +68,7 @@
|
||||||
"@ngrx/store": "^8.4.0",
|
"@ngrx/store": "^8.4.0",
|
||||||
"@ngrx/store-devtools": "^8.4.0",
|
"@ngrx/store-devtools": "^8.4.0",
|
||||||
"@ngx-translate/core": "^11.0.1",
|
"@ngx-translate/core": "^11.0.1",
|
||||||
|
"@types/auto-launch": "^5.0.1",
|
||||||
"@types/axios": "^0.14.0",
|
"@types/axios": "^0.14.0",
|
||||||
"@types/copy-webpack-plugin": "^5.0.0",
|
"@types/copy-webpack-plugin": "^5.0.0",
|
||||||
"@types/crypto-js": "^3.1.43",
|
"@types/crypto-js": "^3.1.43",
|
||||||
|
|
|
@ -23,6 +23,7 @@ import {
|
||||||
Settings,
|
Settings,
|
||||||
NotificationSetting
|
NotificationSetting
|
||||||
} from '@ucap-webmessenger/ui-settings';
|
} from '@ucap-webmessenger/ui-settings';
|
||||||
|
import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
|
||||||
|
|
||||||
export interface MessengerSettingsDialogData {}
|
export interface MessengerSettingsDialogData {}
|
||||||
|
|
||||||
|
@ -48,6 +49,7 @@ export class MessengerSettingsDialogComponent implements OnInit {
|
||||||
private sessionStorageService: SessionStorageService,
|
private sessionStorageService: SessionStorageService,
|
||||||
private localStorageService: LocalStorageService,
|
private localStorageService: LocalStorageService,
|
||||||
private ucapTranslateService: UCapTranslateService,
|
private ucapTranslateService: UCapTranslateService,
|
||||||
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService,
|
||||||
private store: Store<any>,
|
private store: Store<any>,
|
||||||
@Inject(DOCUMENT) private document: Document,
|
@Inject(DOCUMENT) private document: Document,
|
||||||
private renderer2: Renderer2
|
private renderer2: Renderer2
|
||||||
|
@ -82,6 +84,10 @@ export class MessengerSettingsDialogComponent implements OnInit {
|
||||||
) {
|
) {
|
||||||
this.ucapTranslateService.use(setting.hrInfoLocale);
|
this.ucapTranslateService.use(setting.hrInfoLocale);
|
||||||
}
|
}
|
||||||
|
if (this.appUserInfo.settings.general.autoLaunch !== setting.autoLaunch) {
|
||||||
|
this.nativeService.changeAutoLaunch(setting.autoLaunch);
|
||||||
|
}
|
||||||
|
|
||||||
this.applySettings({ ...this.appUserInfo.settings, general: setting });
|
this.applySettings({ ...this.appUserInfo.settings, general: setting });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ export const environment: Environment = {
|
||||||
general: {
|
general: {
|
||||||
appTheme: 'theme-default',
|
appTheme: 'theme-default',
|
||||||
autoLogin: false,
|
autoLogin: false,
|
||||||
autoStart: true,
|
autoLaunch: true,
|
||||||
continueRunWhenClose: true,
|
continueRunWhenClose: true,
|
||||||
locale: 'ko',
|
locale: 'ko',
|
||||||
hrInfoLocale: 'ko',
|
hrInfoLocale: 'ko',
|
||||||
|
|
|
@ -40,7 +40,7 @@ export const environment: Environment = {
|
||||||
general: {
|
general: {
|
||||||
appTheme: 'theme-default',
|
appTheme: 'theme-default',
|
||||||
autoLogin: false,
|
autoLogin: false,
|
||||||
autoStart: true,
|
autoLaunch: true,
|
||||||
continueRunWhenClose: true,
|
continueRunWhenClose: true,
|
||||||
locale: 'ko',
|
locale: 'ko',
|
||||||
hrInfoLocale: 'ko',
|
hrInfoLocale: 'ko',
|
||||||
|
|
|
@ -40,7 +40,7 @@ export const environment: Environment = {
|
||||||
general: {
|
general: {
|
||||||
appTheme: 'theme-default',
|
appTheme: 'theme-default',
|
||||||
autoLogin: false,
|
autoLogin: false,
|
||||||
autoStart: true,
|
autoLaunch: true,
|
||||||
continueRunWhenClose: true,
|
continueRunWhenClose: true,
|
||||||
locale: 'ko',
|
locale: 'ko',
|
||||||
hrInfoLocale: 'ko',
|
hrInfoLocale: 'ko',
|
||||||
|
|
|
@ -40,7 +40,7 @@ export const environment: Environment = {
|
||||||
general: {
|
general: {
|
||||||
appTheme: 'theme-default',
|
appTheme: 'theme-default',
|
||||||
autoLogin: false,
|
autoLogin: false,
|
||||||
autoStart: true,
|
autoLaunch: true,
|
||||||
continueRunWhenClose: true,
|
continueRunWhenClose: true,
|
||||||
locale: 'ko',
|
locale: 'ko',
|
||||||
hrInfoLocale: 'ko',
|
hrInfoLocale: 'ko',
|
||||||
|
|
|
@ -62,6 +62,12 @@ export class BrowserNativeService extends NativeService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
changeAutoLaunch(autoLaunch: boolean): Promise<boolean> {
|
||||||
|
return new Promise<boolean>((resolve, reject) => {
|
||||||
|
resolve(true);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
notify(noti: NotificationRequest): void {
|
notify(noti: NotificationRequest): void {
|
||||||
this.notificationService.notify(noti, () => {
|
this.notificationService.notify(noti, () => {
|
||||||
window.focus();
|
window.focus();
|
||||||
|
|
|
@ -97,6 +97,21 @@ export class ElectronNativeService implements NativeService {
|
||||||
return this.showSetting$;
|
return this.showSetting$;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
changeAutoLaunch(autoLaunch: boolean): Promise<boolean> {
|
||||||
|
return new Promise<boolean>((resolve, reject) => {
|
||||||
|
try {
|
||||||
|
resolve(
|
||||||
|
this.ipcRenderer.sendSync(
|
||||||
|
MessengerChannel.ChangeAutoLaunch,
|
||||||
|
autoLaunch
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} catch (error) {
|
||||||
|
reject(error);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
notify(noti: NotificationRequest): void {
|
notify(noti: NotificationRequest): void {
|
||||||
this.ipcRenderer.send(NotificationChannel.Notify, noti);
|
this.ipcRenderer.send(NotificationChannel.Notify, noti);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
export enum MessengerChannel {
|
export enum MessengerChannel {
|
||||||
Logout = 'UCAP::messenger::logout',
|
Logout = 'UCAP::messenger::logout',
|
||||||
ChangeStatus = 'UCAP::messenger::changeStatus',
|
ChangeStatus = 'UCAP::messenger::changeStatus',
|
||||||
ShowSetting = 'UCAP::messenger::showSetting'
|
ShowSetting = 'UCAP::messenger::showSetting',
|
||||||
|
ChangeAutoLaunch = 'UCAP::messenger::changeAutoLaunch'
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum ChatChannel {
|
export enum ChatChannel {
|
||||||
|
|
|
@ -14,6 +14,8 @@ export abstract class NativeService {
|
||||||
abstract changeStatus(): Observable<StatusCode>;
|
abstract changeStatus(): Observable<StatusCode>;
|
||||||
abstract showSetting(): Observable<void>;
|
abstract showSetting(): Observable<void>;
|
||||||
|
|
||||||
|
abstract changeAutoLaunch(autoLaunch: boolean): Promise<boolean>;
|
||||||
|
|
||||||
abstract notify(noti: NotificationRequest): void;
|
abstract notify(noti: NotificationRequest): void;
|
||||||
abstract closeAllNotify(): void;
|
abstract closeAllNotify(): void;
|
||||||
|
|
||||||
|
|
|
@ -40,25 +40,25 @@
|
||||||
<h1 mat-subheader>응용 프로그램</h1>
|
<h1 mat-subheader>응용 프로그램</h1>
|
||||||
<mat-list-item>
|
<mat-list-item>
|
||||||
<mat-checkbox
|
<mat-checkbox
|
||||||
[checked]="setting.autoStart"
|
[checked]="setting.autoLaunch"
|
||||||
(change)="onChangeAutoStart($event)"
|
(change)="onChangeAutoStart($event)"
|
||||||
>응용 프로그램 자동 시작</mat-checkbox
|
>Windows 실행 시 자동 실행</mat-checkbox
|
||||||
>
|
>
|
||||||
</mat-list-item>
|
</mat-list-item>
|
||||||
<mat-list-item>
|
<mat-list-item>
|
||||||
<mat-checkbox
|
<mat-checkbox
|
||||||
[checked]="setting.startBackgroudMode"
|
[checked]="setting.startBackgroudMode"
|
||||||
(change)="onChangeStartBackgroudMode($event)"
|
(change)="onChangeStartBackgroudMode($event)"
|
||||||
>백그라운드에서 응용 프로그램 열기</mat-checkbox
|
>실행 시 창 숨기기</mat-checkbox
|
||||||
>
|
>
|
||||||
</mat-list-item>
|
</mat-list-item>
|
||||||
<mat-list-item>
|
<!-- <mat-list-item>
|
||||||
<mat-checkbox
|
<mat-checkbox
|
||||||
[checked]="setting.continueRunWhenClose"
|
[checked]="setting.continueRunWhenClose"
|
||||||
(change)="onChangeContinueRunWhenClose($event)"
|
(change)="onChangeContinueRunWhenClose($event)"
|
||||||
>닫을 시 응용 프로그램을 계속 실행</mat-checkbox
|
>닫을 시 응용 프로그램을 계속 실행</mat-checkbox
|
||||||
>
|
>
|
||||||
</mat-list-item>
|
</mat-list-item> -->
|
||||||
|
|
||||||
<mat-divider></mat-divider>
|
<mat-divider></mat-divider>
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ export class GeneralComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeAutoStart(event: MatCheckboxChange) {
|
onChangeAutoStart(event: MatCheckboxChange) {
|
||||||
this.emit({ ...this.setting, autoStart: event.checked });
|
this.emit({ ...this.setting, autoLaunch: event.checked });
|
||||||
}
|
}
|
||||||
onChangeStartBackgroudMode(event: MatCheckboxChange) {
|
onChangeStartBackgroudMode(event: MatCheckboxChange) {
|
||||||
this.emit({ ...this.setting, startBackgroudMode: event.checked });
|
this.emit({ ...this.setting, startBackgroudMode: event.checked });
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
export interface GeneralSetting {
|
export interface GeneralSetting {
|
||||||
appTheme: string;
|
appTheme: string;
|
||||||
autoStart: boolean;
|
autoLaunch: boolean;
|
||||||
startBackgroudMode: boolean;
|
startBackgroudMode: boolean;
|
||||||
continueRunWhenClose: boolean;
|
continueRunWhenClose: boolean;
|
||||||
autoLogin: boolean;
|
autoLogin: boolean;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user