StartupHideWindow is implemented
This commit is contained in:
parent
760b098fc4
commit
22bb4d95f1
|
@ -28,7 +28,6 @@ import { FileUtil } from './lib/file-util';
|
|||
import { IdleChecker } from './lib/idle-checker';
|
||||
import {
|
||||
NotificationRequest,
|
||||
UpdateCheckConfig,
|
||||
NotificationType
|
||||
} from '@ucap-webmessenger/native';
|
||||
import { ElectronAppChannel } from '@ucap-webmessenger/electron-core';
|
||||
|
@ -37,6 +36,7 @@ import { autoUpdater, CancellationToken } from 'electron-updater';
|
|||
import log from 'electron-log';
|
||||
|
||||
import { RendererUpdater } from './lib/renderer-updater';
|
||||
import { Storage } from './lib/storage';
|
||||
|
||||
const appIconPath = __LINUX__
|
||||
? path.join(__dirname, 'static', 'icon-logo.png')
|
||||
|
@ -55,6 +55,7 @@ let preventQuit = false;
|
|||
|
||||
let notificationService: ElectronNotificationService | null;
|
||||
let updateWindowService: ElectronUpdateWindowService | null;
|
||||
const appStorage: Storage = new Storage();
|
||||
|
||||
function handleUncaughtException(error: Error) {
|
||||
preventQuit = true;
|
||||
|
@ -159,7 +160,9 @@ function createWindow() {
|
|||
});
|
||||
|
||||
window.onDidLoad(() => {
|
||||
window.show();
|
||||
if (!appStorage.startupHideWindow) {
|
||||
window.show();
|
||||
}
|
||||
|
||||
const fns = onDidLoadFns;
|
||||
onDidLoadFns = null;
|
||||
|
@ -376,6 +379,22 @@ ipcMain.on(
|
|||
}
|
||||
);
|
||||
|
||||
ipcMain.on(
|
||||
MessengerChannel.ChangeStartupHideWindow,
|
||||
(event: IpcMainEvent, ...args: any[]) => {
|
||||
const isStartupHideWindow = args[0] as boolean;
|
||||
|
||||
appStorage.startupHideWindow = isStartupHideWindow;
|
||||
log.info(
|
||||
'StartupHideWindow is changed from ',
|
||||
!appStorage.startupHideWindow,
|
||||
' to ',
|
||||
appStorage.startupHideWindow
|
||||
);
|
||||
event.returnValue = true;
|
||||
}
|
||||
);
|
||||
|
||||
ipcMain.on(
|
||||
UpdaterChannel.StartCheckInstant,
|
||||
(event: IpcMainEvent, ...args: any[]) => {
|
||||
|
|
|
@ -1,53 +1,23 @@
|
|||
import Store from 'electron-store';
|
||||
import ElectronStore from 'electron-store';
|
||||
|
||||
const STORE_KEY_AUTORUN = 'options.autoRun';
|
||||
const STORE_KEY_AUTOLOGIN = 'options.autoLogin';
|
||||
const STORE_KEY_STARTUPHIDEWINDOW = 'options.startupHideWindow';
|
||||
const STORE_KEY_LOGINCOMPANY = 'login.loginCompany';
|
||||
const STORE_KEY_LOGINID = 'login.loginId';
|
||||
const STORE_KEY_LOGINPW = 'login.loginPw';
|
||||
|
||||
export class Storage extends Store<any> {
|
||||
export class Storage {
|
||||
private readonly store: ElectronStore<any>;
|
||||
|
||||
constructor() {
|
||||
super({
|
||||
this.store = new ElectronStore({
|
||||
schema: {
|
||||
options: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
autoRun: {
|
||||
type: 'boolean'
|
||||
},
|
||||
autoLogin: {
|
||||
type: 'boolean'
|
||||
},
|
||||
startupHideWindow: {
|
||||
type: 'boolean'
|
||||
}
|
||||
},
|
||||
default: {
|
||||
autoRun: false,
|
||||
autoLogin: false,
|
||||
startupHideWindow: false
|
||||
}
|
||||
},
|
||||
login: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
loginCompany: {
|
||||
type: 'string'
|
||||
},
|
||||
loginId: {
|
||||
type: 'string'
|
||||
},
|
||||
loginPw: {
|
||||
type: 'string'
|
||||
}
|
||||
},
|
||||
default: {
|
||||
loginCompany: '',
|
||||
loginId: '',
|
||||
loginPw: ''
|
||||
}
|
||||
}
|
||||
},
|
||||
encryptionKey: 'ucap',
|
||||
|
@ -55,45 +25,10 @@ export class Storage extends Store<any> {
|
|||
});
|
||||
}
|
||||
|
||||
get autoRun(): boolean {
|
||||
return this.get(STORE_KEY_AUTORUN, false);
|
||||
}
|
||||
set autoRun(autoRun: boolean) {
|
||||
this.set(STORE_KEY_AUTORUN, autoRun);
|
||||
}
|
||||
|
||||
get autoLogin(): boolean {
|
||||
return this.get(STORE_KEY_AUTOLOGIN, false);
|
||||
}
|
||||
set autoLogin(autoLogin: boolean) {
|
||||
this.set(STORE_KEY_AUTOLOGIN, autoLogin);
|
||||
}
|
||||
|
||||
get startupHideWindow(): boolean {
|
||||
return this.get(STORE_KEY_STARTUPHIDEWINDOW, false);
|
||||
return this.store.get(STORE_KEY_STARTUPHIDEWINDOW, false);
|
||||
}
|
||||
set startupHideWindow(startupHideWindow: boolean) {
|
||||
this.set(STORE_KEY_STARTUPHIDEWINDOW, startupHideWindow);
|
||||
}
|
||||
|
||||
get loginCompany(): string {
|
||||
return this.get(STORE_KEY_LOGINCOMPANY, false);
|
||||
}
|
||||
set loginCompany(loginCompany: string) {
|
||||
this.set(STORE_KEY_LOGINCOMPANY, loginCompany);
|
||||
}
|
||||
|
||||
get loginId(): string {
|
||||
return this.get(STORE_KEY_LOGINID, false);
|
||||
}
|
||||
set loginId(loginId: string) {
|
||||
this.set(STORE_KEY_LOGINID, loginId);
|
||||
}
|
||||
|
||||
get loginPw(): string {
|
||||
return this.get(STORE_KEY_LOGINPW, false);
|
||||
}
|
||||
set loginPw(loginPw: string) {
|
||||
this.set(STORE_KEY_LOGINPW, loginPw);
|
||||
this.store.set(STORE_KEY_STARTUPHIDEWINDOW, startupHideWindow);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -90,6 +90,12 @@ export class MessengerSettingsDialogComponent implements OnInit {
|
|||
if (this.appUserInfo.settings.general.autoLaunch !== setting.autoLaunch) {
|
||||
this.nativeService.changeAutoLaunch(setting.autoLaunch);
|
||||
}
|
||||
if (
|
||||
this.appUserInfo.settings.general.startupHideWindow !==
|
||||
setting.startupHideWindow
|
||||
) {
|
||||
this.nativeService.changeStartupHideWindow(setting.startupHideWindow);
|
||||
}
|
||||
|
||||
this.applySettings({ ...this.appUserInfo.settings, general: setting });
|
||||
}
|
||||
|
|
|
@ -44,7 +44,7 @@ export const environment: Environment = {
|
|||
continueRunWhenClose: true,
|
||||
locale: 'ko',
|
||||
hrInfoLocale: 'ko',
|
||||
startBackgroudMode: false,
|
||||
startupHideWindow: false,
|
||||
timezone: '+9'
|
||||
},
|
||||
notification: {
|
||||
|
|
|
@ -44,7 +44,7 @@ export const environment: Environment = {
|
|||
continueRunWhenClose: true,
|
||||
locale: 'ko',
|
||||
hrInfoLocale: 'ko',
|
||||
startBackgroudMode: false,
|
||||
startupHideWindow: false,
|
||||
timezone: '+9'
|
||||
},
|
||||
notification: {
|
||||
|
|
|
@ -44,7 +44,7 @@ export const environment: Environment = {
|
|||
continueRunWhenClose: true,
|
||||
locale: 'ko',
|
||||
hrInfoLocale: 'ko',
|
||||
startBackgroudMode: false,
|
||||
startupHideWindow: false,
|
||||
timezone: '+9'
|
||||
},
|
||||
notification: {
|
||||
|
|
|
@ -44,7 +44,7 @@ export const environment: Environment = {
|
|||
continueRunWhenClose: true,
|
||||
locale: 'ko',
|
||||
hrInfoLocale: 'ko',
|
||||
startBackgroudMode: false,
|
||||
startupHideWindow: false,
|
||||
timezone: '+9'
|
||||
},
|
||||
notification: {
|
||||
|
|
|
@ -72,6 +72,12 @@ export class BrowserNativeService extends NativeService {
|
|||
});
|
||||
}
|
||||
|
||||
changeStartupHideWindow(startupHideWindow: boolean): Promise<boolean> {
|
||||
return new Promise<boolean>((resolve, reject) => {
|
||||
resolve(true);
|
||||
});
|
||||
}
|
||||
|
||||
notify(noti: NotificationRequest): void {
|
||||
this.notificationService.notify(noti, () => {
|
||||
window.focus();
|
||||
|
|
|
@ -116,6 +116,21 @@ export class ElectronNativeService implements NativeService {
|
|||
});
|
||||
}
|
||||
|
||||
changeStartupHideWindow(startupHideWindow: boolean): Promise<boolean> {
|
||||
return new Promise<boolean>((resolve, reject) => {
|
||||
try {
|
||||
resolve(
|
||||
this.ipcRenderer.sendSync(
|
||||
MessengerChannel.ChangeStartupHideWindow,
|
||||
startupHideWindow
|
||||
)
|
||||
);
|
||||
} catch (error) {
|
||||
reject(error);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
notify(noti: NotificationRequest): void {
|
||||
this.ipcRenderer.send(NotificationChannel.Notify, noti);
|
||||
}
|
||||
|
|
|
@ -2,7 +2,8 @@ export enum MessengerChannel {
|
|||
Logout = 'UCAP::messenger::logout',
|
||||
ChangeStatus = 'UCAP::messenger::changeStatus',
|
||||
ShowSetting = 'UCAP::messenger::showSetting',
|
||||
ChangeAutoLaunch = 'UCAP::messenger::changeAutoLaunch'
|
||||
ChangeAutoLaunch = 'UCAP::messenger::changeAutoLaunch',
|
||||
ChangeStartupHideWindow = 'UCAP::messenger::changeStartupHideWindow'
|
||||
}
|
||||
|
||||
export enum ChatChannel {
|
||||
|
|
|
@ -15,6 +15,9 @@ export abstract class NativeService {
|
|||
abstract showSetting(): Observable<void>;
|
||||
|
||||
abstract changeAutoLaunch(autoLaunch: boolean): Promise<boolean>;
|
||||
abstract changeStartupHideWindow(
|
||||
startupHideWindow: boolean
|
||||
): Promise<boolean>;
|
||||
|
||||
abstract notify(noti: NotificationRequest): void;
|
||||
abstract closeAllNotify(): void;
|
||||
|
|
|
@ -47,8 +47,8 @@
|
|||
</mat-list-item>
|
||||
<mat-list-item>
|
||||
<mat-checkbox
|
||||
[checked]="setting.startBackgroudMode"
|
||||
(change)="onChangeStartBackgroudMode($event)"
|
||||
[checked]="setting.startupHideWindow"
|
||||
(change)="onChangeStartupHideWindow($event)"
|
||||
>실행 시 창 숨기기</mat-checkbox
|
||||
>
|
||||
</mat-list-item>
|
||||
|
|
|
@ -67,8 +67,8 @@ export class GeneralComponent implements OnInit {
|
|||
onChangeAutoStart(event: MatCheckboxChange) {
|
||||
this.emit({ ...this.setting, autoLaunch: event.checked });
|
||||
}
|
||||
onChangeStartBackgroudMode(event: MatCheckboxChange) {
|
||||
this.emit({ ...this.setting, startBackgroudMode: event.checked });
|
||||
onChangeStartupHideWindow(event: MatCheckboxChange) {
|
||||
this.emit({ ...this.setting, startupHideWindow: event.checked });
|
||||
}
|
||||
onChangeContinueRunWhenClose(event: MatCheckboxChange) {
|
||||
this.emit({ ...this.setting, continueRunWhenClose: event.checked });
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
export interface GeneralSetting {
|
||||
appTheme: string;
|
||||
autoLaunch: boolean;
|
||||
startBackgroudMode: boolean;
|
||||
startupHideWindow: boolean;
|
||||
continueRunWhenClose: boolean;
|
||||
autoLogin: boolean;
|
||||
locale: string;
|
||||
|
|
Loading…
Reference in New Issue
Block a user