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"
|
let title = "Ban User"
|
||||||
return Action(icon: UIImage(named: "ic_block")!, title: title) { delegate?.ban(viewItem) }
|
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] {
|
static func actions(for viewItem: ConversationViewItem, delegate: ContextMenuActionDelegate?) -> [Action] {
|
||||||
|
@ -53,7 +58,10 @@ extension ContextMenuVC {
|
||||||
let isGroup = viewItem.isGroupThread
|
let isGroup = viewItem.isGroupThread
|
||||||
if isGroup && viewItem.interaction is TSIncomingMessage { result.append(Action.copySessionID(viewItem, delegate)) }
|
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.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
|
return result
|
||||||
case .mediaMessage, .audio, .genericAttachment:
|
case .mediaMessage, .audio, .genericAttachment:
|
||||||
var result: [Action] = []
|
var result: [Action] = []
|
||||||
|
@ -63,7 +71,10 @@ extension ContextMenuVC {
|
||||||
let isGroup = viewItem.isGroupThread
|
let isGroup = viewItem.isGroupThread
|
||||||
if isGroup && viewItem.interaction is TSIncomingMessage { result.append(Action.copySessionID(viewItem, delegate)) }
|
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.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
|
return result
|
||||||
default: return []
|
default: return []
|
||||||
}
|
}
|
||||||
|
@ -79,4 +90,5 @@ protocol ContextMenuActionDelegate : class {
|
||||||
func delete(_ viewItem: ConversationViewItem)
|
func delete(_ viewItem: ConversationViewItem)
|
||||||
func save(_ viewItem: ConversationViewItem)
|
func save(_ viewItem: ConversationViewItem)
|
||||||
func ban(_ viewItem: ConversationViewItem)
|
func ban(_ viewItem: ConversationViewItem)
|
||||||
|
func banAndDeleteAllMessages(_ viewItem: ConversationViewItem)
|
||||||
}
|
}
|
||||||
|
|
|
@ -532,7 +532,8 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc
|
||||||
|
|
||||||
func ban(_ viewItem: ConversationViewItem) {
|
func ban(_ viewItem: ConversationViewItem) {
|
||||||
guard let message = viewItem.interaction as? TSIncomingMessage, message.isOpenGroupMessage else { return }
|
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!
|
let threadID = thread.uniqueId!
|
||||||
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
|
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in
|
||||||
let publicKey = message.authorId
|
let publicKey = message.authorId
|
||||||
|
@ -542,6 +543,20 @@ extension ConversationVC : InputViewDelegate, MessageCellDelegate, ContextMenuAc
|
||||||
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
|
alert.addAction(UIAlertAction(title: "Cancel", style: .default, handler: nil))
|
||||||
present(alert, animated: true, completion: nil)
|
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() {
|
func handleQuoteViewCancelButtonTapped() {
|
||||||
snInputView.quoteDraftInfo = nil
|
snInputView.quoteDraftInfo = nil
|
||||||
|
|
|
@ -406,6 +406,12 @@ public final class OpenGroupAPIV2 : NSObject {
|
||||||
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
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> {
|
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)")
|
let request = Request(verb: .delete, room: room, server: server, endpoint: "block_list/\(publicKey)")
|
||||||
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
return send(request).map(on: OpenGroupAPIV2.workQueue) { _ in }
|
||||||
|
|
Loading…
Reference in New Issue