@@ -65,20 +65,26 @@ function ProviderForTableName(props: TableProps) {
6565 } ) ;
6666
6767 const rowRes = useRowsForDataTableQuery ( {
68+ variables : { ...props . params } ,
69+ } ) ;
70+
71+ const rowWithDiffRes = useRowsForDataTableQuery ( {
6872 variables : { ...props . params , withDiff : true } ,
6973 } ) ;
7074
71- const [ rows , setRows ] = useState ( rowRes . data ?. rows . list ) ;
75+ const [ rows , setRows ] = useState (
76+ rowWithDiffRes . data ?. rows . list ?? rowRes . data ?. rows . list ,
77+ ) ;
7278 const [ pendingRow , setPendingRow ] = useState <
7379 RowForDataTableFragment | undefined
7480 > ( undefined ) ;
7581 const [ offset , setOffset ] = useState ( rowRes . data ?. rows . nextOffset ) ;
7682 const [ lastOffset , setLastOffset ] = useState < Maybe < number > > ( undefined ) ;
7783
7884 useEffect ( ( ) => {
79- setRows ( rowRes . data ?. rows . list ) ;
85+ setRows ( rowWithDiffRes . data ?. rows . list ?? rowRes . data ?. rows . list ) ;
8086 setOffset ( rowRes . data ?. rows . nextOffset ) ;
81- } , [ rowRes . data ] ) ;
87+ } , [ rowRes . data , rowWithDiffRes . data ] ) ;
8288
8389 const loadMore = useCallback ( async ( ) => {
8490 if ( offset === undefined ) {
@@ -93,14 +99,43 @@ function ProviderForTableName(props: TableProps) {
9399 variables : {
94100 ...props . params ,
95101 offset,
96- withDiff : true ,
97102 } ,
98103 } ) ;
104+
105+ const prevRowsLength = rows ?. length ?? 0 ;
99106 const newRows = res . data . rows . list ;
100107 const newOffset = res . data . rows . nextOffset ;
101- setRows ( ( rows ?? [ ] ) . concat ( newRows ) ) ;
108+
109+ setRows ( prevRows => ( prevRows ?? [ ] ) . concat ( newRows ) ) ;
102110 setOffset ( newOffset ) ;
103- } , [ offset , props . params , rowRes . client , rows ] ) ;
111+
112+ const diffRes = rowWithDiffRes . client . query <
113+ RowsForDataTableQuery ,
114+ RowsForDataTableQueryVariables
115+ > ( {
116+ query : RowsForDataTableQueryDocument ,
117+ variables : {
118+ ...props . params ,
119+ offset,
120+ withDiff : true ,
121+ } ,
122+ } ) ;
123+
124+ diffRes
125+ . then ( diffResult => {
126+ setRows ( currentRows => {
127+ if ( currentRows ) {
128+ return [
129+ ...currentRows . slice ( 0 , prevRowsLength ) ,
130+ ...diffResult . data . rows . list ,
131+ ] ;
132+ } else {
133+ return diffResult . data . rows . list ;
134+ }
135+ } ) ;
136+ } )
137+ . catch ( console . error ) ;
138+ } , [ offset , props . params , rowRes . client , rowWithDiffRes . client , rows ] ) ;
104139
105140 const onAddEmptyRow = ( ) => {
106141 const emptyRow = generateEmptyRow ( tableRes . data ?. table . columns ?? [ ] ) ;
0 commit comments