77 lines
2.7 KiB
Swift
77 lines
2.7 KiB
Swift
//
|
|
// TextFileActivityItemSource.swift
|
|
// MNNLLMiOS
|
|
//
|
|
// Created by 游薪渝(揽清) on 2025/10/13.
|
|
//
|
|
|
|
import SwiftUI
|
|
|
|
/// Activity item source for sharing text files
|
|
/// Provides custom text content for sharing operations
|
|
class TextFileActivityItemSource: NSObject, UIActivityItemSource {
|
|
private let content: String
|
|
private let filename: String
|
|
|
|
/// Initializes the activity item source with content and filename
|
|
/// - Parameters:
|
|
/// - content: Text content to share
|
|
/// - filename: Suggested filename for the shared content
|
|
init(content: String, filename: String) {
|
|
self.content = content
|
|
self.filename = filename
|
|
super.init()
|
|
}
|
|
|
|
/// Returns the placeholder item for the activity
|
|
/// - Parameter activityViewController: The activity view controller
|
|
/// - Returns: Placeholder string
|
|
func activityViewControllerPlaceholderItem(_: UIActivityViewController) -> Any {
|
|
return content
|
|
}
|
|
|
|
/// Returns the actual item for the specified activity type
|
|
/// - Parameters:
|
|
/// - activityViewController: The activity view controller
|
|
/// - activityType: The type of activity being performed
|
|
/// - Returns: The content string
|
|
func activityViewController(_: UIActivityViewController, itemForActivityType _: UIActivity.ActivityType?) -> Any? {
|
|
return content
|
|
}
|
|
|
|
/// Returns the subject for activities that support it
|
|
/// - Parameters:
|
|
/// - activityViewController: The activity view controller
|
|
/// - activityType: The type of activity being performed
|
|
/// - Returns: The filename as subject
|
|
func activityViewController(_: UIActivityViewController, subjectForActivityType _: UIActivity.ActivityType?) -> String {
|
|
return filename
|
|
}
|
|
}
|
|
|
|
/// Share sheet for sharing content with other apps
|
|
/// Provides a SwiftUI wrapper around UIActivityViewController
|
|
struct ShareSheet: UIViewControllerRepresentable {
|
|
let activityItems: [Any]
|
|
let onDismiss: () -> Void
|
|
|
|
/// Creates the activity view controller
|
|
/// - Parameter context: The representable context
|
|
/// - Returns: Configured UIActivityViewController
|
|
func makeUIViewController(context _: Context) -> UIActivityViewController {
|
|
let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
|
|
controller.completionWithItemsHandler = { _, _, _, _ in
|
|
onDismiss()
|
|
}
|
|
return controller
|
|
}
|
|
|
|
/// Updates the activity view controller
|
|
/// - Parameters:
|
|
/// - uiViewController: The activity view controller
|
|
/// - context: The representable context
|
|
func updateUIViewController(_: UIActivityViewController, context _: Context) {
|
|
// No updates needed
|
|
}
|
|
}
|