@@ -2,43 +2,81 @@ import PageLoader from 'components/common/PageLoader/PageLoader';
22import { Table } from 'components/common/table/Table/Table.styled' ;
33import TableHeaderCell from 'components/common/table/TableHeaderCell/TableHeaderCell' ;
44import { TopicMessage } from 'generated-sources' ;
5- import React , { useState } from 'react' ;
5+ import React , { useEffect , useState } from 'react' ;
66import { Button } from 'components/common/Button/Button' ;
77import * as S from 'components/common/NewTable/Table.styled' ;
88import { usePaginateTopics , useIsLiveMode } from 'lib/hooks/useMessagesFilters' ;
99import { useMessageFiltersStore } from 'lib/hooks/useMessageFiltersStore' ;
10+ import useAppParams from 'lib/hooks/useAppParams' ;
11+ import { RouteParamsClusterTopic } from 'lib/paths' ;
12+ import { useLocalStorage } from 'lib/hooks/useLocalStorage' ;
1013
11- import PreviewModal from './PreviewModal' ;
1214import Message , { PreviewFilter } from './Message' ;
15+ import PreviewModal from './PreviewModal' ;
1316
1417export interface MessagesTableProps {
1518 messages : TopicMessage [ ] ;
1619 isFetching : boolean ;
1720}
1821
22+ interface MessagePreviewProps {
23+ [ key : string ] : {
24+ keyFilters : PreviewFilter [ ] ;
25+ contentFilters : PreviewFilter [ ] ;
26+ } ;
27+ }
28+
1929const MessagesTable : React . FC < MessagesTableProps > = ( {
2030 messages,
2131 isFetching,
2232} ) => {
2333 const paginate = usePaginateTopics ( ) ;
24- const [ previewFor , setPreviewFor ] = useState < string | null > ( null ) ;
25-
34+ const [ previewFor , setPreviewFor ] = useState < 'key' | 'content' | null > ( null ) ;
2635 const [ keyFilters , setKeyFilters ] = useState < PreviewFilter [ ] > ( [ ] ) ;
2736 const [ contentFilters , setContentFilters ] = useState < PreviewFilter [ ] > ( [ ] ) ;
2837 const nextCursor = useMessageFiltersStore ( ( state ) => state . nextCursor ) ;
2938 const isLive = useIsLiveMode ( ) ;
39+ const { topicName } = useAppParams < RouteParamsClusterTopic > ( ) ;
40+ const [ messagesPreview , setMessagesPreview ] =
41+ useLocalStorage < MessagePreviewProps > ( 'message-preview' , {
42+ [ topicName ] : {
43+ keyFilters : [ ] ,
44+ contentFilters : [ ] ,
45+ } ,
46+ } ) ;
47+
48+ useEffect ( ( ) => {
49+ setKeyFilters ( messagesPreview [ topicName ] ?. keyFilters || [ ] ) ;
50+ setContentFilters ( messagesPreview [ topicName ] ?. contentFilters || [ ] ) ;
51+ } , [ ] ) ;
3052
3153 return (
3254 < div style = { { position : 'relative' } } >
3355 { previewFor !== null && (
3456 < PreviewModal
3557 values = { previewFor === 'key' ? keyFilters : contentFilters }
3658 toggleIsOpen = { ( ) => setPreviewFor ( null ) }
37- setFilters = { ( payload : PreviewFilter [ ] ) =>
38- previewFor === 'key'
39- ? setKeyFilters ( payload )
40- : setContentFilters ( payload )
41- }
59+ setFilters = { ( payload : PreviewFilter [ ] ) => {
60+ if ( previewFor === 'key' ) {
61+ setKeyFilters ( payload ) ;
62+ setMessagesPreview ( {
63+ ...messagesPreview ,
64+ [ topicName ] : {
65+ ...messagesPreview [ topicName ] ,
66+ keyFilters : payload ,
67+ } ,
68+ } ) ;
69+ } else {
70+ setContentFilters ( payload ) ;
71+ setMessagesPreview ( {
72+ ...messagesPreview ,
73+ [ topicName ] : {
74+ ...messagesPreview [ topicName ] ,
75+ contentFilters : payload ,
76+ } ,
77+ } ) ;
78+ }
79+ } }
4280 />
4381 ) }
4482 < Table isFullwidth >
0 commit comments