mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2025-06-28 20:29:53 +00:00
mobile: update model on adding group member (#923)
This commit is contained in:
parent
38f65c82c3
commit
f896c4453d
5 changed files with 15 additions and 27 deletions
|
@ -599,19 +599,13 @@ open class ChatController(private val ctrl: ChatCtrl, val ntfManager: NtfManager
|
|||
return null
|
||||
}
|
||||
|
||||
suspend fun apiAddMember(groupId: Long, contactId: Long, memberRole: GroupMemberRole) {
|
||||
suspend fun apiAddMember(groupId: Long, contactId: Long, memberRole: GroupMemberRole): GroupMember? {
|
||||
val r = sendCmd(CC.ApiAddMember(groupId, contactId, memberRole))
|
||||
if (r is CR.SentGroupInvitation) return
|
||||
if (r is CR.SentGroupInvitation) return r.member
|
||||
Log.e(TAG, "apiAddMember bad response: ${r.responseType} ${r.details}")
|
||||
return null
|
||||
}
|
||||
|
||||
// suspend fun apiAddMember(groupId: Long, contactId: Long, memberRole: GroupMemberRole): GroupMember? {
|
||||
// val r = sendCmd(CC.ApiAddMember(groupId, contactId, memberRole))
|
||||
// if (r is CR.SentGroupInvitation) return r.member
|
||||
// Log.e(TAG, "apiAddMember bad response: ${r.responseType} ${r.details}")
|
||||
// return null
|
||||
// }
|
||||
|
||||
suspend fun apiJoinGroup(groupId: Long) {
|
||||
val r = sendCmd(CC.ApiJoinGroup(groupId))
|
||||
when (r) {
|
||||
|
@ -1407,8 +1401,7 @@ sealed class CR {
|
|||
@Serializable @SerialName("contactsList") class ContactsList(val contacts: List<Contact>): CR()
|
||||
// group events
|
||||
@Serializable @SerialName("groupCreated") class GroupCreated(val groupInfo: GroupInfo): CR()
|
||||
@Serializable @SerialName("sentGroupInvitation") class SentGroupInvitation(val groupInfo: GroupInfo, val contact: Contact): CR()
|
||||
// @Serializable @SerialName("sentGroupInvitation") class SentGroupInvitation(val groupInfo: GroupInfo, val contact: Contact, val member: GroupMember): CR()
|
||||
@Serializable @SerialName("sentGroupInvitation") class SentGroupInvitation(val groupInfo: GroupInfo, val contact: Contact, val member: GroupMember): CR()
|
||||
@Serializable @SerialName("userAcceptedGroupSent") class UserAcceptedGroupSent (val groupInfo: GroupInfo): CR()
|
||||
@Serializable @SerialName("userDeletedMember") class UserDeletedMember(val groupInfo: GroupInfo, val member: GroupMember): CR()
|
||||
@Serializable @SerialName("leftMemberUser") class LeftMemberUser(val groupInfo: GroupInfo): CR()
|
||||
|
@ -1577,7 +1570,7 @@ sealed class CR {
|
|||
is ChatItemDeleted -> "deletedChatItem:\n${json.encodeToString(deletedChatItem)}\ntoChatItem:\n${json.encodeToString(toChatItem)}"
|
||||
is ContactsList -> json.encodeToString(contacts)
|
||||
is GroupCreated -> json.encodeToString(groupInfo)
|
||||
is SentGroupInvitation -> "groupInfo: $groupInfo\ncontact: $contact"
|
||||
is SentGroupInvitation -> "groupInfo: $groupInfo\ncontact: $contact\nmember: $member"
|
||||
is UserAcceptedGroupSent -> json.encodeToString(groupInfo)
|
||||
is UserDeletedMember -> "groupInfo: $groupInfo\nmember: $member"
|
||||
is LeftMemberUser -> json.encodeToString(groupInfo)
|
||||
|
|
|
@ -41,8 +41,10 @@ fun AddGroupMembersView(groupInfo: GroupInfo, chatModel: ChatModel, close: () ->
|
|||
inviteMembers = {
|
||||
withApi {
|
||||
selectedContacts.forEach {
|
||||
chatModel.controller.apiAddMember(groupInfo.groupId, it, selectedRole.value)
|
||||
// chatModel.upsertGroupMember(groupInfo, member)
|
||||
val member = chatModel.controller.apiAddMember(groupInfo.groupId, it, selectedRole.value)
|
||||
if (member != null) {
|
||||
chatModel.upsertGroupMember(groupInfo, member)
|
||||
}
|
||||
}
|
||||
close.invoke()
|
||||
}
|
||||
|
|
|
@ -567,18 +567,12 @@ func apiNewGroup(_ p: GroupProfile) throws -> GroupInfo {
|
|||
throw r
|
||||
}
|
||||
|
||||
func apiAddMember(_ groupId: Int64, _ contactId: Int64, _ memberRole: GroupMemberRole) async throws {
|
||||
func apiAddMember(_ groupId: Int64, _ contactId: Int64, _ memberRole: GroupMemberRole) async throws -> GroupMember {
|
||||
let r = await chatSendCmd(.apiAddMember(groupId: groupId, contactId: contactId, memberRole: memberRole))
|
||||
if case .sentGroupInvitation = r { return }
|
||||
if case let .sentGroupInvitation(_, _, member) = r { return member }
|
||||
throw r
|
||||
}
|
||||
|
||||
//func apiAddMember(_ groupId: Int64, _ contactId: Int64, _ memberRole: GroupMemberRole) async throws -> GroupMember {
|
||||
// let r = await chatSendCmd(.apiAddMember(groupId: groupId, contactId: contactId, memberRole: memberRole))
|
||||
// if case let .sentGroupInvitation(_, _, member) = r { return member }
|
||||
// throw r
|
||||
//}
|
||||
|
||||
enum JoinGroupResult {
|
||||
case joined(groupInfo: GroupInfo)
|
||||
case invitationRemoved
|
||||
|
|
|
@ -84,8 +84,8 @@ struct AddGroupMembersView: View {
|
|||
Task {
|
||||
do {
|
||||
for contactId in selectedContacts {
|
||||
try await apiAddMember(groupInfo.groupId, contactId, selectedRole)
|
||||
// await MainActor.run { ChatModel.shared.upsertGroupMember(groupInfo, member) }
|
||||
let member = try await apiAddMember(groupInfo.groupId, contactId, selectedRole)
|
||||
await MainActor.run { _ = ChatModel.shared.upsertGroupMember(groupInfo, member) }
|
||||
}
|
||||
await MainActor.run { dismiss() }
|
||||
if let cb = addedMembersCb { cb(selectedContacts) }
|
||||
|
|
|
@ -255,8 +255,7 @@ public enum ChatResponse: Decodable, Error {
|
|||
case contactsList(contacts: [Contact])
|
||||
// group events
|
||||
case groupCreated(groupInfo: GroupInfo)
|
||||
case sentGroupInvitation(groupInfo: GroupInfo, contact: Contact)
|
||||
// case sentGroupInvitation(groupInfo: GroupInfo, contact: Contact, member: GroupMember)
|
||||
case sentGroupInvitation(groupInfo: GroupInfo, contact: Contact, member: GroupMember)
|
||||
case userAcceptedGroupSent(groupInfo: GroupInfo)
|
||||
case userDeletedMember(groupInfo: GroupInfo, member: GroupMember)
|
||||
case leftMemberUser(groupInfo: GroupInfo)
|
||||
|
@ -437,7 +436,7 @@ public enum ChatResponse: Decodable, Error {
|
|||
case let .chatItemDeleted(deletedChatItem, toChatItem): return "deletedChatItem:\n\(String(describing: deletedChatItem))\ntoChatItem:\n\(String(describing: toChatItem))"
|
||||
case let .contactsList(contacts): return String(describing: contacts)
|
||||
case let .groupCreated(groupInfo): return String(describing: groupInfo)
|
||||
case let .sentGroupInvitation(groupInfo, contact): return "groupInfo: \(groupInfo)\ncontact: \(contact)"
|
||||
case let .sentGroupInvitation(groupInfo, contact, member): return "groupInfo: \(groupInfo)\ncontact: \(contact)\nmember: \(member)"
|
||||
case let .userAcceptedGroupSent(groupInfo): return String(describing: groupInfo)
|
||||
case let .userDeletedMember(groupInfo, member): return "groupInfo: \(groupInfo)\nmember: \(member)"
|
||||
case let .leftMemberUser(groupInfo): return String(describing: groupInfo)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue