diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-side.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-side.component.ts index 7895153b..9c9a168f 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-side.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-side.component.ts @@ -17,7 +17,7 @@ import { CreateChatDialogData, CreateChatDialogResult } from '@app/layouts/messenger/dialogs/chat/create-chat.dialog.component'; -import { Subscription, of, Observable } from 'rxjs'; +import { Subscription, Observable } from 'rxjs'; import { Store, select } from '@ngrx/store'; import * as AppStore from '@app/store'; @@ -35,9 +35,8 @@ import { LoginResponse } from '@ucap-webmessenger/protocol-authentication'; import { OpenProfileOptions } from '@ucap-webmessenger/protocol-buddy'; import { SessionStorageService } from '@ucap-webmessenger/web-storage'; import { VersionInfo2Response } from '@ucap-webmessenger/api-public'; -import { MessageApiService, MessageType } from '@ucap-webmessenger/api-message'; -import { DeviceType } from '@ucap-webmessenger/core'; -import { map, catchError, tap } from 'rxjs/operators'; +import { MessageType } from '@ucap-webmessenger/api-message'; +import { tap } from 'rxjs/operators'; import { MessageWriteDialogComponent, MessageWriteDialogResult, @@ -46,8 +45,7 @@ import { import { EnvironmentsInfo, KEY_ENVIRONMENTS_INFO, - KEY_VER_INFO, - KEY_LOGIN_RES_INFO + KEY_VER_INFO } from '@app/types'; import { MessageBoxComponent } from './left-sidenav/message.component'; import { environment } from '../../../../environments/environment'; @@ -70,7 +68,7 @@ export enum MainMenu { export class LeftSideComponent implements OnInit, OnDestroy { @Output() openProfile = new EventEmitter<{ - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + userSeq: number; openProfileOptions?: OpenProfileOptions; }>(); @Output() @@ -264,11 +262,11 @@ export class LeftSideComponent implements OnInit, OnDestroy { } onClickOpenProfile(params: { - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + userSeq: number; openProfileOptions?: OpenProfileOptions; }) { this.openProfile.emit({ - userInfo: params.userInfo, + userSeq: params.userSeq, openProfileOptions: params.openProfileOptions }); } diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/group.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/group.component.ts index 0650f8c1..44d7729e 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/group.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/left-sidenav/group.component.ts @@ -86,7 +86,7 @@ export class GroupComponent implements OnInit, OnDestroy { newGroupAndMember = new EventEmitter(); @Output() openProfile = new EventEmitter<{ - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + userSeq: number; openProfileOptions?: OpenProfileOptions; }>(); @@ -432,7 +432,7 @@ export class GroupComponent implements OnInit, OnDestroy { switch (menuType) { case 'VIEW_PROFILE': this.openProfile.emit({ - userInfo, + userSeq: userInfo.seq, openProfileOptions: { useDelBuddybutton: !!group && @@ -570,11 +570,11 @@ export class GroupComponent implements OnInit, OnDestroy { } onClickOpenProfile( - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN, + userSeq: number, group: GroupDetailData ) { this.openProfile.emit({ - userInfo, + userSeq, openProfileOptions: { useDelBuddybutton: !!group && diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts index 371591f9..a6ce6951 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/messages.component.ts @@ -75,7 +75,6 @@ import { CommonApiService, FileTalkSaveRequest, FileTalkSaveResponse, - TranslationReqRequest, TranslationSaveRequest, TranslationSaveResponse } from '@ucap-webmessenger/api-common'; @@ -117,7 +116,9 @@ import { }) export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit { @Output() - openProfile = new EventEmitter<{ userInfo: UserInfo }>(); + openProfile = new EventEmitter<{ + userSeq: number; + }>(); @ViewChild('chatForm', { static: false }) private chatForm: UCapUiChatFormComponent; @@ -1322,7 +1323,7 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit { } } - onClickOpenProfile(userInfo: UserInfo) { + onClickOpenProfile(userSeq: number) { if ( this.roomInfo.roomType !== RoomType.Allim && this.roomInfo.roomType !== RoomType.Bot && @@ -1330,7 +1331,7 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit { this.roomInfo.roomType !== RoomType.Allim_Elephant && this.roomInfo.roomType !== RoomType.Allim_TMS ) { - this.openProfile.emit({ userInfo }); + this.openProfile.emit({ userSeq }); } } diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer.component.ts index 9372c82d..26f9915b 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer.component.ts @@ -1,11 +1,5 @@ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; import { RightDrawer } from '@app/types'; -import { UserInfo } from '@ucap-webmessenger/protocol-room'; -import { - UserInfoSS, - UserInfoF, - UserInfoDN -} from '@ucap-webmessenger/protocol-query'; @Component({ selector: 'app-layout-messenger-right-drawer', @@ -18,7 +12,7 @@ export class RightDrawerComponent implements OnInit { @Output() openProfile = new EventEmitter<{ - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + userSeq: number; }>(); @Output() closeRightDrawer = new EventEmitter(); @@ -29,8 +23,8 @@ export class RightDrawerComponent implements OnInit { ngOnInit() {} - onClickOpenProfile(userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN) { - this.openProfile.emit({ userInfo }); + onClickOpenProfile(userSeq: number) { + this.openProfile.emit({ userSeq }); } onClickClose() { diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.html index f658a053..9850525d 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.html +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.html @@ -6,7 +6,7 @@ [presence]="getStatusBulkInfo(userInfo) | async" [sessionVerinfo]="sessionVerinfo" (contextmenu)="onContextMenuRoomUser($event, userInfo)" - (openProfile)="onClickOpenProfile($event)" + (openProfile)="onClickOpenProfile(userInfo.seq)" > diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts index 48f23e86..8703df65 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/components/right-drawer/room-user-list.component.ts @@ -49,7 +49,7 @@ import { MatMenuTrigger, MatDialog } from '@angular/material'; }) export class RoomUserListComponent implements OnInit, OnDestroy { @Output() - openProfile = new EventEmitter(); + openProfile = new EventEmitter(); @ViewChild('roomUserContextMenuTrigger', { static: true }) roomUserContextMenuTrigger: MatMenuTrigger; @@ -131,8 +131,8 @@ export class RoomUserListComponent implements OnInit, OnDestroy { ); } - onClickOpenProfile(userInfo: UserInfo) { - this.openProfile.emit(userInfo); + onClickOpenProfile(userSeq: number) { + this.openProfile.emit(userSeq); } async onClickAddMember() { diff --git a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.html b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.html index a8018145..4b0041ed 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.html +++ b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.html @@ -4,186 +4,274 @@
DS Talk
- +
+ - + + - + +
diff --git a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.scss index d7a6f564..7c510063 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.scss +++ b/projects/ucap-webmessenger-app/src/app/layouts/native/components/top-bar.component.scss @@ -27,108 +27,162 @@ .app-layout-native-title-bar-spacer { flex: 1 1 auto; } - - .app-layout-native-title-bar-link { - align-items: center; - position: relative; - - .stroke-bar { - width: 1px; - height: 20px; - background-color: rgba(256, 256, 256, 0.3); - margin: 0 10px 0 20px; - display: inline-flex; - } - .button { - -webkit-app-region: no-drag; - outline: 0; - cursor: pointer; - border: none; - height: 28px; - min-width: 28px; - max-width: 28px; - padding: 5px; - line-height: 10px; - border-radius: 0; - background: transparent; - transition: background 0.2s linear, color 0.2s linear; - text-align: center; - font-size: 10px; - vertical-align: middle; - margin-left: 10px; - transform: translateY(-2px); - - &.app-layout-native-title-bar-logout, - &.app-layout-native-title-bar-setting { - background-color: #efefef; + .btn-area { + display: flex; + margin-left: auto; + flex-flow: row; + justify-items: center; + .app-layout-native-title-bar-link { + align-items: center; + position: relative; + display: flex; + .stroke-bar { + width: 1px; + height: 20px; + background-color: rgba(256, 256, 256, 0.3); + margin: 0 10px 0 20px; + display: inline-flex; + } + .button { + -webkit-app-region: no-drag; + outline: 0; + cursor: pointer; + border: none; + height: 30px; + min-width: 30px; + max-width: 30px; + padding: 3px; + line-height: 10px; + background-color: #ffffff; border-radius: 50%; - } - &:hover { - opacity: 0.7; + transition: background 0.2s linear, color 0.2s linear; + text-align: center; + font-size: 10px; + vertical-align: middle; + margin-left: 14px; + .weblink { + display: inline-flex; + line-height: 24px; + font-size: 12px; + font-weight: bold; + text-align: center; + width: 24px; + height: 24px; + background-repeat: no-repeat; + background-position: 50% 50%; + text-indent: -1000000px; + justify-content: center; + &.dsp { + text-indent: 0; + } + &.sms { + text-indent: 0; + letter-spacing: -1px; + } + &.ep, + &.it-service { + text-indent: 0; + font-size: 13px; + } + &.S_OM, + &.Personal-news { + text-indent: 0; + font-size: 11px; + letter-spacing: -1px; + } + } + + &.app-layout-native-title-bar-logout, + &.app-layout-native-title-bar-setting { + background-color: #efefef; + border-radius: 50%; + } + &:hover { + opacity: 0.7; + } } } - } - .app-layout-native-title-bar-actions { - align-items: center; - position: relative; - - .button { - -webkit-app-region: no-drag; - outline: 0; - cursor: pointer; - border: none; - height: 30px; - min-width: 30px; - max-width: 30px; - padding: 5px; - line-height: 10px; - border-radius: 0; - background: transparent; - transition: background 0.2s linear, color 0.2s linear; - text-align: center; - font-size: 10px; - vertical-align: middle; - margin-left: 6px; - transform: translateY(-2px); - .mat-icon { - //transform: translateY(-2px); - width: 16px; - height: 16px; - min-height: 16px; - min-width: 16px; - font-size: 16px; - } - - &.app-layout-native-title-bar-close, - &.app-layout-native-title-bar-maximize, - &.app-layout-native-title-bar-minimize { - color: darken(white, 20%); - font-weight: lighter; - } - - // &.app-layout-native-title-bar-minimize .mat-icon { - // transform: translateY(-43%); - // } - - &:hover { - border-radius: 4px; - &.app-layout-native-title-bar-close { - background: darken(#000000, 10%); - color: darken(white, 0); + .app-layout-native-title-bar-actions { + align-items: center; + position: relative; + .button { + -webkit-app-region: no-drag; + outline: 0; + cursor: pointer; + border: none; + height: 30px; + min-width: 30px; + max-width: 30px; + padding: 5px; + line-height: 10px; + border-radius: 0; + background: transparent; + transition: background 0.2s linear, color 0.2s linear; + text-align: center; + font-size: 10px; + vertical-align: middle; + margin-left: 6px; + transform: translateY(-2px); + .mat-icon { + //transform: translateY(-2px); + width: 16px; + height: 16px; + min-height: 16px; + min-width: 16px; + font-size: 16px; } + &.app-layout-native-title-bar-close, + &.app-layout-native-title-bar-maximize, &.app-layout-native-title-bar-minimize { - background: darken(#000000, 10%); - color: darken(white, 0); + color: darken(white, 20%); + font-weight: lighter; } - &.app-layout-native-title-bar-maximize { - background: darken(#000000, 10%); - color: darken(white, 0); + // &.app-layout-native-title-bar-minimize .mat-icon { + // transform: translateY(-43%); + // } + + &:hover { + border-radius: 4px; + &.app-layout-native-title-bar-close { + background: darken(#000000, 10%); + color: darken(white, 0); + } + + &.app-layout-native-title-bar-minimize { + background: darken(#000000, 10%); + color: darken(white, 0); + } + + &.app-layout-native-title-bar-maximize { + background: darken(#000000, 10%); + color: darken(white, 0); + } } } } } } } +@mixin weblink($color) { + $color: rgba($color, 0.999); + .webhard { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='#{$color}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M4.5,4.3L1.7,10v5c0,0.9,0.7,1.7,1.7,1.7h13.3c0.9,0,1.7-0.7,1.7-1.7v-5l-2.9-5.7c-0.3-0.6-0.9-0.9-1.5-0.9H6 C5.4,3.3,4.8,3.7,4.5,4.3z'/%3E%3Cline class='st0' x1='5' y1='13.3' x2='5' y2='13.3'/%3E%3Cline class='st0' x1='8.3' y1='13.3' x2='8.3' y2='13.3'/%3E%3C/svg%3E"); + } + .vc { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='#{$color}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='feather feather-video'%3E%3Cpolygon points='23 7 16 12 23 17 23 7'%3E%3C/polygon%3E%3Crect x='1' y='5' width='15' height='14' rx='2' ry='2'%3E%3C/rect%3E%3C/svg%3E"); + } + .elephant { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='#{$color}' stroke='none' xml:space='preserve'%3E%3Cpath d='M19.1,5c-1,0-2,0.4-2.7,1.1c-1.2-1-2.9-1.5-4.7-1.5c-1.7,0-3.3,0.5-4.5,1.4C6.6,5.3,5.7,5,4.8,5C2.6,5,0.9,6.7,0.9,8.8 c0,1.1,1.1,4.6,2.7,5.7c0.3,0.2,0.7,0.3,1.1,0.3c0.2,0,0.4,0,0.6-0.1c0.5-0.2,0.9-0.4,1.3-0.6c0.6,0.6,1.3,1,2.1,1.4l0.8,1.2 c0.3,0.5,0.5,1.1,0.6,1.7H9.2c-0.7,0-1.2,0.6-1.2,1.2s0.6,1.2,1.2,1.2h0.4c2.5,0,4.6-1.7,5.2-4.1l0.4-1.4c0.7-0.4,1.4-0.8,1.9-1.3 c0.4,0.3,0.9,0.5,1.5,0.8c0.2,0.1,0.4,0.1,0.6,0.1c0.4,0,0.7-0.1,1.1-0.3c1.6-1.1,2.7-4.6,2.7-5.7C22.9,6.7,21.2,5,19.1,5z M5,14.1 c-0.3,0.1-0.7,0.1-1-0.2C2.7,13,1.7,9.8,1.7,8.8c0-1.7,1.4-3.1,3.1-3.1c0.7,0,1.4,0.3,2,0.7C6.4,6.8,6.1,7.1,5.8,7.5 C5.5,7.3,5.1,7.2,4.8,7.2c-1.2,0-2.1,1-2.1,2.1c0,0.6,0.6,2.5,1.5,3.1c0.2,0.1,0.4,0.2,0.6,0.2c0.1,0,0.3,0,0.4-0.1 c0.1,0,0.2-0.1,0.3-0.1c0.2,0.4,0.4,0.8,0.7,1.1C5.8,13.8,5.4,13.9,5,14.1z M5.1,11.8c-0.1,0-0.2,0.1-0.3,0.1 c-0.1,0-0.2,0.1-0.4-0.1c-0.6-0.4-1.2-2-1.2-2.5c0-0.8,0.6-1.4,1.4-1.4C5,7.9,5.2,8,5.4,8.1c-0.3,0.7-0.5,1.4-0.5,2.2 C4.9,10.8,5,11.3,5.1,11.8z M14.7,14.8c-0.1,0-0.2,0.1-0.2,0.2l-0.4,1.6c-0.5,2.1-2.4,3.5-4.5,3.5H9.2c-0.3,0-0.5-0.2-0.5-0.5 c0-0.3,0.2-0.5,0.5-0.5h1.1c0.3,0,0.5-0.2,0.5-0.5c0-0.8-0.2-1.6-0.7-2.3L9.3,15c0-0.1-0.1-0.1-0.2-0.1c-0.8-0.3-1.5-0.8-2.1-1.3 c0,0,0-0.1-0.1-0.1c0,0-0.1-0.1-0.1-0.1c-0.4-0.4-0.7-0.9-0.9-1.4c0,0,0-0.1,0-0.1c-0.2-0.5-0.3-1-0.3-1.5c0-2.8,2.7-5,6.1-5 s6.1,2.3,6.1,5C17.9,12.2,16.7,13.9,14.7,14.8z M18.2,8.3c0.3-0.2,0.6-0.4,0.9-0.4c0.8,0,1.4,0.6,1.4,1.4c0,0.5-0.5,2.1-1.2,2.5 C19.2,12,19.1,12,19,11.9c-0.2-0.1-0.4-0.2-0.6-0.3c0.1-0.4,0.2-0.9,0.2-1.3C18.6,9.6,18.5,8.9,18.2,8.3z M19.8,13.9 c-0.3,0.2-0.7,0.3-1,0.2c-0.5-0.2-0.9-0.4-1.3-0.7c0.3-0.3,0.5-0.7,0.7-1.1c0.2,0.1,0.4,0.2,0.6,0.3c0.1,0.1,0.3,0.1,0.4,0.1 c0.2,0,0.4-0.1,0.6-0.2c0.9-0.6,1.5-2.5,1.5-3.1c0-1.2-1-2.1-2.1-2.1c-0.5,0-0.9,0.2-1.3,0.4c-0.2-0.4-0.5-0.7-0.9-1.1 c0.6-0.6,1.3-0.9,2.1-0.9c1.7,0,3.1,1.4,3.1,3.1C22.2,9.8,21.1,13,19.8,13.9z'/%3E%3Cpath d='M11.5,16.5h1c0.3,0,0.5-0.2,0.5-0.5s-0.2-0.5-0.5-0.5h-1c-0.3,0-0.5,0.2-0.5,0.5S11.2,16.5,11.5,16.5z'/%3E%3Cpath d='M13,17.6H11c-0.3,0-0.5,0.2-0.5,0.5s0.2,0.5,0.5,0.5H13c0.3,0,0.5-0.2,0.5-0.5S13.3,17.6,13,17.6z'/%3E%3Cpath d='M17,12.4c0,0.5-0.4,0.8-0.8,0.8c-0.5,0-0.8-0.4-0.8-0.8s0.4-0.8,0.8-0.8C16.7,11.6,17,12,17,12.4z'/%3E%3Cpath d='M8.5,12.4c0,0.5-0.4,0.8-0.8,0.8c-0.5,0-0.8-0.4-0.8-0.8s0.4-0.8,0.8-0.8C8.1,11.6,8.5,12,8.5,12.4z'/%3E%3C/svg%3E"); + } + .mail { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='#{$color}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z'%3E%3C/path%3E%3Cpolyline points='22,6 12,13 2,6'%3E%3C/polyline%3E%3C/svg%3E"); + } + .approved { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 24 24' fill='none' stroke='#{$color}' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' %3E%3Cpath d='M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z'%3E%3C/path%3E%3Cline x1='16' y1='8' x2='2' y2='22'%3E%3C/line%3E%3Cline x1='17.5' y1='15' x2='9' y2='15'%3E%3C/line%3E%3C/svg%3E"); + } +} + +@include weblink(#425888); diff --git a/projects/ucap-webmessenger-app/src/app/pages/messenger/components/main.page.component.ts b/projects/ucap-webmessenger-app/src/app/pages/messenger/components/main.page.component.ts index 738aa42b..59fe0492 100644 --- a/projects/ucap-webmessenger-app/src/app/pages/messenger/components/main.page.component.ts +++ b/projects/ucap-webmessenger-app/src/app/pages/messenger/components/main.page.component.ts @@ -16,12 +16,6 @@ import * as MessageStore from '@app/store/messenger/message'; import { Observable, Subscription, of } from 'rxjs'; import { UCAP_NATIVE_SERVICE, NativeService } from '@ucap-webmessenger/native'; -import { UserInfo } from '@ucap-webmessenger/protocol-sync'; -import { - UserInfoSS, - UserInfoF, - UserInfoDN -} from '@ucap-webmessenger/protocol-query'; import { StatusProtocolService } from '@ucap-webmessenger/protocol-status'; import { StatusType, StatusCode } from '@ucap-webmessenger/core'; import { @@ -211,14 +205,17 @@ export class MainPageComponent implements OnInit, OnDestroy { } onClickOpenProfile(params: { - userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN; + userSeq: number; openProfileOptions?: OpenProfileOptions; }) { + if (!params.userSeq || params.userSeq < 0) { + return; + } // [GROUP] // this.queryProtocolService // .dataUser({ // divCd: 'OPENPROF', - // seq: userInfo.seq, + // seq: params.userSeq, // senderCompanyCode: this.loginRes.userInfo.companyCode, // senderEmployeeType: this.loginRes.userInfo.employeeType // }) @@ -244,7 +241,7 @@ export class MainPageComponent implements OnInit, OnDestroy { this.daesangProtocolService .dataUserDaesang({ divCd: 'OPENPROF', - seq: params.userInfo.seq, + seq: params.userSeq, senderCompanyCode: this.loginRes.userInfo.companyCode, senderEmployeeType: this.loginRes.userInfo.employeeType }) diff --git a/projects/ucap-webmessenger-app/src/app/pages/template/components/template.page.component.ts b/projects/ucap-webmessenger-app/src/app/pages/template/components/template.page.component.ts index cb25ae6e..f07a9226 100644 --- a/projects/ucap-webmessenger-app/src/app/pages/template/components/template.page.component.ts +++ b/projects/ucap-webmessenger-app/src/app/pages/template/components/template.page.component.ts @@ -17,6 +17,7 @@ import { EventType, Info, EventJson } from '@ucap-webmessenger/protocol-event'; import { VersionInfo2Response } from '@ucap-webmessenger/api-public'; import { StatusCode as ApiStatusCode } from '@ucap-webmessenger/api'; import { StatusCode } from '@ucap-webmessenger/core'; +import { WorkStatusType } from 'projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type'; @Component({ selector: 'app-template.page', @@ -73,7 +74,8 @@ export const status: StatusBulkInfo = { // 단말상태정보(s) terminalStatus: TerminalStatusInfo.Idle, // 단말상태번호(n) - terminalStatusNumber: TerminalStatusNumber.Idle + terminalStatusNumber: TerminalStatusNumber.Idle, + workstatus: WorkStatusType.Work }; export const buddyData: UserInfo = { seq: 15, diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/event/effects.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/event/effects.ts index a73eb433..ef2a1917 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/event/effects.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/event/effects.ts @@ -138,7 +138,7 @@ export class Effects { map(action => { const roomInfo = action.roomInfo; let requestCount = - environment.productConfig.CommonSetting.eventRequestDefaultCount; + environment.productConfig.CommonSetting.eventRequestInitCount; // 여기까지 읽음 처리.. if (!!roomInfo.finalEventSeq && !!roomInfo.lastReadEventSeq) { @@ -146,11 +146,11 @@ export class Effects { // 기존 요청개수보다 요청할 갯수가 적을 경우 기본값. if ( - environment.productConfig.CommonSetting.eventRequestDefaultCount >= + environment.productConfig.CommonSetting.eventRequestInitCount >= requestCount ) { requestCount = - environment.productConfig.CommonSetting.eventRequestDefaultCount; + environment.productConfig.CommonSetting.eventRequestInitCount; } else { // 여기까지 읽음 처리를 위한 최대 요청 개수 제한. if ( diff --git a/projects/ucap-webmessenger-app/src/environments/environment.daesang.dev.ts b/projects/ucap-webmessenger-app/src/environments/environment.daesang.dev.ts index 945d7cac..0bfade37 100644 --- a/projects/ucap-webmessenger-app/src/environments/environment.daesang.dev.ts +++ b/projects/ucap-webmessenger-app/src/environments/environment.daesang.dev.ts @@ -75,6 +75,7 @@ export const environment: Environment = { maxChatRoomUser: 300, masstextLength: 800, + eventRequestInitCount: 15, eventRequestDefaultCount: 50, readHereShowMinimumEventCount: 10, diff --git a/projects/ucap-webmessenger-app/src/environments/environment.daesang.prod.ts b/projects/ucap-webmessenger-app/src/environments/environment.daesang.prod.ts index eaec84ba..914ff1a1 100644 --- a/projects/ucap-webmessenger-app/src/environments/environment.daesang.prod.ts +++ b/projects/ucap-webmessenger-app/src/environments/environment.daesang.prod.ts @@ -75,6 +75,7 @@ export const environment: Environment = { maxChatRoomUser: 300, masstextLength: 800, + eventRequestInitCount: 30, eventRequestDefaultCount: 50, readHereShowMinimumEventCount: 10, diff --git a/projects/ucap-webmessenger-app/src/environments/environment.dev.ts b/projects/ucap-webmessenger-app/src/environments/environment.dev.ts index cf1e7866..175c70ee 100644 --- a/projects/ucap-webmessenger-app/src/environments/environment.dev.ts +++ b/projects/ucap-webmessenger-app/src/environments/environment.dev.ts @@ -75,6 +75,7 @@ export const environment: Environment = { maxChatRoomUser: 300, masstextLength: 800, + eventRequestInitCount: 15, eventRequestDefaultCount: 50, readHereShowMinimumEventCount: 10, diff --git a/projects/ucap-webmessenger-app/src/environments/environment.prod.ts b/projects/ucap-webmessenger-app/src/environments/environment.prod.ts index e0dbafc0..0df1a924 100644 --- a/projects/ucap-webmessenger-app/src/environments/environment.prod.ts +++ b/projects/ucap-webmessenger-app/src/environments/environment.prod.ts @@ -75,6 +75,7 @@ export const environment: Environment = { maxChatRoomUser: 300, masstextLength: 800, + eventRequestInitCount: 15, eventRequestDefaultCount: 50, readHereShowMinimumEventCount: 10, diff --git a/projects/ucap-webmessenger-app/src/environments/environment.type.ts b/projects/ucap-webmessenger-app/src/environments/environment.type.ts index 4e97d513..0e93e851 100644 --- a/projects/ucap-webmessenger-app/src/environments/environment.type.ts +++ b/projects/ucap-webmessenger-app/src/environments/environment.type.ts @@ -82,6 +82,8 @@ export interface Environment { /** 대용량대화 기준 */ masstextLength: number; + /** 대화방 초기 로딩 이벤트 갯수 */ + eventRequestInitCount: number; /** 대화방 이벤트 조회 개수 */ eventRequestDefaultCount: number; diff --git a/projects/ucap-webmessenger-daesang/src/lib/protocols/data-user.ts b/projects/ucap-webmessenger-daesang/src/lib/protocols/data-user.ts index 87b1febb..dfd487b3 100644 --- a/projects/ucap-webmessenger-daesang/src/lib/protocols/data-user.ts +++ b/projects/ucap-webmessenger-daesang/src/lib/protocols/data-user.ts @@ -11,6 +11,7 @@ import { UserInfoSS, DataUserResponse } from '@ucap-webmessenger/protocol-query'; +import { WorkStatusType } from 'projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type'; // export interface UserInfoSSForDaesang extends UserInfoSS { // /****** For daesang ******/ @@ -69,7 +70,7 @@ export const decodeDataUser: ProtocolDecoder = ( // [daesang] companyName: info[29], responsibilities: info[30], - workstatus: info[31], + workstatus: info[31] as WorkStatusType, job: info[32], customerInfo: info[33], workplace: info[34] diff --git a/projects/ucap-webmessenger-protocol-query/src/lib/models/user-info-ss.ts b/projects/ucap-webmessenger-protocol-query/src/lib/models/user-info-ss.ts index da6d1a4f..0554c9c9 100644 --- a/projects/ucap-webmessenger-protocol-query/src/lib/models/user-info-ss.ts +++ b/projects/ucap-webmessenger-protocol-query/src/lib/models/user-info-ss.ts @@ -1,6 +1,7 @@ import { RoleCode } from '@ucap-webmessenger/protocol-authentication'; import { CallMode } from '@ucap-webmessenger/core'; import { EmployeeType } from '@ucap-webmessenger/protocol-room'; +import { WorkStatusType } from 'projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type'; export interface UserInfoSS { /** 사용자SEQ */ @@ -67,7 +68,7 @@ export interface UserInfoSS { /** 담당업무 */ responsibilities?: string; /** 업무 상태 */ - workstatus?: string; + workstatus?: WorkStatusType; /** SC직무 */ job?: string; /** 거래처정보 */ diff --git a/projects/ucap-webmessenger-protocol-status/src/lib/models/status-bulk-info.ts b/projects/ucap-webmessenger-protocol-status/src/lib/models/status-bulk-info.ts index 51b1cb14..5ea6534b 100644 --- a/projects/ucap-webmessenger-protocol-status/src/lib/models/status-bulk-info.ts +++ b/projects/ucap-webmessenger-protocol-status/src/lib/models/status-bulk-info.ts @@ -3,6 +3,7 @@ import { TerminalStatusInfo, TerminalStatusNumber } from '../types/terminal-status.type'; +import { WorkStatusType } from '../types/work-status.type'; export interface StatusBulkInfo extends StatusInfo { // 사용자SEQ @@ -18,4 +19,7 @@ export interface StatusBulkInfo extends StatusInfo { terminalStatus: TerminalStatusInfo; /** 단말상태번호(n) */ terminalStatusNumber: TerminalStatusNumber; + + /** 업무상태정보(s) */ + workstatus: WorkStatusType; } diff --git a/projects/ucap-webmessenger-protocol-status/src/lib/models/status-info.ts b/projects/ucap-webmessenger-protocol-status/src/lib/models/status-info.ts index 27dc2aef..3a3f86b6 100644 --- a/projects/ucap-webmessenger-protocol-status/src/lib/models/status-info.ts +++ b/projects/ucap-webmessenger-protocol-status/src/lib/models/status-info.ts @@ -1,20 +1,24 @@ import { StatusCode } from '@ucap-webmessenger/core'; +import { WorkStatusType } from '../types/work-status.type'; export interface StatusInfo { - // 사용자SEQ + /** 사용자SEQ */ userSeq: number; - // 상태코드(PC) + /** 상태코드(PC) */ pcStatus: StatusCode; - // 상태코드(통화) + /** 상태코드(통화) */ phoneStatus: StatusCode; - // 상태코드(모바일) + /** 상태코드(모바일) */ mobileStatus: StatusCode; - // 상태코드(PC화상) + /** 상태코드(PC화상) */ conferenceStatus: StatusCode; - // 상태메시지 + /** 상태메시지 */ statusMessage: string; - // 상태코드(Mobile화상) + /** 상태코드(Mobile화상) */ mobileConferenceStatus: StatusCode; - // 상태코드(iMessenger) + /** 상태코드(iMessenger) */ imessengerStatus: StatusCode; + + /** 업무상태 */ + workstatus?: WorkStatusType; } diff --git a/projects/ucap-webmessenger-protocol-status/src/lib/protocols/bulk-info.ts b/projects/ucap-webmessenger-protocol-status/src/lib/protocols/bulk-info.ts index c9acdc8b..358ff255 100644 --- a/projects/ucap-webmessenger-protocol-status/src/lib/protocols/bulk-info.ts +++ b/projects/ucap-webmessenger-protocol-status/src/lib/protocols/bulk-info.ts @@ -17,6 +17,7 @@ import { } from '../types/terminal-status.type'; import { StatusInfo } from '../models/status-info'; import { StatusBulkInfo } from '../models/status-bulk-info'; +import { WorkStatusType } from '../types/work-status.type'; export interface BulkInfoRequest extends ProtocolRequest { /** DivCD(s) */ @@ -72,7 +73,8 @@ export const decodeBulkInfoData: ProtocolDecoder = ( mobileConferenceStatus: info[6] as StatusCode, imessengerStatus: info[7] as StatusCode, terminalStatus: info[8] as TerminalStatusInfo, - terminalStatusNumber: Number(info[9]) as TerminalStatusNumber + terminalStatusNumber: Number(info[9]) as TerminalStatusNumber, + workstatus: info[10] as WorkStatusType }); }); return decodeProtocolMessage(message, { diff --git a/projects/ucap-webmessenger-protocol-status/src/lib/protocols/status.ts b/projects/ucap-webmessenger-protocol-status/src/lib/protocols/status.ts index 76e6d89b..08e4d892 100644 --- a/projects/ucap-webmessenger-protocol-status/src/lib/protocols/status.ts +++ b/projects/ucap-webmessenger-protocol-status/src/lib/protocols/status.ts @@ -12,6 +12,7 @@ import { } from '@ucap-webmessenger/protocol'; import { StatusType, StatusCode } from '@ucap-webmessenger/core'; import { StatusInfo } from '../models/status-info'; +import { WorkStatusType } from '../types/work-status.type'; export interface StatusRequest extends ProtocolRequest { // 상태타입(s) @@ -74,6 +75,7 @@ export const decodeStatusNotification: ProtocolDecoder = ( conferenceStatus: info[4] as StatusCode, statusMessage: info[5], mobileConferenceStatus: info[6] as StatusCode, - imessengerStatus: info[7] as StatusCode + imessengerStatus: info[7] as StatusCode, + workstatus: info[8] as WorkStatusType } as StatusNotification); }; diff --git a/projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type.ts b/projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type.ts new file mode 100644 index 00000000..c197a3a5 --- /dev/null +++ b/projects/ucap-webmessenger-protocol-status/src/lib/types/work-status.type.ts @@ -0,0 +1,41 @@ +export enum WorkStatusType { + /** 근무중 */ + Work = 'W01', + + /** 휴가 */ + /** 오전 */ + VacationAM = 'V01', + /** 오후 */ + VacationPM = 'V02', + /** 휴가 */ + VacationAll = 'V03', + /** 휴직 */ + LeaveOfAbsence = 'V04', + /** 장기 리프레쉬 */ + LongtermRefresh = 'V05' + // /** 교육 */ + // /** 오전교육 */ + // EducationAm = 'E01', + // /** 오후교육 */ + // EducationPm = 'E02', + // /** 종일교육 */ + // EducationAll = 'E03', + // /** 장기교육 */ + // EducationLongterm = 'E04', + // /** 휴직 */ + // /** 일반휴직 */ + // LTRNormal = 'R01', + // /** 육아휴직 */ + // LTRBaby = 'R02', + // /** 기타휴직 */ + // LTREtc = 'R03', + // /** 일반출장 */ + // /** 출장 */ + // BusinessTrip = 'T01', + // /** 해외출장 */ + // BusinessTripOverseas = 'T02', + // /** 국내출장 */ + // BusinessTripLocal = 'T03', + // /** 장기출장 */ + // BusinessLongterm = 'T04', +} diff --git a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.html b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.html index faf8c637..1fdd8af4 100644 --- a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.html +++ b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.html @@ -120,7 +120,7 @@ [base]="profileImageRoot" [path]="getUserProfile(message.senderSeq)" [default]="'assets/images/img_nophoto_50.png'" - (click)="onClickOpenProfile($event, getUerInfo(message.senderSeq))" + (click)="onClickOpenProfile($event, message.senderSeq)" />