mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-08 08:31:13 +00:00
no message
This commit is contained in:
parent
1f29ac5f27
commit
9588da80b1
@ -89,7 +89,7 @@ func stringForUserPresence(strings: PresentationStrings, day: RelativeTimestampF
|
|||||||
case .today:
|
case .today:
|
||||||
dayString = strings.LastSeen_AtDate(strings.Time_TodayAt(stringForShortTimestamp(hours: hours, minutes: minutes, dateTimeFormat: dateTimeFormat)).0).0
|
dayString = strings.LastSeen_AtDate(strings.Time_TodayAt(stringForShortTimestamp(hours: hours, minutes: minutes, dateTimeFormat: dateTimeFormat)).0).0
|
||||||
case .yesterday:
|
case .yesterday:
|
||||||
dayString = strings.LastSeen_YesterdayAt(stringForShortTimestamp(hours: hours, minutes: minutes, timeFormat: timeFormat)).0
|
dayString = strings.LastSeen_YesterdayAt(stringForShortTimestamp(hours: hours, minutes: minutes, dateTimeFormat: dateTimeFormat)).0
|
||||||
}
|
}
|
||||||
return dayString
|
return dayString
|
||||||
}
|
}
|
||||||
|
@ -442,21 +442,21 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch field {
|
switch field {
|
||||||
case let .identity(personalDetails, document, selfie, translations):
|
case let .identity(personalDetails, document):
|
||||||
if let document = document {
|
if let document = document {
|
||||||
var hasValueType: SecureIdRequestedIdentityDocument?
|
var hasValueType: (document: SecureIdRequestedIdentityDocument, selfie: Bool, translation: Bool)?
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(formData.values, key: type.valueKey)?.1 {
|
if let value = findValue(formData.values, key: type.document.valueKey)?.1 {
|
||||||
switch value.value {
|
switch value.value {
|
||||||
case .passport:
|
case .passport:
|
||||||
hasValueType = .passport
|
hasValueType = (.passport, type.selfie, type.translation)
|
||||||
case .idCard:
|
case .idCard:
|
||||||
hasValueType = .idCard
|
hasValueType = (.idCard, type.selfie, type.translation)
|
||||||
case .driversLicense:
|
case .driversLicense:
|
||||||
hasValueType = .driversLicense
|
hasValueType = (.driversLicense, type.selfie, type.translation)
|
||||||
case .internalPassport:
|
case .internalPassport:
|
||||||
hasValueType = .internalPassport
|
hasValueType = (.internalPassport, type.selfie, type.translation)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -464,15 +464,15 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
var chosenByError = false
|
var chosenByError = false
|
||||||
outer: for type in types {
|
outer: for type in types {
|
||||||
if let value = findValue(formData.values, key: type.valueKey)?.1 {
|
if let value = findValue(formData.values, key: type.document.valueKey)?.1 {
|
||||||
let hasErrors = hasErrors(value, type.valueKey)
|
let hasErrors = hasErrors(value, type.document.valueKey)
|
||||||
|
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if selfie && !data.selfie {
|
if type.selfie && !data.selfie {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
if translations && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -480,13 +480,13 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
chosenByError = hasErrors
|
chosenByError = hasErrors
|
||||||
switch value.value {
|
switch value.value {
|
||||||
case .passport:
|
case .passport:
|
||||||
hasValueType = .passport
|
hasValueType = (.passport, type.selfie, type.translation)
|
||||||
case .idCard:
|
case .idCard:
|
||||||
hasValueType = .idCard
|
hasValueType = (.idCard, type.selfie, type.translation)
|
||||||
case .driversLicense:
|
case .driversLicense:
|
||||||
hasValueType = .driversLicense
|
hasValueType = (.driversLicense, type.selfie, type.translation)
|
||||||
case .internalPassport:
|
case .internalPassport:
|
||||||
hasValueType = .internalPassport
|
hasValueType = (.internalPassport, type.selfie, type.translation)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -494,8 +494,8 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let hasValueType = hasValueType {
|
if let (hasValueType, selfie, translation) = hasValueType {
|
||||||
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .identity(details: personalDetails, document: hasValueType, selfie: selfie, translations: translations), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .identity(details: personalDetails, document: hasValueType, selfie: selfie, translations: translation), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
||||||
var keys: [SecureIdValueKey] = []
|
var keys: [SecureIdValueKey] = []
|
||||||
if personalDetails != nil {
|
if personalDetails != nil {
|
||||||
keys.append(.personalDetails)
|
keys.append(.personalDetails)
|
||||||
@ -506,28 +506,28 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else if personalDetails != nil {
|
} else if personalDetails != nil {
|
||||||
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .identity(details: personalDetails, document: nil, selfie: selfie, translations: translations), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .identity(details: personalDetails, document: nil, selfie: false, translations: false), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
||||||
updatedValues([.personalDetails], values)
|
updatedValues([.personalDetails], values)
|
||||||
}), nil)
|
}), nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
case let .address(addressDetails, document, translation):
|
case let .address(addressDetails, document):
|
||||||
if let document = document {
|
if let document = document {
|
||||||
var hasValueType: SecureIdRequestedAddressDocument?
|
var hasValueType: (document: SecureIdRequestedAddressDocument, translation: Bool)?
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(formData.values, key: type.valueKey)?.1 {
|
if let value = findValue(formData.values, key: type.document.valueKey)?.1 {
|
||||||
switch value.value {
|
switch value.value {
|
||||||
case .utilityBill:
|
case .utilityBill:
|
||||||
hasValueType = .utilityBill
|
hasValueType = (.utilityBill, type.translation)
|
||||||
case .bankStatement:
|
case .bankStatement:
|
||||||
hasValueType = .bankStatement
|
hasValueType = (.bankStatement, type.translation)
|
||||||
case .rentalAgreement:
|
case .rentalAgreement:
|
||||||
hasValueType = .rentalAgreement
|
hasValueType = (.rentalAgreement, type.translation)
|
||||||
case .passportRegistration:
|
case .passportRegistration:
|
||||||
hasValueType = .passportRegistration
|
hasValueType = (.passportRegistration, type.translation)
|
||||||
case .temporaryRegistration:
|
case .temporaryRegistration:
|
||||||
hasValueType = .temporaryRegistration
|
hasValueType = (.temporaryRegistration, type.translation)
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -535,12 +535,12 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
var chosenByError = false
|
var chosenByError = false
|
||||||
outer: for type in types {
|
outer: for type in types {
|
||||||
if let value = findValue(formData.values, key: type.valueKey)?.1 {
|
if let value = findValue(formData.values, key: type.document.valueKey)?.1 {
|
||||||
let hasErrors = hasErrors(value, type.valueKey)
|
let hasErrors = hasErrors(value, type.document.valueKey)
|
||||||
|
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -548,19 +548,19 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
chosenByError = hasErrors
|
chosenByError = hasErrors
|
||||||
switch value.value {
|
switch value.value {
|
||||||
case .utilityBill:
|
case .utilityBill:
|
||||||
hasValueType = .utilityBill
|
hasValueType = (.utilityBill, type.translation)
|
||||||
break outer
|
break outer
|
||||||
case .bankStatement:
|
case .bankStatement:
|
||||||
hasValueType = .bankStatement
|
hasValueType = (.bankStatement, type.translation)
|
||||||
break outer
|
break outer
|
||||||
case .rentalAgreement:
|
case .rentalAgreement:
|
||||||
hasValueType = .rentalAgreement
|
hasValueType = (.rentalAgreement, type.translation)
|
||||||
break outer
|
break outer
|
||||||
case .passportRegistration:
|
case .passportRegistration:
|
||||||
hasValueType = .passportRegistration
|
hasValueType = (.passportRegistration, type.translation)
|
||||||
break outer
|
break outer
|
||||||
case .temporaryRegistration:
|
case .temporaryRegistration:
|
||||||
hasValueType = .temporaryRegistration
|
hasValueType = (.temporaryRegistration, type.translation)
|
||||||
break outer
|
break outer
|
||||||
default:
|
default:
|
||||||
break
|
break
|
||||||
@ -569,7 +569,7 @@ final class SecureIdAuthControllerNode: ViewControllerTracingNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let hasValueType = hasValueType {
|
if let (hasValueType, translation) = hasValueType {
|
||||||
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .address(details: addressDetails, document: hasValueType, translations: translation), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
self.interaction.present(SecureIdDocumentFormController(account: self.account, context: context, requestedData: .address(details: addressDetails, document: hasValueType, translations: translation), primaryLanguageByCountry: encryptedFormData.primaryLanguageByCountry, values: formData.values, updatedValues: { values in
|
||||||
var keys: [SecureIdValueKey] = []
|
var keys: [SecureIdValueKey] = []
|
||||||
if addressDetails {
|
if addressDetails {
|
||||||
|
@ -52,47 +52,52 @@ struct ParsedRequestedPersonalDetails: Equatable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
enum SecureIdParsedRequestedFormField: Equatable {
|
enum SecureIdParsedRequestedFormField: Equatable {
|
||||||
case identity(personalDetails: ParsedRequestedPersonalDetails?, document: ParsedRequestedIdentityDocument?, selfie: Bool, translation: Bool)
|
case identity(personalDetails: ParsedRequestedPersonalDetails?, document: ParsedRequestedIdentityDocument?)
|
||||||
case address(addressDetails: Bool, document: ParsedRequestedAddressDocument?, translation: Bool)
|
case address(addressDetails: Bool, document: ParsedRequestedAddressDocument?)
|
||||||
case phone
|
case phone
|
||||||
case email
|
case email
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct SecureIdRequestedIdentityDocumentWithAttributes: Equatable, Hashable {
|
||||||
|
let document: SecureIdRequestedIdentityDocument
|
||||||
|
let selfie: Bool
|
||||||
|
let translation: Bool
|
||||||
|
}
|
||||||
|
|
||||||
enum ParsedRequestedIdentityDocument: Equatable {
|
enum ParsedRequestedIdentityDocument: Equatable {
|
||||||
case just(SecureIdRequestedIdentityDocument)
|
case just(SecureIdRequestedIdentityDocumentWithAttributes)
|
||||||
case oneOf(Set<SecureIdRequestedIdentityDocument>)
|
case oneOf(Set<SecureIdRequestedIdentityDocumentWithAttributes>)
|
||||||
|
}
|
||||||
|
|
||||||
|
struct SecureIdRequestedAddressDocumentWithAttributes: Equatable, Hashable {
|
||||||
|
let document: SecureIdRequestedAddressDocument
|
||||||
|
let translation: Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
enum ParsedRequestedAddressDocument: Equatable {
|
enum ParsedRequestedAddressDocument: Equatable {
|
||||||
case just(SecureIdRequestedAddressDocument)
|
case just(SecureIdRequestedAddressDocumentWithAttributes)
|
||||||
case oneOf(Set<SecureIdRequestedAddressDocument>)
|
case oneOf(Set<SecureIdRequestedAddressDocumentWithAttributes>)
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct RequestedIdentity {
|
private struct RequestedIdentity {
|
||||||
var details: Bool = false
|
var details: Bool = false
|
||||||
var nativeNames: Bool = false
|
var nativeNames: Bool = false
|
||||||
var documents: [ParsedRequestedIdentityDocument] = []
|
var documents: [ParsedRequestedIdentityDocument] = []
|
||||||
var selfie: Bool = false
|
|
||||||
var translation: Bool = false
|
|
||||||
|
|
||||||
mutating func merge(_ other: RequestedIdentity) {
|
mutating func merge(_ other: RequestedIdentity) {
|
||||||
self.details = self.details || other.details
|
self.details = self.details || other.details
|
||||||
self.nativeNames = self.nativeNames || other.nativeNames
|
self.nativeNames = self.nativeNames || other.nativeNames
|
||||||
self.documents.append(contentsOf: other.documents)
|
self.documents.append(contentsOf: other.documents)
|
||||||
self.selfie = self.selfie || other.selfie
|
|
||||||
self.translation = self.translation || other.translation
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private struct RequestedAddress {
|
private struct RequestedAddress {
|
||||||
var details: Bool = false
|
var details: Bool = false
|
||||||
var documents: [ParsedRequestedAddressDocument] = []
|
var documents: [ParsedRequestedAddressDocument] = []
|
||||||
var translation: Bool = false
|
|
||||||
|
|
||||||
mutating func merge(_ other: RequestedAddress) {
|
mutating func merge(_ other: RequestedAddress) {
|
||||||
self.details = self.details || other.details
|
self.details = self.details || other.details
|
||||||
self.documents.append(contentsOf: other.documents)
|
self.documents.append(contentsOf: other.documents)
|
||||||
self.translation = self.translation || other.translation
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -120,8 +125,8 @@ func parseRequestedFormFields(_ types: [SecureIdRequestedFormField], values: [Se
|
|||||||
requestedValues.merge(subResult)
|
requestedValues.merge(subResult)
|
||||||
case let .oneOf(subTypes):
|
case let .oneOf(subTypes):
|
||||||
var oneOfResult = RequestedFieldValues()
|
var oneOfResult = RequestedFieldValues()
|
||||||
var oneOfIdentity = Set<SecureIdRequestedIdentityDocument>()
|
var oneOfIdentity = Set<SecureIdRequestedIdentityDocumentWithAttributes>()
|
||||||
var oneOfAddress = Set<SecureIdRequestedAddressDocument>()
|
var oneOfAddress = Set<SecureIdRequestedAddressDocumentWithAttributes>()
|
||||||
for type in subTypes {
|
for type in subTypes {
|
||||||
let subResult = parseRequestedFieldValues(type: type)
|
let subResult = parseRequestedFieldValues(type: type)
|
||||||
for document in subResult.identity.documents {
|
for document in subResult.identity.documents {
|
||||||
@ -135,10 +140,7 @@ func parseRequestedFormFields(_ types: [SecureIdRequestedFormField], values: [Se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
oneOfResult.identity.details = oneOfResult.identity.details || subResult.identity.details
|
oneOfResult.identity.details = oneOfResult.identity.details || subResult.identity.details
|
||||||
oneOfResult.identity.selfie = oneOfResult.identity.selfie || subResult.identity.selfie
|
|
||||||
oneOfResult.identity.translation = oneOfResult.identity.translation || subResult.identity.translation
|
|
||||||
oneOfResult.address.details = oneOfResult.address.details || subResult.address.details
|
oneOfResult.address.details = oneOfResult.address.details || subResult.address.details
|
||||||
oneOfResult.address.translation = oneOfResult.address.translation || subResult.address.translation
|
|
||||||
}
|
}
|
||||||
if !oneOfIdentity.isEmpty {
|
if !oneOfIdentity.isEmpty {
|
||||||
oneOfResult.identity.documents.append(.oneOf(oneOfIdentity))
|
oneOfResult.identity.documents.append(.oneOf(oneOfIdentity))
|
||||||
@ -153,32 +155,32 @@ func parseRequestedFormFields(_ types: [SecureIdRequestedFormField], values: [Se
|
|||||||
var result: [SecureIdParsedRequestedFormField] = []
|
var result: [SecureIdParsedRequestedFormField] = []
|
||||||
if requestedValues.identity.details || !requestedValues.identity.documents.isEmpty {
|
if requestedValues.identity.details || !requestedValues.identity.documents.isEmpty {
|
||||||
if requestedValues.identity.documents.isEmpty {
|
if requestedValues.identity.documents.isEmpty {
|
||||||
result.append(.identity(personalDetails: ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames), document: nil, selfie: false, translation: false))
|
result.append(.identity(personalDetails: ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames), document: nil))
|
||||||
} else {
|
} else {
|
||||||
if requestedValues.identity.details && requestedValues.identity.documents.count == 1 {
|
if requestedValues.identity.details && requestedValues.identity.documents.count == 1 {
|
||||||
result.append(.identity(personalDetails: requestedValues.identity.details ? ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames) : nil, document: requestedValues.identity.documents.first, selfie: requestedValues.identity.selfie, translation: requestedValues.identity.translation))
|
result.append(.identity(personalDetails: requestedValues.identity.details ? ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames) : nil, document: requestedValues.identity.documents.first))
|
||||||
} else {
|
} else {
|
||||||
if requestedValues.identity.details {
|
if requestedValues.identity.details {
|
||||||
result.append(.identity(personalDetails: ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames), document: nil, selfie: requestedValues.identity.selfie, translation: false))
|
result.append(.identity(personalDetails: ParsedRequestedPersonalDetails(nativeNames: requestedValues.identity.nativeNames), document: nil))
|
||||||
}
|
}
|
||||||
for document in requestedValues.identity.documents {
|
for document in requestedValues.identity.documents {
|
||||||
result.append(.identity(personalDetails: nil, document: document, selfie: requestedValues.identity.selfie, translation: requestedValues.identity.translation))
|
result.append(.identity(personalDetails: nil, document: document))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if requestedValues.address.details || !requestedValues.address.documents.isEmpty {
|
if requestedValues.address.details || !requestedValues.address.documents.isEmpty {
|
||||||
if requestedValues.address.documents.isEmpty {
|
if requestedValues.address.documents.isEmpty {
|
||||||
result.append(.address(addressDetails: true, document: nil, translation: false))
|
result.append(.address(addressDetails: true, document: nil))
|
||||||
} else {
|
} else {
|
||||||
if requestedValues.address.details && requestedValues.address.documents.count == 1 {
|
if requestedValues.address.details && requestedValues.address.documents.count == 1 {
|
||||||
result.append(.address(addressDetails: true, document: requestedValues.address.documents.first, translation: requestedValues.address.translation))
|
result.append(.address(addressDetails: true, document: requestedValues.address.documents.first))
|
||||||
} else {
|
} else {
|
||||||
if requestedValues.address.details {
|
if requestedValues.address.details {
|
||||||
result.append(.address(addressDetails: true, document: nil, translation: false))
|
result.append(.address(addressDetails: true, document: nil))
|
||||||
}
|
}
|
||||||
for document in requestedValues.address.documents {
|
for document in requestedValues.address.documents {
|
||||||
result.append(.address(addressDetails: false, document: document, translation: requestedValues.address.translation))
|
result.append(.address(addressDetails: false, document: document))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -198,7 +200,7 @@ func parseRequestedFormFields(_ types: [SecureIdRequestedFormField], values: [Se
|
|||||||
|
|
||||||
private func findValuesForField(field: SecureIdParsedRequestedFormField, values: [SecureIdValueWithContext]) -> ([SecureIdValueWithContext], Bool) {
|
private func findValuesForField(field: SecureIdParsedRequestedFormField, values: [SecureIdValueWithContext]) -> ([SecureIdValueWithContext], Bool) {
|
||||||
switch field {
|
switch field {
|
||||||
case let .identity(personalDetails, document, selfie, translation):
|
case let .identity(personalDetails, document):
|
||||||
var filled = true
|
var filled = true
|
||||||
var result: [SecureIdValueWithContext] = []
|
var result: [SecureIdValueWithContext] = []
|
||||||
if personalDetails != nil {
|
if personalDetails != nil {
|
||||||
@ -214,13 +216,13 @@ private func findValuesForField(field: SecureIdParsedRequestedFormField, values:
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
result.append(value)
|
result.append(value)
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
if selfie && !data.selfie {
|
if type.selfie && !data.selfie {
|
||||||
filled = false
|
filled = false
|
||||||
}
|
}
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
filled = false
|
filled = false
|
||||||
}
|
}
|
||||||
if !value.errors.isEmpty {
|
if !value.errors.isEmpty {
|
||||||
@ -233,16 +235,16 @@ private func findValuesForField(field: SecureIdParsedRequestedFormField, values:
|
|||||||
var anyDocument = false
|
var anyDocument = false
|
||||||
var bestMatchingValue: SecureIdValueWithContext?
|
var bestMatchingValue: SecureIdValueWithContext?
|
||||||
inner: for type in types {
|
inner: for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if bestMatchingValue == nil {
|
if bestMatchingValue == nil {
|
||||||
bestMatchingValue = value
|
bestMatchingValue = value
|
||||||
}
|
}
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if selfie && !data.selfie {
|
if type.selfie && !data.selfie {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
if dataFilled {
|
if dataFilled {
|
||||||
@ -264,7 +266,7 @@ private func findValuesForField(field: SecureIdParsedRequestedFormField, values:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (result, filled)
|
return (result, filled)
|
||||||
case let .address(addressDetails, document, translation):
|
case let .address(addressDetails, document):
|
||||||
var filled = true
|
var filled = true
|
||||||
var result: [SecureIdValueWithContext] = []
|
var result: [SecureIdValueWithContext] = []
|
||||||
if addressDetails {
|
if addressDetails {
|
||||||
@ -280,10 +282,10 @@ private func findValuesForField(field: SecureIdParsedRequestedFormField, values:
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
result.append(value)
|
result.append(value)
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
filled = false
|
filled = false
|
||||||
}
|
}
|
||||||
if !value.errors.isEmpty {
|
if !value.errors.isEmpty {
|
||||||
@ -296,13 +298,13 @@ private func findValuesForField(field: SecureIdParsedRequestedFormField, values:
|
|||||||
var anyDocument = false
|
var anyDocument = false
|
||||||
var bestMatchingValue: SecureIdValueWithContext?
|
var bestMatchingValue: SecureIdValueWithContext?
|
||||||
inner: for type in types {
|
inner: for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if bestMatchingValue == nil {
|
if bestMatchingValue == nil {
|
||||||
bestMatchingValue = value
|
bestMatchingValue = value
|
||||||
}
|
}
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
}
|
}
|
||||||
if dataFilled {
|
if dataFilled {
|
||||||
@ -347,38 +349,25 @@ private func parseRequestedFieldValues(type: SecureIdRequestedFormFieldValue) ->
|
|||||||
values.identity.details = true
|
values.identity.details = true
|
||||||
values.identity.nativeNames = nativeNames
|
values.identity.nativeNames = nativeNames
|
||||||
case let .passport(selfie, translation):
|
case let .passport(selfie, translation):
|
||||||
values.identity.documents.append(.just(.passport))
|
values.identity.documents.append(.just(SecureIdRequestedIdentityDocumentWithAttributes(document: .passport, selfie: selfie, translation: translation)))
|
||||||
values.identity.selfie = values.identity.selfie || selfie
|
|
||||||
values.identity.translation = values.identity.translation || translation
|
|
||||||
case let .internalPassport(selfie, translation):
|
case let .internalPassport(selfie, translation):
|
||||||
values.identity.documents.append(.just(.internalPassport))
|
values.identity.documents.append(.just(SecureIdRequestedIdentityDocumentWithAttributes(document: .internalPassport, selfie: selfie, translation: translation)))
|
||||||
values.identity.selfie = values.identity.selfie || selfie
|
|
||||||
values.identity.translation = values.identity.translation || translation
|
|
||||||
case let .driversLicense(selfie, translation):
|
case let .driversLicense(selfie, translation):
|
||||||
values.identity.documents.append(.just(.driversLicense))
|
values.identity.documents.append(.just(SecureIdRequestedIdentityDocumentWithAttributes(document: .driversLicense, selfie: selfie, translation: translation)))
|
||||||
values.identity.selfie = values.identity.selfie || selfie
|
|
||||||
values.identity.translation = values.identity.translation || translation
|
|
||||||
case let .idCard(selfie, translation):
|
case let .idCard(selfie, translation):
|
||||||
values.identity.documents.append(.just(.idCard))
|
values.identity.documents.append(.just(SecureIdRequestedIdentityDocumentWithAttributes(document: .idCard, selfie: selfie, translation: translation)))
|
||||||
values.identity.selfie = values.identity.selfie || selfie
|
|
||||||
values.identity.translation = values.identity.translation || translation
|
|
||||||
case .address:
|
case .address:
|
||||||
values.address.details = true
|
values.address.details = true
|
||||||
case let .passportRegistration(translation):
|
case let .passportRegistration(translation):
|
||||||
values.address.documents.append(.just(.passportRegistration))
|
values.address.documents.append(.just(SecureIdRequestedAddressDocumentWithAttributes(document: .passportRegistration, translation: translation)))
|
||||||
values.address.translation = values.address.translation || translation
|
|
||||||
case let .temporaryRegistration(translation):
|
case let .temporaryRegistration(translation):
|
||||||
values.address.documents.append(.just(.temporaryRegistration))
|
values.address.documents.append(.just(SecureIdRequestedAddressDocumentWithAttributes(document: .temporaryRegistration, translation: translation)))
|
||||||
values.address.translation = values.address.translation || translation
|
|
||||||
case let .bankStatement(translation):
|
case let .bankStatement(translation):
|
||||||
values.address.documents.append(.just(.bankStatement))
|
values.address.documents.append(.just(SecureIdRequestedAddressDocumentWithAttributes(document: .bankStatement, translation: translation)))
|
||||||
values.address.translation = values.address.translation || translation
|
|
||||||
case let .utilityBill(translation):
|
case let .utilityBill(translation):
|
||||||
values.address.documents.append(.just(.utilityBill))
|
values.address.documents.append(.just(SecureIdRequestedAddressDocumentWithAttributes(document: .utilityBill, translation: translation)))
|
||||||
values.address.translation = values.address.translation || translation
|
|
||||||
case let .rentalAgreement(translation):
|
case let .rentalAgreement(translation):
|
||||||
values.address.documents.append(.just(.rentalAgreement))
|
values.address.documents.append(.just(SecureIdRequestedAddressDocumentWithAttributes(document: .rentalAgreement, translation: translation)))
|
||||||
values.address.translation = values.address.translation || translation
|
|
||||||
case .phone:
|
case .phone:
|
||||||
values.phone = true
|
values.phone = true
|
||||||
case .email:
|
case .email:
|
||||||
@ -463,24 +452,24 @@ private func placeholderForDocumentType(_ type: SecureIdRequestedAddressDocument
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func placeholderForDocumentTypes(_ types: [SecureIdRequestedIdentityDocument], strings: PresentationStrings) -> String {
|
private func placeholderForDocumentTypes(_ types: [SecureIdRequestedIdentityDocumentWithAttributes], strings: PresentationStrings) -> String {
|
||||||
func stringForDocumentType(_ type: SecureIdRequestedIdentityDocument, strings: PresentationStrings) -> String {
|
func stringForDocumentType(_ type: SecureIdRequestedIdentityDocument, strings: PresentationStrings) -> String {
|
||||||
switch type {
|
switch type {
|
||||||
case .passport:
|
case .passport:
|
||||||
return strings.Passport_Identity_OneOfTypePassport
|
return strings.Passport_Identity_OneOfTypePassport
|
||||||
case .internalPassport:
|
case .internalPassport:
|
||||||
return strings.Passport_Identity_OneOfTypeInternalPassport
|
return strings.Passport_Identity_OneOfTypeInternalPassport
|
||||||
case .idCard:
|
case .idCard:
|
||||||
return strings.Passport_Identity_OneOfTypeIdentityCard
|
return strings.Passport_Identity_OneOfTypeIdentityCard
|
||||||
case .driversLicense:
|
case .driversLicense:
|
||||||
return strings.Passport_Identity_OneOfTypeDriversLicense
|
return strings.Passport_Identity_OneOfTypeDriversLicense
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var string = ""
|
var string = ""
|
||||||
for i in 0 ..< types.count {
|
for i in 0 ..< types.count {
|
||||||
let type = types[i]
|
let type = types[i]
|
||||||
string.append(stringForDocumentType(type, strings: strings))
|
string.append(stringForDocumentType(type.document, strings: strings))
|
||||||
if i < types.count - 2 {
|
if i < types.count - 2 {
|
||||||
string.append(strings.Passport_FieldOneOf_Delimeter)
|
string.append(strings.Passport_FieldOneOf_Delimeter)
|
||||||
} else if i < types.count - 1 {
|
} else if i < types.count - 1 {
|
||||||
@ -491,26 +480,26 @@ private func placeholderForDocumentTypes(_ types: [SecureIdRequestedIdentityDocu
|
|||||||
return strings.Passport_Identity_UploadOneOfScan(string).0
|
return strings.Passport_Identity_UploadOneOfScan(string).0
|
||||||
}
|
}
|
||||||
|
|
||||||
private func placeholderForDocumentTypes(_ types: [SecureIdRequestedAddressDocument], strings: PresentationStrings) -> String {
|
private func placeholderForDocumentTypes(_ types: [SecureIdRequestedAddressDocumentWithAttributes], strings: PresentationStrings) -> String {
|
||||||
func stringForDocumentType(_ type: SecureIdRequestedAddressDocument, strings: PresentationStrings) -> String {
|
func stringForDocumentType(_ type: SecureIdRequestedAddressDocument, strings: PresentationStrings) -> String {
|
||||||
switch type {
|
switch type {
|
||||||
case .rentalAgreement:
|
case .rentalAgreement:
|
||||||
return strings.Passport_Address_OneOfTypeRentalAgreement
|
return strings.Passport_Address_OneOfTypeRentalAgreement
|
||||||
case .bankStatement:
|
case .bankStatement:
|
||||||
return strings.Passport_Address_OneOfTypeBankStatement
|
return strings.Passport_Address_OneOfTypeBankStatement
|
||||||
case .passportRegistration:
|
case .passportRegistration:
|
||||||
return strings.Passport_Address_OneOfTypePassportRegistration
|
return strings.Passport_Address_OneOfTypePassportRegistration
|
||||||
case .temporaryRegistration:
|
case .temporaryRegistration:
|
||||||
return strings.Passport_Address_OneOfTypeTemporaryRegistration
|
return strings.Passport_Address_OneOfTypeTemporaryRegistration
|
||||||
case .utilityBill:
|
case .utilityBill:
|
||||||
return strings.Passport_Address_OneOfTypeUtilityBill
|
return strings.Passport_Address_OneOfTypeUtilityBill
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var string = ""
|
var string = ""
|
||||||
for i in 0 ..< types.count {
|
for i in 0 ..< types.count {
|
||||||
let type = types[i]
|
let type = types[i]
|
||||||
string.append(stringForDocumentType(type, strings: strings))
|
string.append(stringForDocumentType(type.document, strings: strings))
|
||||||
if i < types.count - 2 {
|
if i < types.count - 2 {
|
||||||
string.append(strings.Passport_FieldOneOf_Delimeter)
|
string.append(strings.Passport_FieldOneOf_Delimeter)
|
||||||
} else if i < types.count - 1 {
|
} else if i < types.count - 1 {
|
||||||
@ -565,7 +554,7 @@ private func fieldTitleAndText(field: SecureIdParsedRequestedFormField, strings:
|
|||||||
var text: String = ""
|
var text: String = ""
|
||||||
|
|
||||||
switch field {
|
switch field {
|
||||||
case let .identity(personalDetails, document, _, _):
|
case let .identity(personalDetails, document):
|
||||||
var isOneOf = false
|
var isOneOf = false
|
||||||
var filledDocument: (SecureIdRequestedIdentityDocument, SecureIdValue)?
|
var filledDocument: (SecureIdRequestedIdentityDocument, SecureIdValue)?
|
||||||
|
|
||||||
@ -575,21 +564,21 @@ private func fieldTitleAndText(field: SecureIdParsedRequestedFormField, strings:
|
|||||||
|
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
title = stringForDocumentType(type, strings: strings)
|
title = stringForDocumentType(type.document, strings: strings)
|
||||||
placeholder = placeholderForDocumentType(type, strings: strings)
|
placeholder = placeholderForDocumentType(type.document, strings: strings)
|
||||||
if let value = findValue(values, key: type.valueKey)?.1.value {
|
if let value = findValue(values, key: type.document.valueKey)?.1.value {
|
||||||
filledDocument = (type, value)
|
filledDocument = (type.document, value)
|
||||||
}
|
}
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
isOneOf = true
|
isOneOf = true
|
||||||
let typesArray = Array(types)
|
let typesArray = Array(types)
|
||||||
if typesArray.count == 2 {
|
if typesArray.count == 2 {
|
||||||
title = strings.Passport_FieldOneOf_Or(stringForDocumentType(typesArray[0], strings: strings), stringForDocumentType(typesArray[1], strings: strings)).0
|
title = strings.Passport_FieldOneOf_Or(stringForDocumentType(typesArray[0].document, strings: strings), stringForDocumentType(typesArray[1].document, strings: strings)).0
|
||||||
}
|
}
|
||||||
placeholder = placeholderForDocumentTypes(typesArray, strings: strings)
|
placeholder = placeholderForDocumentTypes(typesArray, strings: strings)
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1.value {
|
if let value = findValue(values, key: type.document.valueKey)?.1.value {
|
||||||
filledDocument = (type, value)
|
filledDocument = (type.document, value)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -617,7 +606,7 @@ private func fieldTitleAndText(field: SecureIdParsedRequestedFormField, strings:
|
|||||||
}
|
}
|
||||||
text.append(string)
|
text.append(string)
|
||||||
}
|
}
|
||||||
case let .address(addressDetails, document, _):
|
case let .address(addressDetails, document):
|
||||||
var isOneOf = false
|
var isOneOf = false
|
||||||
var filledDocument: (SecureIdRequestedAddressDocument, SecureIdValue)?
|
var filledDocument: (SecureIdRequestedAddressDocument, SecureIdValue)?
|
||||||
|
|
||||||
@ -626,21 +615,21 @@ private func fieldTitleAndText(field: SecureIdParsedRequestedFormField, strings:
|
|||||||
placeholder = strings.Passport_FieldAddressUploadHelp
|
placeholder = strings.Passport_FieldAddressUploadHelp
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
title = stringForDocumentType(type, strings: strings)
|
title = stringForDocumentType(type.document, strings: strings)
|
||||||
placeholder = placeholderForDocumentType(type, strings: strings)
|
placeholder = placeholderForDocumentType(type.document, strings: strings)
|
||||||
if let value = findValue(values, key: type.valueKey)?.1.value {
|
if let value = findValue(values, key: type.document.valueKey)?.1.value {
|
||||||
filledDocument = (type, value)
|
filledDocument = (type.document, value)
|
||||||
}
|
}
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
isOneOf = true
|
isOneOf = true
|
||||||
let typesArray = Array(types)
|
let typesArray = Array(types)
|
||||||
if typesArray.count == 2 {
|
if typesArray.count == 2 {
|
||||||
title = strings.Passport_FieldOneOf_Or(stringForDocumentType(typesArray[0], strings: strings), stringForDocumentType(typesArray[1], strings: strings)).0
|
title = strings.Passport_FieldOneOf_Or(stringForDocumentType(typesArray[0].document, strings: strings), stringForDocumentType(typesArray[1].document, strings: strings)).0
|
||||||
}
|
}
|
||||||
placeholder = placeholderForDocumentTypes(typesArray, strings: strings)
|
placeholder = placeholderForDocumentTypes(typesArray, strings: strings)
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1.value {
|
if let value = findValue(values, key: type.document.valueKey)?.1.value {
|
||||||
filledDocument = (type, value)
|
filledDocument = (type.document, value)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -693,7 +682,7 @@ private func fieldTitleAndText(field: SecureIdParsedRequestedFormField, strings:
|
|||||||
|
|
||||||
private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [SecureIdValueWithContext]) -> String? {
|
private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [SecureIdValueWithContext]) -> String? {
|
||||||
switch field {
|
switch field {
|
||||||
case let .identity(personalDetails, document, _, _):
|
case let .identity(personalDetails, document):
|
||||||
if let _ = personalDetails, let value = findValue(values, key: .personalDetails)?.1 {
|
if let _ = personalDetails, let value = findValue(values, key: .personalDetails)?.1 {
|
||||||
if let error = value.errors[.value(.personalDetails)] {
|
if let error = value.errors[.value(.personalDetails)] {
|
||||||
return error
|
return error
|
||||||
@ -704,8 +693,8 @@ private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [Se
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if let error = value.errors[.value(type.valueKey)] {
|
if let error = value.errors[.value(type.document.valueKey)] {
|
||||||
return error
|
return error
|
||||||
} else if let error = value.errors.first {
|
} else if let error = value.errors.first {
|
||||||
if case .value = error.key {} else {
|
if case .value = error.key {} else {
|
||||||
@ -715,8 +704,8 @@ private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [Se
|
|||||||
}
|
}
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if let error = value.errors[.value(type.valueKey)] {
|
if let error = value.errors[.value(type.document.valueKey)] {
|
||||||
return error
|
return error
|
||||||
} else if let error = value.errors.first {
|
} else if let error = value.errors.first {
|
||||||
if case .value = error.key {} else {
|
if case .value = error.key {} else {
|
||||||
@ -727,7 +716,7 @@ private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [Se
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case let .address(addressDetails, document, _):
|
case let .address(addressDetails, document):
|
||||||
if addressDetails, let value = findValue(values, key: .address)?.1 {
|
if addressDetails, let value = findValue(values, key: .address)?.1 {
|
||||||
if let error = value.errors[.value(.address)] {
|
if let error = value.errors[.value(.address)] {
|
||||||
return error
|
return error
|
||||||
@ -738,8 +727,8 @@ private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [Se
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if let error = value.errors[.value(type.valueKey)] {
|
if let error = value.errors[.value(type.document.valueKey)] {
|
||||||
return error
|
return error
|
||||||
} else if let error = value.errors.first {
|
} else if let error = value.errors.first {
|
||||||
if case .value = error.key {} else {
|
if case .value = error.key {} else {
|
||||||
@ -749,8 +738,8 @@ private func fieldErrorText(field: SecureIdParsedRequestedFormField, values: [Se
|
|||||||
}
|
}
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
if let error = value.errors[.value(type.valueKey)] {
|
if let error = value.errors[.value(type.document.valueKey)] {
|
||||||
return error
|
return error
|
||||||
} else if let error = value.errors.first {
|
} else if let error = value.errors.first {
|
||||||
if case .value = error.key {} else {
|
if case .value = error.key {} else {
|
||||||
@ -870,7 +859,7 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
text = errorText
|
text = errorText
|
||||||
} else {
|
} else {
|
||||||
switch self.field {
|
switch self.field {
|
||||||
case let .identity(personalDetails, document, selfie, translation):
|
case let .identity(personalDetails, document):
|
||||||
if let personalDetails = personalDetails {
|
if let personalDetails = personalDetails {
|
||||||
if let value = findValue(values, key: .personalDetails)?.1 {
|
if let value = findValue(values, key: .personalDetails)?.1 {
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
@ -886,13 +875,13 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
if selfie && !data.selfie {
|
if type.selfie && !data.selfie {
|
||||||
filled = false
|
filled = false
|
||||||
text = strings.Passport_FieldIdentitySelfieHelp
|
text = strings.Passport_FieldIdentitySelfieHelp
|
||||||
}
|
}
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
filled = false
|
filled = false
|
||||||
text = strings.Passport_FieldIdentityTranslationHelp
|
text = strings.Passport_FieldIdentityTranslationHelp
|
||||||
}
|
}
|
||||||
@ -904,14 +893,14 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
var missingSelfie = false
|
var missingSelfie = false
|
||||||
var missingTranslation = false
|
var missingTranslation = false
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if selfie && !data.selfie {
|
if type.selfie && !data.selfie {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
missingSelfie = true
|
missingSelfie = true
|
||||||
}
|
}
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
missingTranslation = true
|
missingTranslation = true
|
||||||
}
|
}
|
||||||
@ -930,7 +919,7 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case let .address(addressDetails, document, translation):
|
case let .address(addressDetails, document):
|
||||||
if addressDetails {
|
if addressDetails {
|
||||||
if findValue(values, key: .address) == nil {
|
if findValue(values, key: .address) == nil {
|
||||||
filled = false
|
filled = false
|
||||||
@ -940,9 +929,9 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
filled = false
|
filled = false
|
||||||
text = strings.Passport_FieldAddressTranslationHelp
|
text = strings.Passport_FieldAddressTranslationHelp
|
||||||
}
|
}
|
||||||
@ -953,10 +942,10 @@ final class SecureIdAuthFormFieldNode: ASDisplayNode {
|
|||||||
var anyDocument = false
|
var anyDocument = false
|
||||||
var missingTranslation = false
|
var missingTranslation = false
|
||||||
for type in types {
|
for type in types {
|
||||||
if let value = findValue(values, key: type.valueKey)?.1 {
|
if let value = findValue(values, key: type.document.valueKey)?.1 {
|
||||||
let data = extractSecureIdValueAdditionalData(value.value)
|
let data = extractSecureIdValueAdditionalData(value.value)
|
||||||
var dataFilled = true
|
var dataFilled = true
|
||||||
if translation && !data.translation {
|
if type.translation && !data.translation {
|
||||||
dataFilled = false
|
dataFilled = false
|
||||||
missingTranslation = true
|
missingTranslation = true
|
||||||
}
|
}
|
||||||
|
@ -34,30 +34,30 @@ private func stringForDocumentType(_ type: SecureIdRequestedAddressDocument, str
|
|||||||
|
|
||||||
func documentSelectionItemsForField(field: SecureIdParsedRequestedFormField, strings: PresentationStrings) -> [(String, SecureIdDocumentFormRequestedData)] {
|
func documentSelectionItemsForField(field: SecureIdParsedRequestedFormField, strings: PresentationStrings) -> [(String, SecureIdDocumentFormRequestedData)] {
|
||||||
switch field {
|
switch field {
|
||||||
case let .identity(personalDetails, document, selfie, translation):
|
case let .identity(personalDetails, document):
|
||||||
var result: [(String, SecureIdDocumentFormRequestedData)] = []
|
var result: [(String, SecureIdDocumentFormRequestedData)] = []
|
||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
result.append((stringForDocumentType(type, strings: strings), .identity(details: personalDetails, document: type, selfie: selfie, translations: translation)))
|
result.append((stringForDocumentType(type.document, strings: strings), .identity(details: personalDetails, document: type.document, selfie: type.selfie, translations: type.translation)))
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
for type in types.sorted(by: { $0.rawValue < $1.rawValue }) {
|
for type in types.sorted(by: { $0.document.rawValue < $1.document.rawValue }) {
|
||||||
result.append((stringForDocumentType(type, strings: strings), .identity(details: personalDetails, document: type, selfie: selfie, translations: translation)))
|
result.append((stringForDocumentType(type.document, strings: strings), .identity(details: personalDetails, document: type.document, selfie: type.selfie, translations: type.translation)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if let personalDetails = personalDetails {
|
} else if let personalDetails = personalDetails {
|
||||||
result.append((strings.Passport_Identity_TypePersonalDetails, .identity(details: personalDetails, document: nil, selfie: false, translations: false)))
|
result.append((strings.Passport_Identity_TypePersonalDetails, .identity(details: personalDetails, document: nil, selfie: false, translations: false)))
|
||||||
}
|
}
|
||||||
return result
|
return result
|
||||||
case let .address(addressDetails, document, translations):
|
case let .address(addressDetails, document):
|
||||||
var result: [(String, SecureIdDocumentFormRequestedData)] = []
|
var result: [(String, SecureIdDocumentFormRequestedData)] = []
|
||||||
if let document = document {
|
if let document = document {
|
||||||
switch document {
|
switch document {
|
||||||
case let .just(type):
|
case let .just(type):
|
||||||
result.append((stringForDocumentType(type, strings: strings), .address(details: addressDetails, document: type, translations: translations)))
|
result.append((stringForDocumentType(type.document, strings: strings), .address(details: addressDetails, document: type.document, translations: type.translation)))
|
||||||
case let .oneOf(types):
|
case let .oneOf(types):
|
||||||
for type in types.sorted(by: { $0.rawValue < $1.rawValue }) {
|
for type in types.sorted(by: { $0.document.rawValue < $1.document.rawValue }) {
|
||||||
result.append((stringForDocumentType(type, strings: strings), .address(details: addressDetails, document: type, translations: translations)))
|
result.append((stringForDocumentType(type.document, strings: strings), .address(details: addressDetails, document: type.document, translations: type.translation)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if addressDetails {
|
} else if addressDetails {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user