diff --git a/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-download.ts b/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-download.ts index cfbdc407..b786c9d1 100644 --- a/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-download.ts +++ b/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-download.ts @@ -4,8 +4,11 @@ import { APIResponse, APIEncoder, APIDecoder, - ParameterUtil + ParameterUtil, + JsonAnalization, + StatusCode } from '@ucap-webmessenger/api'; +import { JsonObject } from 'type-fest'; export interface MassTalkDownloadRequest extends APIRequest { userSeq: number; @@ -36,11 +39,19 @@ export const encodeMassTalkDownload: APIEncoder = ( export const decodeMassTalkDownload: APIDecoder = ( res: any ) => { - return { - statusCode: res.StatusCode, - errorMessage: res.ErrorMessage, - content: res.Content, - userName: res.UserName, - regDate: res.RegDate - } as MassTalkDownloadResponse; + try { + const json: JsonObject | Error = JsonAnalization.receiveAnalization(res); + return { + statusCode: json.StatusCode, + errorMessage: json.ErrorMessage, + content: json.Content, + userName: json.UserName, + regDate: json.RegDate + } as MassTalkDownloadResponse; + } catch (e) { + return { + statusCode: StatusCode.Fail, + errorMessage: e + } as MassTalkDownloadResponse; + } }; diff --git a/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-save.ts b/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-save.ts index 648c3711..3f8a4fa4 100644 --- a/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-save.ts +++ b/projects/ucap-webmessenger-api-common/src/lib/apis/mass-talk-save.ts @@ -4,25 +4,35 @@ import { APIResponse, APIEncoder, APIDecoder, - ParameterUtil + ParameterUtil, + StatusCode, + JsonAnalization } from '@ucap-webmessenger/api'; +import { JsonObject } from 'type-fest'; export interface MassTalkSaveRequest extends APIRequest { - userSeq: string; + userSeq: number; deviceType: DeviceType; token: string; content?: string; - roomId?: string; + roomSeq?: string; } export interface MassTalkSaveResponse extends APIResponse { - EventMassSEQ?: string; - RoomID?: string; - RegDate?: string; - Content?: string; + eventMassSeq?: string; + roomID?: string; + regDate?: string; + content?: string; + returnJson?: any; } -const massTalkSaveEncodeMap = {}; +const massTalkSaveEncodeMap = { + userSeq: 'p_user_seq', + deviceType: 'p_device_type', + token: 'p_token', + content: 'p_content', + roomSeq: 'p_room_id' +}; export const encodeMassTalkSave: APIEncoder = ( req: MassTalkSaveRequest @@ -33,5 +43,21 @@ export const encodeMassTalkSave: APIEncoder = ( export const decodeMassTalkSave: APIDecoder = ( res: any ) => { - return {} as MassTalkSaveResponse; + try { + const json: JsonObject | Error = JsonAnalization.receiveAnalization(res); + return { + statusCode: json.StatusCode, + errorMessage: json.ErrorMessage, + content: json.Content, + eventMassSeq: json.EventMassSeq, + regDate: json.RegDate, + roomID: json.RoomID, + returnJson: res + } as MassTalkSaveResponse; + } catch (e) { + return { + statusCode: StatusCode.Fail, + errorMessage: e + } as MassTalkSaveResponse; + } }; diff --git a/projects/ucap-webmessenger-api-common/src/lib/services/common-api.service.ts b/projects/ucap-webmessenger-api-common/src/lib/services/common-api.service.ts index 7e401ac2..bbd7b547 100644 --- a/projects/ucap-webmessenger-api-common/src/lib/services/common-api.service.ts +++ b/projects/ucap-webmessenger-api-common/src/lib/services/common-api.service.ts @@ -134,7 +134,8 @@ export class CommonApiService { this.moduleConfig.urls.massTalkDownload, {}, { - params: encodeMassTalkDownload(req) + params: encodeMassTalkDownload(req), + responseType: 'text' as 'json' } ) .pipe(map(res => decodeMassTalkDownload(res))); @@ -148,7 +149,8 @@ export class CommonApiService { this.moduleConfig.urls.massTalkSave, {}, { - params: encodeMassTalkSave(req) + params: encodeMassTalkSave(req), + responseType: 'text' as 'json' } ) .pipe(map(res => decodeMassTalkSave(res))); diff --git a/projects/ucap-webmessenger-api/src/lib/types/status-code.type.ts b/projects/ucap-webmessenger-api/src/lib/types/status-code.type.ts index a5c41a9f..ec9005b5 100644 --- a/projects/ucap-webmessenger-api/src/lib/types/status-code.type.ts +++ b/projects/ucap-webmessenger-api/src/lib/types/status-code.type.ts @@ -1,3 +1,4 @@ export enum StatusCode { - Success = '200' + Success = '200', + Fail = '500' } diff --git a/projects/ucap-webmessenger-api/src/lib/utils/json.util.ts b/projects/ucap-webmessenger-api/src/lib/utils/json.util.ts new file mode 100644 index 00000000..25f8964a --- /dev/null +++ b/projects/ucap-webmessenger-api/src/lib/utils/json.util.ts @@ -0,0 +1,20 @@ +import { JsonObject } from 'type-fest'; + +export class JsonAnalization { + public static receiveAnalization(jsonStr: string): JsonObject { + const startJson = jsonStr.indexOf('{'); + const endJson = jsonStr.lastIndexOf('}'); + + if (startJson >= 0 && startJson < endJson) { + jsonStr = jsonStr + .substring(startJson, endJson + 1) + .replace(/\n"/gi, '"') + .replace(/\n}/gi, '}') + .replace(/\n/gi, '\\n'); + + return JSON.parse(jsonStr); + } else { + throw new Error('Invalid Json String'); + } + } +} diff --git a/projects/ucap-webmessenger-api/src/public-api.ts b/projects/ucap-webmessenger-api/src/public-api.ts index 145c80d0..1482b72c 100644 --- a/projects/ucap-webmessenger-api/src/public-api.ts +++ b/projects/ucap-webmessenger-api/src/public-api.ts @@ -6,5 +6,6 @@ export * from './lib/apis/api'; export * from './lib/types/status-code.type'; +export * from './lib/utils/json.util'; export * from './lib/utils/parameter.util'; export * from './lib/utils/url.util'; 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 77ae5ad9..ca3a84af 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 @@ -1,4 +1,3 @@ -import { forward } from './../../../store/messenger/event/actions'; import { Component, OnInit, @@ -55,6 +54,7 @@ import { ImageViewerDialogData, ImageViewerDialogResult } from '@app/layouts/common/dialogs/image-viewer.dialog.component'; +import { Maximum_Range } from '@ucap-webmessenger/core'; @Component({ selector: 'app-layout-messenger-messages', @@ -189,16 +189,31 @@ export class MessagesComponent implements OnInit, OnDestroy, AfterViewChecked { selectContact() {} onSendMessage(message: string) { - this.store.dispatch( - EventStore.send({ - senderSeq: this.loginRes.userSeq, - req: { - roomSeq: this.roomInfo.roomSeq, - eventType: EventType.Character, - sentMessage: message - } - }) - ); + if (message.trim().length > Maximum_Range.MassText) { + // MASS TEXT + this.store.dispatch( + EventStore.sendMass({ + senderSeq: this.loginRes.userSeq, + req: { + roomSeq: this.roomInfo.roomSeq, + eventType: EventType.MassText, + // sentMessage: message.replace(/\n/gi, '\r\n') + sentMessage: message + } + }) + ); + } else { + this.store.dispatch( + EventStore.send({ + senderSeq: this.loginRes.userSeq, + req: { + roomSeq: this.roomInfo.roomSeq, + eventType: EventType.Character, + sentMessage: message + } + }) + ); + } } onClickReceiveAlarm() { diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.html deleted file mode 100644 index 2229c733..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 새 그룹 추가 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.spec.ts deleted file mode 100644 index 421bfc22..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { CreateGroupDialogComponent } from './create-group.dialog.component'; - -describe('app::layouts::messenger::CreateGroupDialogComponent', () => { - let component: CreateGroupDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [CreateGroupDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(CreateGroupDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.ts deleted file mode 100644 index 6ae5d6b1..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/create-group.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface CreateGroupDialogData { - title: string; - message?: string; -} - -export interface CreateGroupDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-create-group', - templateUrl: './create-group.dialog.component.html', - styleUrls: ['./create-group.dialog.component.scss'] -}) -export class CreateGroupDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - CreateGroupDialogData, - CreateGroupDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: CreateGroupDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.html deleted file mode 100644 index a6ad0056..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 그룹 삭제 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.spec.ts deleted file mode 100644 index e279601d..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EditGroupDialogComponent } from './edit-group.dialog.component'; - -describe('app::layouts::messenger::EditGroupDialogComponent', () => { - let component: EditGroupDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [EditGroupDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EditGroupDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.ts deleted file mode 100644 index db8d4026..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/delete-group.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface DeleteGroupDialogData { - title: string; - message?: string; -} - -export interface DeleteGroupDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-delete-group', - templateUrl: './delete-group.dialog.component.html', - styleUrls: ['./delete-group.dialog.component.scss'] -}) -export class DeleteGroupDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - DeleteGroupDialogData, - DeleteGroupDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: DeleteGroupDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.html deleted file mode 100644 index f0f997bf..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 그룹 맴버 수정 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.spec.ts deleted file mode 100644 index 24f3444d..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { EditGroupMemberDialogComponent } from './edit-group-member.dialog.component'; - -describe('app::layouts::messenger::EditGroupMemberDialogComponent', () => { - let component: EditGroupMemberDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [EditGroupMemberDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(EditGroupMemberDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.ts deleted file mode 100644 index 2656c44f..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/edit-group-member.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface EditGroupMemberDialogData { - title: string; - message?: string; -} - -export interface EditGroupMemberDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-edit-group-member', - templateUrl: './edit-group-member.dialog.component.html', - styleUrls: ['./edit-group-member.dialog.component.scss'] -}) -export class EditGroupMemberDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - EditGroupMemberDialogData, - EditGroupMemberDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: EditGroupMemberDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/index.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/index.ts index 89091363..37f036df 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/index.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/group/index.ts @@ -1,13 +1,4 @@ -import { CreateGroupDialogComponent } from './create-group.dialog.component'; -import { DeleteGroupDialogComponent } from './delete-group.dialog.component'; import { SelectGroupDialogComponent } from './select-group.dialog.component'; import { EditGroupDialogComponent } from './edit-group.dialog.component'; -import { EditGroupMemberDialogComponent } from './edit-group-member.dialog.component'; -export const DIALOGS = [ - CreateGroupDialogComponent, - DeleteGroupDialogComponent, - SelectGroupDialogComponent, - EditGroupDialogComponent, - EditGroupMemberDialogComponent -]; +export const DIALOGS = [SelectGroupDialogComponent, EditGroupDialogComponent]; diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/index.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/index.ts index f38a4c2e..1d7719a2 100644 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/index.ts +++ b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/index.ts @@ -1,5 +1,4 @@ import { DIALOGS as CHAT_DIALOGS } from './chat'; import { DIALOGS as GROUP_DIALOGS } from './group'; -import { DIALOGS as MESSAGE_DIALOGS } from './message'; -export const DIALOGS = [...CHAT_DIALOGS, ...GROUP_DIALOGS, ...MESSAGE_DIALOGS]; +export const DIALOGS = [...CHAT_DIALOGS, ...GROUP_DIALOGS]; diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.html deleted file mode 100644 index 6f16ec08..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 대화 삭제 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.spec.ts deleted file mode 100644 index 205ed5f6..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { DeleteMessageDialogComponent } from './delete-message.dialog.component'; - -describe('app::layouts::messenger::DeleteMessageDialogComponent', () => { - let component: DeleteMessageDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [DeleteMessageDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(DeleteMessageDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.ts deleted file mode 100644 index b08fb258..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/delete-message.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface DeleteMessageDialogData { - title: string; - message?: string; -} - -export interface DeleteMessageDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-delete-message', - templateUrl: './delete-message.dialog.component.html', - styleUrls: ['./delete-message.dialog.component.scss'] -}) -export class DeleteMessageDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - DeleteMessageDialogData, - DeleteMessageDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: DeleteMessageDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/index.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/index.ts deleted file mode 100644 index a38da889..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { DeleteMessageDialogComponent } from './delete-message.dialog.component'; -import { RelayMessageDialogComponent } from './relay-message.dialog.component'; - -export const DIALOGS = [ - DeleteMessageDialogComponent, - RelayMessageDialogComponent -]; diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.html deleted file mode 100644 index b9322b53..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 대화 회수 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.spec.ts deleted file mode 100644 index e5006cc4..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { RecallMessageDialogComponent } from './recall-message.dialog.component'; - -describe('app::layouts::messenger::RecallMessageDialogComponent', () => { - let component: RecallMessageDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [RecallMessageDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(RecallMessageDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.ts deleted file mode 100644 index cd11934d..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/recall-message.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface RecallMessageDialogData { - title: string; - message?: string; -} - -export interface RecallMessageDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-recall-message', - templateUrl: './recall-message.dialog.component.html', - styleUrls: ['./recall-message.dialog.component.scss'] -}) -export class RecallMessageDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - RecallMessageDialogData, - RecallMessageDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: RecallMessageDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.html b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.html deleted file mode 100644 index bbcdd34b..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.html +++ /dev/null @@ -1,18 +0,0 @@ - - - 대화 전달 - - - - - - - diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.scss b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.scss deleted file mode 100644 index e69de29b..00000000 diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.spec.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.spec.ts deleted file mode 100644 index de92d8ca..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.spec.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { async, ComponentFixture, TestBed } from '@angular/core/testing'; - -import { RelayMessageDialogComponent } from './relay-message.dialog.component'; - -describe('app::layouts::messenger::RelayMessageDialogComponent', () => { - let component: RelayMessageDialogComponent; - let fixture: ComponentFixture; - - beforeEach(async(() => { - TestBed.configureTestingModule({ - declarations: [RelayMessageDialogComponent] - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(RelayMessageDialogComponent); - component = fixture.componentInstance; - fixture.detectChanges(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); -}); diff --git a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.ts b/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.ts deleted file mode 100644 index cdca4618..00000000 --- a/projects/ucap-webmessenger-app/src/app/layouts/messenger/dialogs/message/relay-message.dialog.component.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material'; - -export interface RelayMessageDialogData { - title: string; - message?: string; -} - -export interface RelayMessageDialogResult { - choice: boolean; -} - -@Component({ - selector: 'app-layout-messenger-relay-message', - templateUrl: './relay-message.dialog.component.html', - styleUrls: ['./relay-message.dialog.component.scss'] -}) -export class RelayMessageDialogComponent implements OnInit { - constructor( - public dialogRef: MatDialogRef< - RelayMessageDialogData, - RelayMessageDialogResult - >, - @Inject(MAT_DIALOG_DATA) public data: RelayMessageDialogData - ) {} - - ngOnInit(): void {} - - onClickChoice(choice: boolean): void { - this.dialogRef.close({ - choice - }); - } -} diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/event/actions.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/event/actions.ts index 69e78390..7ae76dc2 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/event/actions.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/event/actions.ts @@ -95,6 +95,22 @@ export const forwardAfterRoomOpen = createAction( }>() ); +export const sendMass = createAction( + '[Messenger::Event] Send Mass', + props<{ senderSeq: number; req: SendRequest }>() +); +export const sendMassSuccess = createAction( + '[Messenger::Event] Send Mass Success', + props<{ + senderSeq: number; + res: SendResponse; + }>() +); +export const sendMassFailure = createAction( + '[Messenger::Event] Send Mass Failure', + props<{ error: any }>() +); + export const read = createAction( '[Messenger::Event] read', props() 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 6df3a803..7e928630 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 @@ -1,3 +1,8 @@ +import { + CommonApiService, + MassTalkSaveRequest +} from '@ucap-webmessenger/api-common'; +import { KEY_ENVIRONMENTS_INFO } from './../../../types/environment.type'; import { Injectable } from '@angular/core'; import { Actions, createEffect, ofType } from '@ngrx/effects'; @@ -25,7 +30,8 @@ import { SendResponse, ReadResponse, DelResponse, - CancelResponse + CancelResponse, + EventType } from '@ucap-webmessenger/protocol-event'; import * as ChatStore from '@app/store/messenger/chat'; @@ -54,7 +60,9 @@ import { cancelFailure, forward, forwardFailure, - forwardAfterRoomOpen + forwardAfterRoomOpen, + sendMass, + sendMassFailure } from './actions'; import { SessionStorageService } from '@ucap-webmessenger/web-storage'; import { @@ -62,9 +70,12 @@ import { RoomProtocolService, OpenResponse } from '@ucap-webmessenger/protocol-room'; -import { LoginInfo, KEY_LOGIN_INFO } from '@app/types'; +import { LoginInfo, KEY_LOGIN_INFO, EnvironmentsInfo } from '@app/types'; import { Dictionary } from '@ngrx/entity'; import { openSuccess, openFailure } from '../room'; +import { LoginResponse } from '@ucap-webmessenger/protocol-authentication'; +import { KEY_LOGIN_RES_INFO } from '@app/types/login-res-info.type'; +import { StatusCode } from '@ucap-webmessenger/api'; @Injectable() export class Effects { @@ -289,6 +300,52 @@ export class Effects { ) ); + sendMass$ = createEffect( + () => { + return this.actions$.pipe( + ofType(sendMass), + exhaustMap(action => { + const loginResInfo: LoginResponse = this.sessionStorageService.get< + LoginResponse + >(KEY_LOGIN_RES_INFO); + + const environmentsInfo = this.sessionStorageService.get< + EnvironmentsInfo + >(KEY_ENVIRONMENTS_INFO); + + const req: MassTalkSaveRequest = { + userSeq: loginResInfo.userSeq, + deviceType: environmentsInfo.deviceType, + token: loginResInfo.tokenString, + content: action.req.sentMessage, + roomSeq: action.req.roomSeq + }; + + return this.commonApiService.massTalkSave(req).pipe( + map(res => { + if (res.statusCode === StatusCode.Success) { + this.store.dispatch( + send({ + senderSeq: action.senderSeq, + req: { + roomSeq: res.roomID, + eventType: EventType.MassText, + sentMessage: res.returnJson + } + }) + ); + } else { + this.store.dispatch(sendMassFailure({ error: res })); + } + }), + catchError(error => of(sendMassFailure({ error }))) + ); + }) + ); + }, + { dispatch: false } + ); + newInfo$ = createEffect( () => { return this.actions$.pipe( @@ -428,6 +485,7 @@ export class Effects { constructor( private actions$: Actions, private store: Store, + private commonApiService: CommonApiService, private eventProtocolService: EventProtocolService, private roomProtocolService: RoomProtocolService, private sessionStorageService: SessionStorageService, diff --git a/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts b/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts index 7fe5b51b..71759188 100644 --- a/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts +++ b/projects/ucap-webmessenger-app/src/app/store/messenger/sync/reducers.ts @@ -1,3 +1,4 @@ +import { JsonObject } from 'type-fest'; import { createReducer, on } from '@ngrx/store'; import { initialState, @@ -30,6 +31,7 @@ import * as RoomStore from '@app/store/messenger/room'; import { RoomInfo } from '@ucap-webmessenger/protocol-room'; import { EventType } from '@ucap-webmessenger/protocol-event'; import { FileType } from '@ucap-webmessenger/protocol-file'; +import { JsonAnalization } from '@ucap-webmessenger/api'; export const reducer = createReducer( initialState, @@ -119,6 +121,18 @@ export const reducer = createReducer( case EventType.VideoConference: finalEventMessage = '화상회의'; break; + case EventType.MassText: + { + try { + const json: JsonObject | Error = JsonAnalization.receiveAnalization( + finalEventMessage + ); + finalEventMessage = json.Content.toString(); + } catch (e) { + finalEventMessage = '대용량 텍스트'; + } + } + break; } const roomInfo = { ...state.room.entities[action.roomSeq], diff --git a/projects/ucap-webmessenger-core/src/lib/type/maximum-range.type.ts b/projects/ucap-webmessenger-core/src/lib/type/maximum-range.type.ts new file mode 100644 index 00000000..ad1c7d03 --- /dev/null +++ b/projects/ucap-webmessenger-core/src/lib/type/maximum-range.type.ts @@ -0,0 +1,4 @@ +export enum Maximum_Range { + MassText = 800, + ChatRoom = 300 +} diff --git a/projects/ucap-webmessenger-core/src/public-api.ts b/projects/ucap-webmessenger-core/src/public-api.ts index 879e03a7..e02f3957 100644 --- a/projects/ucap-webmessenger-core/src/public-api.ts +++ b/projects/ucap-webmessenger-core/src/public-api.ts @@ -12,6 +12,7 @@ export * from './lib/type/device-devision.type'; export * from './lib/type/device-type.type'; export * from './lib/type/file-transfer-permissions.type'; export * from './lib/type/locale-code.type'; +export * from './lib/type/maximum-range.type'; export * from './lib/type/notification-method.type'; export * from './lib/type/organization-chart-permissions.type'; export * from './lib/type/push-type.type'; diff --git a/projects/ucap-webmessenger-ui-chat/src/lib/components/message-box/mass.component.ts b/projects/ucap-webmessenger-ui-chat/src/lib/components/message-box/mass.component.ts index 739a3eeb..1a11d3ce 100644 --- a/projects/ucap-webmessenger-ui-chat/src/lib/components/message-box/mass.component.ts +++ b/projects/ucap-webmessenger-ui-chat/src/lib/components/message-box/mass.component.ts @@ -3,6 +3,7 @@ import { Info } from '@ucap-webmessenger/protocol-event'; import { NGXLogger } from 'ngx-logger'; import { StatusCode } from '@ucap-webmessenger/api'; import { MassTextInfo } from '../../models/mass-talk-info.json'; +import { StringUtil } from '@ucap-webmessenger/ui'; @Component({ selector: 'ucap-chat-message-box-mass', @@ -24,7 +25,9 @@ export class MassComponent implements OnInit { ngOnInit() { try { - const contentJson: MassTextInfo = JSON.parse(this.message.sentMessage); + const contentJson: MassTextInfo = StringUtil.receiveAnalization( + this.message.sentMessage + ); if (contentJson.StatusCode === StatusCode.Success) { this.content = contentJson.Content; } else { diff --git a/projects/ucap-webmessenger-ui/src/lib/utils/string.util.ts b/projects/ucap-webmessenger-ui/src/lib/utils/string.util.ts index c281f032..d8f9f272 100644 --- a/projects/ucap-webmessenger-ui/src/lib/utils/string.util.ts +++ b/projects/ucap-webmessenger-ui/src/lib/utils/string.util.ts @@ -1,3 +1,5 @@ +import { JsonObject } from 'type-fest'; + export class StringUtil { /** * linefeed >
@@ -33,6 +35,26 @@ export class StringUtil { } } + /** + * Json String Analization. + */ + public static receiveAnalization(jsonStr: string): JsonObject { + const startJson = jsonStr.indexOf('{'); + const endJson = jsonStr.lastIndexOf('}'); + + if (startJson >= 0 && startJson < endJson) { + jsonStr = jsonStr + .substring(startJson, endJson + 1) + .replace(/\n"/gi, '"') + .replace(/\n}/gi, '}') + .replace(/\n/gi, '\\n'); + + return JSON.parse(jsonStr); + } else { + throw new Error('Invalid Json String'); + } + } + /** * date formater */