|
|
@@ -3,6 +3,7 @@ import SwiftUI
|
|
|
extension ConfigEditor {
|
|
|
struct RootView: BaseView {
|
|
|
@EnvironmentObject var viewModel: ViewModel<Provider>
|
|
|
+ @State private var showShareSheet = false
|
|
|
|
|
|
var body: some View {
|
|
|
TextEditor(text: $viewModel.configText)
|
|
|
@@ -10,13 +11,49 @@ extension ConfigEditor {
|
|
|
.allowsTightening(true)
|
|
|
.autocapitalization(.none)
|
|
|
.disableAutocorrection(true)
|
|
|
- .toolbar { ToolbarItem(placement: .principal) { Text(viewModel.file) } }
|
|
|
+ .toolbar {
|
|
|
+ ToolbarItemGroup(placement: .bottomBar) {
|
|
|
+ Spacer()
|
|
|
+ Button { showShareSheet = true }
|
|
|
+ label: {
|
|
|
+ Image(systemName: "square.and.arrow.up")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ToolbarItem(placement: .principal) { Text(viewModel.file) }
|
|
|
+ }
|
|
|
.navigationBarItems(
|
|
|
leading: Button("Close", action: viewModel.hideModal),
|
|
|
trailing: Button("Save", action: viewModel.save)
|
|
|
)
|
|
|
+ .sheet(isPresented: $showShareSheet) {
|
|
|
+ ShareSheet(activityItems: [viewModel.provider.urlFor(file: viewModel.file)!])
|
|
|
+ }
|
|
|
.navigationBarTitleDisplayMode(.inline)
|
|
|
.padding()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+struct ShareSheet: UIViewControllerRepresentable {
|
|
|
+ typealias Callback = (_ activityType: UIActivity.ActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ error: Error?)
|
|
|
+ -> Void
|
|
|
+
|
|
|
+ let activityItems: [Any]
|
|
|
+ let applicationActivities: [UIActivity]? = nil
|
|
|
+ let excludedActivityTypes: [UIActivity.ActivityType]? = nil
|
|
|
+ let callback: Callback? = nil
|
|
|
+
|
|
|
+ func makeUIViewController(context _: Context) -> UIActivityViewController {
|
|
|
+ let controller = UIActivityViewController(
|
|
|
+ activityItems: activityItems,
|
|
|
+ applicationActivities: applicationActivities
|
|
|
+ )
|
|
|
+ controller.excludedActivityTypes = excludedActivityTypes
|
|
|
+ controller.completionWithItemsHandler = callback
|
|
|
+ return controller
|
|
|
+ }
|
|
|
+
|
|
|
+ func updateUIViewController(_: UIActivityViewController, context _: Context) {
|
|
|
+ // nothing to do here
|
|
|
+ }
|
|
|
+}
|