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 85e0e0e..c61d818 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 @@ -37,6 +37,8 @@ private Tampopo tampopo; // RecyclerView のアダプタをフィールドとして保持し、データ変更時に更新通知できるようにする private MyFriendRequestRecyclerViewAdapter adapter; + // 受信フレンド申請取得用の ViewModel(再表示時にも再利用する) + private FriendReceivedRequestViewModel friendReceivedRequestViewModel; /** * Mandatory empty constructor for the fragment manager to instantiate the @@ -100,19 +102,34 @@ @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - FriendReceivedRequestViewModel friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class); + // ViewModel はフィールドに保持しておき、onResume などからも再利用できるようにする + friendReceivedRequestViewModel = new ViewModelProvider(this).get(FriendReceivedRequestViewModel.class); + + // 画面生成直後にも最新の受信申請を取得 friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken()); + friendReceivedRequestViewModel.getReceivedRequestsLiveData().observe(getViewLifecycleOwner(), new Observer>() { - // LiveData に変更があったとき(新しい友達リクエストのリストが届いたとき)に呼ばれるメソッド @Override public void onChanged(List friendRequests) { // まず既存の一覧をクリアし、最新の内容でリストを作り直す FriendRequestContent.ITEMS.clear(); FriendRequestContent.ITEM_MAP.clear(); - for (FriendRequest f: friendRequests) { - FriendRequestContent.addItem(new FriendRequestContent.FriendRequestItem(f.getSenderId(), "ユーザー名")); + if (friendRequests != null) { + String myUserId = tampopo != null ? tampopo.getUserId() : null; + + for (FriendRequest f : friendRequests) { + // 自分宛て(自分が receiver )のリクエストのみを受信一覧として表示 + if (myUserId == null || myUserId.equals(f.getReceiverId())) { + FriendRequestContent.addItem( + new FriendRequestContent.FriendRequestItem( + f.getSenderId(), + "ユーザー名" // TODO: 必要に応じて実際のユーザー名に差し替え + ) + ); + } + } } // データが更新されたことをRecyclerViewのアダプタに通知して画面を更新 @@ -122,4 +139,13 @@ } }); } + + @Override + public void onResume() { + super.onResume(); + // 「保留中」タブに戻ってきたタイミングでも、毎回最新の受信フレンド申請を取得する + if (tampopo != null && friendReceivedRequestViewModel != null) { + friendReceivedRequestViewModel.loadReceivedRequests(tampopo.getToken()); + } + } } \ No newline at end of file