ios: group link role, add observer role (#1978)

* ios: group link role, add observer role

* prevent observers from sending in UI, clear compose state on role change
This commit is contained in:
Evgeny Poberezkin
2023-03-06 13:54:43 +00:00
committed by GitHub
parent 7d49209f79
commit 8f0e7512be
7 changed files with 119 additions and 47 deletions
+16 -6
View File
@@ -868,9 +868,15 @@ func apiUpdateGroup(_ groupId: Int64, _ groupProfile: GroupProfile) async throws
throw r
}
func apiCreateGroupLink(_ groupId: Int64) async throws -> String {
let r = await chatSendCmd(.apiCreateGroupLink(groupId: groupId))
if case let .groupLinkCreated(_, _, connReq) = r { return connReq }
func apiCreateGroupLink(_ groupId: Int64, memberRole: GroupMemberRole = .member) async throws -> (String, GroupMemberRole) {
let r = await chatSendCmd(.apiCreateGroupLink(groupId: groupId, memberRole: memberRole))
if case let .groupLinkCreated(_, _, connReq, memberRole) = r { return (connReq, memberRole) }
throw r
}
func apiGroupLinkMemberRole(_ groupId: Int64, memberRole: GroupMemberRole = .member) async throws -> (String, GroupMemberRole) {
let r = await chatSendCmd(.apiGroupLinkMemberRole(groupId: groupId, memberRole: memberRole))
if case let .groupLink(_, _, connReq, memberRole) = r { return (connReq, memberRole) }
throw r
}
@@ -880,11 +886,11 @@ func apiDeleteGroupLink(_ groupId: Int64) async throws {
throw r
}
func apiGetGroupLink(_ groupId: Int64) throws -> String? {
func apiGetGroupLink(_ groupId: Int64) throws -> (String, GroupMemberRole)? {
let r = chatSendCmdSync(.apiGetGroupLink(groupId: groupId))
switch r {
case let .groupLink(_, _, connReq):
return connReq
case let .groupLink(_, _, connReq, memberRole):
return (connReq, memberRole)
case .chatCmdError(_, chatError: .errorStore(storeError: .groupLinkNotFound)):
return nil
default: throw r
@@ -1180,6 +1186,10 @@ func processReceivedMsg(_ res: ChatResponse) async {
if active(user) {
m.updateGroup(toGroup)
}
case let .memberRole(user, groupInfo, _, _, _, _):
if active(user) {
m.updateGroup(groupInfo)
}
case let .rcvFileStart(user, aChatItem):
chatItemSimpleUpdate(user, aChatItem)
case let .rcvFileComplete(user, aChatItem):