@@ -27,10 +27,15 @@ function SendIcon() {
27
27
) ;
28
28
}
29
29
30
+ interface Massage {
31
+ type : "tx" | "rx" ;
32
+ message : string ;
33
+ }
34
+
30
35
export default function Terminal ( ) {
31
36
const [ port ] = useState ( SerialPortManager . getInstance ( ) ) ;
32
- const [ rxMessage , setRxMessage ] = useState < string [ ] > ( [ ] ) ;
33
37
const [ txMessage , setTxMessage ] = useState ( "" ) ;
38
+ const [ msgHistory , setMsgHistory ] = useState < Massage [ ] > ( [ ] ) ;
34
39
const [ userScript , setUserScript ] = useState ( "return raw;" ) ;
35
40
const [ rxCount , setRxCount ] = useState ( 0 ) ;
36
41
const [ txCount , setTxCount ] = useState ( 0 ) ;
@@ -40,6 +45,7 @@ export default function Terminal() {
40
45
const scriptFunction = new Function ( "raw" , userScript ) ;
41
46
const processedData = scriptFunction ( new TextEncoder ( ) . encode ( txMessage ) ) ;
42
47
await port . write ( processedData ) ;
48
+ setMsgHistory ( ( prev ) => [ ...prev , { type : "tx" , message : txMessage } ] ) ;
43
49
} catch ( err ) {
44
50
console . log ( err ) ;
45
51
}
@@ -58,7 +64,8 @@ export default function Terminal() {
58
64
setTxCount ( port . txCount ) ;
59
65
60
66
const handleReceive = ( v : Uint8Array ) => {
61
- setRxMessage ( ( prev ) => [ ...prev , new TextDecoder ( ) . decode ( v ) ] ) ;
67
+ const newMessage = new TextDecoder ( ) . decode ( v ) ;
68
+ setMsgHistory ( ( prev ) => [ ...prev , { type : "rx" , message : newMessage } ] ) ;
62
69
setRxCount ( port . rxCount ) ;
63
70
} ;
64
71
@@ -69,8 +76,8 @@ export default function Terminal() {
69
76
return (
70
77
< div className = "flex flex-col h-screen gap-2 p-4" >
71
78
< ScrollArea className = " rounded-md border w-full flex-grow h-3/5" >
72
- { rxMessage ?. map ( ( v , i ) => (
73
- < MessageBlock key = { i } type = "rx" message = { v } />
79
+ { msgHistory ?. map ( ( m , i ) => (
80
+ < MessageBlock key = { i } type = { m . type } message = { m . message } />
74
81
) ) }
75
82
</ ScrollArea >
76
83
< div className = "flex w-full gap-2 h-1/5" >
0 commit comments