diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java index fb1c277..596ddc4 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendReceivedRequestViewModel.java @@ -8,6 +8,9 @@ import java.util.List; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; @@ -17,24 +20,77 @@ //APIの窓口 private final FriendRequestsResource friendRequestsResource; //自分が受け取った申請 - private final MutableLiveData> receivedRequests ; + private final MutableLiveData> receivedRequests; //通信結果の状態 - private final MutableLiveData operationResult ; + private final MutableLiveData operationResult; public FriendReceivedRequestViewModel() { this.retrofit = new Retrofit.Builder() - .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo/") .addConverterFactory(JacksonConverterFactory.create()) .build(); this.friendRequestsResource = retrofit.create(FriendRequestsResource.class); this.receivedRequests = new MutableLiveData<>(); this.operationResult = new MutableLiveData<>(); } + //viewがobserve出来るように public MutableLiveData> getSentRequestsLiveData() { return receivedRequests; } + //サーバーから受け取ったFriendReceivedRequestのデータを格納してキャッシュしていくぞ + public void loadReceivedRequests(String token) { + //tokenを渡して、受信フレンド申請一覧を取得するHTTPリクエスト(Webのサーバーに対して何かをお願いするメッセージ」)を作る準備をしている + Call> call = friendRequestsResource.getFriendRequests(token); + //call.enqueueでサーバーへ送信(何を?) + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + //通信が成功したらLiveDataへのキャッシュ + receivedRequests.setValue(response.body()); + operationResult.setValue("Success"); + System.out.println("Success SetValue" + response.body()); + } else { + operationResult.setValue("Error: " + response.code()); + System.out.println("response error"); + } + } + @Override + public void onFailure(Call> call, Throwable t) { + operationResult.setValue("Network error: " + t.getMessage()); + System.out.println("ネットワークエラー: " + t); + } + }); + } + // フレンドリクエスト削除メソッド + public void deleteFriendRequest(String friendRequestId, String token) { + Call call = friendRequestsResource.deleteFriendRequest(friendRequestId, token); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + operationResult.setValue("Friend request deleted successfully."); + loadReceivedRequests(token); // 削除後、一覧を更新 + System.out.println("Deleted friend request ID: " + friendRequestId); + } else { + operationResult.setValue("Error deleting request: " + response.code()); + System.out.println("Error deleting request: " + response.code()); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + operationResult.setValue("Network error: " + t.getMessage()); + System.out.println("Network error: " + t); + } + }); + } } + + + diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java index 6676003..ce2ddda 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendSentRequestViewModel.java @@ -6,28 +6,29 @@ import com.example.tampopo_client.models.FriendRequest; import com.example.tampopo_client.resources.FriendRequestsResource; - import java.util.List; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; public class FriendSentRequestViewModel extends ViewModel { - //サーバー(API)と通信するためのツール + // サーバー(API)と通信するためのツール private final Retrofit retrofit; + // APIの窓口 private final FriendRequestsResource friendRequestsResource; - //自分が送った申請 - private final MutableLiveData> sentRequests ; - //変数がfinalやから一回しか代入できません - //sentRequestで呼び出される、viewモデルの下のコンストラクターがアンドロイドがで呼び出される - // 処理の進行中 - private final MutableLiveData operationResult ; + // 自分が送ったフレンド申請一覧 + private final MutableLiveData> sentRequests; + // 処理の進行状況や結果を表示するためのステータスメッセージ + private final MutableLiveData operationResult; + // コンストラクタ(ViewModel生成時に呼び出される) public FriendSentRequestViewModel() { - this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo-server/") .addConverterFactory(JacksonConverterFactory.create()) @@ -36,14 +37,76 @@ this.friendRequestsResource = retrofit.create(FriendRequestsResource.class); this.sentRequests = new MutableLiveData<>(); this.operationResult = new MutableLiveData<>(); - } - //viewがobserve出来るように - public MutableLiveData> getSentRequestsLiveData() { - return sentRequests; - } -//Mutable Livedataの宣言 + // Viewがobserveできるようにgetterを用意 + public MutableLiveData> getSentRequestsLiveData() { + return sentRequests; + } + + public MutableLiveData getOperationResult() { + return operationResult; + } + + // サーバーから送信済みフレンドリクエスト一覧を取得してキャッシュに保存 + public void loadSentRequests(String token) { + Call> call = friendRequestsResource.getFriendRequests(token); + + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if (response.isSuccessful()) { + sentRequests.setValue(response.body()); + operationResult.setValue("Success"); + System.out.println("Success SetValue: " + response.body()); + } else { + operationResult.setValue("Error: " + response.code()); + System.out.println("Response error: " + response.code()); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + operationResult.setValue("Network error: " + t.getMessage()); + System.out.println("Network error: " + t); + } + }); + } + + // サーバーにフレンド申請を送信するメソッド + public void sendFriendRequest(String senderId, String receiverId, String token) { + Call call = friendRequestsResource.postFriendRequest(token, senderId, receiverId); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + //Retrofitでサーバーにリクエストを送った後、その結果が帰ってくる。成功 + operationResult.setValue("Friend request sent successfully."); + + // 成功時に送信済みリストを更新 + loadSentRequests(token); + + System.out.println("Friend request sent: " + response.body()); + } else { + operationResult.setValue("Error sending request: " + response.code()); + System.out.println("Error sending request: " + response.code()); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + operationResult.setValue("Network error: " + t.getMessage()); + System.out.println("Network error: " + t); + } + }); + } +} + + + + + @@ -123,4 +186,4 @@ // } //} -} +