     }
 
     override func isContentValid() -> Bool {
-        return ShareAttachmentProcessor.hasContent(contentText, extensionItem: extensionContext?.inputItems.safeValue(0) as? NSExtensionItem)
+        return itemsProcessed && ShareAttachmentProcessor.hasContent(contentText, extensionItem: extensionContext?.inputItems.safeValue(0) as? NSExtensionItem)
     }
 
     override func didSelectPost() {

class ShareViewController: SLComposeServiceViewController {

    var itemPreviews: [ExtensionItemPreview] = []
    fileprivate lazy var background: UIView = self.createBackground()

    // moved into a separate function to save compile time
    fileprivate func createBackground() -> UIView {
        let view = UIView()
        view.alpha = 0

            ShareAttachmentProcessor.preview(extensionItem) { previews in
                inForeground {
                    self.itemPreviews = previews
                    self.finishProcessing()
                }
            }
        }
    }

    private func finishProcessing() {
        itemsProcessed = true
        validateContent()
    }

    func showSpinner() {
