Page MenuHomeMusing Studio

No OneTemporary

diff --git a/macOS/Navigation/ActivePostToolbarView.swift b/macOS/Navigation/ActivePostToolbarView.swift
index b7df978..991fb2c 100644
--- a/macOS/Navigation/ActivePostToolbarView.swift
+++ b/macOS/Navigation/ActivePostToolbarView.swift
@@ -1,44 +1,43 @@
import SwiftUI
struct ActivePostToolbarView: View {
@EnvironmentObject var model: WriteFreelyModel
@ObservedObject var activePost: WFAPost
@State private var isPresentingSharingServicePicker: Bool = false
var body: some View {
HStack(spacing: 16) {
PostEditorStatusToolbarView(post: activePost)
HStack(spacing: 4) {
Button(
- action: { self.isPresentingSharingServicePicker = true },
+ action: {
+ self.isPresentingSharingServicePicker = true
+ },
label: { Image(systemName: "square.and.arrow.up") }
)
.disabled(activePost.status == PostStatus.local.rawValue)
.popover(isPresented: $isPresentingSharingServicePicker) {
- PostEditorSharingPicker(
- isPresented: $isPresentingSharingServicePicker,
- sharingItems: createPostUrl()
- )
+ PostEditorSharingPicker(sharingItems: createPostUrl())
}
Button(action: { publishPost(activePost) }, label: { Image(systemName: "paperplane") })
.disabled(activePost.body.isEmpty || activePost.status == PostStatus.published.rawValue)
}
}
}
private func createPostUrl() -> [Any] {
guard let postId = activePost.postId else { return [] }
guard let urlString = activePost.slug != nil ?
"\(model.account.server)/\((activePost.collectionAlias)!)/\((activePost.slug)!)" :
"\(model.account.server)/\((postId))" else { return [] }
guard let data = URL(string: urlString) else { return [] }
return [data as NSURL]
}
private func publishPost(_ post: WFAPost) {
DispatchQueue.main.async {
LocalStorageManager().saveContext()
model.publish(post: post)
}
}
}
diff --git a/macOS/PostEditor/PostEditorSharingPicker.swift b/macOS/PostEditor/PostEditorSharingPicker.swift
index f754cd4..97d2c99 100644
--- a/macOS/PostEditor/PostEditorSharingPicker.swift
+++ b/macOS/PostEditor/PostEditorSharingPicker.swift
@@ -1,41 +1,37 @@
import SwiftUI
struct PostEditorSharingPicker: NSViewRepresentable {
- @Binding var isPresented: Bool
var sharingItems: [Any] = []
func makeNSView(context: Context) -> some NSView {
let view = NSView()
+ let picker = NSSharingServicePicker(items: sharingItems)
+ picker.delegate = context.coordinator
+
+ DispatchQueue.main.async {
+ picker.show(relativeTo: .zero, of: view, preferredEdge: .minY)
+ }
return view
}
func updateNSView(_ nsView: NSViewType, context: Context) {
- if isPresented {
- let picker = NSSharingServicePicker(items: sharingItems)
- picker.delegate = context.coordinator
-
- DispatchQueue.main.async {
- picker.show(relativeTo: .zero, of: nsView, preferredEdge: .minY)
- }
- }
}
func makeCoordinator() -> Coordinator {
Coordinator(owner: self)
}
class Coordinator: NSObject, NSSharingServicePickerDelegate {
let owner: PostEditorSharingPicker
init(owner: PostEditorSharingPicker) {
self.owner = owner
}
func sharingServicePicker(
_ sharingServicePicker: NSSharingServicePicker,
didChoose service: NSSharingService?
) {
- sharingServicePicker.delegate = nil // Cleanup
- self.owner.isPresented = false // Dismiss
+ sharingServicePicker.delegate = nil
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Mar 12, 3:24 PM (1 d, 16 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3652917

Event Timeline