@@ -19,6 +19,7 @@ import {
1919} from './TockContext' ;
2020import { Sse } from './Sse' ;
2121import useLocalTools , { UseLocalTools } from './useLocalTools' ;
22+ import TockLocalStorage from 'TockLocalStorage' ;
2223
2324export interface UseTock {
2425 messages : Message [ ] ;
@@ -91,12 +92,12 @@ const useTock: (
9192 tockEndPoint : string ,
9293 extraHeadersProvider ?: ( ) => Promise < Record < string , string > > ,
9394 disableSse ?: boolean ,
94- localStorage ?: boolean ,
95+ localStorageHistory ?: TockLocalStorage ,
9596) => UseTock = (
9697 tockEndPoint : string ,
9798 extraHeadersProvider ?: ( ) => Promise < Record < string , string > > ,
9899 disableSse ?: boolean ,
99- localStorage ?: boolean ,
100+ localStorageHistory ?: TockLocalStorage ,
100101) => {
101102 const {
102103 messages,
@@ -106,7 +107,9 @@ const useTock: (
106107 sseInitializing,
107108 } : TockState = useTockState ( ) ;
108109 const dispatch : Dispatch < TockAction > = useTockDispatch ( ) ;
109- const { clearMessages } : UseLocalTools = useLocalTools ( localStorage ) ;
110+ const { clearMessages } : UseLocalTools = useLocalTools (
111+ localStorageHistory ?. enable ?? false ,
112+ ) ;
110113
111114 const startLoading : ( ) => void = ( ) => {
112115 dispatch ( {
@@ -126,13 +129,14 @@ const useTock: (
126129 message : any ,
127130 ) => {
128131 let history : any = window . localStorage . getItem ( 'tockMessageHistory' ) ;
132+ const maxNumberMessages = localStorageHistory ?. maxNumberMessages ?? 10 ;
129133 if ( ! history ) {
130134 history = [ ] ;
131135 } else {
132136 history = JSON . parse ( history ) ;
133137 }
134- if ( history . length >= 10 ) {
135- history . shift ( ) ;
138+ if ( history . length >= maxNumberMessages ) {
139+ history . splice ( 0 , history . length - maxNumberMessages + 1 ) ;
136140 }
137141 history . push ( message ) ;
138142 window . localStorage . setItem ( 'tockMessageHistory' , JSON . stringify ( history ) ) ;
@@ -150,7 +154,7 @@ const useTock: (
150154 type : 'SET_QUICKREPLIES' ,
151155 quickReplies : quickReplies ,
152156 } ) ;
153- if ( localStorage ) {
157+ if ( localStorageHistory ?. enable ?? false ) {
154158 window . localStorage . setItem (
155159 'tockQuickReplyHistory' ,
156160 JSON . stringify ( quickReplies ) ,
@@ -185,7 +189,7 @@ const useTock: (
185189 type : MessageType . carousel ,
186190 } as Carousel ;
187191 }
188- if ( localStorage ) {
192+ if ( localStorageHistory ?. enable ?? false ) {
189193 recordResponseToLocaleSession ( message ) ;
190194 }
191195 return message ;
@@ -253,7 +257,7 @@ const useTock: (
253257 message,
254258 type : MessageType . message ,
255259 } as TextMessage ;
256- if ( localStorage ) {
260+ if ( localStorageHistory ?. enable ?? false ) {
257261 recordResponseToLocaleSession ( messageToDispatch ) ;
258262 }
259263 dispatch ( {
@@ -314,7 +318,7 @@ const useTock: (
314318 return Promise . resolve ( ) ;
315319 } else if ( button . payload ) {
316320 setQuickReplies ( [ ] ) ;
317- if ( localStorage ) {
321+ if ( localStorageHistory ?. enable ?? false ) {
318322 recordResponseToLocaleSession ( {
319323 author : 'user' ,
320324 message : button . label ,
0 commit comments