# 이슈처리
194 대화 회수 후 전달 대화방 목록 확인 시 대화상대없음 으로 보여짐 198 부재중 시간 설정 후 확인 시 부재중으로 변하지 않음 로그아웃시 idle 체크 해제 알림대화타입 대화전달 못하게 막음.
This commit is contained in:
parent
de0a6b016e
commit
af312d9ba1
|
@ -643,18 +643,32 @@ ipcMain.on(
|
||||||
idle.destoryChecker();
|
idle.destoryChecker();
|
||||||
idle = null;
|
idle = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
idle = new IdleChecker(appWindow.browserWindow); // default 10min
|
idle = new IdleChecker(appWindow.browserWindow); // default 10min
|
||||||
idle.startChecker();
|
idle.startChecker();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
ipcMain.on(
|
||||||
|
IdleStateChannel.StopCheck,
|
||||||
|
(event: IpcMainEvent, ...args: any[]) => {
|
||||||
|
if (!!idle) {
|
||||||
|
idle.destoryChecker();
|
||||||
|
idle = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
ipcMain.on(
|
ipcMain.on(
|
||||||
IdleStateChannel.ChangeLimitTime,
|
IdleStateChannel.ChangeLimitTime,
|
||||||
(event: IpcMainEvent, ...args: any[]) => {
|
(event: IpcMainEvent, ...args: any[]) => {
|
||||||
const limitTime: number = args[0];
|
const limitTime: number = args[0];
|
||||||
if (!!idle) {
|
if (!!idle) {
|
||||||
idle.resetIdleTime(limitTime);
|
idle.destoryChecker();
|
||||||
|
idle = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idle = new IdleChecker(appWindow.browserWindow);
|
||||||
|
idle.resetIdleTime(limitTime);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -44,26 +44,23 @@ export class IdleChecker {
|
||||||
|
|
||||||
if (!!this.intervalObject) {
|
if (!!this.intervalObject) {
|
||||||
clearInterval(this.intervalObject);
|
clearInterval(this.intervalObject);
|
||||||
|
this.intervalObject = undefined;
|
||||||
}
|
}
|
||||||
this.limitSec = limitedMin * 60;
|
this.limitSec = limitedMin * 60;
|
||||||
|
|
||||||
// storage.setIdleTimeLimit(limitedMin);
|
|
||||||
// global.opt_idleTimeLimit = limitedMin;
|
|
||||||
|
|
||||||
this.startChecker();
|
this.startChecker();
|
||||||
}
|
}
|
||||||
|
|
||||||
public startChecker() {
|
public startChecker() {
|
||||||
if (!this.intervalObject) {
|
if (!this.intervalObject) {
|
||||||
this.intervalObject = setInterval(() => {
|
this.intervalObject = setInterval(() => this.doCheckIdle(), 1000);
|
||||||
this.doCheckIdle();
|
|
||||||
}, 1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public destoryChecker() {
|
public destoryChecker() {
|
||||||
if (!!this.intervalObject) {
|
if (!!this.intervalObject) {
|
||||||
clearInterval(this.intervalObject);
|
clearInterval(this.intervalObject);
|
||||||
|
this.intervalObject = undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { Component, OnInit, OnDestroy } from '@angular/core';
|
import { Component, OnInit, OnDestroy, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Store, select } from '@ngrx/store';
|
import { Store, select } from '@ngrx/store';
|
||||||
|
|
||||||
|
@ -34,6 +34,7 @@ import { LogoutInfo, KEY_LOGOUT_INFO } from '@app/types';
|
||||||
import { AppAuthenticationService } from '@app/services/authentication.service';
|
import { AppAuthenticationService } from '@app/services/authentication.service';
|
||||||
import { logoutInitialize } from '@app/store/account/authentication';
|
import { logoutInitialize } from '@app/store/account/authentication';
|
||||||
import { TranslateService } from '@ngx-translate/core';
|
import { TranslateService } from '@ngx-translate/core';
|
||||||
|
import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-page-account-login',
|
selector: 'app-page-account-login',
|
||||||
|
@ -84,6 +85,7 @@ export class LoginPageComponent implements OnInit, OnDestroy {
|
||||||
];
|
];
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
@Inject(UCAP_NATIVE_SERVICE) private nativeService: NativeService,
|
||||||
private store: Store<any>,
|
private store: Store<any>,
|
||||||
private router: Router,
|
private router: Router,
|
||||||
private translateService: TranslateService,
|
private translateService: TranslateService,
|
||||||
|
@ -190,6 +192,11 @@ export class LoginPageComponent implements OnInit, OnDestroy {
|
||||||
KEY_LOGOUT_INFO
|
KEY_LOGOUT_INFO
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!!personLogout) {
|
||||||
|
// if self logout clear idle check.
|
||||||
|
this.nativeService.idleStateStop();
|
||||||
|
}
|
||||||
|
|
||||||
if (!!personLogout && !!personLogout.reasonCode) {
|
if (!!personLogout && !!personLogout.reasonCode) {
|
||||||
let msg = this.translateService.instant('accounts.results.doLogout');
|
let msg = this.translateService.instant('accounts.results.doLogout');
|
||||||
switch (personLogout.reasonCode) {
|
switch (personLogout.reasonCode) {
|
||||||
|
|
|
@ -234,13 +234,13 @@ export const reducer = createReducer(
|
||||||
const roomUserList: RoomUserDetailData[] = [];
|
const roomUserList: RoomUserDetailData[] = [];
|
||||||
const roomUserShortList: RoomUserData[] = [];
|
const roomUserShortList: RoomUserData[] = [];
|
||||||
|
|
||||||
if (action.userInfoList) {
|
if (!!action.userInfoList && action.userInfoList.length > 0) {
|
||||||
roomUserList.push({
|
roomUserList.push({
|
||||||
roomSeq: action.roomInfo.roomSeq,
|
roomSeq: action.roomInfo.roomSeq,
|
||||||
userInfos: action.userInfoList
|
userInfos: action.userInfoList
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (action.userInfoShortList) {
|
if (!!action.userInfoShortList && action.userInfoShortList.length > 0) {
|
||||||
roomUserShortList.push({
|
roomUserShortList.push({
|
||||||
roomSeq: action.roomInfo.roomSeq,
|
roomSeq: action.roomInfo.roomSeq,
|
||||||
userInfos: action.userInfoShortList
|
userInfos: action.userInfoShortList
|
||||||
|
@ -252,12 +252,18 @@ export const reducer = createReducer(
|
||||||
room: adapterRoom.upsertOne(action.roomInfo, {
|
room: adapterRoom.upsertOne(action.roomInfo, {
|
||||||
...state.room
|
...state.room
|
||||||
}),
|
}),
|
||||||
roomUser: adapterRoomUser.upsertMany(roomUserList, {
|
roomUser:
|
||||||
...state.roomUser
|
roomUserList.length > 0
|
||||||
}),
|
? adapterRoomUser.upsertMany(roomUserList, {
|
||||||
roomUserShort: adapterRoomUserShort.upsertMany(roomUserShortList, {
|
...state.roomUser
|
||||||
...state.roomUserShort
|
})
|
||||||
})
|
: state.roomUser,
|
||||||
|
roomUserShort:
|
||||||
|
roomUserShortList.length > 0
|
||||||
|
? adapterRoomUserShort.upsertMany(roomUserShortList, {
|
||||||
|
...state.roomUserShort
|
||||||
|
})
|
||||||
|
: state.roomUserShort
|
||||||
};
|
};
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
|
|
@ -187,13 +187,15 @@ export class BrowserNativeService extends NativeService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
selectSaveFilePath(defaultPath?: string): Promise<{
|
selectSaveFilePath(
|
||||||
canceled: boolean,
|
defaultPath?: string
|
||||||
filePath: string
|
): Promise<{
|
||||||
|
canceled: boolean;
|
||||||
|
filePath: string;
|
||||||
}> {
|
}> {
|
||||||
return new Promise<{
|
return new Promise<{
|
||||||
canceled: boolean,
|
canceled: boolean;
|
||||||
filePath: string
|
filePath: string;
|
||||||
}>((resolve, reject) => {
|
}>((resolve, reject) => {
|
||||||
resolve({
|
resolve({
|
||||||
canceled: false,
|
canceled: false,
|
||||||
|
@ -245,6 +247,8 @@ export class BrowserNativeService extends NativeService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idleStateStop(): void {}
|
||||||
|
|
||||||
changeLimitOfIdleState(limitTime: number): void {}
|
changeLimitOfIdleState(limitTime: number): void {}
|
||||||
|
|
||||||
chatOpenRoom(): Observable<string> {
|
chatOpenRoom(): Observable<string> {
|
||||||
|
|
|
@ -309,13 +309,15 @@ export class ElectronNativeService implements NativeService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
selectSaveFilePath(defaultPath?: string): Promise<{
|
selectSaveFilePath(
|
||||||
canceled: boolean,
|
defaultPath?: string
|
||||||
filePath: string
|
): Promise<{
|
||||||
|
canceled: boolean;
|
||||||
|
filePath: string;
|
||||||
}> {
|
}> {
|
||||||
return new Promise<{
|
return new Promise<{
|
||||||
canceled: boolean,
|
canceled: boolean;
|
||||||
filePath: string
|
filePath: string;
|
||||||
}>((resolve, reject) => {
|
}>((resolve, reject) => {
|
||||||
try {
|
try {
|
||||||
resolve(
|
resolve(
|
||||||
|
@ -409,7 +411,7 @@ export class ElectronNativeService implements NativeService {
|
||||||
.asObservable()
|
.asObservable()
|
||||||
.pipe(share());
|
.pipe(share());
|
||||||
}
|
}
|
||||||
|
console.log('idleStateChanged');
|
||||||
this.ipcRenderer.send(IdleStateChannel.StartCheck);
|
this.ipcRenderer.send(IdleStateChannel.StartCheck);
|
||||||
|
|
||||||
this.ipcRenderer.on(
|
this.ipcRenderer.on(
|
||||||
|
@ -421,6 +423,10 @@ export class ElectronNativeService implements NativeService {
|
||||||
return this.idleStateChanged$;
|
return this.idleStateChanged$;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
idleStateStop(): void {
|
||||||
|
this.ipcRenderer.send(IdleStateChannel.StopCheck);
|
||||||
|
}
|
||||||
|
|
||||||
changeLimitOfIdleState(limitTime: number): void {
|
changeLimitOfIdleState(limitTime: number): void {
|
||||||
this.ipcRenderer.send(IdleStateChannel.ChangeLimitTime, limitTime);
|
this.ipcRenderer.send(IdleStateChannel.ChangeLimitTime, limitTime);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,6 +51,7 @@ export enum WindowStateChannel {
|
||||||
export enum IdleStateChannel {
|
export enum IdleStateChannel {
|
||||||
Changed = 'UCAP::idleState::changed',
|
Changed = 'UCAP::idleState::changed',
|
||||||
StartCheck = 'UCAP::idleState::startCheck',
|
StartCheck = 'UCAP::idleState::startCheck',
|
||||||
|
StopCheck = 'UCAP::idleState::stopCheck',
|
||||||
ChangeLimitTime = 'UCAP::idleState::changeLimitTime'
|
ChangeLimitTime = 'UCAP::idleState::changeLimitTime'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -59,9 +59,11 @@ export abstract class NativeService {
|
||||||
abstract openTargetItem(filePath?: string): Promise<boolean>;
|
abstract openTargetItem(filePath?: string): Promise<boolean>;
|
||||||
abstract getPath(name: NativePathName): Promise<string>;
|
abstract getPath(name: NativePathName): Promise<string>;
|
||||||
abstract selectDirectory(): Promise<string>;
|
abstract selectDirectory(): Promise<string>;
|
||||||
abstract selectSaveFilePath(defaultPath?: string): Promise<{
|
abstract selectSaveFilePath(
|
||||||
canceled: boolean,
|
defaultPath?: string
|
||||||
filePath: string
|
): Promise<{
|
||||||
|
canceled: boolean;
|
||||||
|
filePath: string;
|
||||||
}>;
|
}>;
|
||||||
|
|
||||||
abstract executeProcess(executableName: string): Promise<number>;
|
abstract executeProcess(executableName: string): Promise<number>;
|
||||||
|
@ -74,6 +76,7 @@ export abstract class NativeService {
|
||||||
abstract appExit(): void;
|
abstract appExit(): void;
|
||||||
|
|
||||||
abstract idleStateChanged(): Observable<WindowIdle>;
|
abstract idleStateChanged(): Observable<WindowIdle>;
|
||||||
|
abstract idleStateStop(): void;
|
||||||
abstract changeLimitOfIdleState(limitTime: number): void;
|
abstract changeLimitOfIdleState(limitTime: number): void;
|
||||||
|
|
||||||
abstract chatOpenRoom(): Observable<string>;
|
abstract chatOpenRoom(): Observable<string>;
|
||||||
|
|
|
@ -42,7 +42,13 @@ export function isForwardable(
|
||||||
event: Info,
|
event: Info,
|
||||||
eventInfoStatus: InfoResponse
|
eventInfoStatus: InfoResponse
|
||||||
): boolean {
|
): boolean {
|
||||||
if (event.type === EventType.File) {
|
if (
|
||||||
|
event.type === EventType.Plan ||
|
||||||
|
event.type === EventType.AllimTms ||
|
||||||
|
event.type === EventType.AllimElephant
|
||||||
|
) {
|
||||||
|
return false;
|
||||||
|
} else if (event.type === EventType.File) {
|
||||||
if (
|
if (
|
||||||
!!eventInfoStatus &&
|
!!eventInfoStatus &&
|
||||||
!!eventInfoStatus.validFileBaseSeq &&
|
!!eventInfoStatus.validFileBaseSeq &&
|
||||||
|
|
Loading…
Reference in New Issue
Block a user