Browse Source

生成图片增加进度

100Years 1 month ago
parent
commit
9cb9146be6

+ 14 - 1
AIEmoji/Business/TSGenmojiVC/TSGenmojiGennerateVC/TSGenmojiGennerateVC.swift

@@ -104,18 +104,31 @@ extension TSGenmojiGennerateVC {
     func upDateView(state:TSProgressState,model:TSGenmojiModel?){
         switch state {
             case .failed(let errorStr):
-            showError(text: errorStr)
+                showError(text: errorStr)
             case .success:
                 if let model = model {
                     showSuccess(model: model)
                 }else{
                     showError(text: nil)
                 }
+            case .progressString(let string):
+                showProgress(text: string)
             default:
                 showLoading()
         }
     }
     
+    func showProgress(text:String) {
+        generateInView.isHidden = false
+        generateInView.showLoading(text: text)
+        generateInView.isRotating = true
+        submitBtn.isHidden = true
+        cancelBtn.isHidden = true
+        confirmBtn.isHidden = true
+//        xBtn.isHidden = true
+        isClickTheBlankClosePage = false
+    }
+    
     func showLoading(){
         generateInView.isHidden = false
         generateInView.showLoading(text: "Generating...".localized)

+ 15 - 1
AIEmoji/Business/TSGenmojiVC/TSGenmojiGennerateVC/TSGenmojiGennerateViewModel.swift

@@ -12,6 +12,7 @@ enum TSProgressState  {
     case start
     case pending
     case progress(CGFloat)
+    case progressString(String)
     case success(Any?)
     case failed(String)
 
@@ -28,6 +29,8 @@ enum TSProgressState  {
                 progress = CGFloat(doubleValue)
             }
             return .progress(progress)
+        }else if string == "progressString" {
+            return .progressString(value)
         }else if string == "success" {
             return .success(value)
         }else if string == "failed" {
@@ -47,6 +50,8 @@ enum TSProgressState  {
             return ("pending","")
         case .progress(let float):
             return ("progress",String(Float(float)))
+        case .progressString(let string):
+            return ("progressString",string)
         case .success(let string):
             if let string = string as? String{
                 return ("success",string)
@@ -68,6 +73,8 @@ enum TSProgressState  {
             return false
         case .progress(_):
             return false
+        case .progressString(_):
+            return false
         case .success(_):
             return true
         case .failed(_):
@@ -83,7 +90,7 @@ enum TSProgressState  {
         case .failed(_):
             return false
         default:
-            return true
+            return false
         }
     }
 }
@@ -101,6 +108,7 @@ class TSGenmojiGennerateViewModel {
         stopNetwork = false
         aiText = text
         stateDatauPblished = (.start,nil)
+        stateDatauPblished = (.progressString(generating(progress: 0.0)),nil)
         creatRequest = TSNetworkShared.post(urlType: .imageEmoji,parameters: ["prompt":text]) { [weak self] data,error in
             guard let self = self else { return }
             
@@ -128,6 +136,7 @@ class TSGenmojiGennerateViewModel {
                     case .failed:
                         self.stateDatauPblished = (.failed(kNetWorkMessage(data: data) ?? ""),nil)
                     default:
+                        stateDatauPblished = (.progressString(generating(progress: genmojiModel.percent)),nil)
                         if stopNetwork == false {
                             kDelayOnMainThread(1.0) {
                                 self.getActionInfo(action_id: action_id)
@@ -148,6 +157,11 @@ class TSGenmojiGennerateViewModel {
         stopNetwork = true
     }
     
+    func generating(progress:Float) -> String {
+        //Generating 0%-100%
+        let progressInt = Int(progress*100)
+        return "Generating \(progressInt)%"
+    }
 }
 
 

+ 1 - 1
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/Model/TSGenmojiModel.swift

@@ -27,7 +27,7 @@ class TSGenmojiModel: TSBaseModel {
     var createdTimestamp:Int = 0
     var status:String = ""
     var costTime:Int = 0
-    var percent:Int = 0
+    var percent:Float = 0.0
     var actionStatus:ActionStatus = .failed
     
     

+ 1 - 0
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiGennerateCell.swift

@@ -75,6 +75,7 @@ class TSGenmojiGennerateCell : TSBaseCollectionCell{
         { [weak self]  in
             guard let self = self else { return }
             customTextView.text = ""
+            textViewDidChange(customTextView)
         }
         clearBtn.isHidden = true
         return clearBtn

+ 15 - 1
AIEmoji/Business/TSPTPGeneratorVC/TSPTPGeneratorVC/TSPTPGeneratorVC.swift

@@ -165,18 +165,32 @@ extension TSPTPGeneratorVC {
     func upDateView(state:TSProgressState,model:TSGenmojiModel?){
         switch state {
             case .failed(let errorStr):
-            showError(text: errorStr)
+                showError(text: errorStr)
             case .success:
                 if let model = model {
                     showSuccess(model: model)
                 }else{
                     showError(text: nil)
                 }
+            case .progressString(let string):
+                showProgress(text: string)
             default:
                 showLoading()
         }
     }
     
+    func showProgress(text:String) {
+        generateInView.isHidden = false
+        generateInView.showLoading(text: text)
+        generateInView.isRotating = true
+        submitBtn.isHidden = true
+        confirmBtn.isHidden = true
+        bigSaveBtn.isHidden = true
+        isClickTheBlankClosePage = false
+        regenerateBtn.isHidden = true
+        netWorkImageView.isHidden = true
+    }
+    
     func showLoading(){
         generateInView.isHidden = false
         generateInView.showLoading(text: "Generating...".localized)

+ 20 - 3
AIEmoji/Business/TSPTPGeneratorVC/TSPTPGeneratorVC/VM/TSPTPGeneratorVM.swift

@@ -30,6 +30,7 @@ class TSPTPGeneratorVM {
         
         stopNetwork = false
         stateDatauPblished = (.start,nil)
+        stateDatauPblished = (.progressString(generating(progress: 0.0)),nil)
         creatRequest = TSNetworkShared.post(urlType: .imageRewrite,parameters: ["prompt":prompt,"imageUrl":imageUrl]) { [weak self] data,error in
             guard let self = self else { return }
             
@@ -57,6 +58,7 @@ class TSPTPGeneratorVM {
                     case .failed:
                         self.stateDatauPblished = (.failed(kNetWorkMessage(data: data) ?? ""),nil)
                     default:
+                        stateDatauPblished = (.progressString(generating(progress: genmojiModel.percent)),nil)
                         if stopNetwork == false {
                             kDelayOnMainThread(1.0) {
                                 self.getActionInfo(action_id: action_id)
@@ -79,7 +81,7 @@ class TSPTPGeneratorVM {
     
     
     func uploadAndCreatImage() {
-
+        
         if let imageUrl = imageUrl,imageUrl.contains("http") {
             creatImage()
             return
@@ -87,8 +89,11 @@ class TSPTPGeneratorVM {
         
         stopNetwork = false
         stateDatauPblished = (.start,nil)
-        uploadImage { progress in
-            
+        
+        stateDatauPblished = (.progressString(uploadingPhoto(progress: 0.0)),nil)
+        uploadImage { [weak self]  progress in
+            guard let self = self else { return }
+            stateDatauPblished = (.progressString(uploadingPhoto(progress: progress)),nil)
         } completion: { [weak self]  data, error in
             guard let self = self else { return }
             if let error = error {
@@ -102,6 +107,18 @@ class TSPTPGeneratorVM {
             }
         }
     }
+    
+    func uploadingPhoto(progress:Float) -> String {
+        //Uploading Photo 0%-100%
+        let progressInt = Int(progress*100)
+        return "Uploading Photo \(progressInt)%"
+    }
+    
+    func generating(progress:Float) -> String {
+        //Generating 0%-100%
+        let progressInt = Int(progress*100)
+        return "Generating \(progressInt)%"
+    }
 }
 
 

+ 16 - 1
AIEmoji/Business/TSTextGeneralPictureVC/TSTextPicGennerateVC/TSTextPicGennerateVC.swift

@@ -170,17 +170,32 @@ extension TSTextPicGennerateVC {
     func upDateView(state:TSProgressState,model:TSGenmojiModel?){
         switch state {
             case .failed(let errorStr):
-            showError(text: errorStr)
+                showError(text: errorStr)
             case .success:
                 if let model = model {
                     showSuccess(model: model)
                 }else{
                     showError(text: nil)
                 }
+            case .progressString(let string):
+                showProgress(text: string)
             default:
                 showLoading()
         }
     }
+    func showProgress(text:String) {
+        generateInView.isHidden = false
+        generateInView.showLoading(text: text)
+        generateInView.isRotating = true
+        submitBtn.isHidden = true
+//        cancelBtn.isHidden = true
+//        xBtn.isHidden = false
+        confirmBtn.isHidden = true
+        bigSaveBtn.isHidden = true
+        isClickTheBlankClosePage = false
+        regenerateBtn.isHidden = true
+        netWorkImageView.isHidden = true
+    }
     
     func showLoading(){
         generateInView.isHidden = false

+ 8 - 0
AIEmoji/Business/TSTextGeneralPictureVC/TSTextPicGennerateVC/TSTextPicGennerateVM.swift

@@ -30,6 +30,7 @@ class TSTextPicGennerateVM {
             "height":height
         ]
         stateDatauPblished = (.start,nil)
+        stateDatauPblished = (.progressString(generating(progress: 0.0)),nil)
         creatRequest = TSNetworkShared.post(urlType: .textPicCreate,parameters: postDict) { [weak self] data,error in
             guard let self = self else { return }
             if let dataDict = data as? [String:Any] ,
@@ -56,6 +57,7 @@ class TSTextPicGennerateVM {
                     case .failed:
                         self.stateDatauPblished = (.failed(kNetWorkMessage(data: data) ?? ""),nil)
                     default:
+                        stateDatauPblished = (.progressString(generating(progress: genmojiModel.percent)),nil)
                         if stopNetwork == false {
                             kDelayOnMainThread(1.0) {
                                 self.getActionInfo(action_id: action_id)
@@ -74,4 +76,10 @@ class TSTextPicGennerateVM {
         queryRequest?.cancel()
         stopNetwork = true
     }
+    
+    func generating(progress:Float) -> String {
+        //Generating 0%-100%
+        let progressInt = Int(progress*100)
+        return "Generating \(progressInt)%"
+    }
 }