Add support for new ban and delete all endpoint
This commit is contained in:
parent
3238487917
commit
ba60879343
|
@ -35,6 +35,11 @@ extension ContextMenuVC {
|
|||
let title = "Ban User"
|
||||
return Action(icon: UIImage(named: "ic_block")!, title: title) { delegate?.ban(viewItem) }
|
||||
}
|
||||
|
||||
static func banAndDeleteAllMessages(_ viewItem: ConversationViewItem, _ delegate: ContextMenuActionDelegate?) -> Action {
|
||||
let title = "Ban and Delete All"
|
||||
return Action(icon: UIImage(named: "ic_block")!, title: title) { delegate?.banAndDeleteAllMessages(viewItem) }
|
||||
}
|
||||
}
|
||||
|
||||
static func actions(for viewItem: ConversationViewItem, delegate: ContextMenuActionDelegate?) -> [Action] {
|
||||
|
@ -53,7 +58,10 @@ extension ContextMenuVC {
|
|||
let isGroup = viewItem.isGroupThread
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage { result.append(Action.copySessionID(viewItem, delegate)) }
|
||||
if !isGroup || viewItem.userCanDeleteGroupMessage { result.append(Action.delete(viewItem, delegate)) }
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage && viewItem.userHasModerationPermission { result.append(Action.ban(viewItem, delegate)) }
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage && viewItem.userHasModerationPermission {
|
||||
result.append(Action.ban(viewItem, delegate))
|
||||
result.append(Action.banAndDeleteAllMessages(viewItem, delegate))
|
||||
}
|
||||
return result
|
||||
case .mediaMessage, .audio, .genericAttachment:
|
||||
var result: [Action] = []
|
||||
|
@ -63,7 +71,10 @@ extension ContextMenuVC {
|
|||
let isGroup = viewItem.isGroupThread
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage { result.append(Action.copySessionID(viewItem, delegate)) }
|
||||
if !isGroup || viewItem.userCanDeleteGroupMessage { result.append(Action.delete(viewItem, delegate)) }
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage && viewItem.userHasModerationPermission { result.append(Action.ban(viewItem, delegate)) }
|
||||
if isGroup && viewItem.interaction is TSIncomingMessage && viewItem.userHasModerationPermission {
|
||||
result.append(Action.ban(viewItem, delegate))
|
||||
result.append(Action.banAndDeleteAllMessages(viewItem, delegate))
|
||||
}
|
||||
return result
|
||||
default: return []
|
||||
}
|
||||
|
@ -79,4 +90,5 @@ protocol ContextMenuActionDelegate : class {
|
|||
func delete(_ viewItem: ConversationViewItem)
|
||||
func save(_ viewItem: ConversationViewItem)
|
||||
func ban(_ viewItem: ConversationViewItem)
|
||||
func banAndDeleteAllMessages(_ viewItem: ConversationViewItem)
|
||||
}
|
||||
|
|
|
@ -532,7 +532,8 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc
|
|||
|
||||
func ban(_ viewItem: ConversationViewItem) {
|
||||
guard let message = viewItem.interaction as? TSIncomingMessage, message.isOpenGroupMessage else { return }
|
||||
let alert = UIAlertController(title: "Ban This User?", message: nil, preferredStyle: .alert)
|
||||
let explanation = "This will ban the selected user from this room. It won't ban them from other rooms."
|
||||
let alert = UIAlertController(title: "Session", message: explanation, preferredStyle: .alert)
|
||||
let threadID = thread.uniqueId!
|
||||
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
|
||||
let publicKey = message.authorId
|
||||
|
@ -543,6 +544,20 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc
|
|||
present(alert, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func banAndDeleteAllMessages(_ viewItem: ConversationViewItem) {
|
||||
guard let message = viewItem.interaction as? TSIncomingMessage, message.isOpenGroupMessage else { return }
|
||||
let explanation = "This will ban the selected user from this room and delete all messages sent by them. It won't ban them from other rooms or delete the messages they sent there."
|
||||
let alert = UIAlertController(title: "Session", message: explanation, preferredStyle: .alert)
|
||||
let threadID = thread.uniqueId!
|
||||
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
|
||||
let publicKey = message.authorId
|
||||
guard let openGroupV2 = Storage.shared.getV2OpenGroup(for: threadID) else { return }
|
||||
OpenGroupAPIV2.banAndDeleteAllMessages(publicKey, from: openGroupV2.room, on: openGroupV2.server).retainUntilComplete()
|
||||
}))
|
||||
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
|
||||
present(alert, animated: true, completion: nil)
|
||||
}
|
||||
|
||||
func handleQuoteViewCancelButtonTapped() {
|
||||
snInputView.quoteDraftInfo = nil
|
||||
}
|
||||
|
|
|
@ -406,6 +406,12 @@ public final class OpenGroupAPIV2 : NSObject {
|
|||
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
||||
}
|
||||
|
||||
public static func banAndDeleteAllMessages(_ publicKey: String, from room: String, on server: String) -> Promise<Void> {
|
||||
let parameters = [ "public_key" : publicKey ]
|
||||
let request = Request(verb: .post, room: room, server: server, endpoint: "ban_and_delete_all", parameters: parameters)
|
||||
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
||||
}
|
||||
|
||||
public static func unban(_ publicKey: String, from room: String, on server: String) -> Promise<Void> {
|
||||
let request = Request(verb: .delete, room: room, server: server, endpoint: "block_list/\(publicKey)")
|
||||
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
||||
|
|
Loading…
Reference in New Issue