@@ -16,14 +16,13 @@ interface MyMessage {
16
16
17
17
const generateId = ( ) => Math . random ( ) . toString ( 36 ) . substr ( 2 , 9 ) ;
18
18
19
- const callYourAPI = async ( message : AppendMessage ) => {
19
+ const callYourAPI = async ( text : string ) => {
20
20
// Simulate API delay
21
21
await new Promise ( resolve => setTimeout ( resolve , 1500 ) ) ;
22
22
23
23
// Simple responses
24
24
return {
25
- content : "This is a mock response from your backend. You typed: " +
26
- ( typeof message . content === 'string' ? message . content : 'something' )
25
+ content : "This is a mock response from your backend. You typed: " + text
27
26
} ;
28
27
} ;
29
28
@@ -41,11 +40,16 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
41
40
} ) ;
42
41
43
42
const onNew = async ( message : AppendMessage ) => {
43
+ // Extract text from AppendMessage content array
44
+ if ( message . content . length !== 1 || message . content [ 0 ] ?. type !== "text" ) {
45
+ throw new Error ( "Only text content is supported" ) ;
46
+ }
47
+
44
48
// Add user message in your custom format
45
49
const userMessage : MyMessage = {
46
50
id : generateId ( ) ,
47
51
role : "user" ,
48
- text : typeof message . content === 'string' ? message . content : JSON . stringify ( message . content ) ,
52
+ text : message . content [ 0 ] . text ,
49
53
timestamp : Date . now ( ) ,
50
54
} ;
51
55
@@ -54,7 +58,7 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
54
58
55
59
try {
56
60
// Call mock API
57
- const response = await callYourAPI ( message ) ;
61
+ const response = await callYourAPI ( userMessage . text ) ;
58
62
59
63
const assistantMessage : MyMessage = {
60
64
id : generateId ( ) ,
@@ -81,6 +85,11 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
81
85
82
86
// Add onEdit functionality
83
87
const onEdit = async ( message : AppendMessage ) => {
88
+ // Extract text from AppendMessage content array
89
+ if ( message . content . length !== 1 || message . content [ 0 ] ?. type !== "text" ) {
90
+ throw new Error ( "Only text content is supported" ) ;
91
+ }
92
+
84
93
// Find the index where to insert the edited message
85
94
const index = myMessages . findIndex ( ( m ) => m . id === message . parentId ) + 1 ;
86
95
@@ -91,7 +100,7 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
91
100
const editedMessage : MyMessage = {
92
101
id : generateId ( ) , // Always generate new ID for edited messages
93
102
role : "user" ,
94
- text : typeof message . content === 'string' ? message . content : JSON . stringify ( message . content ) ,
103
+ text : message . content [ 0 ] . text ,
95
104
timestamp : Date . now ( ) ,
96
105
} ;
97
106
newMessages . push ( editedMessage ) ;
@@ -101,7 +110,7 @@ export function MyRuntimeProvider({ children }: { children: React.ReactNode }) {
101
110
102
111
try {
103
112
// Generate new response
104
- const response = await callYourAPI ( message ) ;
113
+ const response = await callYourAPI ( editedMessage . text ) ;
105
114
106
115
const assistantMessage : MyMessage = {
107
116
id : generateId ( ) ,
0 commit comments