leejinho af312d9ba1 # 이슈처리
194 대화 회수 후 전달 대화방 목록 확인 시 대화상대없음 으로 보여짐
198 부재중 시간 설정 후 확인 시 부재중으로 변하지 않음

로그아웃시 idle 체크 해제
알림대화타입 대화전달 못하게 막음.
2020-01-31 14:32:17 +09:00

67 lines
1.7 KiB
TypeScript

import { powerMonitor, BrowserWindow } from 'electron';
import { IdleStateChannel } from '@ucap-webmessenger/native-electron';
import { setInterval } from 'timers';
export enum IdleType {
ACTIVE = 'ACT',
IDLE = 'IDLE'
}
export class IdleChecker {
private limitSec: number;
private intervalObject: any;
private status: IdleType;
private window: BrowserWindow | null;
public constructor(window: BrowserWindow, limitedMin?: number) {
limitedMin = limitedMin || 10;
this.limitSec = limitedMin * 60;
this.intervalObject = null;
this.status = IdleType.ACTIVE;
this.window = window;
}
private doCheckIdle(): void {
const idle: number = powerMonitor.getSystemIdleTime();
if (idle > this.limitSec) {
if (this.status === IdleType.ACTIVE) {
this.status = IdleType.IDLE;
// TODO :: USER_STATUS change away
this.window.webContents.send(IdleStateChannel.Changed, this.status);
}
} else {
if (this.status === IdleType.IDLE) {
this.status = IdleType.ACTIVE;
// TODO :: USER_STATUS chage online
this.window.webContents.send(IdleStateChannel.Changed, this.status);
}
}
}
public resetIdleTime(limitedMin: number): void {
limitedMin = limitedMin || 10;
if (!!this.intervalObject) {
clearInterval(this.intervalObject);
this.intervalObject = undefined;
}
this.limitSec = limitedMin * 60;
this.startChecker();
}
public startChecker() {
if (!this.intervalObject) {
this.intervalObject = setInterval(() => this.doCheckIdle(), 1000);
}
}
public destoryChecker() {
if (!!this.intervalObject) {
clearInterval(this.intervalObject);
this.intervalObject = undefined;
}
}
}