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

pull/638/head
Ryan Zhao 3 years ago
parent 82f058eae8
commit cc2bf11950

@ -1009,20 +1009,27 @@ extension ConversationVC:
Storage.shared Storage.shared
.read { db -> Promise<Void> in .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) return Promise(error: StorageError.objectNotFound)
} }
// TODO: Need to add this API () return OpenGroupAPI
return Promise.value(()) .reactionDelete(
// OpenGroupAPI db,
// .reactionDelete( emoji: emoji,
// db, id: openGroupServerMessageId,
// emoji: emoji, in: openGroup.roomToken,
// in: openGroup.roomToken, on: openGroup.server
// on: openGroup.server )
// ) .map { _ in () }
// .map { _ in () }
} }
.done { _ in .done { _ in
Storage.shared.writeAsync { db in Storage.shared.writeAsync { db in

@ -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 // MARK: - Pinning
/// Adds a pinned message to this room /// Adds a pinned message to this room

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

Loading…
Cancel
Save