receive_sharing_intent icon indicating copy to clipboard operation
receive_sharing_intent copied to clipboard

Use data from configuration options in flutter

Open koromkorom opened this issue 1 year ago • 0 comments

Hi,

I only enabled text sharing and I simply want to add a title to the shared text. Here is my ShareViewController.swift. The UI part works. I can put a title and click on Post but the title is then not part of the value in ReceiveSharingIntent.instance.getMediaStream().listen((value). Can somebody please help me or provide a minimal working example of how something like this would work? Thank you!

import UIKit
import Social
import UniformTypeIdentifiers
import receive_sharing_intent

class ShareViewController: RSIShareViewController {
    var titleConfigurationItem: SLComposeSheetConfigurationItem?
    private var textString: String?
    private var titleItem: NSExtensionItem?

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func shouldAutoRedirect() -> Bool {
        return false
    }

    override func isContentValid() -> Bool {
        return true
    }

    override func didSelectPost() {
        super.didSelectPost()
    }

    override func configurationItems() -> [Any]! {
        if titleConfigurationItem == nil {
            titleConfigurationItem = SLComposeSheetConfigurationItem()
            titleConfigurationItem?.title = "Title"
            titleConfigurationItem?.tapHandler = { [unowned self] in
                let alertController = UIAlertController(title: "Title", message: nil, preferredStyle: .alert)
                alertController.addTextField { textField in
                    textField.placeholder = "Enter title"
                    textField.textAlignment = .center
                }
                
                // A cancel action
                let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { _ in
                    print("Canelled")
                }

                let confirmAction = UIAlertAction(title: "OK", style: .default) { _ in
                    if let text = alertController.textFields?.first?.text {
                        self.titleItem = NSExtensionItem()
                        if let titleItem = self.titleItem {
                            let itemProvider = NSItemProvider(item: text as NSSecureCoding, typeIdentifier: UTType.plainText.identifier)
                            titleItem.attachments = [itemProvider]
                        }
                    }
                }

                alertController.addAction(cancelAction)
                alertController.addAction(confirmAction)
                self.present(alertController, animated: true, completion: {
                    titleConfigurationItem?.value = alertController.textFields?.first?.text ?? "None"
                } )
                }
        }
        return [titleConfigurationItem!]
    }

} 

koromkorom avatar Jul 03 '24 22:07 koromkorom