Present publish-to menu for new local posts

This commit is contained in:
Angelo Stavrow 2020-12-15 14:53:18 -05:00
parent 82dbaba32b
commit f52fae335b
No known key found for this signature in database
GPG Key ID: 1A49C7064E060EEE

View File

@ -12,8 +12,10 @@ struct ActivePostToolbarView: View {
) var collections: FetchedResults<WFACollection> ) var collections: FetchedResults<WFACollection>
var body: some View { var body: some View {
HStack(spacing: 4) { HStack {
if model.account.isLoggedIn && activePost.status != PostStatus.local.rawValue { if model.account.isLoggedIn &&
activePost.status != PostStatus.local.rawValue &&
!(activePost.wasDeletedFromServer || activePost.hasNewerRemoteCopy) {
Section(header: Text("Move To:")) { Section(header: Text("Move To:")) {
Picker(selection: $selectedCollection, label: Text("Move To…"), content: { Picker(selection: $selectedCollection, label: Text("Move To…"), content: {
Text("\(model.account.server == "https://write.as" ? "Anonymous" : "Drafts")") Text("\(model.account.server == "https://write.as" ? "Anonymous" : "Drafts")")
@ -26,12 +28,51 @@ struct ActivePostToolbarView: View {
} }
} }
PostEditorStatusToolbarView(post: activePost) PostEditorStatusToolbarView(post: activePost)
.frame(minWidth: 50, alignment: .center)
.layoutPriority(1) .layoutPriority(1)
.padding(.horizontal) .padding(.horizontal)
Button(action: {}, label: { Image(systemName: "square.and.arrow.up") }) if activePost.status == PostStatus.local.rawValue {
.disabled(activePost.status == PostStatus.local.rawValue) Menu(content: {
Button(action: { publishPost(activePost) }, label: { Image(systemName: "paperplane") }) Label("Publish To:", systemImage: "paperplane")
.disabled(activePost.body.isEmpty || activePost.status == PostStatus.published.rawValue) Divider()
Button(action: {
if model.account.isLoggedIn {
withAnimation {
activePost.collectionAlias = nil
publishPost(activePost)
}
} else {
// present login screen
}
}, label: {
Text("\(model.account.server == "https://write.as" ? "Anonymous" : "Drafts")")
})
ForEach(collections) { collection in
Button(action: {
if model.account.isLoggedIn {
withAnimation {
activePost.collectionAlias = collection.alias
publishPost(activePost)
}
} else {
// present login screen
}
}, label: {
Text("\(collection.title)")
})
}
}, label: {
Label("Publish…", systemImage: "paperplane")
})
.disabled(activePost.body.isEmpty)
} else {
HStack(spacing: 4) {
Button(action: {}, label: { Image(systemName: "square.and.arrow.up") })
.disabled(activePost.status == PostStatus.local.rawValue)
Button(action: { publishPost(activePost) }, label: { Image(systemName: "paperplane") })
.disabled(activePost.body.isEmpty || activePost.status == PostStatus.published.rawValue)
}
}
} }
.onAppear(perform: { .onAppear(perform: {
self.selectedCollection = collections.first { $0.alias == activePost.collectionAlias } self.selectedCollection = collections.first { $0.alias == activePost.collectionAlias }