Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fileprivate func uploadAllContact(_ result: [String]) {
- // kylej
- // if you are sending off ~600 phone numbers I would change things to send them all to the server at once in an array, in one request. then have the server insert them all in a .transaction {
- // you will get much better performance.
- //
- // as it is right now you are sending off ~600 different requests in a burst and the server is doing separate transactions for each. that could be your bottleneck - you'd need to measure to make sure (but it's still a good change to make regardless!)
- let phoneNumbers = self.phoneNumberKit.parse(result)
- UserDefaults.standard.setStructArray(phoneNumbers, forKey: "contacts")
- //let ownerID = PerfectLocalAuth.userid
- guard let profileId = AppUserDefaults.value(forKey: .userProfileID, fallBackValue: "").string else {
- return
- }
- _ = AppUserDefaults.save(value: phoneNumbers.count, forKey: .totalContactNumber)
- APIClient.findPhoneNumber(profileId: profileId).execute(onSuccess: { responsePhoneNumbers in
- let localContacts: [PhoneNumber?] = UserDefaults.standard.structArrayData(PhoneNumber.self, forKey: "contacts")
- //let localContacts = AppUserDefaults.value(forKey: .contacts)
- // server contacts counte local Contacts count
- if responsePhoneNumbers.count != phoneNumbers.count {
- // let fruitsArray = ["apple", "mango", "blueberry", "orange"]
- // let vegArray = ["tomato", "potato", "mango", "blueberry"]
- // var fruitsSet = Set(fruitsArray)
- // let vegSet = Set(vegArray)
- // let output = fruitsSet.subtracting(vegArray)
- // print(output)
- let localPhoneNumberArray = Set(localContacts.map{$0})
- let serverPhoneNumberArray = Set(responsePhoneNumbers.map{$0})
- let restOfContacts = localPhoneNumberArray.subtracting(serverPhoneNumberArray)
- for num in restOfContacts {
- DispatchQueue.main.async {
- APIClient.createOrUpdatePhoneNumber(
- profileID: profileId,
- numberString: num!.numberString,
- countryCode: num!.countryCode,
- leadingZero: num!.leadingZero,
- nationalNumber: num!.nationalNumber,
- numberExtension: num?.numberExtension ?? "",
- type: num!.type.rawValue,
- regionID: num?.regionID ?? "",
- addame: false, ownerID: nil).execute(onSuccess: { numberCreate in
- print(#line, "create or update contact number \(numberCreate)")
- }) { error in
- print(#line, error.localizedDescription)
- }
- }
- }
- }
- }) { error in
- log.error(#line, error.localizedDescription)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement