코끼리알림, TMS 알림 알림방 및 이벤트 처리.

This commit is contained in:
leejinho 2019-12-26 10:20:36 +09:00
parent 0ac2717bbf
commit 36c2044747
17 changed files with 207 additions and 11 deletions

View File

@ -57,7 +57,14 @@
<ng-container *ngSwitchCase="RoomType.Mytalk"> <ng-container *ngSwitchCase="RoomType.Mytalk">
MyTalk MyTalk
</ng-container> </ng-container>
<ng-container *ngSwitchCase="RoomType.Bot || RoomType.Allim"> <ng-container
*ngSwitchCase="
RoomType.Bot ||
RoomType.Allim ||
RoomType.Allim_Elephant ||
RoomType.Allim_TMS
"
>
{{ _roomUserInfos | ucapTranslate: 'name':',' }} {{ _roomUserInfos | ucapTranslate: 'name':',' }}
</ng-container> </ng-container>
<ng-container *ngSwitchDefault> <ng-container *ngSwitchDefault>

View File

@ -386,7 +386,9 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
if ( if (
this.roomInfo.roomType === RoomType.Bot || this.roomInfo.roomType === RoomType.Bot ||
this.roomInfo.roomType === RoomType.Allim || this.roomInfo.roomType === RoomType.Allim ||
this.roomInfo.roomType === RoomType.Link this.roomInfo.roomType === RoomType.Link ||
this.roomInfo.roomType === RoomType.Allim_Elephant ||
this.roomInfo.roomType === RoomType.Allim_TMS
) { ) {
return false; return false;
} }
@ -419,7 +421,9 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
this.roomInfo.roomType === RoomType.Mytalk || this.roomInfo.roomType === RoomType.Mytalk ||
this.roomInfo.roomType === RoomType.Allim || this.roomInfo.roomType === RoomType.Allim ||
this.roomInfo.roomType === RoomType.Bot || this.roomInfo.roomType === RoomType.Bot ||
this.roomInfo.roomType === RoomType.Link this.roomInfo.roomType === RoomType.Link ||
this.roomInfo.roomType === RoomType.Allim_Elephant ||
this.roomInfo.roomType === RoomType.Allim_TMS
) { ) {
return false; return false;
} }
@ -434,8 +438,11 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
} }
if ( if (
this.roomInfo.roomType === RoomType.Mytalk || this.roomInfo.roomType === RoomType.Mytalk ||
this.roomInfo.roomType === RoomType.Allim ||
this.roomInfo.roomType === RoomType.Bot || this.roomInfo.roomType === RoomType.Bot ||
this.roomInfo.roomType === RoomType.Allim this.roomInfo.roomType === RoomType.Link ||
this.roomInfo.roomType === RoomType.Allim_Elephant ||
this.roomInfo.roomType === RoomType.Allim_TMS
) { ) {
return false; return false;
} }
@ -1180,7 +1187,10 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewInit {
onClickOpenProfile(userInfo: UserInfo) { onClickOpenProfile(userInfo: UserInfo) {
if ( if (
this.roomInfo.roomType !== RoomType.Allim && this.roomInfo.roomType !== RoomType.Allim &&
this.roomInfo.roomType !== RoomType.Bot this.roomInfo.roomType !== RoomType.Bot &&
this.roomInfo.roomType !== RoomType.Link &&
this.roomInfo.roomType !== RoomType.Allim_Elephant &&
this.roomInfo.roomType !== RoomType.Allim_TMS
) { ) {
this.openProfile.emit(userInfo); this.openProfile.emit(userInfo);
} }

View File

@ -0,0 +1,26 @@
import { JsonAnalization } from '@ucap-webmessenger/api';
import { EventJsonDecoder } from './event-json';
export interface AllimEventJson {
title?: string;
content?: string;
sendName?: string;
postDate?: string;
}
export const decodeAllimEventJson: EventJsonDecoder<AllimEventJson> = (
message: string
) => {
try {
const json = JsonAnalization.receiveAnalization(message);
return {
title: json.title,
content: json.content,
sendName: json.send_name,
postDate: json.post_date
} as AllimEventJson;
} catch (e) {
return {} as AllimEventJson;
}
};

View File

@ -46,6 +46,7 @@ import {
NotificationForTimerRoomEventJson, NotificationForTimerRoomEventJson,
decodeNotificationForTimerRoomEventJson decodeNotificationForTimerRoomEventJson
} from './notification-for-timer-room.event-json'; } from './notification-for-timer-room.event-json';
import { decodeAllimEventJson, AllimEventJson } from './allim.event-json';
export type EventJson = export type EventJson =
| string | string
@ -65,7 +66,8 @@ export type EventJson =
| TranslationEventJson | TranslationEventJson
| MassTranslationEventJson | MassTranslationEventJson
| VideoStreammingEventJson | VideoStreammingEventJson
| GuideForRoomTimerChangedEventJson; | GuideForRoomTimerChangedEventJson
| AllimEventJson;
export const decodeEventJson = ( export const decodeEventJson = (
eventType: EventType, eventType: EventType,
@ -118,6 +120,10 @@ export const decodeEventJson = (
return message; return message;
case EventType.VideoStreamming: case EventType.VideoStreamming:
return decodeVideoStreammingEventJson(message); return decodeVideoStreammingEventJson(message);
case EventType.AllimElephant:
case EventType.AllimTms:
return decodeAllimEventJson(message);
default: default:
return message; return message;
} }

View File

@ -44,5 +44,13 @@ export enum EventType {
/** A: 챗봇 대용량 대화 전송 */ /** A: 챗봇 대용량 대화 전송 */
ChatbotSendMass = 'A', ChatbotSendMass = 'A',
/** M: 동영상 스트리밍 */ /** M: 동영상 스트리밍 */
VideoStreamming = 'M' VideoStreamming = 'M',
/** O: SNS 공유 */
SnsShare = 'O',
// [daesang]
/** p: 코끼리 알림 */
AllimElephant = 'p',
/** g: TMS 알림 */
AllimTms = 'g'
} }

View File

@ -13,6 +13,7 @@ export * from './lib/protocols/send';
export * from './lib/protocols/event-json/event-json'; export * from './lib/protocols/event-json/event-json';
export * from './lib/protocols/event-json/allim.event-json';
export * from './lib/protocols/event-json/character.event-json'; export * from './lib/protocols/event-json/character.event-json';
export * from './lib/protocols/event-json/exit.event-json'; export * from './lib/protocols/event-json/exit.event-json';
export * from './lib/protocols/event-json/file.event-json'; export * from './lib/protocols/event-json/file.event-json';

View File

@ -16,7 +16,12 @@ export enum RoomType {
/** L: 링크(Legacy) */ /** L: 링크(Legacy) */
Link = 'L', Link = 'L',
/** K: MyTalk(나와의 대화) */ /** K: MyTalk(나와의 대화) */
Mytalk = 'K' Mytalk = 'K',
/** [daesang - 코끼리 알림] */
Allim_Elephant = 'k',
/** [daesang - TMS 알림] */
Allim_TMS = 't'
} }
export enum RoomExitType { export enum RoomExitType {
@ -49,6 +54,8 @@ export function isReadCountRoom(roomType: RoomType): boolean {
RoomType.Single === roomType || RoomType.Single === roomType ||
RoomType.Multi === roomType || RoomType.Multi === roomType ||
RoomType.Bot === roomType || RoomType.Bot === roomType ||
RoomType.Allim === roomType RoomType.Allim === roomType ||
RoomType.Allim_Elephant === roomType ||
RoomType.Allim_TMS === roomType
); );
} }

View File

@ -0,0 +1,21 @@
<div class="event-main">
<div class="event-header">
{{ message.sentMessageJson.title }}
</div>
<ul class="event-info">
<li class="event-title">
{{ message.sentMessageJson.content }}
</li>
<li class="event-date">
<span>발송인</span>{{ message.sentMessageJson.sendName }}
</li>
<li class="event-time">
<span>발송시간</span
>{{ message.sentMessageJson.postDate | ucapDate: 'YYYY.MM.DD a hh:mm' }}
</li>
</ul>
<!-- <div class="btn-box">
<button mat-button (click)="onClickSave()">상세보기</button>
</div> -->
</div>

View File

@ -0,0 +1,42 @@
.event-main {
flex-direction: column;
text-align: left;
.event-header {
padding: 10px;
background-color: #efefef;
text-align: center;
font-size: 14px;
font-weight: 600;
}
.event-info {
padding: 10px 14px;
line-height: 1.6em;
li {
margin-bottom: 4px;
&.event-title {
border-bottom: 1px solid #dddddd;
margin-bottom: 10px;
padding-bottom: 10px;
font-size: 14px;
}
&.event-date,
&.event-time {
color: #666666;
}
span {
padding: 2px 6px;
background-color: #efefef;
margin-right: 10px;
}
}
}
.btn-box {
border-top: 1px solid #dddddd;
height: 40px;
.mat-button {
width: 100%;
display: block;
}
}
}

View File

@ -0,0 +1,24 @@
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { AllimComponent } from './allim.component';
describe('Chat::MessageBox::AllimComponent', () => {
let component: AllimComponent;
let fixture: ComponentFixture<AllimComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [AllimComponent]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(AllimComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@ -0,0 +1,16 @@
import { Component, OnInit, Input } from '@angular/core';
import { Info, AllimEventJson } from '@ucap-webmessenger/protocol-event';
@Component({
selector: 'ucap-chat-message-box-allim',
templateUrl: './allim.component.html',
styleUrls: ['./allim.component.scss']
})
export class AllimComponent implements OnInit {
@Input()
message: Info<AllimEventJson>;
constructor() {}
ngOnInit() {}
}

View File

@ -167,6 +167,19 @@
(contextmenu)="onContextMenuMessage($event, message)" (contextmenu)="onContextMenuMessage($event, message)"
> >
</ucap-chat-message-box-schedule> </ucap-chat-message-box-schedule>
<ucap-chat-message-box-allim
*ngSwitchCase="EventType.AllimTms"
[message]="message"
class="information-msg"
>
</ucap-chat-message-box-allim>
<ucap-chat-message-box-allim
*ngSwitchCase="EventType.AllimElephant"
[message]="message"
class="information-msg"
>
</ucap-chat-message-box-allim>
<div *ngSwitchDefault> <div *ngSwitchDefault>
<!-- mass-translation <!-- mass-translation
<ucap-chat-message-box-mass-translation></ucap-chat-message-box-mass-translation> <ucap-chat-message-box-mass-translation></ucap-chat-message-box-mass-translation>

View File

@ -31,6 +31,7 @@ import { TextComponent as MBTextComponent } from './components/message-box/text.
import { TranslationComponent as MBTranslationComponent } from './components/message-box/translation.component'; import { TranslationComponent as MBTranslationComponent } from './components/message-box/translation.component';
import { VideoComponent as MBVideoComponent } from './components/message-box/video.component'; import { VideoComponent as MBVideoComponent } from './components/message-box/video.component';
import { VideoConferenceComponent as MBVideoConferenceComponent } from './components/message-box/video-conference.component'; import { VideoConferenceComponent as MBVideoConferenceComponent } from './components/message-box/video-conference.component';
import { AllimComponent as MBAllimComponent } from './components/message-box/allim.component';
import { SearchComponent } from './components/search.component'; import { SearchComponent } from './components/search.component';
const COMPONENTS = [ const COMPONENTS = [
@ -53,7 +54,8 @@ const COMPONENTS = [
MBTextComponent, MBTextComponent,
MBTranslationComponent, MBTranslationComponent,
MBVideoComponent, MBVideoComponent,
MBVideoConferenceComponent MBVideoConferenceComponent,
MBAllimComponent
]; ];
const SERVICES = []; const SERVICES = [];
const PROVIDERS = [DatePipe]; const PROVIDERS = [DatePipe];

View File

@ -2,6 +2,7 @@
* Public API Surface of ucap-webmessenger-ui-chat * Public API Surface of ucap-webmessenger-ui-chat
*/ */
export * from './lib/components/message-box/allim.component';
export * from './lib/components/message-box/date-splitter.component'; export * from './lib/components/message-box/date-splitter.component';
export * from './lib/components/message-box/file.component'; export * from './lib/components/message-box/file.component';
export * from './lib/components/message-box/image.component'; export * from './lib/components/message-box/image.component';

View File

@ -148,6 +148,9 @@ export class ProfileComponent implements OnInit {
case 'V04': case 'V04':
workstatus = '장기휴가'; workstatus = '장기휴가';
break; break;
case 'V05':
workstatus = '장기 리프레쉬';
break;
} }
} }

View File

@ -31,7 +31,14 @@
<ng-container *ngSwitchCase="RoomType.Mytalk"> <ng-container *ngSwitchCase="RoomType.Mytalk">
MyTalk MyTalk
</ng-container> </ng-container>
<ng-container *ngSwitchCase="RoomType.Bot || RoomType.Allim"> <ng-container
*ngSwitchCase="
RoomType.Bot ||
RoomType.Allim ||
RoomType.Allim_Elephant ||
RoomType.Allim_TMS
"
>
{{ _roomUserInfos | ucapTranslate: 'name':',' }} {{ _roomUserInfos | ucapTranslate: 'name':',' }}
</ng-container> </ng-container>
<ng-container *ngSwitchDefault> <ng-container *ngSwitchDefault>

View File

@ -74,6 +74,8 @@ export class ListItemComponent implements OnInit {
case RoomType.Single: case RoomType.Single:
case RoomType.Bot: case RoomType.Bot:
case RoomType.Allim: case RoomType.Allim:
case RoomType.Allim_Elephant:
case RoomType.Allim_TMS:
const others = this.roomUserInfo.filter( const others = this.roomUserInfo.filter(
v => v.seq !== this.loginRes.userSeq v => v.seq !== this.loginRes.userSeq
); );