添加群成员功能
This commit is contained in:
@@ -84,6 +84,8 @@ fun AddGroupMemberScreen(groupId: String, groupName: String?) {
|
||||
LaunchedEffect(Unit) {
|
||||
systemUiController.setNavigationBarColor(Color.Transparent)
|
||||
AddGroupMemberViewModel.groupName = groupName
|
||||
AddGroupMemberViewModel.trtcId = groupId
|
||||
AddGroupMemberViewModel.roomId = null
|
||||
}
|
||||
|
||||
Box(
|
||||
|
||||
@@ -9,6 +9,8 @@ import androidx.lifecycle.viewModelScope
|
||||
import com.aiosman.ravenow.AppStore
|
||||
import com.aiosman.ravenow.data.AccountService
|
||||
import com.aiosman.ravenow.data.AccountServiceImpl
|
||||
import com.aiosman.ravenow.data.RoomService
|
||||
import com.aiosman.ravenow.data.RoomServiceImpl
|
||||
import com.aiosman.ravenow.data.UserService
|
||||
import com.aiosman.ravenow.data.UserServiceImpl
|
||||
import com.aiosman.ravenow.data.api.ApiClient
|
||||
@@ -17,11 +19,14 @@ import kotlinx.coroutines.launch
|
||||
object AddGroupMemberViewModel : ViewModel() {
|
||||
val accountService: AccountService = AccountServiceImpl()
|
||||
val userService: UserService = UserServiceImpl()
|
||||
val roomService: RoomService = RoomServiceImpl()
|
||||
|
||||
// 状态管理
|
||||
var isLoading by mutableStateOf(false)
|
||||
var errorMessage by mutableStateOf<String?>(null)
|
||||
var groupName: String? = null
|
||||
var trtcId: String? = null
|
||||
var roomId: Int? = null
|
||||
|
||||
// 添加成员到群聊
|
||||
suspend fun addMembersToGroup(
|
||||
@@ -30,26 +35,84 @@ object AddGroupMemberViewModel : ViewModel() {
|
||||
return try {
|
||||
isLoading = true
|
||||
|
||||
if (groupName == null) {
|
||||
// 验证房间标识
|
||||
if (trtcId == null && roomId == null) {
|
||||
isLoading = false
|
||||
val errorMsg = "群聊名称不能为空"
|
||||
val errorMsg = "房间标识不能为空"
|
||||
showToast(errorMsg)
|
||||
return false
|
||||
}
|
||||
|
||||
// 根据isAi属性分别获取userIds和promptIds
|
||||
val userIds = selectedMembers.filter { !it.isAi }.map { it.id }
|
||||
val promptIds = selectedMembers.filter { it.isAi }.map { it.id }
|
||||
// 根据isAi属性分别获取用户和智能体的OpenID列表
|
||||
val userOpenIds = selectedMembers.filter { !it.isAi }.map { it.id }
|
||||
val agentOpenIds = selectedMembers.filter { it.isAi }.map { it.id }
|
||||
|
||||
var allSuccess = true
|
||||
var errorMessages = mutableListOf<String>()
|
||||
|
||||
// 添加用户到房间
|
||||
if (userOpenIds.isNotEmpty()) {
|
||||
try {
|
||||
val userResult = roomService.addUserToRoom(
|
||||
roomId = roomId,
|
||||
trtcId = trtcId,
|
||||
openIds = userOpenIds
|
||||
)
|
||||
|
||||
// 检查添加结果
|
||||
if (userResult.failedCount > 0) {
|
||||
val failedUsers = userResult.failedItems.joinToString(", ") { it.userId }
|
||||
errorMessages.add("部分用户添加失败: $failedUsers")
|
||||
}
|
||||
|
||||
if (userResult.successCount == 0 && userResult.failedCount > 0) {
|
||||
allSuccess = false
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
allSuccess = false
|
||||
errorMessages.add("添加用户失败: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
// 添加智能体到房间
|
||||
if (agentOpenIds.isNotEmpty()) {
|
||||
try {
|
||||
val agentResult = roomService.addAgentToRoom(
|
||||
roomId = roomId,
|
||||
trtcId = trtcId,
|
||||
agentOpenIds = agentOpenIds
|
||||
)
|
||||
|
||||
// 检查添加结果
|
||||
if (agentResult.failedCount > 0) {
|
||||
val failedAgents = agentResult.failedItems.joinToString(", ") { it.agentOpenId }
|
||||
errorMessages.add("部分智能体添加失败: $failedAgents")
|
||||
}
|
||||
|
||||
if (agentResult.successCount == 0 && agentResult.failedCount > 0) {
|
||||
allSuccess = false
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
allSuccess = false
|
||||
errorMessages.add("添加智能体失败: ${e.message}")
|
||||
}
|
||||
}
|
||||
|
||||
// 使用创建群聊的API,传入群聊名称来添加成员到现有群聊
|
||||
// 与创建群聊使用相同的方法,通过群聊名称标识目标群聊
|
||||
val response = accountService.createGroupChat(groupName!!, userIds, promptIds, roomId = null)
|
||||
if (response.isSuccessful && response.body() != null) {
|
||||
isLoading = false
|
||||
|
||||
if (allSuccess) {
|
||||
if (errorMessages.isNotEmpty()) {
|
||||
// 有部分失败,但至少有一些成功
|
||||
showToast(errorMessages.joinToString("\n"))
|
||||
}
|
||||
true
|
||||
} else {
|
||||
isLoading = false
|
||||
val errorMsg = "添加成员失败: ${response.message()}"
|
||||
// 全部失败
|
||||
val errorMsg = if (errorMessages.isNotEmpty()) {
|
||||
errorMessages.joinToString("\n")
|
||||
} else {
|
||||
"添加成员失败"
|
||||
}
|
||||
showToast(errorMsg)
|
||||
false
|
||||
}
|
||||
|
||||
@@ -113,10 +113,5 @@ class GroupMembersViewModel(
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun toggleRequireApproval() {
|
||||
requireApproval = !requireApproval
|
||||
// TODO: 实现更新设置的API调用
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -310,9 +310,28 @@
|
||||
<!-- Edit Profile Extras -->
|
||||
<string name="mbti_type">MBTI</string>
|
||||
<string name="zodiac">星座</string>
|
||||
<string name="change_cover">カバーを変更</string>
|
||||
<string name="personal_intro">自己紹介</string>
|
||||
<string name="error_nickname_empty">ニックネームは空にできません</string>
|
||||
<string name="error_nickname_too_short">ニックネームの長さは3文字未満にできません</string>
|
||||
<string name="error_nickname_too_long">ニックネームの長さは20文字を超えることはできません</string>
|
||||
<string name="error_bio_too_long">自己紹介の長さは100文字を超えることはできません</string>
|
||||
<string name="error_load_profile_failed">ユーザープロフィールの読み込みに失敗しました。もう一度お試しください</string>
|
||||
<string name="save">保存</string>
|
||||
<string name="choose_mbti">MBTIを選択</string>
|
||||
<string name="choose_zodiac">星座を選択</string>
|
||||
<string name="zodiac_aries">牡羊座</string>
|
||||
<string name="zodiac_taurus">牡牛座</string>
|
||||
<string name="zodiac_gemini">双子座</string>
|
||||
<string name="zodiac_cancer">蟹座</string>
|
||||
<string name="zodiac_leo">獅子座</string>
|
||||
<string name="zodiac_virgo">乙女座</string>
|
||||
<string name="zodiac_libra">天秤座</string>
|
||||
<string name="zodiac_scorpio">蠍座</string>
|
||||
<string name="zodiac_sagittarius">射手座</string>
|
||||
<string name="zodiac_capricorn">山羊座</string>
|
||||
<string name="zodiac_aquarius">水瓶座</string>
|
||||
<string name="zodiac_pisces">魚座</string>
|
||||
|
||||
<!-- Side Menu -->
|
||||
<string name="scan_qr">QRコードをスキャン</string>
|
||||
|
||||
@@ -334,7 +334,7 @@
|
||||
<string name="group_members_admin">管理员</string>
|
||||
<string name="group_members_list">群成员(%d)</string>
|
||||
<string name="group_members_send_message">发消息</string>
|
||||
<string name="group_members_delete_member">Delete Member</string>
|
||||
<string name="group_members_delete_member">删除成员</string>
|
||||
|
||||
<!-- Side Menu -->
|
||||
<string name="scan_qr">扫一扫</string>
|
||||
|
||||
Reference in New Issue
Block a user