diff --git a/submodules/TelegramApi/Sources/Api0.swift b/submodules/TelegramApi/Sources/Api0.swift index b1e1b7034f..4ab41c4447 100644 --- a/submodules/TelegramApi/Sources/Api0.swift +++ b/submodules/TelegramApi/Sources/Api0.swift @@ -978,7 +978,7 @@ fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { dict[596704836] = { return Api.auth.SentCode.parse_sentCodeSuccess($0) } dict[1035688326] = { return Api.auth.SentCodeType.parse_sentCodeTypeApp($0) } dict[1398007207] = { return Api.auth.SentCodeType.parse_sentCodeTypeCall($0) } - dict[1511364673] = { return Api.auth.SentCodeType.parse_sentCodeTypeEmailCode($0) } + dict[-196020837] = { return Api.auth.SentCodeType.parse_sentCodeTypeEmailCode($0) } dict[-444918734] = { return Api.auth.SentCodeType.parse_sentCodeTypeFirebaseSms($0) } dict[-1425815847] = { return Api.auth.SentCodeType.parse_sentCodeTypeFlashCall($0) } dict[-648651719] = { return Api.auth.SentCodeType.parse_sentCodeTypeFragmentSms($0) } diff --git a/submodules/TelegramApi/Sources/Api24.swift b/submodules/TelegramApi/Sources/Api24.swift index 74165a93de..a008cd6877 100644 --- a/submodules/TelegramApi/Sources/Api24.swift +++ b/submodules/TelegramApi/Sources/Api24.swift @@ -358,7 +358,7 @@ public extension Api.auth { enum SentCodeType: TypeConstructorDescription { case sentCodeTypeApp(length: Int32) case sentCodeTypeCall(length: Int32) - case sentCodeTypeEmailCode(flags: Int32, emailPattern: String, length: Int32, nextPhoneLoginDate: Int32?) + case sentCodeTypeEmailCode(flags: Int32, emailPattern: String, length: Int32, resetAvailablePeriod: Int32?, resetPendingDate: Int32?) case sentCodeTypeFirebaseSms(flags: Int32, nonce: Buffer?, receipt: String?, pushTimeout: Int32?, length: Int32) case sentCodeTypeFlashCall(pattern: String) case sentCodeTypeFragmentSms(url: String, length: Int32) @@ -380,14 +380,15 @@ public extension Api.auth { } serializeInt32(length, buffer: buffer, boxed: false) break - case .sentCodeTypeEmailCode(let flags, let emailPattern, let length, let nextPhoneLoginDate): + case .sentCodeTypeEmailCode(let flags, let emailPattern, let length, let resetAvailablePeriod, let resetPendingDate): if boxed { - buffer.appendInt32(1511364673) + buffer.appendInt32(-196020837) } serializeInt32(flags, buffer: buffer, boxed: false) serializeString(emailPattern, buffer: buffer, boxed: false) serializeInt32(length, buffer: buffer, boxed: false) - if Int(flags) & Int(1 << 2) != 0 {serializeInt32(nextPhoneLoginDate!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 3) != 0 {serializeInt32(resetAvailablePeriod!, buffer: buffer, boxed: false)} + if Int(flags) & Int(1 << 4) != 0 {serializeInt32(resetPendingDate!, buffer: buffer, boxed: false)} break case .sentCodeTypeFirebaseSms(let flags, let nonce, let receipt, let pushTimeout, let length): if boxed { @@ -440,8 +441,8 @@ public extension Api.auth { return ("sentCodeTypeApp", [("length", length as Any)]) case .sentCodeTypeCall(let length): return ("sentCodeTypeCall", [("length", length as Any)]) - case .sentCodeTypeEmailCode(let flags, let emailPattern, let length, let nextPhoneLoginDate): - return ("sentCodeTypeEmailCode", [("flags", flags as Any), ("emailPattern", emailPattern as Any), ("length", length as Any), ("nextPhoneLoginDate", nextPhoneLoginDate as Any)]) + case .sentCodeTypeEmailCode(let flags, let emailPattern, let length, let resetAvailablePeriod, let resetPendingDate): + return ("sentCodeTypeEmailCode", [("flags", flags as Any), ("emailPattern", emailPattern as Any), ("length", length as Any), ("resetAvailablePeriod", resetAvailablePeriod as Any), ("resetPendingDate", resetPendingDate as Any)]) case .sentCodeTypeFirebaseSms(let flags, let nonce, let receipt, let pushTimeout, let length): return ("sentCodeTypeFirebaseSms", [("flags", flags as Any), ("nonce", nonce as Any), ("receipt", receipt as Any), ("pushTimeout", pushTimeout as Any), ("length", length as Any)]) case .sentCodeTypeFlashCall(let pattern): @@ -487,13 +488,16 @@ public extension Api.auth { var _3: Int32? _3 = reader.readInt32() var _4: Int32? - if Int(_1!) & Int(1 << 2) != 0 {_4 = reader.readInt32() } + if Int(_1!) & Int(1 << 3) != 0 {_4 = reader.readInt32() } + var _5: Int32? + if Int(_1!) & Int(1 << 4) != 0 {_5 = reader.readInt32() } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil - let _c4 = (Int(_1!) & Int(1 << 2) == 0) || _4 != nil - if _c1 && _c2 && _c3 && _c4 { - return Api.auth.SentCodeType.sentCodeTypeEmailCode(flags: _1!, emailPattern: _2!, length: _3!, nextPhoneLoginDate: _4) + let _c4 = (Int(_1!) & Int(1 << 3) == 0) || _4 != nil + let _c5 = (Int(_1!) & Int(1 << 4) == 0) || _5 != nil + if _c1 && _c2 && _c3 && _c4 && _c5 { + return Api.auth.SentCodeType.sentCodeTypeEmailCode(flags: _1!, emailPattern: _2!, length: _3!, resetAvailablePeriod: _4, resetPendingDate: _5) } else { return nil diff --git a/submodules/TelegramApi/Sources/Api30.swift b/submodules/TelegramApi/Sources/Api30.swift index 792c2b5ece..f1461716a3 100644 --- a/submodules/TelegramApi/Sources/Api30.swift +++ b/submodules/TelegramApi/Sources/Api30.swift @@ -1715,6 +1715,22 @@ public extension Api.functions.auth { }) } } +public extension Api.functions.auth { + static func resetLoginEmail(phoneNumber: String, phoneCodeHash: String) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { + let buffer = Buffer() + buffer.appendInt32(2123760019) + serializeString(phoneNumber, buffer: buffer, boxed: false) + serializeString(phoneCodeHash, buffer: buffer, boxed: false) + return (FunctionDescription(name: "auth.resetLoginEmail", parameters: [("phoneNumber", String(describing: phoneNumber)), ("phoneCodeHash", String(describing: phoneCodeHash))]), buffer, DeserializeFunctionResponse { (buffer: Buffer) -> Api.auth.SentCode? in + let reader = BufferReader(buffer) + var result: Api.auth.SentCode? + if let signature = reader.readInt32() { + result = Api.parse(reader, signature: signature) as? Api.auth.SentCode + } + return result + }) + } +} public extension Api.functions.auth { static func sendCode(phoneNumber: String, apiId: Int32, apiHash: String, settings: Api.CodeSettings) -> (FunctionDescription, Buffer, DeserializeFunctionResponse) { let buffer = Buffer() diff --git a/submodules/TelegramCore/Sources/Authorization.swift b/submodules/TelegramCore/Sources/Authorization.swift index 57b4374b4e..6f63544a07 100644 --- a/submodules/TelegramCore/Sources/Authorization.swift +++ b/submodules/TelegramCore/Sources/Authorization.swift @@ -680,7 +680,7 @@ public func sendLoginEmailCode(account: UnauthorizedAccount, email: String) -> S return account.postbox.transaction { transaction -> Signal in switch result { case let .sentEmailCode(emailPattern, length): - transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: .email(emailPattern: emailPattern, length: length, nextPhoneLoginDate: nil, appleSignInAllowed: false, setup: true), hash: phoneCodeHash, timeout: nil, nextType: nil, syncContacts: syncContacts))) + transaction.setState(UnauthorizedAccountState(isTestingEnvironment: account.testingEnvironment, masterDatacenterId: account.masterDatacenterId, contents: .confirmationCodeEntry(number: phoneNumber, type: .email(emailPattern: emailPattern, length: length, resetAvailablePeriod: nil, resetPendingDate: nil, appleSignInAllowed: false, setup: true), hash: phoneCodeHash, timeout: nil, nextType: nil, syncContacts: syncContacts))) } return .complete() } diff --git a/submodules/TelegramCore/Sources/State/AccountState.swift b/submodules/TelegramCore/Sources/State/AccountState.swift index 4ebf56dfb0..dfb3b5ec79 100644 --- a/submodules/TelegramCore/Sources/State/AccountState.swift +++ b/submodules/TelegramCore/Sources/State/AccountState.swift @@ -30,8 +30,8 @@ extension SentAuthorizationCodeType { self = .flashCall(pattern: pattern) case let .sentCodeTypeMissedCall(prefix, length): self = .missedCall(numberPrefix: prefix, length: length) - case let .sentCodeTypeEmailCode(flags, emailPattern, length, nextPhoneLoginDate): - self = .email(emailPattern: emailPattern, length: length, nextPhoneLoginDate: nextPhoneLoginDate, appleSignInAllowed: (flags & (1 << 0)) != 0, setup: false) + case let .sentCodeTypeEmailCode(flags, emailPattern, length, resetAvailablePeriod, resetPendingDate): + self = .email(emailPattern: emailPattern, length: length, resetAvailablePeriod: resetAvailablePeriod, resetPendingDate: resetPendingDate, appleSignInAllowed: (flags & (1 << 0)) != 0, setup: false) case let .sentCodeTypeSetUpEmailRequired(flags): self = .emailSetupRequired(appleSignInAllowed: (flags & (1 << 0)) != 0) case let .sentCodeTypeFragmentSms(url, length): diff --git a/submodules/TelegramCore/Sources/State/Serialization.swift b/submodules/TelegramCore/Sources/State/Serialization.swift index 925e2a80ac..c682dffef1 100644 --- a/submodules/TelegramCore/Sources/State/Serialization.swift +++ b/submodules/TelegramCore/Sources/State/Serialization.swift @@ -210,7 +210,7 @@ public class BoxedMessage: NSObject { public class Serialization: NSObject, MTSerialization { public func currentLayer() -> UInt { - return 155 + return 156 } public func parseMessage(_ data: Data!) -> Any! { diff --git a/submodules/TelegramCore/Sources/SyncCore/SyncCore_UnauthorizedAccountState.swift b/submodules/TelegramCore/Sources/SyncCore/SyncCore_UnauthorizedAccountState.swift index 237a49e84a..921608044c 100644 --- a/submodules/TelegramCore/Sources/SyncCore/SyncCore_UnauthorizedAccountState.swift +++ b/submodules/TelegramCore/Sources/SyncCore/SyncCore_UnauthorizedAccountState.swift @@ -18,7 +18,7 @@ public enum SentAuthorizationCodeType: PostboxCoding, Equatable { case call(length: Int32) case flashCall(pattern: String) case missedCall(numberPrefix: String, length: Int32) - case email(emailPattern: String, length: Int32, nextPhoneLoginDate: Int32?, appleSignInAllowed: Bool, setup: Bool) + case email(emailPattern: String, length: Int32, resetAvailablePeriod: Int32?, resetPendingDate: Int32?, appleSignInAllowed: Bool, setup: Bool) case emailSetupRequired(appleSignInAllowed: Bool) case fragment(url: String, length: Int32) case firebase(pushTimeout: Int32?, length: Int32) @@ -36,7 +36,7 @@ public enum SentAuthorizationCodeType: PostboxCoding, Equatable { case SentAuthorizationCodeTypeValue.missedCall.rawValue: self = .missedCall(numberPrefix: decoder.decodeStringForKey("n", orElse: ""), length: decoder.decodeInt32ForKey("l", orElse: 0)) case SentAuthorizationCodeTypeValue.email.rawValue: - self = .email(emailPattern: decoder.decodeStringForKey("e", orElse: ""), length: decoder.decodeInt32ForKey("l", orElse: 0), nextPhoneLoginDate: decoder.decodeOptionalInt32ForKey("d"), appleSignInAllowed: decoder.decodeInt32ForKey("a", orElse: 0) != 0, setup: decoder.decodeInt32ForKey("s", orElse: 0) != 0) + self = .email(emailPattern: decoder.decodeStringForKey("e", orElse: ""), length: decoder.decodeInt32ForKey("l", orElse: 0), resetAvailablePeriod: decoder.decodeOptionalInt32ForKey("ra"), resetPendingDate: decoder.decodeOptionalInt32ForKey("rp"), appleSignInAllowed: decoder.decodeInt32ForKey("a", orElse: 0) != 0, setup: decoder.decodeInt32ForKey("s", orElse: 0) != 0) case SentAuthorizationCodeTypeValue.emailSetupRequired.rawValue: self = .emailSetupRequired(appleSignInAllowed: decoder.decodeInt32ForKey("a", orElse: 0) != 0) case SentAuthorizationCodeTypeValue.fragment.rawValue: @@ -66,14 +66,19 @@ public enum SentAuthorizationCodeType: PostboxCoding, Equatable { encoder.encodeInt32(SentAuthorizationCodeTypeValue.missedCall.rawValue, forKey: "v") encoder.encodeString(numberPrefix, forKey: "n") encoder.encodeInt32(length, forKey: "l") - case let .email(emailPattern, length, nextPhoneLoginDate, appleSignInAllowed, setup): + case let .email(emailPattern, length, resetAvailablePeriod, resetPendingDate, appleSignInAllowed, setup): encoder.encodeInt32(SentAuthorizationCodeTypeValue.email.rawValue, forKey: "v") encoder.encodeString(emailPattern, forKey: "e") encoder.encodeInt32(length, forKey: "l") - if let nextPhoneLoginDate = nextPhoneLoginDate { - encoder.encodeInt32(nextPhoneLoginDate, forKey: "d") + if let resetAvailablePeriod = resetAvailablePeriod { + encoder.encodeInt32(resetAvailablePeriod, forKey: "ra") } else { - encoder.encodeNil(forKey: "d") + encoder.encodeNil(forKey: "ra") + } + if let resetPendingDate = resetPendingDate { + encoder.encodeInt32(resetPendingDate, forKey: "rp") + } else { + encoder.encodeNil(forKey: "rp") } encoder.encodeInt32(appleSignInAllowed ? 1 : 0, forKey: "a") encoder.encodeInt32(setup ? 1 : 0, forKey: "s")