diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index b268ef3..3050a8b 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -4,6 +4,14 @@
+
+
+
+
+
+
+
+
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..cfba5cd 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
@@ -6,6 +6,7 @@
import com.example.tampopo_client.models.FriendRequest;
import com.example.tampopo_client.resources.FriendRequestsResource;
+import java.util.ArrayList;
import java.util.List;
import retrofit2.Call;
@@ -16,58 +17,67 @@
import retrofit2.converter.scalars.ScalarsConverterFactory;
public class FriendReceivedRequestViewModel extends ViewModel {
- //サーバー(API)と通信するためのツール
+ // サーバー(API)と通信するためのツール
private final Retrofit retrofit;
- //APIの窓口
+ // API の窓口
private final FriendRequestsResource friendRequestsResource;
- //自分が受け取った申請
+ // 自分が受け取った申請
private final MutableLiveData> receivedRequests;
- //通信結果の状態
+ // 通信結果の状態
private final MutableLiveData operationResult;
public FriendReceivedRequestViewModel() {
-
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo/")
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(JacksonConverterFactory.create())
.build();
+
this.friendRequestsResource = retrofit.create(FriendRequestsResource.class);
- this.receivedRequests = new MutableLiveData<>();
+ this.receivedRequests = new MutableLiveData<>(new ArrayList<>());
this.operationResult = new MutableLiveData<>();
}
- //viewがobserve出来るように
+ // viewがobserve出来るように
public MutableLiveData> getReceivedRequestsLiveData() {
return receivedRequests;
}
- //サーバーから受け取ったFriendReceivedRequestのデータを格納してキャッシュしていくぞ
- public void loadReceivedRequests(String token) {
- //tokenを渡して、受信フレンド申請一覧を取得するHTTPリクエスト(Webのサーバーに対して何かをお願いするメッセージ」)を作る準備をしている
+ // サーバーから受け取った FriendRequest のデータを読み込む
+ public void loadReceivedRequests(String token, String myUserId) {
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());
+ List allRequests = response.body();
+ if (allRequests == null) allRequests = new ArrayList<>();
+
+ // 自分が受信者であるものだけを抽出してセット
+ List receivedOnly = new ArrayList<>();
+ for (FriendRequest req : allRequests) {
+ if (req.getReceiverId() != null && req.getReceiverId().equals(myUserId)) {
+ receivedOnly.add(req);
+ }
+ }
+
+ receivedRequests.setValue(receivedOnly);
+ operationResult.setValue("Success (found " + receivedOnly.size() + " requests)");
+ System.out.println("Success SetValue (filtered): " + receivedOnly);
} else {
operationResult.setValue("Error: " + response.code());
- System.out.println("response error");
+ System.out.println("Response error: " + response.code());
}
}
@Override
public void onFailure(Call> call, Throwable t) {
operationResult.setValue("Network error: " + t.getMessage());
- System.out.println("ネットワークエラー: " + t);
+ System.out.println("Network error: " + t);
}
});
}
+
// フレンドリクエスト削除メソッド
public void deleteFriendRequest(String friendRequestId, String token) {
Call call = friendRequestsResource.deleteFriendRequest(friendRequestId, token);
@@ -77,7 +87,7 @@
public void onResponse(Call call, Response response) {
if (response.isSuccessful()) {
operationResult.setValue("Friend request deleted successfully.");
- loadReceivedRequests(token); // 削除後、一覧を更新
+ // 一覧の再読み込みは Fragment 側で行うか、IDをキャッシュしてここで行う
System.out.println("Deleted friend request ID: " + friendRequestId);
} else {
operationResult.setValue("Error deleting request: " + response.code());
@@ -93,6 +103,3 @@
});
}
}
-
-
-
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..bbe333c 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
@@ -22,6 +22,7 @@
import com.example.tampopo_client.viewmodels.FriendViewModel;
import com.example.tampopo_client.viewmodels.FriendReceivedRequestViewModel;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -35,6 +36,7 @@
private int mColumnCount = 1;
private Tampopo tampopo;
+ private MyFriendRequestRecyclerViewAdapter adapter;
/**
* 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(new ArrayList<>(), friendViewModel, receiverId, token);
+ recyclerView.setAdapter(adapter);
}
return view;
}
@@ -96,14 +99,26 @@
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
FriendReceivedRequestViewModel friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class);
- friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken());
+
+ // 修正: 引数に UserId を追加
+ friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken(), tampopo.getUserId());
+
friendReceivedRequestViewModel.getReceivedRequestsLiveData().observe(getViewLifecycleOwner(), new Observer>() {
// LiveData に変更があったとき(新しい友達リクエストのリストが届いたとき)に呼ばれるメソッド
@Override
public void onChanged(List friendRequests) {
- for (FriendRequest f: friendRequests) {
- FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(f.getSenderId(), "ユーザー名"));
+ if (friendRequests == null) return;
+
+ List items = new ArrayList<>();
+ for (FriendRequest f : friendRequests) {
+ // 送信者のIDを表示名として使用(暂定)
+ items.add(new FriendRequestContent.FriendRequestItem(f.getSenderId(), f.getSenderId()));
+ }
+
+ // アダプターに更新を通知
+ if (adapter != null) {
+ adapter.setItems(items);
}
}
});
diff --git a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
index 4b7c836..611703b 100644
--- a/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
+++ b/app/src/main/java/com/example/tampopo_client/views/MyFriendRequestRecyclerViewAdapter.java
@@ -20,7 +20,7 @@
public class MyFriendRequestRecyclerViewAdapter extends RecyclerView.Adapter {
// 表示するFriendRequestItemのリスト(アダプターのデータ)
- private final List mValues;
+ private List mValues;
private FriendViewModel friendViewModel;
private String receiverId;
@@ -70,6 +70,11 @@
return mValues.size();
}
+ public void setItems(List items) {
+ this.mValues = items;
+ notifyDataSetChanged();
+ }
+
// 各行(View)を保持するための ViewHolder クラス
public class ViewHolder extends RecyclerView.ViewHolder {
// TextView:表示される友達の名前