feat: remove all reaction per emoji for open group moderation.

This commit is contained in:
Ryan Zhao 2022-07-28 13:06:29 +10:00
parent 82f058eae8
commit cc2bf11950
3 changed files with 54 additions and 11 deletions

View File

@ -1009,20 +1009,27 @@ extension ConversationVC:
Storage.shared
.read { db -> Promise<Void> in
guard let openGroup: OpenGroup = try? OpenGroup.fetchOne(db, id: cellViewModel.threadId) else {
guard
let openGroup: OpenGroup = try? OpenGroup
.fetchOne(db, id: cellViewModel.threadId),
let openGroupServerMessageId: Int64 = try? Interaction
.select(.openGroupServerMessageId)
.filter(id: cellViewModel.id)
.asRequest(of: Int64.self)
.fetchOne(db)
else {
return Promise(error: StorageError.objectNotFound)
}
// TODO: Need to add this API ()
return Promise.value(())
// OpenGroupAPI
// .reactionDelete(
// db,
// emoji: emoji,
// in: openGroup.roomToken,
// on: openGroup.server
// )
// .map { _ in () }
return OpenGroupAPI
.reactionDelete(
db,
emoji: emoji,
id: openGroupServerMessageId,
in: openGroup.roomToken,
on: openGroup.server
)
.map { _ in () }
}
.done { _ in
Storage.shared.writeAsync { db in

View File

@ -591,6 +591,29 @@ public enum OpenGroupAPI {
)
}
// MARK: - Reactions
public static func reactionDelete(
_ db: Database,
emoji: String,
id: Int64,
in roomToken: String,
on server: String,
using dependencies: SMKDependencies = SMKDependencies()
) -> Promise<OnionRequestResponseInfoType> {
return OpenGroupAPI
.send(
db,
request: Request<NoBody, Endpoint>(
method: .delete,
server: server,
endpoint: .reactionDelete(roomToken, id: id, emoji: emoji)
),
using: dependencies
)
.map { responseInfo, _ in responseInfo }
}
// MARK: - Pinning
/// Adds a pinned message to this room

View File

@ -26,6 +26,11 @@ extension OpenGroupAPI {
case roomMessagesSince(String, seqNo: Int64)
case roomDeleteMessages(String, sessionId: String)
// Reactions
case reactionDelete(String, id: Int64, emoji: String)
case reaction(String, id: Int64, emoji: String)
// Pinning
case roomPinMessage(String, id: Int64)
@ -86,6 +91,14 @@ extension OpenGroupAPI {
case .roomDeleteMessages(let roomToken, let sessionId):
return "room/\(roomToken)/all/\(sessionId)"
// Reactions
case .reactionDelete(let roomToken, let messageId, let emoji):
return "room/\(roomToken)/reactions/\(messageId)/\(emoji)"
case .reaction(let roomToken, let messageId, let emoji):
return "room/\(roomToken)/reaction/\(messageId)/\(emoji)"
// Pinning