@@ -129,6 +129,7 @@ class Room extends React.Component {
129129 const gamebackPath = element . dataset . gamebackPath ;
130130 const loadingimgPath = element . dataset . loadingimgPath ;
131131 const audienceUser = element . dataset . audienceUser ;
132+ const yourUsername = element . dataset . yourUsername ;
132133 //console.log("audienceUser: "+audienceUser)
133134
134135 this . state = {
@@ -140,6 +141,7 @@ class Room extends React.Component {
140141 gameInfo : { } ,
141142 gameRoomData : gameRoomData ,
142143 moveHistory : [ ] ,
144+ yourUsername : yourUsername ,
143145 nowTurn : '先手' ,
144146 isConnected : false ,
145147 gameId : gameId ,
@@ -366,6 +368,7 @@ class Room extends React.Component {
366368 //console.log(`data.chat_data:`, data.chat_data);
367369 if ( Array . isArray ( data . chat_data ) ) { //配列かどうかチェック
368370 //最初はdata.chat_dataが"aaa"みたいに配列になっていないので配列に変換してchatMessageに入れる
371+ console . log ( "data.chat_data: " , data . chat_data )
369372 this . setState ( { chatMessages : data . chat_data } , ( ) => {
370373 //console.log("state 更新後:", this.state.chatMessages);
371374 } ) ;
@@ -439,6 +442,7 @@ class Room extends React.Component {
439442 //console.log(`sendChatMessageメソッド・chat_data:${chat_data}`);
440443 this . subscription . perform ( 'chat_broadcast_and_store' , {
441444 chat_data : chat_data ,
445+ yourUsername : this . state . yourUsername ,
442446 room_id : this . state . roomId ,
443447 game_id : this . state . gameId
444448 } ) ;
@@ -963,18 +967,57 @@ class Room extends React.Component {
963967 { ( ( ) => {
964968 // もしchatMessagesが文字列の場合、配列に変換
965969 let messages = chatMessages ;
966- if ( typeof chatMessages === 'string' ) {
970+ console . log ( "messages:" , messages )
971+ console . log ( "typeof chatMessages:" , typeof chatMessages )
972+ /*if (typeof chatMessages === 'string') {
967973 messages = chatMessages.split(',').map(msg => msg.trim());// カンマ区切りで文字列を分割
974+ return Array.isArray(messages) ? (
975+ messages.map((message, index) => (
976+ <div key={index} className="chat-message p-2 mb-2 rounded">
977+ <strong>{JSON.parse(message).username}</strong>: {JSON.parse(message).chat_text}
978+ </div>
979+ ))
980+ ) : (
981+ <p className="text-red-500">メッセージがありません</p>
982+ );
983+ }else if (typeof messages === "object" && messages !== null) {
984+ console.log("messagesgg:"+messages)
985+ // 単一オブジェクトの場合
986+ return (
987+ <div className="chat-message p-2 mb-2 rounded bg-gray-100">
988+ <strong>{messages.username}</strong>: {messages.chat_text}
989+ </div>
990+ );
991+ }*/
992+ let parsedMessages = [ ] ;
993+ if ( typeof messages === "string" ) {
994+ try {
995+ parsedMessages = JSON . parse ( messages ) ; // 文字列ならパース
996+ } catch ( e ) {
997+ console . error ( "JSONパース失敗:" , e ) ;
998+ return null ;
999+ }
1000+ } else if ( Array . isArray ( messages ) ) {
1001+ parsedMessages = messages ; // すでに配列ならそのまま
1002+ } else {
1003+ parsedMessages = [ messages ] ; // 単一オブジェクトなら配列に変換
9681004 }
969- return Array . isArray ( messages ) ? (
970- messages . map ( ( message , index ) => (
971- < div key = { index } className = "chat-message p-2 mb-2 rounded" >
972- { message }
973- </ div >
974- ) )
975- ) : (
976- < p className = "text-red-500" > メッセージがありません</ p >
1005+ console . log ( "parsedMessages:" , parsedMessages )
1006+
1007+ return (
1008+ < >
1009+ { parsedMessages . map ( ( msg , index ) => {
1010+ // msgが文字列ならパース、オブジェクトならそのまま使う
1011+ const data = typeof msg === "string" ? JSON . parse ( msg ) : msg ;
1012+ return (
1013+ < div key = { index } className = "chat-message p-2 mb-2 rounded bg-gray-100" >
1014+ < strong > { data . username } </ strong > : { data . chat_text }
1015+ </ div >
1016+ ) ;
1017+ } ) }
1018+ </ >
9771019 ) ;
1020+
9781021 } ) ( ) }
9791022 </ div >
9801023 < form id = "chat-form" className = "chat-form" onSubmit = { this . handleChatSubmit } >
0 commit comments