diff --git a/app/src/main/java/com/example/tampopo_client/Tampopo.java b/app/src/main/java/com/example/tampopo_client/Tampopo.java index 4708cbd..2c87afb 100644 --- a/app/src/main/java/com/example/tampopo_client/Tampopo.java +++ b/app/src/main/java/com/example/tampopo_client/Tampopo.java @@ -10,7 +10,7 @@ private String token; private String userId; private String password; - private String chatroomId; + private Integer chatroomId; private String mailaddress; private String nickname; private String icon; @@ -37,11 +37,11 @@ this.password = password; } - public String getChatroomId() { + public Integer getChatroomId() { return chatroomId; } - public void setChatroomId(String ChatroomId) { + public void setChatroomId(Integer ChatroomId) { this.chatroomId = ChatroomId; } diff --git a/app/src/main/java/com/example/tampopo_client/models/Chatroom.java b/app/src/main/java/com/example/tampopo_client/models/Chatroom.java index 74622ba..c764b92 100644 --- a/app/src/main/java/com/example/tampopo_client/models/Chatroom.java +++ b/app/src/main/java/com/example/tampopo_client/models/Chatroom.java @@ -1,49 +1,136 @@ package com.example.tampopo_client.models; +import java.util.ArrayList; +import java.util.List; + public class Chatroom { - private String chatroomId; // チャットルームのID - private String partnerUserId; // 相手ユーザーID - private String user1Id; // 1人目のユーザーID - private String user2Id; // 2人目のユーザーID + private Integer chatRoomId; // チャットルームのID + private String user0Id; // 1人目のユーザーID + private String user1Id; // 2人目のユーザーID + private String newContent; + private String chatRoomNumber; + private List messages = new ArrayList<>(); + private List users = new ArrayList<>(); + public Chatroom() {} - public Chatroom(String chatroomId, String user1Id, String user2Id) { - this.chatroomId = chatroomId; + public Chatroom(Integer chatRoomId, String user0Id, String user1Id) { + this.chatRoomId = chatRoomId; + this.user0Id = user0Id; this.user1Id = user1Id; - this.user2Id = user2Id; + this.users.add(user0Id); + this.users.add(user1Id); } - public Chatroom(String chatroomId,String partnerUserId) { - this.chatroomId = chatroomId; - this.partnerUserId = partnerUserId; +// public Chatroom(String chatroomId,String partnerUserId) { +// this.chatroomId = chatroomId; +// this.partnerUserId = partnerUserId; +// } + + public Integer getChatRoomId() { + return chatRoomId; } - public String getChatroomId() { - return chatroomId; + public void setChatRoomId(Integer chatRoomId) { + this.chatRoomId = chatRoomId; } - public void setChatroomId(String chatroomId) { - this.chatroomId = chatroomId; + public String getUser0Id() { + return user0Id; + } + + public void setUser0Id(String user0Id) { + this.user0Id = user0Id; } public String getUser1Id() { return user1Id; } - - - public String getUser2Id() { - return user2Id; + public void setUser1Id(String user1Id) { + this.user1Id = user1Id; } - - public String getPartnerUserId() { - return partnerUserId; + public String getNewContent() { + return newContent; } - public void setPartnerUserId(String partnerUserId) { - this.partnerUserId = partnerUserId; + public void setNewContent(String newContent) { + this.newContent = newContent; } -} + public String getChatRoomNumber() { + return chatRoomNumber; + } + + public void setChatRoomNumber(String chatRoomNumber) { + this.chatRoomNumber = chatRoomNumber; + } + + public List getMessages() { + return messages; + } + + public void setMessages(List messages) { + this.messages = messages; + } + + public List getUsers() { + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + // --- メッセージ追加 --- + public void addMessage(String senderId, String content) { + messages.add(new Message(senderId, content)); + } + + // --- ユーザー操作 --- + public void addUser(String userId) { + if (!users.contains(userId)) { + users.add(userId); + } + } + + public boolean removeUser(String userId) { + return users.remove(userId); + } + + public boolean isEmpty() { + return users.isEmpty(); + } + + // --- 内部クラス Message --- + public static class Message { + private String senderId; + private String content; + + public Message() { + } + + public Message(String senderId, String content) { + this.senderId = senderId; + this.content = content; + } + + public String getSenderId() { + return senderId; + } + + public void setSenderId(String senderId) { + this.senderId = senderId; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/tampopo_client/resources/ChatroomResource.java b/app/src/main/java/com/example/tampopo_client/resources/ChatroomResource.java index 3402974..b90f741 100644 --- a/app/src/main/java/com/example/tampopo_client/resources/ChatroomResource.java +++ b/app/src/main/java/com/example/tampopo_client/resources/ChatroomResource.java @@ -19,8 +19,8 @@ // チャットルームに入る @POST("chat-rooms") Call enterChatroom( - @Query("user0-id") String myId, - @Query("user1-id") String partnerId, + @Query("user0-id") String user0Id, + @Query("user1-id") String user1Id, @Query("token") String token ); //チャットルームを探す @@ -35,7 +35,7 @@ @POST("chat-rooms/{chatroom-id}/{user-id}/message") Call sendMessage( @Query("token") String token, - @Query("chatroom-id") String chatroomId, + @Query("chatroom-id") Integer chatroomId, @Query("user-id") String senderId, @Query("message") String content ); @@ -44,15 +44,15 @@ @GET("chat-rooms/{chat-room-id}/{user-id}") Call> getMessages( @Query("token") String token, - @Query("chat-room-id") String chatroomId, - @Query("user-id") String partnerId + @Query("chat-room-id") Integer chatroomId, + @Query("user-id") String userId ); // チャットルーム削除 @DELETE("chat-rooms/{chatroom-id}/{user-id}") Call destroyChatroom( @Query("token") String token, - @Query("chatroom-id") String chatroomId, + @Query("chatroom-id") Integer chatroomId, @Query("user-id") String userId ); } diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModel.java index 1b360d7..35adba1 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModel.java @@ -23,7 +23,7 @@ private final ChatroomResource chatroomResource; // --- LiveData --- - private final MutableLiveData chatroomIdLiveData = new MutableLiveData<>(); + private final MutableLiveData chatroomIdLiveData = new MutableLiveData<>(); private final MutableLiveData> chatMessages = new MutableLiveData<>(new ArrayList<>()); private final MutableLiveData latestMessage = new MutableLiveData<>(); private final MutableLiveData chatroomClosed = new MutableLiveData<>(); @@ -46,7 +46,7 @@ private String userId; private String token; - private String chatroomId; + private Integer chatroomId; public ChatViewModel() { this.retrofit = new Retrofit.Builder() @@ -57,7 +57,7 @@ this.chatroomResource = retrofit.create(ChatroomResource.class); } - public ChatViewModel(String userId, String token, String chatroomId) { + public ChatViewModel(String userId, String token, Integer chatroomId) { this.userId = userId; this.token = token; this.chatroomId = chatroomId; @@ -88,7 +88,7 @@ // getter - public MutableLiveData getChatroomIdLiveData() { + public MutableLiveData getChatroomIdLiveData() { return chatroomIdLiveData; } @@ -115,14 +115,15 @@ // =============================== // 1. チャットルームに入る(かける側) // =============================== - public void enterChatroom(String myId, String partnerId, String token) { - Call call = chatroomResource.enterChatroom(myId, partnerId, token); + public void enterChatroom(String user0Id, String user1Id, String token) { + Call call = chatroomResource.enterChatroom(user0Id, user1Id, token); call.enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { if (response.isSuccessful() && response.body() != null) { - chatroomIdLiveData.setValue(response.body().getChatroomId()); - Log.d("ChatVM", "enterChatroom success → chatroomId: " + response.body().getChatroomId()); + Chatroom chatroom = response.body(); + chatroomIdLiveData.setValue(chatroom.getChatRoomId()); + Log.d("ChatVM", "enterChatroom success → chatroomId: " + response.body().getChatRoomId()); } } @@ -142,8 +143,12 @@ if (response.isSuccessful() && response.body() != null) { Chatroom chatroom = response.body(); - chatroomIdLiveData.setValue(chatroom.getChatroomId()); - chatFriendToMeLiveData.setValue(chatroom.getPartnerUserId()); + chatroomIdLiveData.setValue(chatroom.getChatRoomId()); + chatFriendToMeLiveData.setValue( + userId.equals(chatroom.getUser0Id()) + ? chatroom.getUser1Id() + : chatroom.getUser0Id() + ); } else { chatroomIdLiveData.setValue(null); chatroomClosed.setValue(true); @@ -157,52 +162,12 @@ }); } - // =============================== - // 1.55 現在通話中のペアを確認 - // =============================== - public void fetchActiveChatPair(String userId, String token) { - Call call = chatroomResource.getMyChatroom(userId, token); - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful() && response.body() != null) { - Chatroom activeRoom = response.body(); - chatroomIdLiveData.setValue(activeRoom.getChatroomId()); - - String user1 = activeRoom.getUser1Id(); - String user2 = activeRoom.getUser2Id(); - - // ログインユーザーが user1 の場合 - if (userId.equals(user1)) { - chatFriendToMeLiveData.setValue(user2); // もう一方のユーザーを LiveData にセット - // HashMap にもセット - chatFriendToFriendLiveData.put(userId, new MutableLiveData<>(user2)); - } - // ログインユーザーが user2 の場合 - else if (userId.equals(user2)) { - chatToFriendLiveData.setValue(user1); // もう一方のユーザーを LiveData にセット - chatFriendToFriendLiveData.put(userId, new MutableLiveData<>(user1)); - } - - Log.d("ChatVM", "Active pair found: " + user1 + " ↔ " + user2); - } else { - chatroomIdLiveData.setValue(null); - chatroomClosed.setValue(true); - } - } - - @Override - public void onFailure(Call call, Throwable t) { - Log.e("ChatVM", "fetchActiveChatPair error: " + t.getMessage()); - } - }); - } // =============================== // 2. メッセージ送信 // =============================== - public void sendMessage(String chatroomId, String senderId, String message, String token) { + public void sendMessage(Integer chatroomId, String senderId, String message, String token) { Call call = chatroomResource.sendMessage(token, chatroomId, senderId, message); call.enqueue(new Callback() { @Override @@ -224,7 +189,7 @@ // =============================== // 3. 最新メッセージ取得 // =============================== - public void loadLatestMessage(String chatroomId, String userId, String token) { + public void loadLatestMessage(Integer chatroomId, String userId, String token) { Call> call = chatroomResource.getMessages(token, chatroomId, userId); call.enqueue(new Callback>() { @Override @@ -244,7 +209,7 @@ // =============================== // 4. チャットルーム削除 // =============================== - public void destroyChatroom(String chatroomId, String userId, String token) { + public void destroyChatroom(Integer chatroomId, String userId, String token) { Call call = chatroomResource.destroyChatroom(token, chatroomId, userId); call.enqueue(new Callback() { @Override diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModelFactory.java b/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModelFactory.java index 48d5ce0..f6ca17f 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModelFactory.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/ChatViewModelFactory.java @@ -9,9 +9,9 @@ public class ChatViewModelFactory implements ViewModelProvider.Factory { private final String userId; private final String token; - private final String chatroomId; + private final Integer chatroomId; - public ChatViewModelFactory(String userId, String token, String chatroomId) { + public ChatViewModelFactory(String userId, String token, Integer chatroomId) { this.userId = userId; this.token = token; this.chatroomId = chatroomId; diff --git a/app/src/main/java/com/example/tampopo_client/views/ChatActivity.java b/app/src/main/java/com/example/tampopo_client/views/ChatActivity.java index 48ac410..2deab60 100644 --- a/app/src/main/java/com/example/tampopo_client/views/ChatActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/ChatActivity.java @@ -96,7 +96,7 @@ if (!senderText.isEmpty()) { //senderTextが空でなければ String senderId = tampopo.getUserId(); String token = tampopo.getToken(); - String chatroomId = tampopo.getChatroomId(); + Integer chatroomId = tampopo.getChatroomId(); chatroomViewModel.sendMessage(chatroomId, senderId,senderText, token); senderMessage.setText(senderText);//自分のメッセージを送信欄に表示 }