This commit is contained in:
Eric85710 2026-06-12 06:03:17 +08:00
parent e93b46d01c
commit 39eaed89a0
8 changed files with 42 additions and 45 deletions

View file

@ -1,4 +1,4 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -22,7 +22,6 @@ import androidx.compose.material.icons.filled.Reply
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment

View file

@ -1,4 +1,4 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import android.net.Uri
import androidx.activity.compose.rememberLauncherForActivityResult
@ -24,7 +24,6 @@ import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue

View file

@ -1,4 +1,4 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@ -6,7 +6,6 @@ import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.aspectRatio
import androidx.compose.foundation.layout.fillMaxSize
@ -20,7 +19,6 @@ import androidx.compose.foundation.lazy.grid.items
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember

View file

@ -1,4 +1,4 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable

View file

@ -1,4 +1,4 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.shape.CircleShape

View file

@ -0,0 +1,29 @@
package com.example.login_v3.home.Message.UI.Detail.Message_Component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.example.login_v3.home.Message.ViewModel.UserStatus
@Composable
fun UserStatusDot(
status: UserStatus,
modifier: Modifier = Modifier,
size: Dp = 14.dp // 預設 14.dp,但也允許外部微調大小
) {
if (status != UserStatus.UNKNOWN) {
Box(
modifier = modifier
.size(size)
.background(status.color, CircleShape) // 圓形背景
.border(2.dp, Color.White, CircleShape) // 白色外圈邊線
)
}
}

View file

@ -1,12 +1,7 @@
package com.example.login_v3.home.Message.UI.Detail
import android.net.Uri
import android.util.Log
import android.widget.Toast
import androidx.activity.compose.rememberLauncherForActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.AnimatedVisibilityScope
import androidx.compose.animation.SharedTransitionScope
import androidx.compose.foundation.background
@ -23,7 +18,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.heightIn
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
@ -32,23 +26,15 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Photo
import androidx.compose.material.icons.filled.Send
import androidx.compose.material.icons.filled.Warning
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.DropdownMenu
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Surface
import androidx.compose.material3.Text
import androidx.compose.material3.TopAppBar
import androidx.compose.material3.TopAppBarDefaults
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
@ -60,11 +46,7 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.draw.blur
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawBehind
import androidx.compose.ui.geometry.Offset
import androidx.compose.ui.graphics.Brush
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
@ -77,13 +59,12 @@ import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController
import coil.compose.AsyncImage
import com.example.login_v3.R
import com.example.login_v3.data.api.api_class.Message
import com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail.MessageActionMenuRow
import com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail.MessageEmojiBar
import com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail.MessageInputBar
import com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail.ReactionRow
import com.example.login_v3.home.Message.UI.Detail.Message_Messaging_detail.UserAvatar
import com.example.login_v3.home.Message.UI.Detail.Message_Component.MessageActionMenuRow
import com.example.login_v3.home.Message.UI.Detail.Message_Component.MessageEmojiBar
import com.example.login_v3.home.Message.UI.Detail.Message_Component.MessageInputBar
import com.example.login_v3.home.Message.UI.Detail.Message_Component.ReactionRow
import com.example.login_v3.home.Message.UI.Detail.Message_Component.UserAvatar
import com.example.login_v3.home.Message.ViewModel.Detail.ChatViewModel
import com.example.login_v3.home.Message.ViewModel.Detail.DeleteMessageState
import com.example.login_v3.home.Message.ViewModel.Detail.MessageStatus
@ -92,11 +73,8 @@ import com.example.login_v3.home.Message.ViewModel.Detail.SendMessageState
import com.example.login_v3.home.Message.ViewModel.UserStatus
import com.example.login_v3.navigation.BottomBarViewModel
import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.windowInsetsTopHeight
import androidx.compose.foundation.layout.statusBars // 如果要使用 statusBars 也需要這個
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.filled.Call
import androidx.compose.material.icons.filled.MoreVert

View file

@ -60,6 +60,7 @@ import androidx.navigation.NavController
import coil.compose.AsyncImage
import com.example.login_v3.data.api.api_class.ChatRoom
import com.example.login_v3.data.api.api_class.fullContactAvatarUrl
import com.example.login_v3.home.Message.UI.Detail.Message_Component.UserStatusDot
import com.example.login_v3.home.Message.UI.Screen
import com.example.login_v3.home.Message.ViewModel.ChatRoomsViewModel
import com.example.login_v3.home.Message.ViewModel.UserStatus
@ -337,14 +338,7 @@ fun RoomItem(
val partner = room.partner // 先從 room 取得 partner
if (partner != null) {
val status = UserStatus.fromString(partner.status)
if (status != UserStatus.UNKNOWN) {
Box(
modifier = Modifier
.size(14.dp)
.background(status.color, CircleShape) // 直接設定圓形背景
.border(2.dp, Color.White, CircleShape) // 白色外圈邊線
)
}
UserStatusDot(status = status)
}
Spacer(modifier = Modifier.width(10.dp))