· 7 years ago · Feb 22, 2018, 03:22 PM
1private func onSave() {
2
3 DispatchQueue.main.async(execute: { () -> Void in
4 SVProgressHUD.setDefaultMaskType(SVProgressHUDMaskType.black)
5 })
6 SVProgressHUD.show(withStatus: Translations.Saving)
7
8 if hasImageChanged {
9 // Configure AWS Cognito Credentials
10 let accessKey = "AKIAJRSNXVX3GTRZVO5Q"
11 let secretKey = "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"
12 let credentialsProvider = AWSStaticCredentialsProvider(accessKey: accessKey, secretKey: secretKey)
13 let configuration = AWSServiceConfiguration(region: AWSRegionType.USWest2, credentialsProvider: credentialsProvider)
14 AWSServiceManager.default().defaultServiceConfiguration = configuration
15
16 guard let imageName = selectedImageURL?.lastPathComponent else { return }
17 let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as String
18
19 // getting local path
20 let localPath = (documentDirectory as NSString).appendingPathComponent(imageName)
21
22 let data = UIImageJPEGRepresentation(truckImageView.image!, 0.7)
23 do {
24 try data?.write(to: URL(fileURLWithPath: localPath), options: .atomic)
25 } catch {
26 print(error)
27 }
28
29 let url = URL(fileURLWithPath: localPath)
30 let uuid = UUID().uuidString
31 let filename = uuid + ".jpg"
32 let remoteName = "locali/" + filename
33 let S3BucketName = "thriveline-client-media"
34 let uploadRequest = AWSS3TransferManagerUploadRequest()!
35
36 uploadRequest.body = url
37 uploadRequest.key = remoteName
38 uploadRequest.bucket = S3BucketName
39 uploadRequest.contentType = "image/jpeg"
40 uploadRequest.acl = .publicReadWrite
41
42 let transferManager = AWSS3TransferManager.default()
43
44 transferManager.upload(uploadRequest).continueWith(executor: AWSExecutor.mainThread(), block: { (task:AWSTask<AnyObject>) -> Any? in
45
46 if let error = task.error as NSError? {
47 if error.domain == AWSS3TransferManagerErrorDomain, let code = AWSS3TransferManagerErrorType(rawValue: error.code) {
48 switch code {
49 case .cancelled, .paused:
50 break
51 default:
52 print("Error uploading: \(String(describing: uploadRequest.key)) Error: \(error)")
53 }
54 } else {
55 print("Error uploading: \(String(describing: uploadRequest.key)) Error: \(error)")
56 }
57
58 self.proccessError(error: error.localizedDescription)
59
60 return nil
61 }
62
63 let uploadOutput = task.result
64 print("Upload complete for: \(String(describing: uploadRequest.key))")
65
66 if self.currentUser != nil{
67 DataManager.instance.updateUser(name: self.truckNameTextField.text, description: self.truckDescriptionTextView.text, visible: self.currentUser?.visible, photoKey: filename, callback: {(user, success, error) in
68
69 if(success){
70 self.processSuccess()
71 }
72 else{
73 self.proccessError(error: error)
74 }
75 })
76 }
77
78 return nil
79 })
80 } else {
81
82 if self.currentUser != nil{
83 DataManager.instance.updateUser(name: self.truckNameTextField.text, description: self.truckDescriptionTextView.text, visible: self.currentUser?.visible, photoKey: self.currentUser?.photo_key, callback: {(user, success, error) in
84
85 if(success){
86 self.processSuccess()
87 }
88 else{
89 self.proccessError(error: error)
90 }
91 })
92 }
93 }
94 }