diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ef6698f..e826e0d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Tampopoclient" + android:usesCleartextTraffic="true" tools:targetApi="31"> - \ No newline at end of file + diff --git a/app/src/main/java/com/example/tampopo_client/models/User.java b/app/src/main/java/com/example/tampopo_client/models/User.java index c5092a1..1b6e7de 100644 --- a/app/src/main/java/com/example/tampopo_client/models/User.java +++ b/app/src/main/java/com/example/tampopo_client/models/User.java @@ -2,7 +2,7 @@ public class User { - private Integer id; //ユーザーID + private String userId; //ユーザーID private String name; //ニックネーム private String email; //メールアドレス private String icon; //アイコン @@ -17,11 +17,11 @@ } - public Integer getId() { - return id; + public String getId() { + return userId; } - public void setId(Integer id) { - this.id = id; + public void setId(String userId) { + this.userId = userId; } public String getName() { diff --git a/app/src/main/java/com/example/tampopo_client/resources/UserResource.java b/app/src/main/java/com/example/tampopo_client/resources/UserResource.java index 7db852b..5e9f426 100644 --- a/app/src/main/java/com/example/tampopo_client/resources/UserResource.java +++ b/app/src/main/java/com/example/tampopo_client/resources/UserResource.java @@ -20,7 +20,7 @@ @GET("users") Call> getUsers(); - // 新規アカウントを作る + // 新規アカウントを作成 @FormUrlEncoded @POST("users") Call createUser( 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 e90bce2..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,9 +20,9 @@ //APIの窓口 private final FriendRequestsResource friendRequestsResource; //自分が受け取った申請 - private final MutableLiveData> receivedRequests ; + private final MutableLiveData> receivedRequests; //通信結果の状態 - private final MutableLiveData operationResult ; + private final MutableLiveData operationResult; public FriendReceivedRequestViewModel() { @@ -31,10 +34,63 @@ 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 a4260fc..c9a99ea 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/") .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 @@ // } //} -} + diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java index a4e6274..9c4005c 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/FriendViewModel.java @@ -64,7 +64,7 @@ }); } - public void addFriend(String token, String user0Id, String user1Id){ + public void createFriend(String token, String user0Id, String user1Id){ Call call = friendsResource.createFriend(token, user0Id, user1Id); call.enqueue(new Callback() {