diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef3..65adab4 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 0897082..639c779 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -4,6 +4,7 @@ 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 2542cc1..a205ac5 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 @@ -43,7 +43,7 @@ } //サーバーから受け取ったFriendReceivedRequestのデータを格納してキャッシュしていくぞ - public void loadReceivedRequests(String token) { + public void loadReceivedRequests(String token, String userId) { //tokenを渡して、受信フレンド申請一覧を取得するHTTPリクエスト(Webのサーバーに対して何かをお願いするメッセージ」)を作る準備をしている Call> call = friendRequestsResource.getFriendRequests(token); //call.enqueueでサーバーへ送信(何を?) @@ -51,10 +51,19 @@ @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { - //通信が成功したらLiveDataへのキャッシュ - receivedRequests.setValue(response.body()); + //通信が成功したら、receiverIdが自分のIDと一致するものだけをフィルタリング + List allRequests = response.body(); + List filteredRequests = new java.util.ArrayList<>(); + if (allRequests != null) { + for (FriendRequest request : allRequests) { + if (userId.equals(request.getReceiverId())) { + filteredRequests.add(request); + } + } + } + receivedRequests.setValue(filteredRequests); operationResult.setValue("Success"); - System.out.println("Success SetValue" + response.body()); + System.out.println("Success SetValue (filtered): " + filteredRequests); } else { operationResult.setValue("Error: " + response.code()); System.out.println("response error"); @@ -69,7 +78,7 @@ }); } // フレンドリクエスト削除メソッド - public void deleteFriendRequest(String friendRequestId, String token) { + public void deleteFriendRequest(String friendRequestId, String token, String userId) { Call call = friendRequestsResource.deleteFriendRequest(friendRequestId, token); call.enqueue(new Callback() { @@ -77,7 +86,7 @@ public void onResponse(Call call, Response response) { if (response.isSuccessful()) { operationResult.setValue("Friend request deleted successfully."); - loadReceivedRequests(token); // 削除後、一覧を更新 + loadReceivedRequests(token, userId); // 削除後、一覧を更新 System.out.println("Deleted friend request ID: " + friendRequestId); } else { operationResult.setValue("Error deleting request: " + response.code()); diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java index b5a8976..5e309b4 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendReceivedFragment.java @@ -35,6 +35,8 @@ private int mColumnCount = 1; private Tampopo tampopo; + private MyFriendRequestRecyclerViewAdapter adapter; + private FriendReceivedRequestViewModel friendReceivedRequestViewModel; /** * Mandatory empty constructor for the fragment manager to instantiate the @@ -87,7 +89,8 @@ } else { recyclerView.setLayoutManager(new GridLayoutManager(context, mColumnCount)); } - recyclerView.setAdapter(new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendViewModel, receiverId, token)); + adapter = new MyFriendRequestRecyclerViewAdapter(FriendRequestContent.ITEMS, friendViewModel, receiverId, token); + recyclerView.setAdapter(adapter); } return view; } @@ -95,17 +98,29 @@ @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - FriendReceivedRequestViewModel friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class); - friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken()); + friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class); friendReceivedRequestViewModel.getReceivedRequestsLiveData().observe(getViewLifecycleOwner(), new Observer>() { // LiveData に変更があったとき(新しい友達リクエストのリストが届いたとき)に呼ばれるメソッド @Override public void onChanged(List friendRequests) { + FriendRequestContent.ITEMS.clear(); for (FriendRequest f: friendRequests) { FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(f.getSenderId(), "ユーザー名")); } + if (adapter != null) { + adapter.notifyDataSetChanged(); + } } }); } + + @Override + public void onResume() { + super.onResume(); + // 画面が表示される度にデータを再読み込み + if (friendReceivedRequestViewModel != null && tampopo != null) { + friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken(), tampopo.getUserId()); + } + } } \ No newline at end of file