Page Menu
Home
Musing Studio
Search
Configure Global Search
Log In
Files
F13893371
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
3 KB
Subscribers
None
View Options
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
Details
Attached
Mime Type
text/x-diff
Expires
Thu, Mar 12, 3:24 PM (1 d, 13 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3652917
Attached To
rWFSUI WriteFreely SwiftUI
Event Timeline
Log In to Comment