This commit is contained in:
Eric85710 2026-06-03 15:59:33 +08:00
parent a0725725cb
commit 2a78024e90
2 changed files with 23 additions and 12 deletions

View file

@ -15,12 +15,12 @@ data class RoomListResponse(
data class ChatRoom( data class ChatRoom(
@Json(name = "room_id") val roomId: String, @Json(name = "room_id") val roomId: String,
@Json(name = "room_name") val roomName: String?, @Json(name = "room_name") val roomName: String?,
@Json(name = "room_type") val roomType: String, @Json(name = "room_type") val roomType: String? = null, // 🎯 修正這裡:改成 String? 並加上預設值,解決閃退問題!
@Json(name = "room_icon_url") val roomIconUrl: String?, @Json(name = "room_icon_url") val roomIconUrl: String?,
@Json(name = "is_muted") val isMuted: Boolean, @Json(name = "is_muted") val isMuted: Boolean = false, // 💡 安全防護:若後端漏傳,預設為 false
@Json(name = "is_pinned") val isPinned: Boolean, @Json(name = "is_pinned") val isPinned: Boolean = false, // 💡 安全防護:若後端漏傳,預設為 false
@Json(name = "unread_count") val unreadCount: Int, @Json(name = "unread_count") val unreadCount: Int = 0, // 💡 安全防護:若後端漏傳,預設為 0
@Json(name = "mention_count") val mentionCount: Int, @Json(name = "mention_count") val mentionCount: Int = 0, // 💡 安全防護:若後端漏傳,預設為 0
@Json(name = "partner") val partner: Partner?, @Json(name = "partner") val partner: Partner?,
@Json(name = "last_message") val lastMessage: LastMessage? @Json(name = "last_message") val lastMessage: LastMessage?
) )

View file

@ -30,17 +30,28 @@ class ChatRoomsViewModel @Inject constructor(
fun loadRooms() { fun loadRooms() {
viewModelScope.launch { viewModelScope.launch {
Log.d("ChatRoomsDebug", "1. 開始呼叫 loadRooms()...")
val result = repository.fetchRooms() val result = repository.fetchRooms()
result.onSuccess { response ->
_roomsState.value = response.rooms
response.rooms.forEach { room -> result.onSuccess { response ->
val status = room.partner?.status val roomsList = response.rooms
val name = room.partner?.displayName Log.d("ChatRoomsDebug", "2. API 請求成功!拿到 ${roomsList?.size ?: 0} 個聊天室")
println("Debug_API: User: $name, Status: '$status'")
if (roomsList.isNullOrEmpty()) {
Log.w("ChatRoomsDebug", "⚠️ 注意:後端回傳的 rooms 列表是空的(或為 null)!")
} else {
roomsList.forEach { room ->
Log.d("ChatRoomsDebug", "-> 房間 ID: ${room.roomId}, 名稱: ${room.roomName}, Partner: ${room.partner?.displayName}, 狀態: ${room.partner?.status}")
}
} }
// 更新狀態
_roomsState.value = roomsList ?: emptyList()
Log.d("ChatRoomsDebug", "3. _roomsState 已更新,當前長度: ${_roomsState.value.size}")
}.onFailure { error -> }.onFailure { error ->
Log.e("ChatRoomsViewModel", "Fetch failed", error) // ⭐ 這裡非常重要,一定要印出 stackTrace 才知道為什麼失敗(例如:JSON 解析失敗、404、網路斷線)
Log.e("ChatRoomsDebug", "❌ API 請求失敗 (onFailure)!!", error)
} }
} }
} }