@@ -178,6 +178,7 @@ public enum MessageActionUrlAuthResult {
178178
179179 public static let requestWriteAccess = Flags ( rawValue: 1 << 0 )
180180 public static let requestPhoneNumber = Flags ( rawValue: 1 << 1 )
181+ public static let showMatchCodesFirst = Flags ( rawValue: 1 << 2 )
181182 }
182183
183184 public struct ClientData : Equatable {
@@ -244,25 +245,29 @@ func _internal_requestMessageActionUrlAuth(account: Account, subject: MessageAct
244245 return . default
245246 }
246247 switch result {
247- case . urlAuthResultDefault:
248- return . default
249- case let . urlAuthResultAccepted( urlAuthResultAcceptedData) :
250- let url = urlAuthResultAcceptedData. url
251- return . accepted( url: url)
252- case let . urlAuthResultRequest( urlAuthResultRequestData) :
253- let ( apiFlags, bot, domain) = ( urlAuthResultRequestData. flags, urlAuthResultRequestData. bot, urlAuthResultRequestData. domain)
254- var clientData : MessageActionUrlAuthResult . ClientData ?
255- if let browser = urlAuthResultRequestData. browser, let platform = urlAuthResultRequestData. platform, let ip = urlAuthResultRequestData. ip, let region = urlAuthResultRequestData. region {
256- clientData = MessageActionUrlAuthResult . ClientData ( browser: browser, platform: platform, ip: ip, region: region)
257- }
258- var flags : MessageActionUrlAuthResult . Flags = [ ]
259- if ( apiFlags & ( 1 << 0 ) ) != 0 {
260- flags. insert ( . requestWriteAccess)
261- }
262- if ( apiFlags & ( 1 << 1 ) ) != 0 {
263- flags. insert ( . requestPhoneNumber)
264- }
265- return . request( domain: domain, bot: TelegramUser ( user: bot) , clientData: clientData, flags: flags, matchCodes: urlAuthResultRequestData. matchCodes, userIdHint: urlAuthResultRequestData. userIdHint. flatMap { EnginePeer . Id ( namespace: Namespaces . Peer. CloudUser, id: PeerId . Id. _internalFromInt64Value ( $0) ) } )
248+ case . urlAuthResultDefault:
249+ return . default
250+ case let . urlAuthResultAccepted( urlAuthResultAcceptedData) :
251+ let url = urlAuthResultAcceptedData. url
252+ return . accepted( url: url)
253+ case let . urlAuthResultRequest( urlAuthResultRequestData) :
254+ let ( apiFlags, bot, domain) = ( urlAuthResultRequestData. flags, urlAuthResultRequestData. bot, urlAuthResultRequestData. domain)
255+ var clientData : MessageActionUrlAuthResult . ClientData ?
256+ if let browser = urlAuthResultRequestData. browser, let platform = urlAuthResultRequestData. platform, let ip = urlAuthResultRequestData. ip, let region = urlAuthResultRequestData. region {
257+ clientData = MessageActionUrlAuthResult . ClientData ( browser: browser, platform: platform, ip: ip, region: region)
258+ }
259+ var flags : MessageActionUrlAuthResult . Flags = [ ]
260+ if ( apiFlags & ( 1 << 0 ) ) != 0 {
261+ flags. insert ( . requestWriteAccess)
262+ }
263+ if ( apiFlags & ( 1 << 1 ) ) != 0 {
264+ flags. insert ( . requestPhoneNumber)
265+ }
266+
267+ if ( apiFlags & ( 1 << 5 ) ) != 0 {
268+ flags. insert ( . showMatchCodesFirst)
269+ }
270+ return . request( domain: domain, bot: TelegramUser ( user: bot) , clientData: clientData, flags: flags, matchCodes: urlAuthResultRequestData. matchCodes, userIdHint: urlAuthResultRequestData. userIdHint. flatMap { EnginePeer . Id ( namespace: Namespaces . Peer. CloudUser, id: PeerId . Id. _internalFromInt64Value ( $0) ) } )
266271 }
267272 }
268273}
@@ -327,3 +332,13 @@ func _internal_acceptMessageActionUrlAuth(account: Account, subject: MessageActi
327332 }
328333 }
329334}
335+
336+ func _internal_checkUrlAuthMatchCode( account: Account , url: String , matchCode: String ) -> Signal < Bool , NoError > {
337+ return account. network. request ( Api . functions. messages. checkUrlAuthMatchCode ( url: url, matchCode: matchCode) )
338+ |> `catch` { _ -> Signal < Api . Bool , NoError > in
339+ return . single( . boolFalse)
340+ }
341+ |> map { result in
342+ return result == . boolTrue
343+ }
344+ }
0 commit comments