2019-12-03 18:59:11 +09:00
|
|
|
import { Component, OnInit, Inject, ViewChild } from '@angular/core';
|
|
|
|
import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material';
|
|
|
|
|
|
|
|
import { DialogService, SnackBarService } from '@ucap-webmessenger/ui';
|
|
|
|
|
|
|
|
import {
|
|
|
|
DetailResponse,
|
|
|
|
DetailContent,
|
|
|
|
MessageApiService
|
|
|
|
} from '@ucap-webmessenger/api-message';
|
|
|
|
|
|
|
|
import { LoginResponse } from '@ucap-webmessenger/protocol-authentication';
|
|
|
|
import { NGXLogger } from 'ngx-logger';
|
|
|
|
import { MessageStatusCode } from '@ucap-webmessenger/api';
|
2019-12-04 17:58:59 +09:00
|
|
|
import {
|
|
|
|
WriteComponent as UCapMessageWriteComponent,
|
|
|
|
Message
|
|
|
|
} from '@ucap-webmessenger/ui-message';
|
|
|
|
import { UserInfo } from '@ucap-webmessenger/protocol-sync';
|
|
|
|
import {
|
|
|
|
CreateChatDialogComponent,
|
|
|
|
CreateChatDialogData,
|
|
|
|
CreateChatDialogResult
|
|
|
|
} from '../chat/create-chat.dialog.component';
|
|
|
|
import { UserSelectDialogType, EnvironmentsInfo } from '@app/types';
|
|
|
|
import { take } from 'rxjs/operators';
|
2019-12-03 18:59:11 +09:00
|
|
|
|
|
|
|
export interface MessageWriteDialogData {
|
|
|
|
loginRes: LoginResponse;
|
2019-12-04 17:58:59 +09:00
|
|
|
environmentsInfo: EnvironmentsInfo;
|
2019-12-03 18:59:11 +09:00
|
|
|
detail?: DetailResponse;
|
|
|
|
}
|
|
|
|
|
|
|
|
// tslint:disable-next-line: no-empty-interface
|
|
|
|
export interface MessageWriteDialogResult {}
|
|
|
|
|
|
|
|
export interface DownloadQueueForMessage extends DetailContent {
|
|
|
|
downloadType: string;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
selector: 'app-layout-messenger-message-write',
|
|
|
|
templateUrl: './message-write.dialog.component.html',
|
|
|
|
styleUrls: ['./message-write.dialog.component.scss']
|
|
|
|
})
|
|
|
|
export class MessageWriteDialogComponent implements OnInit {
|
|
|
|
@ViewChild('messageWrite', { static: true })
|
|
|
|
messageWrite: UCapMessageWriteComponent;
|
|
|
|
|
|
|
|
constructor(
|
|
|
|
public dialogRef: MatDialogRef<
|
|
|
|
MessageWriteDialogData,
|
|
|
|
MessageWriteDialogResult
|
|
|
|
>,
|
|
|
|
@Inject(MAT_DIALOG_DATA) public data: MessageWriteDialogData,
|
|
|
|
private messageApiService: MessageApiService,
|
|
|
|
private snackBarService: SnackBarService,
|
|
|
|
private logger: NGXLogger,
|
|
|
|
private dialogService: DialogService
|
|
|
|
) {}
|
|
|
|
|
|
|
|
ngOnInit(): void {}
|
|
|
|
|
2019-12-04 17:58:59 +09:00
|
|
|
async onSelectReceiver(receiverList: UserInfo[]) {
|
|
|
|
const result = await this.dialogService.open<
|
|
|
|
CreateChatDialogComponent,
|
|
|
|
CreateChatDialogData,
|
|
|
|
CreateChatDialogResult
|
|
|
|
>(CreateChatDialogComponent, {
|
|
|
|
width: '600px',
|
|
|
|
data: {
|
|
|
|
type: UserSelectDialogType.EditChatMember,
|
|
|
|
title: '쪽지 수신자 선택',
|
|
|
|
curRoomUser: receiverList
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
if (!!result && !!result.choice && result.choice) {
|
|
|
|
while (receiverList.length) {
|
|
|
|
receiverList.pop();
|
|
|
|
}
|
|
|
|
result.selectedUserList.forEach(v => {
|
|
|
|
receiverList.push(v as UserInfo);
|
|
|
|
});
|
|
|
|
}
|
2019-12-03 18:59:11 +09:00
|
|
|
}
|
|
|
|
|
2019-12-04 17:58:59 +09:00
|
|
|
onSend(message: Message) {
|
|
|
|
this.messageApiService
|
|
|
|
.sendMessage({
|
|
|
|
...message,
|
|
|
|
userSeq: this.data.loginRes.userInfo.seq,
|
|
|
|
userName: this.data.loginRes.userInfo.name,
|
|
|
|
deviceType: this.data.environmentsInfo.deviceType,
|
|
|
|
tokenKey: this.data.loginRes.tokenString,
|
|
|
|
titleYn: '' !== message.title ? true : false
|
|
|
|
})
|
|
|
|
.pipe(take(1))
|
|
|
|
.subscribe(
|
|
|
|
res => {
|
|
|
|
this.logger.debug('onSend', res);
|
|
|
|
},
|
|
|
|
error => {
|
|
|
|
this.logger.debug('onSend', error);
|
|
|
|
}
|
|
|
|
);
|
2019-12-03 18:59:11 +09:00
|
|
|
}
|
|
|
|
|
2019-12-04 17:58:59 +09:00
|
|
|
getBtnValid() {
|
|
|
|
return true;
|
2019-12-03 18:59:11 +09:00
|
|
|
}
|
|
|
|
}
|