File tree Expand file tree Collapse file tree 5 files changed +31
-30
lines changed
Expand file tree Collapse file tree 5 files changed +31
-30
lines changed Original file line number Diff line number Diff line change @@ -91,7 +91,7 @@ export enum MessageType {
9191
9292export interface Message {
9393 type : MessageType ;
94- isStoredInLocalStorage ?: boolean ;
94+ alreadyDisplayed ?: boolean ;
9595}
9696
9797export interface TextMessage extends Message {
Original file line number Diff line number Diff line change @@ -10,7 +10,7 @@ import Loader from '../Loader';
1010import Image from '../Image' ;
1111import QuickReplyList from '../QuickReplyList' ;
1212import InlineQuickReplyList from '../InlineQuickReplyList' ;
13- import useIntervalCounter from './hooks/useIntervalCounter ' ;
13+ import useMessageCounter from './hooks/useMessageCounter ' ;
1414import useScrollBehaviour from './hooks/useScrollBehaviour' ;
1515import { useTheme } from '@emotion/react' ;
1616import '../../styles/theme' ;
@@ -139,12 +139,7 @@ const Conversation = ({
139139 ...rest
140140} : Props ) => {
141141 if ( messages && messages . length !== 0 ) {
142- const displayableMessageCount = useIntervalCounter (
143- messages . filter ( ( message ) => message . isStoredInLocalStorage === true )
144- . length ,
145- messages . length ,
146- messageDelay ,
147- ) ;
142+ const displayableMessageCount = useMessageCounter ( messages , messageDelay ) ;
148143 const theme : TockTheme = useTheme ( ) ;
149144 const displayableMessages = messages . slice ( 0 , displayableMessageCount ) ;
150145 const scrollContainer = useScrollBehaviour ( [ displayableMessages ] ) ;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 1+ import { useState , useEffect } from 'react' ;
2+ import { Message } from '../../../TockContext' ;
3+
4+ export default function useMessageCounter (
5+ messages : Message [ ] ,
6+ delay : number ,
7+ ) : number {
8+ const [ counter , setCounter ] = useState (
9+ ( ) =>
10+ // Exempt previously displayed messages from the loading animation
11+ messages . filter ( ( message ) => message . alreadyDisplayed === true ) . length ,
12+ ) ;
13+ const targetValue = messages . length ;
14+
15+ useEffect ( ( ) => {
16+ if ( counter > targetValue ) {
17+ setCounter ( targetValue ) ;
18+ } else if ( counter < targetValue ) {
19+ setTimeout ( ( ) => {
20+ messages [ counter ] . alreadyDisplayed = true ;
21+ setCounter ( counter + 1 ) ;
22+ } , delay ) ;
23+ }
24+ } , [ counter , targetValue ] ) ;
25+
26+ return counter ;
27+ }
Original file line number Diff line number Diff line change @@ -446,7 +446,7 @@ const useTock: (
446446 dispatch ( {
447447 type : 'ADD_MESSAGE' ,
448448 messages : history . map ( ( message : Message ) => {
449- message . isStoredInLocalStorage = true ;
449+ message . alreadyDisplayed = true ;
450450 return message ;
451451 } ) ,
452452 } ) ;
You can’t perform that action at this time.
0 commit comments