@@ -3,6 +3,7 @@ import { useObservable, useSubscription } from 'observable-hooks';
3
3
import type { ReactNode } from 'react' ;
4
4
import { useCallback , useEffect , useRef , useState } from 'react' ;
5
5
import type * as rxjs from 'rxjs' ;
6
+ import { useSubscribe } from '../../hooks/pubsub.jsx' ;
6
7
import type { GameLogLine } from '../../types/game.types.jsx' ;
7
8
import { GameStreamText } from './game-stream-text.jsx' ;
8
9
import {
@@ -45,16 +46,21 @@ export const GameStream: React.FC<GameStreamProps> = (
45
46
) : ReactNode => {
46
47
const { stream$, primaryStreamId, gameStreamIds, maxLines = 500 } = props ;
47
48
49
+ const [ gameLogLines , setGameLogLines ] = useState < Array < GameLogLine > > ( [ ] ) ;
50
+ const clearStreamTimeoutRef = useRef < NodeJS . Timeout > ( ) ;
51
+
52
+ // Clear streams on new connections.
53
+ useSubscribe ( [ 'game:connect' ] , ( ) => {
54
+ setGameLogLines ( [ ] ) ;
55
+ } ) ;
56
+
48
57
const filteredStream$ = useObservable ( ( ) => {
49
58
return stream$ . pipe (
50
59
filterLinesForGameStreams ( { gameStreamIds } ) ,
51
60
excludeDuplicateEmptyLines
52
61
) ;
53
62
} ) ;
54
63
55
- const [ gameLogLines , setGameLogLines ] = useState < Array < GameLogLine > > ( [ ] ) ;
56
- const clearStreamTimeoutRef = useRef < NodeJS . Timeout > ( ) ;
57
-
58
64
const appendGameLogLines = useCallback (
59
65
( newLogLines : Array < GameLogLine > ) => {
60
66
setGameLogLines ( ( oldLogLines : Array < GameLogLine > ) : Array < GameLogLine > => {
0 commit comments