views: refactor post_changed in PostView

Use some helper functions instead of the full switch
This commit is contained in:
William Casarin
2023-07-14 15:54:17 -07:00
parent f08efd7e30
commit 9db81fd6b8

View File

@@ -185,28 +185,12 @@ struct PostView: View {
} }
func post_changed(post: NSMutableAttributedString, media: [UploadedMedia]) { func post_changed(post: NSMutableAttributedString, media: [UploadedMedia]) {
switch action { if let draft = load_draft_for_post(drafts: damus_state.drafts, action: action) {
case .replying_to(let ev): draft.content = post
if let draft = damus_state.drafts.replies[ev] { draft.media = media
draft.content = post } else {
draft.media = media let artifacts = DraftArtifacts(content: post, media: media)
} else { set_draft_for_post(drafts: damus_state.drafts, action: action, artifacts: artifacts)
damus_state.drafts.replies[ev] = DraftArtifacts(content: post, media: media)
}
case .quoting(let ev):
if let draft = damus_state.drafts.quotes[ev] {
draft.content = post
draft.media = media
} else {
damus_state.drafts.quotes[ev] = DraftArtifacts(content: post, media: media)
}
case .posting:
if let draft = damus_state.drafts.post {
draft.content = post
draft.media = media
} else {
damus_state.drafts.post = DraftArtifacts(content: post, media: media)
}
} }
} }
@@ -544,6 +528,17 @@ struct UploadedMedia: Equatable {
} }
func set_draft_for_post(drafts: Drafts, action: PostAction, artifacts: DraftArtifacts) {
switch action {
case .replying_to(let ev):
drafts.replies[ev] = artifacts
case .quoting(let ev):
drafts.quotes[ev] = artifacts
case .posting:
drafts.post = artifacts
}
}
func load_draft_for_post(drafts: Drafts, action: PostAction) -> DraftArtifacts? { func load_draft_for_post(drafts: Drafts, action: PostAction) -> DraftArtifacts? {
switch action { switch action {
case .replying_to(let ev): case .replying_to(let ev):