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(
|
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?
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue