             dispatch_group_notify(uploadImagesGroup, dispatch_get_main_queue()) { [weak self] in
 
                 guard uploadImageInfos.count == mediaImagesCount else {
-
-                    YepHUD.hideActivityIndicator()
-                    self?.postButton.enabled = true
-
                     let message = uploadErrorMessage ?? NSLocalizedString("Upload failed!", comment: "")
-
-                    YepAlert.alertSorry(message: message, inViewController: self)
+                    self?.uploadState = .Failed(message: message)
 
                     return
                 }

            dispatch_group_notify(uploadVoiceGroup, dispatch_get_main_queue()) { [weak self] in

                guard mediaInfo != nil else {

                    YepHUD.hideActivityIndicator()
                    self?.postButton.enabled = true

                    let message = uploadErrorMessage ?? NSLocalizedString("Upload failed!", comment: "")

                    YepAlert.alertSorry(message: message, inViewController: self)
                    
                    return
                }


    
    @objc private func post(sender: UIBarButtonItem) {

        let messageLength = (messageTextView.text as NSString).length

        guard messageLength <= YepConfig.maxFeedTextLength else {
            let message = String(format: NSLocalizedString("Feed info is too long!\nUp to %d letters.", comment: ""), YepConfig.maxFeedTextLength)
            YepAlert.alertSorry(message: message, inViewController: self)

            return
        }
        
        uploadState = .Uploading
        
        let message = messageTextView.text
        let coordinate = YepLocationService.sharedManager.currentLocation?.coordinate
