auth to server-V68
This commit is contained in:
parent
4948388928
commit
a9a17915c5
2 changed files with 21 additions and 20 deletions
|
|
@ -11,20 +11,20 @@ data class FriendListResponse(
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class Friend(
|
data class Friend(
|
||||||
@field:Json(name = "friend_id")
|
@field:Json(name = "friend_id")
|
||||||
val friendId: String,
|
val friendId: String?, // 改為 String?
|
||||||
|
|
||||||
val username: String,
|
val username: String?, // 建議 username 也改可空
|
||||||
|
|
||||||
@field:Json(name = "display_name")
|
@field:Json(name = "display_name")
|
||||||
val displayName: String,
|
val displayName: String?,
|
||||||
|
|
||||||
@field:Json(name = "avatar_url")
|
@field:Json(name = "avatar_url")
|
||||||
val avatarUrl: String?, // 建議給可空性,避免後端沒傳頭像時崩潰
|
val avatarUrl: String?,
|
||||||
|
|
||||||
val status: String,
|
val status: String?,
|
||||||
|
|
||||||
@field:Json(name = "accepted_at")
|
@field:Json(name = "accepted_at")
|
||||||
val acceptedAt: String
|
val acceptedAt: String?
|
||||||
)
|
)
|
||||||
val Friend.fullFriendsAvatarUrl: Any
|
val Friend.fullFriendsAvatarUrl: Any
|
||||||
get() = if (avatarUrl.isNullOrBlank()) {
|
get() = if (avatarUrl.isNullOrBlank()) {
|
||||||
|
|
@ -47,28 +47,28 @@ data class PendingFriendsResponse(
|
||||||
@JsonClass(generateAdapter = true)
|
@JsonClass(generateAdapter = true)
|
||||||
data class PendingFriendApiModel(
|
data class PendingFriendApiModel(
|
||||||
@field:Json(name = "friendship_id")
|
@field:Json(name = "friendship_id")
|
||||||
val friendshipId: String,
|
val friendshipId: String?,
|
||||||
|
|
||||||
val username: String,
|
val username: String?,
|
||||||
|
|
||||||
@field:Json(name = "display_name")
|
@field:Json(name = "display_name")
|
||||||
val displayName: String,
|
val displayName: String,
|
||||||
|
|
||||||
@field:Json(name = "avatar_url")
|
@field:Json(name = "avatar_url")
|
||||||
val PendingAvatarUrl: String?,
|
val pendingAvatarUrl: String?,
|
||||||
|
|
||||||
@field:Json(name = "from_user_id")
|
@field:Json(name = "from_user_id")
|
||||||
val fromUserId: String,
|
val fromUserId: String?,
|
||||||
|
|
||||||
@field:Json(name = "created_at")
|
@field:Json(name = "created_at")
|
||||||
val createdAt: String
|
val createdAt: String?
|
||||||
)
|
)
|
||||||
|
|
||||||
val PendingFriendApiModel.fullPendingAvatarUrl: Any
|
val PendingFriendApiModel.fullPendingAvatarUrl: Any
|
||||||
get() = if (PendingAvatarUrl.isNullOrBlank()) {
|
get() = if (pendingAvatarUrl.isNullOrBlank()) {
|
||||||
R.drawable.avatar_v1
|
R.drawable.avatar_v1
|
||||||
} else if (PendingAvatarUrl.startsWith("http")) {
|
} else if (pendingAvatarUrl.startsWith("http")) {
|
||||||
PendingAvatarUrl
|
pendingAvatarUrl
|
||||||
} else {
|
} else {
|
||||||
"http://192.168.0.217$PendingAvatarUrl"
|
"http://192.168.0.217$pendingAvatarUrl"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,8 +111,8 @@ fun Message_contact_list(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
items(uiState.friends) { friend ->
|
items(uiState.friends) { friends ->
|
||||||
FriendRow(friend)
|
FriendRow(friends)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -122,8 +122,8 @@ fun Message_contact_list(
|
||||||
@Composable
|
@Composable
|
||||||
fun FriendRow(friend: Friend) {
|
fun FriendRow(friend: Friend) {
|
||||||
ListItem(
|
ListItem(
|
||||||
headlineContent = { Text(friend.displayName) },
|
headlineContent = { Text(friend.displayName ?: "未知用戶") },
|
||||||
supportingContent = { Text("@${friend.username}") },
|
supportingContent = { Text("@${friend.username ?: "unknown"}") },
|
||||||
leadingContent = {
|
leadingContent = {
|
||||||
// 使用 Coil 載入頭像
|
// 使用 Coil 載入頭像
|
||||||
AsyncImage(
|
AsyncImage(
|
||||||
|
|
@ -138,9 +138,10 @@ fun FriendRow(friend: Friend) {
|
||||||
)
|
)
|
||||||
},
|
},
|
||||||
trailingContent = {
|
trailingContent = {
|
||||||
|
val statusText = friend.status ?: "offline"
|
||||||
// 簡單顯示狀態
|
// 簡單顯示狀態
|
||||||
Text(
|
Text(
|
||||||
text = friend.status,
|
text = statusText,
|
||||||
style = MaterialTheme.typography.labelSmall,
|
style = MaterialTheme.typography.labelSmall,
|
||||||
color = if (friend.status == "online") Color.Green else Color.Gray
|
color = if (friend.status == "online") Color.Green else Color.Gray
|
||||||
)
|
)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue