diff --git a/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java index 1ddbd4b..15936e6 100644 --- a/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java +++ b/app/src/main/java/com/example/tampopo_client/viewmodels/UserViewModel.java @@ -7,6 +7,8 @@ import com.example.tampopo_client.models.User; import com.example.tampopo_client.resources.UserResource; +import java.io.IOException; + import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; @@ -105,24 +107,55 @@ } }); } + //ニックネーム + public String getNickname(String id) { + Call call = userResource.getName(id); + try { + Response response = call.execute(); + + if (response.isSuccessful()) { + System.out.println(response.code()); + return response.body(); + } else { + System.out.println(response.code()); + return null; + } + } catch (IOException e) { + throw new RuntimeException(e); + } +// + } //アイコン - public void getIcon(String id) { + public String getIcon(String id) { Call call = userResource.getIcon(id); - call.enqueue(new Callback() { - @Override - public void onResponse(Call call, Response response) { - if (response.isSuccessful()) { - icon.setValue(response.body()); - System.out.println(response.code()); - } else { - System.out.println(response.code()); - } + try { + Response response = call.execute(); + + if (response.isSuccessful()) { + System.out.println(response.code()); + return response.body(); + } else { + System.out.println(response.code()); + return null; } - @Override public void onFailure(Call call, Throwable t) { - System.out.println("エラー: " + t.getMessage()); - } - }); + } catch (IOException e) { + throw new RuntimeException(e); + } +// call.enqueue(new Callback() { +// @Override +// public void onResponse(Call call, Response response) { +// if (response.isSuccessful()) { +// icon.setValue(response.body()); +// System.out.println(response.code()); +// } else { +// System.out.println(response.code()); +// } +// } +// @Override public void onFailure(Call call, Throwable t) { +// System.out.println("エラー: " + t.getMessage()); +// } +// }); } public void updateIcon(String id, String newIcon, String token) { diff --git a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java index 4ae89c3..f2fa84a 100644 --- a/app/src/main/java/com/example/tampopo_client/views/MainActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/MainActivity.java @@ -46,6 +46,7 @@ import com.example.tampopo_client.viewmodels.ChatViewModel; import com.example.tampopo_client.viewmodels.NotificationListener; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -63,11 +64,13 @@ private Map userViews = new HashMap<>(); ActivityViewModel activityViewModel; - private UserViewModel userViewModel; + UserViewModel userViewModel; Tampopo tampopo; //追加しました! private ChatViewModel chatViewModel; + private final List recentUpdatedFriends = new ArrayList<>(); // 最新6人 + @Override @@ -133,6 +136,7 @@ // }); MutableLiveData> friendsLiveData = activityViewModel.getFriendUserIdsLiveData(); + friendsLiveData.observe(this, new Observer>() { @Override public void onChanged(List friends) { @@ -144,6 +148,8 @@ for (String friendId: userViews.keySet()) { final String updateFriendId = friendId; MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(updateFriendId); + //MutableLiveData> activitiesLiveData = activityViewModel.getActivitiesLiveDataFromUserId(updateFriendId); + FriendIconView friendView = userViews.get(friendId); if(friendView == null) continue; //activitiesLiveData.observeForever(friendView); @@ -157,6 +163,39 @@ Activity latest = activities.get(activities.size() - 1); userView.setComment(latest.getText()); } + //アイコンとニックネーム情報をとってくる + new Thread(() -> { + String nickname = userViewModel.getNickname(updateFriendId); + String iconUrl = userViewModel.getIcon(updateFriendId); + + runOnUiThread(() -> { + if (nickname != null && !nickname.isEmpty()) { + userView.setNickname(nickname); + } else { + userView.setNickname(updateFriendId); + } + +// if (iconUrl != null && !iconUrl.isEmpty()) { +// userView.setIconUrl(iconUrl); +// } else { +// userView.setIconUrl("http://nitta-lab-www.is.konan-u.ac.jp/tampopo/images/default_icon.png"); +// } + }); + }).start(); + //フレンドの位置決め + // 最新更新フレンドをリストに追加(最大6人保持) + synchronized (recentUpdatedFriends) { + // すでに存在する場合は削除して再追加(重複防止) + recentUpdatedFriends.remove(updateFriendId); + // 先頭に追加(最近更新した人ほど前) + recentUpdatedFriends.add(0, updateFriendId); + + // 6人を超えたら古いものを削除 + if (recentUpdatedFriends.size() > 6) { + recentUpdatedFriends.remove(recentUpdatedFriends.size() - 1); + } + } + } }); //activitiesLiveData.observe(this, userViews.get(friendId)); @@ -540,7 +579,7 @@ // 通知を受信したときにダイアログを表示 runOnUiThread(() -> showChatNotification("user02")); // アイコンを赤枠に - runOnUiThread(() -> highlightUserIcon("user01")); + //runOnUiThread(() -> highlightUserIcon("user01")); } // @Override // protected void onNewIntent(Intent intent) {