쪽지 연결.
This commit is contained in:
parent
b81975be9b
commit
4e5ace1d40
|
@ -27,7 +27,7 @@
|
||||||
>
|
>
|
||||||
<ucap-group-expansion-panel
|
<ucap-group-expansion-panel
|
||||||
#groupExpansionPanel
|
#groupExpansionPanel
|
||||||
[groupBuddyList]="groupBuddyList$ | async"
|
[groupBuddyList]="groupBuddyList"
|
||||||
[favoritBuddyList]="favoritBuddyList$ | async"
|
[favoritBuddyList]="favoritBuddyList$ | async"
|
||||||
[myProfileInfo]="loginRes.userInfo"
|
[myProfileInfo]="loginRes.userInfo"
|
||||||
(more)="onMoreGroup($event)"
|
(more)="onMoreGroup($event)"
|
||||||
|
@ -190,8 +190,8 @@
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
mat-menu-item
|
mat-menu-item
|
||||||
*ngIf="getShowProfileContextMenu('SEND_NOTE', userInfo, group)"
|
*ngIf="getShowProfileContextMenu('SEND_MESSAGE', userInfo, group)"
|
||||||
(click)="onClickProfileContextMenu('SEND_NOTE', userInfo)"
|
(click)="onClickProfileContextMenu('SEND_MESSAGE', userInfo)"
|
||||||
>
|
>
|
||||||
쪽지 보내기
|
쪽지 보내기
|
||||||
</button>
|
</button>
|
||||||
|
@ -227,8 +227,8 @@
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
mat-menu-item
|
mat-menu-item
|
||||||
*ngIf="getShowGroupContextMenu('SEND_NOTE', group)"
|
*ngIf="getShowGroupContextMenu('SEND_MESSAGE', group)"
|
||||||
(click)="onClickGroupContextMenu('SEND_NOTE', group)"
|
(click)="onClickGroupContextMenu('SEND_MESSAGE', group)"
|
||||||
>
|
>
|
||||||
그룹 쪽지 보내기
|
그룹 쪽지 보내기
|
||||||
</button>
|
</button>
|
||||||
|
|
|
@ -21,7 +21,13 @@ import { NGXLogger } from 'ngx-logger';
|
||||||
import { Company } from '@ucap-webmessenger/api-external';
|
import { Company } from '@ucap-webmessenger/api-external';
|
||||||
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
import { SessionStorageService } from '@ucap-webmessenger/web-storage';
|
||||||
import { VersionInfo2Response } from '@ucap-webmessenger/api-public';
|
import { VersionInfo2Response } from '@ucap-webmessenger/api-public';
|
||||||
import { LoginInfo, KEY_LOGIN_INFO, UserSelectDialogType } from '@app/types';
|
import {
|
||||||
|
LoginInfo,
|
||||||
|
KEY_LOGIN_INFO,
|
||||||
|
UserSelectDialogType,
|
||||||
|
EnvironmentsInfo,
|
||||||
|
KEY_ENVIRONMENTS_INFO
|
||||||
|
} from '@app/types';
|
||||||
import { KEY_VER_INFO } from '@app/types/ver-info.type';
|
import { KEY_VER_INFO } from '@app/types/ver-info.type';
|
||||||
import { ExpansionPanelComponent as GroupExpansionPanelComponent } from '@ucap-webmessenger/ui-group';
|
import { ExpansionPanelComponent as GroupExpansionPanelComponent } from '@ucap-webmessenger/ui-group';
|
||||||
|
|
||||||
|
@ -61,6 +67,11 @@ import {
|
||||||
SelectGroupDialogResult,
|
SelectGroupDialogResult,
|
||||||
SelectGroupDialogData
|
SelectGroupDialogData
|
||||||
} from '../../dialogs/group/select-group.dialog.component';
|
} from '../../dialogs/group/select-group.dialog.component';
|
||||||
|
import {
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogResult,
|
||||||
|
MessageWriteDialogData
|
||||||
|
} from '../../dialogs/message/message-write.dialog.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-layout-chat-left-sidenav-group',
|
selector: 'app-layout-chat-left-sidenav-group',
|
||||||
|
@ -87,15 +98,16 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
groupContextMenuTrigger: MatMenuTrigger;
|
groupContextMenuTrigger: MatMenuTrigger;
|
||||||
groupContextMenuPosition = { x: '0px', y: '0px' };
|
groupContextMenuPosition = { x: '0px', y: '0px' };
|
||||||
|
|
||||||
groupBuddyList$: Observable<
|
groupBuddyList: { group: GroupDetailData; buddyList: UserInfo[] }[];
|
||||||
{ group: GroupDetailData; buddyList: UserInfo[] }[]
|
groupBuddyListSubscription: Subscription;
|
||||||
>;
|
|
||||||
favoritBuddyList$: Observable<UserInfo[]>;
|
favoritBuddyList$: Observable<UserInfo[]>;
|
||||||
companyList$: Observable<Company[]>;
|
companyList$: Observable<Company[]>;
|
||||||
companyCode: string;
|
companyCode: string;
|
||||||
|
|
||||||
loginRes: LoginResponse;
|
loginRes: LoginResponse;
|
||||||
loginResSubscription: Subscription;
|
loginResSubscription: Subscription;
|
||||||
|
environmentsInfo: EnvironmentsInfo;
|
||||||
|
|
||||||
sessionVerinfo: VersionInfo2Response;
|
sessionVerinfo: VersionInfo2Response;
|
||||||
|
|
||||||
|
@ -110,7 +122,11 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
private queryProtocolService: QueryProtocolService,
|
private queryProtocolService: QueryProtocolService,
|
||||||
private statusProtocolService: StatusProtocolService,
|
private statusProtocolService: StatusProtocolService,
|
||||||
private logger: NGXLogger
|
private logger: NGXLogger
|
||||||
) {}
|
) {
|
||||||
|
this.environmentsInfo = this.sessionStorageService.get<EnvironmentsInfo>(
|
||||||
|
KEY_ENVIRONMENTS_INFO
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
|
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
|
||||||
|
@ -132,31 +148,35 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
select(AppStore.SettingSelector.CompanySelector.companyList)
|
select(AppStore.SettingSelector.CompanySelector.companyList)
|
||||||
);
|
);
|
||||||
|
|
||||||
this.groupBuddyList$ = combineLatest([
|
this.groupBuddyListSubscription = combineLatest([
|
||||||
this.store.pipe(
|
this.store.pipe(
|
||||||
select(AppStore.MessengerSelector.SyncSelector.selectAllBuddy2)
|
select(AppStore.MessengerSelector.SyncSelector.selectAllBuddy2)
|
||||||
),
|
),
|
||||||
this.store.pipe(
|
this.store.pipe(
|
||||||
select(AppStore.MessengerSelector.SyncSelector.selectAllGroup2)
|
select(AppStore.MessengerSelector.SyncSelector.selectAllGroup2)
|
||||||
)
|
)
|
||||||
]).pipe(
|
])
|
||||||
map(([buddyList, groupList]) => {
|
.pipe(
|
||||||
const groupBuddyList: {
|
map(([buddyList, groupList]) => {
|
||||||
group: GroupDetailData;
|
const groupBuddyList: {
|
||||||
buddyList: UserInfo[];
|
group: GroupDetailData;
|
||||||
}[] = [];
|
buddyList: UserInfo[];
|
||||||
for (const group of groupList) {
|
}[] = [];
|
||||||
groupBuddyList.push({
|
for (const group of groupList) {
|
||||||
group,
|
groupBuddyList.push({
|
||||||
buddyList: buddyList.filter(buddy => {
|
group,
|
||||||
return group.userSeqs.indexOf(buddy.seq) > -1;
|
buddyList: buddyList.filter(buddy => {
|
||||||
})
|
return group.userSeqs.indexOf(buddy.seq) > -1;
|
||||||
});
|
})
|
||||||
}
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return groupBuddyList;
|
this.groupBuddyList = groupBuddyList;
|
||||||
})
|
|
||||||
);
|
return groupBuddyList;
|
||||||
|
})
|
||||||
|
)
|
||||||
|
.subscribe();
|
||||||
|
|
||||||
this.favoritBuddyList$ = this.store
|
this.favoritBuddyList$ = this.store
|
||||||
.pipe(select(AppStore.MessengerSelector.SyncSelector.selectAllBuddy2))
|
.pipe(select(AppStore.MessengerSelector.SyncSelector.selectAllBuddy2))
|
||||||
|
@ -173,6 +193,9 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
if (!!this.loginResSubscription) {
|
if (!!this.loginResSubscription) {
|
||||||
this.loginResSubscription.unsubscribe();
|
this.loginResSubscription.unsubscribe();
|
||||||
}
|
}
|
||||||
|
if (!!this.groupBuddyListSubscription) {
|
||||||
|
this.groupBuddyListSubscription.unsubscribe();
|
||||||
|
}
|
||||||
|
|
||||||
this.logger.debug('-----------------------GroupComponent ngOnDestroy');
|
this.logger.debug('-----------------------GroupComponent ngOnDestroy');
|
||||||
}
|
}
|
||||||
|
@ -333,7 +356,7 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
if (!group || group === undefined) {
|
if (!group || group === undefined) {
|
||||||
if (
|
if (
|
||||||
menuType === 'REGISTER_FAVORITE' ||
|
menuType === 'REGISTER_FAVORITE' ||
|
||||||
menuType === 'SEND_NOTE' ||
|
menuType === 'SEND_MESSAGE' ||
|
||||||
menuType === 'REGISTER_NICKNAME'
|
menuType === 'REGISTER_NICKNAME'
|
||||||
) {
|
) {
|
||||||
// continue;
|
// continue;
|
||||||
|
@ -465,6 +488,25 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
|
case 'SEND_MESSAGE':
|
||||||
|
{
|
||||||
|
this.dialogService.open<
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogData,
|
||||||
|
MessageWriteDialogResult
|
||||||
|
>(MessageWriteDialogComponent, {
|
||||||
|
width: '600px',
|
||||||
|
height: '600px',
|
||||||
|
disableClose: true,
|
||||||
|
hasBackdrop: false,
|
||||||
|
data: {
|
||||||
|
loginRes: this.loginRes,
|
||||||
|
environmentsInfo: this.environmentsInfo,
|
||||||
|
receiverList: [userInfo]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,7 +543,30 @@ export class GroupComponent implements OnInit, OnDestroy {
|
||||||
ChatStore.openRoom({ userSeqList: group.userSeqs })
|
ChatStore.openRoom({ userSeqList: group.userSeqs })
|
||||||
);
|
);
|
||||||
break;
|
break;
|
||||||
case 'SEND_NOTE':
|
case 'SEND_MESSAGE':
|
||||||
|
{
|
||||||
|
const curGroupBuddyList = this.groupBuddyList.filter(
|
||||||
|
groupInfo => groupInfo.group.seq === group.seq
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!!curGroupBuddyList && curGroupBuddyList.length > 0) {
|
||||||
|
this.dialogService.open<
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogData,
|
||||||
|
MessageWriteDialogResult
|
||||||
|
>(MessageWriteDialogComponent, {
|
||||||
|
width: '600px',
|
||||||
|
height: '600px',
|
||||||
|
disableClose: true,
|
||||||
|
hasBackdrop: false,
|
||||||
|
data: {
|
||||||
|
loginRes: this.loginRes,
|
||||||
|
environmentsInfo: this.environmentsInfo,
|
||||||
|
receiverList: curGroupBuddyList[0].buddyList
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 'RENAME':
|
case 'RENAME':
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,6 +48,7 @@ import {
|
||||||
MessageDetailDialogResult,
|
MessageDetailDialogResult,
|
||||||
MessageDetailDialogData
|
MessageDetailDialogData
|
||||||
} from '../../dialogs/message/message-detail.dialog.component';
|
} from '../../dialogs/message/message-detail.dialog.component';
|
||||||
|
import { EnvironmentsInfo, KEY_ENVIRONMENTS_INFO } from '@app/types';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-layout-chat-left-sidenav-message',
|
selector: 'app-layout-chat-left-sidenav-message',
|
||||||
|
@ -70,6 +71,7 @@ export class MessageBoxComponent
|
||||||
|
|
||||||
loginRes: LoginResponse;
|
loginRes: LoginResponse;
|
||||||
sessionVerinfo: VersionInfo2Response;
|
sessionVerinfo: VersionInfo2Response;
|
||||||
|
environmentsInfo: EnvironmentsInfo;
|
||||||
|
|
||||||
messageList: MessageList[] = [];
|
messageList: MessageList[] = [];
|
||||||
|
|
||||||
|
@ -108,6 +110,9 @@ export class MessageBoxComponent
|
||||||
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
|
this.sessionVerinfo = this.sessionStorageService.get<VersionInfo2Response>(
|
||||||
KEY_VER_INFO
|
KEY_VER_INFO
|
||||||
);
|
);
|
||||||
|
this.environmentsInfo = this.sessionStorageService.get<EnvironmentsInfo>(
|
||||||
|
KEY_ENVIRONMENTS_INFO
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
@ -357,7 +362,8 @@ export class MessageBoxComponent
|
||||||
width: '600px',
|
width: '600px',
|
||||||
data: {
|
data: {
|
||||||
detail: res,
|
detail: res,
|
||||||
loginRes: this.loginRes
|
loginRes: this.loginRes,
|
||||||
|
environmentsInfo: this.environmentsInfo
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -34,10 +34,17 @@ import { NGXLogger } from 'ngx-logger';
|
||||||
import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
|
import { NativeService, UCAP_NATIVE_SERVICE } from '@ucap-webmessenger/native';
|
||||||
import { MessageStatusCode } from '@ucap-webmessenger/api';
|
import { MessageStatusCode } from '@ucap-webmessenger/api';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
|
import {
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogResult,
|
||||||
|
MessageWriteDialogData
|
||||||
|
} from './message-write.dialog.component';
|
||||||
|
import { EnvironmentsInfo } from '@app/types';
|
||||||
|
|
||||||
export interface MessageDetailDialogData {
|
export interface MessageDetailDialogData {
|
||||||
detail: DetailResponse;
|
detail: DetailResponse;
|
||||||
loginRes: LoginResponse;
|
loginRes: LoginResponse;
|
||||||
|
environmentsInfo: EnvironmentsInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MessageDetailDialogResult {
|
export interface MessageDetailDialogResult {
|
||||||
|
@ -428,6 +435,25 @@ export class MessageDetailDialogComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'MESSAGE_UPDATE':
|
||||||
|
{
|
||||||
|
this.dialogService.open<
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogData,
|
||||||
|
MessageWriteDialogResult
|
||||||
|
>(MessageWriteDialogComponent, {
|
||||||
|
width: '600px',
|
||||||
|
height: '600px',
|
||||||
|
disableClose: true,
|
||||||
|
hasBackdrop: false,
|
||||||
|
data: {
|
||||||
|
loginRes: this.data.loginRes,
|
||||||
|
environmentsInfo: this.data.environmentsInfo,
|
||||||
|
detail: this.data.detail
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,8 @@
|
||||||
<mat-card-content>
|
<mat-card-content>
|
||||||
<ucap-message-write
|
<ucap-message-write
|
||||||
#messageWrite
|
#messageWrite
|
||||||
|
[detail]="data.detail"
|
||||||
|
[curReceiverList]="data.receiverList"
|
||||||
(send)="onSend($event)"
|
(send)="onSend($event)"
|
||||||
(selectReceiver)="onSelectReceiver($event)"
|
(selectReceiver)="onSelectReceiver($event)"
|
||||||
(cancel)="onCancel()"
|
(cancel)="onCancel()"
|
||||||
|
|
|
@ -6,7 +6,8 @@ import { DialogService, SnackBarService } from '@ucap-webmessenger/ui';
|
||||||
import {
|
import {
|
||||||
DetailResponse,
|
DetailResponse,
|
||||||
DetailContent,
|
DetailContent,
|
||||||
MessageApiService
|
MessageApiService,
|
||||||
|
DetailReceiver
|
||||||
} from '@ucap-webmessenger/api-message';
|
} from '@ucap-webmessenger/api-message';
|
||||||
|
|
||||||
import { LoginResponse } from '@ucap-webmessenger/protocol-authentication';
|
import { LoginResponse } from '@ucap-webmessenger/protocol-authentication';
|
||||||
|
@ -29,6 +30,7 @@ export interface MessageWriteDialogData {
|
||||||
loginRes: LoginResponse;
|
loginRes: LoginResponse;
|
||||||
environmentsInfo: EnvironmentsInfo;
|
environmentsInfo: EnvironmentsInfo;
|
||||||
detail?: DetailResponse;
|
detail?: DetailResponse;
|
||||||
|
receiverList?: UserInfo[];
|
||||||
}
|
}
|
||||||
|
|
||||||
// tslint:disable-next-line: no-empty-interface
|
// tslint:disable-next-line: no-empty-interface
|
||||||
|
@ -117,7 +119,7 @@ export class MessageWriteDialogComponent implements OnInit {
|
||||||
duration: 3000,
|
duration: 3000,
|
||||||
verticalPosition: 'bottom'
|
verticalPosition: 'bottom'
|
||||||
});
|
});
|
||||||
this.dialogRef.close({});
|
// this.dialogRef.close({});
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
[isBuddy]="isBuddy"
|
[isBuddy]="isBuddy"
|
||||||
[isFavorit]="isFavorit"
|
[isFavorit]="isFavorit"
|
||||||
(openChat)="onClickChat($event)"
|
(openChat)="onClickChat($event)"
|
||||||
|
(sendMessage)="onClickSendMessage($event)"
|
||||||
(toggleFavorit)="onClickToggleFavorit($event)"
|
(toggleFavorit)="onClickToggleFavorit($event)"
|
||||||
(toggleBuddy)="onClickToggleBuddy($event)"
|
(toggleBuddy)="onClickToggleBuddy($event)"
|
||||||
(uploadProfileImage)="onUploadProfileImage($event)"
|
(uploadProfileImage)="onUploadProfileImage($event)"
|
||||||
|
|
|
@ -36,6 +36,11 @@ import { FileUploadItem } from '@ucap-webmessenger/api';
|
||||||
import { CommonApiService } from '@ucap-webmessenger/api-common';
|
import { CommonApiService } from '@ucap-webmessenger/api-common';
|
||||||
import { EnvironmentsInfo, KEY_ENVIRONMENTS_INFO } from '@app/types';
|
import { EnvironmentsInfo, KEY_ENVIRONMENTS_INFO } from '@app/types';
|
||||||
import { StatusCode } from '@ucap-webmessenger/api';
|
import { StatusCode } from '@ucap-webmessenger/api';
|
||||||
|
import {
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogResult,
|
||||||
|
MessageWriteDialogData
|
||||||
|
} from '../message/message-write.dialog.component';
|
||||||
|
|
||||||
export interface ProfileDialogData {
|
export interface ProfileDialogData {
|
||||||
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN;
|
userInfo: UserInfo | UserInfoSS | UserInfoF | UserInfoDN;
|
||||||
|
@ -119,6 +124,28 @@ export class ProfileDialogComponent implements OnInit, OnDestroy {
|
||||||
this.dialogRef.close();
|
this.dialogRef.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onClickSendMessage(userInfo: UserInfo) {
|
||||||
|
if (userInfo.seq !== this.loginRes.userSeq) {
|
||||||
|
this.dialogRef.close();
|
||||||
|
|
||||||
|
this.dialogService.open<
|
||||||
|
MessageWriteDialogComponent,
|
||||||
|
MessageWriteDialogData,
|
||||||
|
MessageWriteDialogResult
|
||||||
|
>(MessageWriteDialogComponent, {
|
||||||
|
width: '600px',
|
||||||
|
height: '600px',
|
||||||
|
disableClose: true,
|
||||||
|
hasBackdrop: false,
|
||||||
|
data: {
|
||||||
|
loginRes: this.loginRes,
|
||||||
|
environmentsInfo: this.environmentsInfo,
|
||||||
|
receiverList: [userInfo]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
onClickToggleFavorit(param: {
|
onClickToggleFavorit(param: {
|
||||||
userInfo: UserInfo | UserInfoF;
|
userInfo: UserInfo | UserInfoF;
|
||||||
isFavorit: boolean;
|
isFavorit: boolean;
|
||||||
|
|
|
@ -20,24 +20,26 @@
|
||||||
</mat-list>
|
</mat-list>
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
|
|
||||||
<mat-form-field class="message-receiver-list">
|
<perfect-scrollbar>
|
||||||
<mat-chip-list #chipList aria-label="receiver selection">
|
<mat-form-field class="message-receiver-list">
|
||||||
<mat-chip
|
<mat-chip-list #chipList aria-label="receiver selection">
|
||||||
*ngFor="let receiver of receiverList"
|
<mat-chip
|
||||||
removable="true"
|
*ngFor="let receiver of receiverList"
|
||||||
(removed)="onRemovedReceiver(receiver)"
|
removable="true"
|
||||||
>
|
(removed)="onRemovedReceiver(receiver)"
|
||||||
{{ receiver.name }}
|
>
|
||||||
<span matChipRemove class="mdi mdi-close"></span>
|
{{ receiver.name }}
|
||||||
</mat-chip>
|
<span matChipRemove class="mdi mdi-close"></span>
|
||||||
<input
|
</mat-chip>
|
||||||
[matChipInputFor]="chipList"
|
<input
|
||||||
placeholder="수신자"
|
[matChipInputFor]="chipList"
|
||||||
readonly
|
placeholder="수신자"
|
||||||
(click)="onClickReceiverList()"
|
readonly
|
||||||
/>
|
(click)="onClickReceiverList()"
|
||||||
</mat-chip-list>
|
/>
|
||||||
</mat-form-field>
|
</mat-chip-list>
|
||||||
|
</mat-form-field>
|
||||||
|
</perfect-scrollbar>
|
||||||
|
|
||||||
<mat-card-actions>
|
<mat-card-actions>
|
||||||
<div class="editor-tools">
|
<div class="editor-tools">
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
.message-receiver-list {
|
.message-receiver-list {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
height: 100px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.message-title {
|
.message-title {
|
||||||
|
@ -18,7 +19,7 @@
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
min-height: 270px;
|
min-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
[contenteditable] {
|
[contenteditable] {
|
||||||
|
|
|
@ -7,7 +7,8 @@ import {
|
||||||
AfterViewInit,
|
AfterViewInit,
|
||||||
ChangeDetectorRef,
|
ChangeDetectorRef,
|
||||||
OnDestroy,
|
OnDestroy,
|
||||||
ElementRef
|
ElementRef,
|
||||||
|
Input
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
import { ucapAnimations, DialogService } from '@ucap-webmessenger/ui';
|
import { ucapAnimations, DialogService } from '@ucap-webmessenger/ui';
|
||||||
|
@ -17,11 +18,13 @@ import { NGXLogger } from 'ngx-logger';
|
||||||
import moment from 'moment';
|
import moment from 'moment';
|
||||||
|
|
||||||
import { FileUtil } from '@ucap-webmessenger/core';
|
import { FileUtil } from '@ucap-webmessenger/core';
|
||||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
|
import { FormGroup, FormBuilder } from '@angular/forms';
|
||||||
import {
|
import {
|
||||||
ContentType,
|
ContentType,
|
||||||
CategoryType,
|
CategoryType,
|
||||||
MessageType
|
MessageType,
|
||||||
|
DetailResponse,
|
||||||
|
DetailReceiver
|
||||||
} from '@ucap-webmessenger/api-message';
|
} from '@ucap-webmessenger/api-message';
|
||||||
import { FileUploadItem } from '@ucap-webmessenger/api';
|
import { FileUploadItem } from '@ucap-webmessenger/api';
|
||||||
import { UserInfo } from '@ucap-webmessenger/protocol-sync';
|
import { UserInfo } from '@ucap-webmessenger/protocol-sync';
|
||||||
|
@ -30,6 +33,8 @@ import {
|
||||||
ScheduleSendDialogData,
|
ScheduleSendDialogData,
|
||||||
ScheduleSendDialogResult
|
ScheduleSendDialogResult
|
||||||
} from '../dialogs/schedule-send.dialog.component';
|
} from '../dialogs/schedule-send.dialog.component';
|
||||||
|
import { RoleCode } from '@ucap-webmessenger/protocol-authentication';
|
||||||
|
import { EmployeeType } from '@ucap-webmessenger/protocol-room';
|
||||||
|
|
||||||
const ATTR_FILE = 'UCAP_ATTR_FILE';
|
const ATTR_FILE = 'UCAP_ATTR_FILE';
|
||||||
|
|
||||||
|
@ -58,6 +63,11 @@ export interface Message {
|
||||||
animations: ucapAnimations
|
animations: ucapAnimations
|
||||||
})
|
})
|
||||||
export class WriteComponent implements OnInit, OnDestroy, AfterViewInit {
|
export class WriteComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
|
@Input()
|
||||||
|
curReceiverList: UserInfo[] = [];
|
||||||
|
@Input()
|
||||||
|
detail?: DetailResponse;
|
||||||
|
|
||||||
@Output()
|
@Output()
|
||||||
send = new EventEmitter<Message>();
|
send = new EventEmitter<Message>();
|
||||||
|
|
||||||
|
@ -79,6 +89,8 @@ export class WriteComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
receiverList: UserInfo[] = [];
|
receiverList: UserInfo[] = [];
|
||||||
contentLength = 0;
|
contentLength = 0;
|
||||||
|
|
||||||
|
isModify = false;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
private formBuilder: FormBuilder,
|
private formBuilder: FormBuilder,
|
||||||
private dialogService: DialogService,
|
private dialogService: DialogService,
|
||||||
|
@ -90,6 +102,27 @@ export class WriteComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
this.messageWriteForm = this.formBuilder.group({
|
this.messageWriteForm = this.formBuilder.group({
|
||||||
title: ['', []]
|
title: ['', []]
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!!this.curReceiverList && this.curReceiverList.length > 0) {
|
||||||
|
this.receiverList = this.curReceiverList;
|
||||||
|
} else if (!!this.detail && this.detail.recvList.length > 0) {
|
||||||
|
this.receiverList = this.detail.recvList.map(recvInfo =>
|
||||||
|
this.convertDetailReceivertoUserInfo(recvInfo)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!!this.detail && !!this.detail.msgInfo) {
|
||||||
|
this.isModify = true;
|
||||||
|
|
||||||
|
if (!!this.detail.msgInfo.title) {
|
||||||
|
this.messageWriteForm.setValue({ title: this.detail.msgInfo.title });
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!!this.detail.contents && this.detail.contents.length > 0) {
|
||||||
|
// 내용이 있다.
|
||||||
|
this.detail.contents.map(cont => console.log(cont));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnDestroy(): void {}
|
ngOnDestroy(): void {}
|
||||||
|
@ -379,4 +412,38 @@ export class WriteComponent implements OnInit, OnDestroy, AfterViewInit {
|
||||||
|
|
||||||
range.insertNode(node);
|
range.insertNode(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private convertDetailReceivertoUserInfo(base: DetailReceiver): UserInfo {
|
||||||
|
return {
|
||||||
|
seq: base.userSeq,
|
||||||
|
name: base.userName,
|
||||||
|
profileImageFile: '',
|
||||||
|
grade: '',
|
||||||
|
intro: '',
|
||||||
|
companyCode: '',
|
||||||
|
hpNumber: '',
|
||||||
|
lineNumber: '',
|
||||||
|
email: '',
|
||||||
|
isMobile: false,
|
||||||
|
deptName: '',
|
||||||
|
isFavorit: false,
|
||||||
|
isBuddy: false,
|
||||||
|
isActive: false,
|
||||||
|
roleCd: RoleCode.Self,
|
||||||
|
employeeNum: '',
|
||||||
|
madn: '',
|
||||||
|
hardSadn: '',
|
||||||
|
fmcSadn: '',
|
||||||
|
nameEn: '',
|
||||||
|
nameCn: '',
|
||||||
|
gradeEn: '',
|
||||||
|
gradeCn: '',
|
||||||
|
deptNameEn: '',
|
||||||
|
deptNameCn: '',
|
||||||
|
isPrivacyAgree: false,
|
||||||
|
isValidLogin: false,
|
||||||
|
employeeType: EmployeeType.Regular,
|
||||||
|
nickName: ''
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,8 @@ export class ProfileComponent implements OnInit {
|
||||||
@Output()
|
@Output()
|
||||||
openChat = new EventEmitter<UserInfo | UserInfoF>();
|
openChat = new EventEmitter<UserInfo | UserInfoF>();
|
||||||
@Output()
|
@Output()
|
||||||
|
sendMessage = new EventEmitter<UserInfo | UserInfoF>();
|
||||||
|
@Output()
|
||||||
toggleFavorit = new EventEmitter<{
|
toggleFavorit = new EventEmitter<{
|
||||||
userInfo: UserInfo | UserInfoF;
|
userInfo: UserInfo | UserInfoF;
|
||||||
isFavorit: boolean;
|
isFavorit: boolean;
|
||||||
|
@ -65,7 +67,9 @@ export class ProfileComponent implements OnInit {
|
||||||
|
|
||||||
onClickVideoConference() {}
|
onClickVideoConference() {}
|
||||||
|
|
||||||
onClickMessage() {}
|
onClickMessage() {
|
||||||
|
this.sendMessage.emit(this.userInfo);
|
||||||
|
}
|
||||||
|
|
||||||
onToggleFavorit() {
|
onToggleFavorit() {
|
||||||
this.isFavorit = !this.isFavorit;
|
this.isFavorit = !this.isFavorit;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user