mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
feat: open group emoji reacts endpoints work
This commit is contained in:
parent
8920cbdc28
commit
a66948812e
5 changed files with 65 additions and 7 deletions
|
@ -1110,7 +1110,7 @@ extension ConversationVC:
|
|||
else { return }
|
||||
|
||||
if remove {
|
||||
_ = OpenGroupAPI
|
||||
OpenGroupAPI
|
||||
.reactionDelete(
|
||||
db,
|
||||
emoji: emoji,
|
||||
|
@ -1118,8 +1118,19 @@ extension ConversationVC:
|
|||
in: openGroup.roomToken,
|
||||
on: openGroup.server
|
||||
)
|
||||
.retainUntilComplete()
|
||||
} else {
|
||||
_ = OpenGroupAPI
|
||||
OpenGroupAPI
|
||||
.reactors(
|
||||
db,
|
||||
emoji: emoji,
|
||||
id: openGroupServerMessageId,
|
||||
in: openGroup.roomToken,
|
||||
on: openGroup.server
|
||||
)
|
||||
.retainUntilComplete()
|
||||
|
||||
OpenGroupAPI
|
||||
.reactionAdd(
|
||||
db,
|
||||
emoji: emoji,
|
||||
|
@ -1127,6 +1138,7 @@ extension ConversationVC:
|
|||
in: openGroup.roomToken,
|
||||
on: openGroup.server
|
||||
)
|
||||
.retainUntilComplete()
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
@ -659,6 +659,34 @@ public enum OpenGroupAPI {
|
|||
|
||||
// MARK: - Reactions
|
||||
|
||||
public static func reactors(
|
||||
_ db: Database,
|
||||
emoji: String,
|
||||
id: Int64,
|
||||
in roomToken: String,
|
||||
on server: String,
|
||||
using dependencies: SMKDependencies = SMKDependencies()
|
||||
) -> Promise<OnionRequestResponseInfoType> {
|
||||
guard let encodedEmoji: String = "👍".addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||
}
|
||||
|
||||
return OpenGroupAPI
|
||||
.send(
|
||||
db,
|
||||
request: Request<NoBody, Endpoint>(
|
||||
method: .get,
|
||||
server: server,
|
||||
endpoint: .reactors(roomToken, id: id, emoji: encodedEmoji)
|
||||
),
|
||||
using: dependencies
|
||||
)
|
||||
.map { responseInfo, _ in
|
||||
print("Ryan Test: \(responseInfo)")
|
||||
return responseInfo
|
||||
}
|
||||
}
|
||||
|
||||
public static func reactionAdd(
|
||||
_ db: Database,
|
||||
emoji: String,
|
||||
|
@ -667,13 +695,17 @@ public enum OpenGroupAPI {
|
|||
on server: String,
|
||||
using dependencies: SMKDependencies = SMKDependencies()
|
||||
) -> Promise<OnionRequestResponseInfoType> {
|
||||
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||
}
|
||||
|
||||
return OpenGroupAPI
|
||||
.send(
|
||||
db,
|
||||
request: Request<NoBody, Endpoint>(
|
||||
method: .put,
|
||||
server: server,
|
||||
endpoint: .reaction(roomToken, id: id, emoji: emoji)
|
||||
endpoint: .reaction(roomToken, id: id, emoji: encodedEmoji)
|
||||
),
|
||||
using: dependencies
|
||||
)
|
||||
|
@ -688,13 +720,17 @@ public enum OpenGroupAPI {
|
|||
on server: String,
|
||||
using dependencies: SMKDependencies = SMKDependencies()
|
||||
) -> Promise<OnionRequestResponseInfoType> {
|
||||
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||
}
|
||||
|
||||
return OpenGroupAPI
|
||||
.send(
|
||||
db,
|
||||
request: Request<NoBody, Endpoint>(
|
||||
method: .delete,
|
||||
server: server,
|
||||
endpoint: .reaction(roomToken, id: id, emoji: emoji)
|
||||
endpoint: .reaction(roomToken, id: id, emoji: encodedEmoji)
|
||||
),
|
||||
using: dependencies
|
||||
)
|
||||
|
@ -709,13 +745,17 @@ public enum OpenGroupAPI {
|
|||
on server: String,
|
||||
using dependencies: SMKDependencies = SMKDependencies()
|
||||
) -> Promise<OnionRequestResponseInfoType> {
|
||||
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||
}
|
||||
|
||||
return OpenGroupAPI
|
||||
.send(
|
||||
db,
|
||||
request: Request<NoBody, Endpoint>(
|
||||
method: .delete,
|
||||
server: server,
|
||||
endpoint: .reactionDelete(roomToken, id: id, emoji: emoji)
|
||||
endpoint: .reactionDelete(roomToken, id: id, emoji: encodedEmoji)
|
||||
),
|
||||
using: dependencies
|
||||
)
|
||||
|
@ -1286,7 +1326,7 @@ public enum OpenGroupAPI {
|
|||
guard let url: URL = request.url else { return nil }
|
||||
|
||||
var updatedRequest: URLRequest = request
|
||||
let path: String = url.path
|
||||
let path: String = url.path.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? url.path
|
||||
.appending(url.query.map { value in "?\(value)" })
|
||||
let method: String = (request.httpMethod ?? "GET")
|
||||
let timestamp: Int = Int(floor(dependencies.date.timeIntervalSince1970))
|
||||
|
|
|
@ -6,12 +6,14 @@ public enum OpenGroupAPIError: LocalizedError {
|
|||
case decryptionFailed
|
||||
case signingFailed
|
||||
case noPublicKey
|
||||
case invalidEmoji
|
||||
|
||||
public var errorDescription: String? {
|
||||
switch self {
|
||||
case .decryptionFailed: return "Couldn't decrypt response."
|
||||
case .signingFailed: return "Couldn't sign message."
|
||||
case .noPublicKey: return "Couldn't find server public key."
|
||||
case .invalidEmoji: return "The emoji is invalid."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ extension OpenGroupAPI {
|
|||
|
||||
case reactionDelete(String, id: Int64, emoji: String)
|
||||
case reaction(String, id: Int64, emoji: String)
|
||||
case reactors(String, id: Int64, emoji: String)
|
||||
|
||||
// Pinning
|
||||
|
||||
|
@ -100,6 +101,9 @@ extension OpenGroupAPI {
|
|||
case .reaction(let roomToken, let messageId, let emoji):
|
||||
return "room/\(roomToken)/reaction/\(messageId)/\(emoji)"
|
||||
|
||||
case .reactors(let roomToken, let messageId, let emoji):
|
||||
return "room/\(roomToken)/reactors/\(messageId)/\(emoji)"
|
||||
|
||||
// Pinning
|
||||
|
||||
case .roomPinMessage(let roomToken, let messageId):
|
||||
|
|
|
@ -588,7 +588,7 @@ public enum OnionRequestAPI: OnionRequestAPIType {
|
|||
case .v4:
|
||||
// Note: We need to remove the leading forward slash unless we are explicitly hitting a legacy
|
||||
// endpoint (in which case we need it to ensure the request signing works correctly
|
||||
let endpoint: String = url.path
|
||||
let endpoint: String = (url.path.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) ?? url.path)
|
||||
.appending(url.query.map { value in "?\(value)" })
|
||||
|
||||
let requestInfo: RequestInfo = RequestInfo(
|
||||
|
|
Loading…
Reference in a new issue