dm-72
This commit is contained in:
parent
a0725725cb
commit
2a78024e90
2 changed files with 23 additions and 12 deletions
|
|
@ -15,12 +15,12 @@ data class RoomListResponse(
|
|||
data class ChatRoom(
|
||||
@Json(name = "room_id") val roomId: 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 = "is_muted") val isMuted: Boolean,
|
||||
@Json(name = "is_pinned") val isPinned: Boolean,
|
||||
@Json(name = "unread_count") val unreadCount: Int,
|
||||
@Json(name = "mention_count") val mentionCount: Int,
|
||||
@Json(name = "is_muted") val isMuted: Boolean = false, // 💡 安全防護:若後端漏傳,預設為 false
|
||||
@Json(name = "is_pinned") val isPinned: Boolean = false, // 💡 安全防護:若後端漏傳,預設為 false
|
||||
@Json(name = "unread_count") val unreadCount: Int = 0, // 💡 安全防護:若後端漏傳,預設為 0
|
||||
@Json(name = "mention_count") val mentionCount: Int = 0, // 💡 安全防護:若後端漏傳,預設為 0
|
||||
@Json(name = "partner") val partner: Partner?,
|
||||
@Json(name = "last_message") val lastMessage: LastMessage?
|
||||
)
|
||||
|
|
|
|||
|
|
@ -30,17 +30,28 @@ class ChatRoomsViewModel @Inject constructor(
|
|||
|
||||
fun loadRooms() {
|
||||
viewModelScope.launch {
|
||||
Log.d("ChatRoomsDebug", "1. 開始呼叫 loadRooms()...")
|
||||
val result = repository.fetchRooms()
|
||||
result.onSuccess { response ->
|
||||
_roomsState.value = response.rooms
|
||||
|
||||
response.rooms.forEach { room ->
|
||||
val status = room.partner?.status
|
||||
val name = room.partner?.displayName
|
||||
println("Debug_API: User: $name, Status: '$status'")
|
||||
result.onSuccess { response ->
|
||||
val roomsList = response.rooms
|
||||
Log.d("ChatRoomsDebug", "2. API 請求成功!拿到 ${roomsList?.size ?: 0} 個聊天室")
|
||||
|
||||
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 ->
|
||||
Log.e("ChatRoomsViewModel", "Fetch failed", error)
|
||||
// ⭐ 這裡非常重要,一定要印出 stackTrace 才知道為什麼失敗(例如:JSON 解析失敗、404、網路斷線)
|
||||
Log.e("ChatRoomsDebug", "❌ API 請求失敗 (onFailure)!!", error)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue