-
+
-
+
- (선택된부서명)
+ {{ getSelectedDepartmentName() }}
-
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.scss
index 1558c8ce..ca14095b 100644
--- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.scss
+++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.scss
@@ -5,25 +5,24 @@
overflow-y: auto;
}
}
-.btn-box{
- height:80px;
+.btn-box {
+ height: 80px;
position: absolute;
- bottom:0;
- border-top:1px solid #ddd;
+ bottom: 0;
+ border-top: 1px solid #ddd;
align-items: center;
- width:100%;
- background-color:#ffffff;
+ width: 100%;
+ background-color: #ffffff;
}
-.select-dept{
- border-top:1px solid #dddddd;
- height:40px;
- width:100%;
- display:inline-flex;
+.select-dept {
+ border-top: 1px solid #dddddd;
+ height: 40px;
+ width: 100%;
+ display: inline-flex;
align-items: center;
- padding:0 10px;
+ padding: 0 10px;
}
-.select-list{
- height: calc(100% - 120px);
- overflow: auto;
+.select-list {
+ height: calc(100% - 120px);
+ overflow: auto;
}
-
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.ts
index 78161ad3..e40e0ecb 100644
--- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.ts
+++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/organization.component.ts
@@ -1,6 +1,13 @@
-import { Component, OnInit, Output, EventEmitter, Input } from '@angular/core';
+import {
+ Component,
+ OnInit,
+ OnDestroy,
+ Output,
+ EventEmitter,
+ Input
+} from '@angular/core';
import { ucapAnimations } from '@ucap-webmessenger/ui';
-import { Observable } from 'rxjs';
+import { Observable, Subscription } from 'rxjs';
import {
DeptInfo,
QueryProtocolService,
@@ -18,7 +25,7 @@ import * as AppStore from '@app/store';
import * as QueryStore from '@app/store/messenger/query';
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
import { LoginInfo, KEY_LOGIN_INFO } from '@app/types';
-import { take, map, switchMap } from 'rxjs/operators';
+import { take, map, tap, delay } from 'rxjs/operators';
import { VersionInfo2Response } from '@ucap-webmessenger/api-public';
import { KEY_VER_INFO } from '@app/types/ver-info.type';
@@ -28,7 +35,7 @@ import { KEY_VER_INFO } from '@app/types/ver-info.type';
styleUrls: ['./organization.component.scss'],
animations: ucapAnimations
})
-export class OrganizationComponent implements OnInit {
+export class OrganizationComponent implements OnInit, OnDestroy {
@Input()
/** 사용자 선택용으로 사용시 true 로 유입 */
isUserSelect = false;
@@ -45,6 +52,9 @@ export class OrganizationComponent implements OnInit {
departmentInfoList$: Observable
;
selectedDepartmentUserInfoList$: Observable;
selectedDepartmentStatus$: Observable;
+ selectedDepartmentProcessing = false;
+ selectedDepartmentProcessingSubscription: Subscription;
+ selectedDepartmentName: string;
loginInfo = this.sessionStorageService.get(KEY_LOGIN_INFO);
sessionVerinfo = this.sessionStorageService.get(
@@ -62,6 +72,19 @@ export class OrganizationComponent implements OnInit {
this.departmentInfoList$ = this.store.pipe(
select(AppStore.MessengerSelector.QuerySelector.departmentInfoList)
);
+
+ this.selectedDepartmentProcessingSubscription = this.store
+ .pipe(
+ delay(0),
+ select(
+ AppStore.MessengerSelector.QuerySelector.selectedDepartmentProcessing
+ ),
+ tap(processing => {
+ this.selectedDepartmentProcessing = processing;
+ })
+ )
+ .subscribe();
+
this.selectedDepartmentUserInfoList$ = this.store.pipe(
select(
AppStore.MessengerSelector.QuerySelector.selectedDepartmentUserInfoList
@@ -87,11 +110,21 @@ export class OrganizationComponent implements OnInit {
senderEmployeeType: loginRes.userInfo.employeeType
})
);
+ return loginRes;
+ }),
+ map(loginRes => {
+ this.selectedDepartmentName = loginRes.userInfo.deptName;
})
)
.subscribe();
}
+ ngOnDestroy(): void {
+ if (!!this.selectedDepartmentProcessingSubscription) {
+ this.selectedDepartmentProcessingSubscription.unsubscribe();
+ }
+ }
+
onSelectedOrganization(deptInfo: DeptInfo) {
this.store
.pipe(
@@ -109,11 +142,26 @@ export class OrganizationComponent implements OnInit {
senderEmployeeType: loginRes.userInfo.employeeType
})
);
+ }),
+ map(() => {
+ this.selectedDepartmentName = deptInfo.name;
})
)
.subscribe();
}
+ getSelectedDepartmentName() {
+ if (!!this.selectedDepartmentProcessing) {
+ return '부서조회중..';
+ }
+
+ if (!!this.selectedDepartmentName) {
+ return this.selectedDepartmentName;
+ } else {
+ return '조회중..';
+ }
+ }
+
/** 리스트 checkable 할 경우 checkbox 의 isChecked 를 관장하며 리스트의 전체선택 여부를 판단한다. */
getCheckedUser(userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN) {
if (!!this.selectedUserList && this.selectedUserList.length > 0) {
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html
index 74c41d99..2bf4e6d5 100644
--- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html
+++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/chat/create-chat.dialog.component.html
@@ -83,19 +83,17 @@
-
- -
+
+
{{ userInfo.name }}
-
-
-
-
+
clear
+
+
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/messenger.layout.module.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/messenger.layout.module.ts
index bb2012de..0f96942a 100644
--- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/messenger.layout.module.ts
+++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/messenger.layout.module.ts
@@ -1,3 +1,4 @@
+import { MatChipsModule } from '@angular/material/chips';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
@@ -49,6 +50,7 @@ import { ReactiveFormsModule } from '@angular/forms';
MatProgressBarModule,
MatTabsModule,
MatToolbarModule,
+ MatChipsModule,
UCapUiModule,
UCapUiChatModule,
UCapUiRoomModule,
diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/query/reducers.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/query/reducers.ts
index 1cf7e2c0..4e26fb20 100644
--- a/projects/ucap-webmessenger-app/src/app/store/messenger/query/reducers.ts
+++ b/projects/ucap-webmessenger-app/src/app/store/messenger/query/reducers.ts
@@ -1,6 +1,12 @@
import { createReducer, on } from '@ngrx/store';
import { initialState } from './state';
-import { authSuccess, deptSuccess, deptUserSuccess } from './actions';
+import {
+ authSuccess,
+ deptSuccess,
+ deptUserSuccess,
+ deptUser,
+ deptUserFailure
+} from './actions';
import * as AuthenticationStore from '@app/store/account/authentication';
@@ -20,13 +26,29 @@ export const reducer = createReducer(
};
}),
+ on(deptUser, (state, action) => {
+ return {
+ ...state,
+ selectedDepartmentProcessing: true
+ };
+ }),
+
on(deptUserSuccess, (state, action) => {
return {
...state,
selectedDepartmentUserInfoList: action.userInfos,
- selectedDepartmentStatus: action.res
+ selectedDepartmentStatus: action.res,
+ selectedDepartmentProcessing: false
};
}),
+
+ on(deptUserFailure, (state, action) => {
+ return {
+ ...state,
+ selectedDepartmentProcessing: false
+ };
+ }),
+
on(AuthenticationStore.logout, (state, action) => {
return {
...initialState
diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/query/state.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/query/state.ts
index 03340cf0..7947a52b 100644
--- a/projects/ucap-webmessenger-app/src/app/store/messenger/query/state.ts
+++ b/projects/ucap-webmessenger-app/src/app/store/messenger/query/state.ts
@@ -13,13 +13,15 @@ export interface State {
selectedDepartmentUserInfoList: UserInfoSS[] | null;
selectedDepartmentStatus: DeptUserResponse | null;
+ selectedDepartmentProcessing: boolean;
}
export const initialState: State = {
auth: null,
departmentInfoList: null,
selectedDepartmentUserInfoList: null,
- selectedDepartmentStatus: null
+ selectedDepartmentStatus: null,
+ selectedDepartmentProcessing: false
};
export function selectors
(selector: Selector) {
@@ -39,6 +41,10 @@ export function selectors(selector: Selector) {
selectedDepartmentStatus: createSelector(
selector,
(state: State) => state.selectedDepartmentStatus
+ ),
+ selectedDepartmentProcessing: createSelector(
+ selector,
+ (state: State) => state.selectedDepartmentProcessing
)
};
}
diff --git a/projects/ucap-webmessenger-protocol-sync/src/lib/protocols/group.ts b/projects/ucap-webmessenger-protocol-sync/src/lib/protocols/group.ts
index a1a9405c..f1a20682 100644
--- a/projects/ucap-webmessenger-protocol-sync/src/lib/protocols/group.ts
+++ b/projects/ucap-webmessenger-protocol-sync/src/lib/protocols/group.ts
@@ -43,7 +43,7 @@ export const encodeGroup: ProtocolEncoder = (
) => {
const bodyList: PacketBody[] = [];
- bodyList.push({ type: PacketBodyValue.String, value: req.syncDate || '' });
+ bodyList.push({ type: PacketBodyValue.String, value: req.syncDate || ' ' });
return bodyList;
};