diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageActionMenuRow.kt similarity index 98% rename from app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt rename to app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageActionMenuRow.kt index 14ed423..42a79fa 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageActionMenuRow.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageActionMenuRow.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageInputBar.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageInputBar.kt similarity index 98% rename from app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageInputBar.kt rename to app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageInputBar.kt index f383194..a412e5f 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/MessageInputBar.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/MessageInputBar.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/React_Emoji_Panel.kt similarity index 97% rename from app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt rename to app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/React_Emoji_Panel.kt index 81df40c..ecbefe5 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/React_Emoji_Panel.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/React_Emoji_Panel.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/ReactionRow.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/ReactionRow.kt similarity index 96% rename from app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/ReactionRow.kt rename to app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/ReactionRow.kt index 41a747d..66f20b6 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/ReactionRow.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/ReactionRow.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/UserAvatar.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserAvatar.kt similarity index 91% rename from app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/UserAvatar.kt rename to app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserAvatar.kt index cff6ba0..bd3eea7 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging_detail/UserAvatar.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserAvatar.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserStatusDot.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserStatusDot.kt new file mode 100644 index 0000000..5d56ede --- /dev/null +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Component/UserStatusDot.kt @@ -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) // 白色外圈邊線 + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt index 667ef35..2357472 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_Messaging.kt @@ -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 diff --git a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_list.kt b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_list.kt index ad256da..6a88d19 100644 --- a/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_list.kt +++ b/app/src/main/java/com/example/login_v3/home/Message/UI/Detail/Message_list.kt @@ -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 @@ -333,18 +334,11 @@ fun RoomItem( } - //online status + // online status 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))