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
|
@ -1110,7 +1110,7 @@ extension ConversationVC:
|
||||||
else { return }
|
else { return }
|
||||||
|
|
||||||
if remove {
|
if remove {
|
||||||
_ = OpenGroupAPI
|
OpenGroupAPI
|
||||||
.reactionDelete(
|
.reactionDelete(
|
||||||
db,
|
db,
|
||||||
emoji: emoji,
|
emoji: emoji,
|
||||||
|
@ -1118,8 +1118,19 @@ extension ConversationVC:
|
||||||
in: openGroup.roomToken,
|
in: openGroup.roomToken,
|
||||||
on: openGroup.server
|
on: openGroup.server
|
||||||
)
|
)
|
||||||
|
.retainUntilComplete()
|
||||||
} else {
|
} else {
|
||||||
_ = OpenGroupAPI
|
OpenGroupAPI
|
||||||
|
.reactors(
|
||||||
|
db,
|
||||||
|
emoji: emoji,
|
||||||
|
id: openGroupServerMessageId,
|
||||||
|
in: openGroup.roomToken,
|
||||||
|
on: openGroup.server
|
||||||
|
)
|
||||||
|
.retainUntilComplete()
|
||||||
|
|
||||||
|
OpenGroupAPI
|
||||||
.reactionAdd(
|
.reactionAdd(
|
||||||
db,
|
db,
|
||||||
emoji: emoji,
|
emoji: emoji,
|
||||||
|
@ -1127,6 +1138,7 @@ extension ConversationVC:
|
||||||
in: openGroup.roomToken,
|
in: openGroup.roomToken,
|
||||||
on: openGroup.server
|
on: openGroup.server
|
||||||
)
|
)
|
||||||
|
.retainUntilComplete()
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -659,6 +659,34 @@ public enum OpenGroupAPI {
|
||||||
|
|
||||||
// MARK: - Reactions
|
// 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(
|
public static func reactionAdd(
|
||||||
_ db: Database,
|
_ db: Database,
|
||||||
emoji: String,
|
emoji: String,
|
||||||
|
@ -667,13 +695,17 @@ public enum OpenGroupAPI {
|
||||||
on server: String,
|
on server: String,
|
||||||
using dependencies: SMKDependencies = SMKDependencies()
|
using dependencies: SMKDependencies = SMKDependencies()
|
||||||
) -> Promise<OnionRequestResponseInfoType> {
|
) -> Promise<OnionRequestResponseInfoType> {
|
||||||
|
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||||
|
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||||
|
}
|
||||||
|
|
||||||
return OpenGroupAPI
|
return OpenGroupAPI
|
||||||
.send(
|
.send(
|
||||||
db,
|
db,
|
||||||
request: Request<NoBody, Endpoint>(
|
request: Request<NoBody, Endpoint>(
|
||||||
method: .put,
|
method: .put,
|
||||||
server: server,
|
server: server,
|
||||||
endpoint: .reaction(roomToken, id: id, emoji: emoji)
|
endpoint: .reaction(roomToken, id: id, emoji: encodedEmoji)
|
||||||
),
|
),
|
||||||
using: dependencies
|
using: dependencies
|
||||||
)
|
)
|
||||||
|
@ -688,13 +720,17 @@ public enum OpenGroupAPI {
|
||||||
on server: String,
|
on server: String,
|
||||||
using dependencies: SMKDependencies = SMKDependencies()
|
using dependencies: SMKDependencies = SMKDependencies()
|
||||||
) -> Promise<OnionRequestResponseInfoType> {
|
) -> Promise<OnionRequestResponseInfoType> {
|
||||||
|
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||||
|
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||||
|
}
|
||||||
|
|
||||||
return OpenGroupAPI
|
return OpenGroupAPI
|
||||||
.send(
|
.send(
|
||||||
db,
|
db,
|
||||||
request: Request<NoBody, Endpoint>(
|
request: Request<NoBody, Endpoint>(
|
||||||
method: .delete,
|
method: .delete,
|
||||||
server: server,
|
server: server,
|
||||||
endpoint: .reaction(roomToken, id: id, emoji: emoji)
|
endpoint: .reaction(roomToken, id: id, emoji: encodedEmoji)
|
||||||
),
|
),
|
||||||
using: dependencies
|
using: dependencies
|
||||||
)
|
)
|
||||||
|
@ -709,13 +745,17 @@ public enum OpenGroupAPI {
|
||||||
on server: String,
|
on server: String,
|
||||||
using dependencies: SMKDependencies = SMKDependencies()
|
using dependencies: SMKDependencies = SMKDependencies()
|
||||||
) -> Promise<OnionRequestResponseInfoType> {
|
) -> Promise<OnionRequestResponseInfoType> {
|
||||||
|
guard let encodedEmoji: String = emoji.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed) else {
|
||||||
|
return Promise(error: OpenGroupAPIError.invalidEmoji)
|
||||||
|
}
|
||||||
|
|
||||||
return OpenGroupAPI
|
return OpenGroupAPI
|
||||||
.send(
|
.send(
|
||||||
db,
|
db,
|
||||||
request: Request<NoBody, Endpoint>(
|
request: Request<NoBody, Endpoint>(
|
||||||
method: .delete,
|
method: .delete,
|
||||||
server: server,
|
server: server,
|
||||||
endpoint: .reactionDelete(roomToken, id: id, emoji: emoji)
|
endpoint: .reactionDelete(roomToken, id: id, emoji: encodedEmoji)
|
||||||
),
|
),
|
||||||
using: dependencies
|
using: dependencies
|
||||||
)
|
)
|
||||||
|
@ -1286,7 +1326,7 @@ public enum OpenGroupAPI {
|
||||||
guard let url: URL = request.url else { return nil }
|
guard let url: URL = request.url else { return nil }
|
||||||
|
|
||||||
var updatedRequest: URLRequest = request
|
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)" })
|
.appending(url.query.map { value in "?\(value)" })
|
||||||
let method: String = (request.httpMethod ?? "GET")
|
let method: String = (request.httpMethod ?? "GET")
|
||||||
let timestamp: Int = Int(floor(dependencies.date.timeIntervalSince1970))
|
let timestamp: Int = Int(floor(dependencies.date.timeIntervalSince1970))
|
||||||
|
|
|
@ -6,12 +6,14 @@ public enum OpenGroupAPIError: LocalizedError {
|
||||||
case decryptionFailed
|
case decryptionFailed
|
||||||
case signingFailed
|
case signingFailed
|
||||||
case noPublicKey
|
case noPublicKey
|
||||||
|
case invalidEmoji
|
||||||
|
|
||||||
public var errorDescription: String? {
|
public var errorDescription: String? {
|
||||||
switch self {
|
switch self {
|
||||||
case .decryptionFailed: return "Couldn't decrypt response."
|
case .decryptionFailed: return "Couldn't decrypt response."
|
||||||
case .signingFailed: return "Couldn't sign message."
|
case .signingFailed: return "Couldn't sign message."
|
||||||
case .noPublicKey: return "Couldn't find server public key."
|
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 reactionDelete(String, id: Int64, emoji: String)
|
||||||
case reaction(String, id: Int64, emoji: String)
|
case reaction(String, id: Int64, emoji: String)
|
||||||
|
case reactors(String, id: Int64, emoji: String)
|
||||||
|
|
||||||
// Pinning
|
// Pinning
|
||||||
|
|
||||||
|
@ -99,6 +100,9 @@ extension OpenGroupAPI {
|
||||||
|
|
||||||
case .reaction(let roomToken, let messageId, let emoji):
|
case .reaction(let roomToken, let messageId, let emoji):
|
||||||
return "room/\(roomToken)/reaction/\(messageId)/\(emoji)"
|
return "room/\(roomToken)/reaction/\(messageId)/\(emoji)"
|
||||||
|
|
||||||
|
case .reactors(let roomToken, let messageId, let emoji):
|
||||||
|
return "room/\(roomToken)/reactors/\(messageId)/\(emoji)"
|
||||||
|
|
||||||
// Pinning
|
// Pinning
|
||||||
|
|
||||||
|
|
|
@ -588,7 +588,7 @@ public enum OnionRequestAPI: OnionRequestAPIType {
|
||||||
case .v4:
|
case .v4:
|
||||||
// Note: We need to remove the leading forward slash unless we are explicitly hitting a legacy
|
// 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
|
// 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)" })
|
.appending(url.query.map { value in "?\(value)" })
|
||||||
|
|
||||||
let requestInfo: RequestInfo = RequestInfo(
|
let requestInfo: RequestInfo = RequestInfo(
|
||||||
|
|
Loading…
Reference in a new issue