From 852eb6314f797ec659486e5ebc05510c57ff5848 Mon Sep 17 00:00:00 2001 From: Richard Park Date: Mon, 20 Jan 2020 18:01:31 +0900 Subject: [PATCH 1/3] more rendering is implemented --- .../lib/components/messages.component.html | 12 +++++---- .../lib/components/messages.component.scss | 12 +++++++++ .../src/lib/components/messages.component.ts | 26 ++++++++++++------- 3 files changed, 36 insertions(+), 14 deletions(-) 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 57ea8b25..638a3270 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 @@ -12,11 +12,7 @@ [modifyOverflowStyleOfParentScroll]="false" (vsChange)="onVsChange($event)" > -
+
+ +
diff --git a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.scss b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.scss index 9d37c920..cdbba32e 100644 --- a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.scss +++ b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.scss @@ -189,3 +189,15 @@ $meBox-bg: #ffffff; .hide { opacity: 0 !important; } + +.disappear { + display: none !important; +} + +.chat-messages-buffer { + position: absolute; + top: 0px; + overflow-y: hidden !important; + padding: 30px 40px; + flex-direction: column; +} diff --git a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.ts b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.ts index 7c78ab41..d1b4b093 100644 --- a/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.ts +++ b/projects/ucap-webmessenger-ui-chat/src/lib/components/messages.component.ts @@ -108,6 +108,9 @@ export class MessagesComponent implements OnInit, OnDestroy { @ViewChild('chatMessagesContainer', { static: false }) chatMessagesContainer: ElementRef; + @ViewChild('chatMessagesBuffer', { static: false }) + chatMessagesBuffer: ElementRef; + @ViewChild(PerfectScrollbarDirective, { static: false }) psChatContent: PerfectScrollbarDirective; @@ -142,7 +145,6 @@ export class MessagesComponent implements OnInit, OnDestroy { moment = moment; existReadHere = false; - fixScreen = false; constructor( private logger: NGXLogger, @@ -382,11 +384,13 @@ export class MessagesComponent implements OnInit, OnDestroy { } scrollToStoredItem() { - if (!this.scrollUpInitalized) { - this.chatMessagesContainer.nativeElement.classList.remove('hide'); - } - this.virtualScroller.scrollInto(this.storedScrollItem, true, 0, 0, () => { + this.chatMessagesBuffer.nativeElement.innerHTML = ''; + this.chatMessagesBuffer.nativeElement.scrollTop = 0; + + this.chatMessagesBuffer.nativeElement.classList.add('disappear'); + this.chatMessagesContainer.nativeElement.classList.remove('hide'); + this.storedScrollItem = undefined; }); } @@ -472,10 +476,7 @@ export class MessagesComponent implements OnInit, OnDestroy { if (!!this.virtualScroller) { const e = this.eventList.find(v => v.seq === eventSeq); - this.fixScreen = true; - this.virtualScroller.scrollInto(e, false, undefined, 0, () => { - this.fixScreen = false; - }); + this.virtualScroller.scrollInto(e, false, undefined, 0, () => {}); } } @@ -491,6 +492,13 @@ export class MessagesComponent implements OnInit, OnDestroy { // this.storedScrollItem = this.psChatContent.elementRef.nativeElement.scrollHeight; this.storeScrollPosition(); + this.chatMessagesBuffer.nativeElement.innerHTML = this.chatMessagesContainer.nativeElement.innerHTML; + this.chatMessagesBuffer.nativeElement.scrollTop = this.chatMessagesContainer.nativeElement.scrollTop; + + this.chatMessagesBuffer.nativeElement.classList.remove('disappear'); + this.chatMessagesContainer.nativeElement.classList.add('hide'); + this.changeDetectorRef.detectChanges(); + this.moreEvent.emit(this.eventList[0].seq); this.virtualScroller.invalidateCachedMeasurementAtIndex(0); From bce9165f2b93c715d24159808301fe76e4d940ae Mon Sep 17 00:00:00 2001 From: Richard Park Date: Tue, 21 Jan 2020 11:48:26 +0900 Subject: [PATCH 2/3] virtual scroll of chat room is implemented --- .../lib/components/messages.component.html | 5 +- .../src/lib/components/messages.component.ts | 147 +++++++++--------- 2 files changed, 77 insertions(+), 75 deletions(-) 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 638a3270..d2fbc690 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 @@ -10,11 +10,10 @@ (psYReachEnd)="onYReachEnd($event)" [enableUnequalChildrenSizes]="true" [modifyOverflowStyleOfParentScroll]="false" - (vsChange)="onVsChange($event)" >