mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-05 19:28:46 +02:00
Merge commit '670c547aad'
This commit is contained in:
commit
0999c097b4
4 changed files with 54 additions and 11 deletions
|
|
@ -272,7 +272,7 @@ func _internal_declineUrlAuth(account: Account, url: String) -> Signal<Never, No
|
|||
|> ignoreValues
|
||||
}
|
||||
|
||||
func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActionUrlSubject, allowWriteAccess: Bool, sharePhoneNumber: Bool) -> Signal<MessageActionUrlAuthResult, MessageActionUrlAuthError> {
|
||||
func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActionUrlSubject, allowWriteAccess: Bool, sharePhoneNumber: Bool, matchCode: String? = nil) -> Signal<MessageActionUrlAuthResult, MessageActionUrlAuthError> {
|
||||
var flags: Int32 = 0
|
||||
if allowWriteAccess {
|
||||
flags |= Int32(1 << 0)
|
||||
|
|
@ -280,7 +280,10 @@ func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActi
|
|||
if sharePhoneNumber {
|
||||
flags |= Int32(1 << 3)
|
||||
}
|
||||
|
||||
if matchCode != nil {
|
||||
flags |= Int32(1 << 4)
|
||||
}
|
||||
|
||||
let request: Signal<Api.UrlAuthResult?, MTRpcError>
|
||||
switch subject {
|
||||
case let .message(messageId, buttonId):
|
||||
|
|
@ -290,8 +293,11 @@ func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActi
|
|||
|> castError(MTRpcError.self)
|
||||
|> mapToSignal { peer -> Signal<Api.UrlAuthResult?, MTRpcError> in
|
||||
if let inputPeer = apiInputPeer(peer) {
|
||||
let flags: Int32 = 1 << 1
|
||||
return account.network.request(Api.functions.messages.acceptUrlAuth(flags: flags, peer: inputPeer, msgId: messageId.id, buttonId: buttonId, url: nil, matchCode: nil))
|
||||
var msgFlags: Int32 = 1 << 1
|
||||
if matchCode != nil {
|
||||
msgFlags |= Int32(1 << 4)
|
||||
}
|
||||
return account.network.request(Api.functions.messages.acceptUrlAuth(flags: msgFlags, peer: inputPeer, msgId: messageId.id, buttonId: buttonId, url: nil, matchCode: matchCode))
|
||||
|> map(Optional.init)
|
||||
} else {
|
||||
return .single(nil)
|
||||
|
|
@ -299,7 +305,7 @@ func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActi
|
|||
}
|
||||
case let .url(url):
|
||||
flags |= (1 << 2)
|
||||
request = account.network.request(Api.functions.messages.acceptUrlAuth(flags: flags, peer: nil, msgId: nil, buttonId: nil, url: url, matchCode: nil))
|
||||
request = account.network.request(Api.functions.messages.acceptUrlAuth(flags: flags, peer: nil, msgId: nil, buttonId: nil, url: url, matchCode: matchCode))
|
||||
|> map(Optional.init)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -99,8 +99,8 @@ public extension TelegramEngine {
|
|||
return _internal_requestMessageActionUrlAuth(account: self.account, subject: subject)
|
||||
}
|
||||
|
||||
public func acceptMessageActionUrlAuth(subject: MessageActionUrlSubject, allowWriteAccess: Bool, sharePhoneNumber: Bool) -> Signal<MessageActionUrlAuthResult, MessageActionUrlAuthError> {
|
||||
return _internal_acceptMessageActionUrlAuth(account: self.account, subject: subject, allowWriteAccess: allowWriteAccess, sharePhoneNumber: sharePhoneNumber)
|
||||
public func acceptMessageActionUrlAuth(subject: MessageActionUrlSubject, allowWriteAccess: Bool, sharePhoneNumber: Bool, matchCode: String? = nil) -> Signal<MessageActionUrlAuthResult, MessageActionUrlAuthError> {
|
||||
return _internal_acceptMessageActionUrlAuth(account: self.account, subject: subject, allowWriteAccess: allowWriteAccess, sharePhoneNumber: sharePhoneNumber, matchCode: matchCode)
|
||||
}
|
||||
|
||||
public func declineUrlAuth(url: String) -> Signal<Never, NoError> {
|
||||
|
|
|
|||
|
|
@ -4,15 +4,52 @@ import SwiftSignalKit
|
|||
import TelegramApi
|
||||
import MtProtoKit
|
||||
|
||||
func _internal_toggleMessageCopyProtection(account: Account, peerId: PeerId, enabled: Bool, requestMessageId: EngineMessage.Id?) -> Signal<Void, NoError> {
|
||||
return account.postbox.transaction { transaction -> Signal<Void, NoError> in
|
||||
public enum CopyProtectionResult {
|
||||
case applied
|
||||
case requested
|
||||
}
|
||||
|
||||
func _internal_toggleMessageCopyProtection(account: Account, peerId: PeerId, enabled: Bool, requestMessageId: EngineMessage.Id?) -> Signal<CopyProtectionResult, NoError> {
|
||||
return account.postbox.transaction { transaction -> Signal<CopyProtectionResult, NoError> in
|
||||
if let peer = transaction.getPeer(peerId), let inputPeer = apiInputPeer(peer) {
|
||||
var flags: Int32 = 0
|
||||
if let _ = requestMessageId {
|
||||
flags = (1 << 0)
|
||||
}
|
||||
return account.network.request(Api.functions.messages.toggleNoForwards(flags: flags, peer: inputPeer, enabled: enabled ? .boolTrue : .boolFalse, requestMsgId: requestMessageId?.id)) |> `catch` { _ in .complete() } |> map { updates -> Void in
|
||||
return account.network.request(Api.functions.messages.toggleNoForwards(flags: flags, peer: inputPeer, enabled: enabled ? .boolTrue : .boolFalse, requestMsgId: requestMessageId?.id)) |> `catch` { _ in .complete() } |> mapToSignal { updates -> Signal<CopyProtectionResult, NoError> in
|
||||
account.stateManager.addUpdates(updates)
|
||||
|
||||
var isRequest = false
|
||||
switch updates {
|
||||
case let .updates(data):
|
||||
for update in data.updates {
|
||||
if case let .updateNewMessage(msgData) = update, case let .messageService(serviceData) = msgData.message, case .messageActionNoForwardsRequest = serviceData.action {
|
||||
isRequest = true
|
||||
}
|
||||
}
|
||||
default:
|
||||
break
|
||||
}
|
||||
|
||||
if !isRequest {
|
||||
return account.postbox.transaction { transaction -> CopyProtectionResult in
|
||||
transaction.updatePeerCachedData(peerIds: [peerId], update: { _, current in
|
||||
if let previous = current as? CachedUserData {
|
||||
var updatedFlags = previous.flags
|
||||
if enabled {
|
||||
updatedFlags.insert(.copyProtectionEnabled)
|
||||
} else {
|
||||
updatedFlags.remove(.copyProtectionEnabled)
|
||||
}
|
||||
return previous.withUpdatedFlags(updatedFlags)
|
||||
}
|
||||
return current
|
||||
})
|
||||
return .applied
|
||||
}
|
||||
} else {
|
||||
return .single(.requested)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return .complete()
|
||||
|
|
|
|||
|
|
@ -505,7 +505,7 @@ public extension TelegramEngine {
|
|||
return _internal_toggleShouldChannelMessagesSignatures(account: self.account, peerId: peerId, signaturesEnabled: signaturesEnabled, profilesEnabled: profilesEnabled)
|
||||
}
|
||||
|
||||
public func toggleMessageCopyProtection(peerId: PeerId, enabled: Bool, requestMessageId: EngineMessage.Id? = nil) -> Signal<Void, NoError> {
|
||||
public func toggleMessageCopyProtection(peerId: PeerId, enabled: Bool, requestMessageId: EngineMessage.Id? = nil) -> Signal<CopyProtectionResult, NoError> {
|
||||
return _internal_toggleMessageCopyProtection(account: self.account, peerId: peerId, enabled: enabled, requestMessageId: requestMessageId)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue