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
|
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))
|
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}")
|
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) {
|
suspend fun apiJoinGroup(groupId: Long) {
|
||||||
val r = sendCmd(CC.ApiJoinGroup(groupId))
|
val r = sendCmd(CC.ApiJoinGroup(groupId))
|
||||||
when (r) {
|
when (r) {
|
||||||
|
@ -1407,8 +1401,7 @@ sealed class CR {
|
||||||
@Serializable @SerialName("contactsList") class ContactsList(val contacts: List<Contact>): CR()
|
@Serializable @SerialName("contactsList") class ContactsList(val contacts: List<Contact>): CR()
|
||||||
// group events
|
// group events
|
||||||
@Serializable @SerialName("groupCreated") class GroupCreated(val groupInfo: GroupInfo): CR()
|
@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("userAcceptedGroupSent") class UserAcceptedGroupSent (val groupInfo: GroupInfo): CR()
|
||||||
@Serializable @SerialName("userDeletedMember") class UserDeletedMember(val groupInfo: GroupInfo, val member: GroupMember): CR()
|
@Serializable @SerialName("userDeletedMember") class UserDeletedMember(val groupInfo: GroupInfo, val member: GroupMember): CR()
|
||||||
@Serializable @SerialName("leftMemberUser") class LeftMemberUser(val groupInfo: GroupInfo): 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 ChatItemDeleted -> "deletedChatItem:\n${json.encodeToString(deletedChatItem)}\ntoChatItem:\n${json.encodeToString(toChatItem)}"
|
||||||
is ContactsList -> json.encodeToString(contacts)
|
is ContactsList -> json.encodeToString(contacts)
|
||||||
is GroupCreated -> json.encodeToString(groupInfo)
|
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 UserAcceptedGroupSent -> json.encodeToString(groupInfo)
|
||||||
is UserDeletedMember -> "groupInfo: $groupInfo\nmember: $member"
|
is UserDeletedMember -> "groupInfo: $groupInfo\nmember: $member"
|
||||||
is LeftMemberUser -> json.encodeToString(groupInfo)
|
is LeftMemberUser -> json.encodeToString(groupInfo)
|
||||||
|
|
|
@ -41,8 +41,10 @@ fun AddGroupMembersView(groupInfo: GroupInfo, chatModel: ChatModel, close: () ->
|
||||||
inviteMembers = {
|
inviteMembers = {
|
||||||
withApi {
|
withApi {
|
||||||
selectedContacts.forEach {
|
selectedContacts.forEach {
|
||||||
chatModel.controller.apiAddMember(groupInfo.groupId, it, selectedRole.value)
|
val member = chatModel.controller.apiAddMember(groupInfo.groupId, it, selectedRole.value)
|
||||||
// chatModel.upsertGroupMember(groupInfo, member)
|
if (member != null) {
|
||||||
|
chatModel.upsertGroupMember(groupInfo, member)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
close.invoke()
|
close.invoke()
|
||||||
}
|
}
|
||||||
|
|
|
@ -567,18 +567,12 @@ func apiNewGroup(_ p: GroupProfile) throws -> GroupInfo {
|
||||||
throw r
|
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))
|
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
|
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 {
|
enum JoinGroupResult {
|
||||||
case joined(groupInfo: GroupInfo)
|
case joined(groupInfo: GroupInfo)
|
||||||
case invitationRemoved
|
case invitationRemoved
|
||||||
|
|
|
@ -84,8 +84,8 @@ struct AddGroupMembersView: View {
|
||||||
Task {
|
Task {
|
||||||
do {
|
do {
|
||||||
for contactId in selectedContacts {
|
for contactId in selectedContacts {
|
||||||
try await apiAddMember(groupInfo.groupId, contactId, selectedRole)
|
let member = try await apiAddMember(groupInfo.groupId, contactId, selectedRole)
|
||||||
// await MainActor.run { ChatModel.shared.upsertGroupMember(groupInfo, member) }
|
await MainActor.run { _ = ChatModel.shared.upsertGroupMember(groupInfo, member) }
|
||||||
}
|
}
|
||||||
await MainActor.run { dismiss() }
|
await MainActor.run { dismiss() }
|
||||||
if let cb = addedMembersCb { cb(selectedContacts) }
|
if let cb = addedMembersCb { cb(selectedContacts) }
|
||||||
|
|
|
@ -255,8 +255,7 @@ public enum ChatResponse: Decodable, Error {
|
||||||
case contactsList(contacts: [Contact])
|
case contactsList(contacts: [Contact])
|
||||||
// group events
|
// group events
|
||||||
case groupCreated(groupInfo: GroupInfo)
|
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 userAcceptedGroupSent(groupInfo: GroupInfo)
|
||||||
case userDeletedMember(groupInfo: GroupInfo, member: GroupMember)
|
case userDeletedMember(groupInfo: GroupInfo, member: GroupMember)
|
||||||
case leftMemberUser(groupInfo: GroupInfo)
|
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 .chatItemDeleted(deletedChatItem, toChatItem): return "deletedChatItem:\n\(String(describing: deletedChatItem))\ntoChatItem:\n\(String(describing: toChatItem))"
|
||||||
case let .contactsList(contacts): return String(describing: contacts)
|
case let .contactsList(contacts): return String(describing: contacts)
|
||||||
case let .groupCreated(groupInfo): return String(describing: groupInfo)
|
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 .userAcceptedGroupSent(groupInfo): return String(describing: groupInfo)
|
||||||
case let .userDeletedMember(groupInfo, member): return "groupInfo: \(groupInfo)\nmember: \(member)"
|
case let .userDeletedMember(groupInfo, member): return "groupInfo: \(groupInfo)\nmember: \(member)"
|
||||||
case let .leftMemberUser(groupInfo): return String(describing: groupInfo)
|
case let .leftMemberUser(groupInfo): return String(describing: groupInfo)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue