Merge pull request #618 from mastodon/fix-compose-content-validate

Fix compose content could not post media only issue
This commit is contained in:
Marcus Kida 2022-11-17 13:53:48 +01:00 committed by GitHub
commit d93d094734
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 10 deletions

View File

@ -359,7 +359,7 @@ extension ComposeContentViewModel {
let isMediaUploadAllSuccess = $attachmentViewModels
.map { attachmentViewModels in
return Publishers.MergeMany(attachmentViewModels.map { $0.$uploadState })
.delay(for: 0.5, scheduler: DispatchQueue.main) // convert to outputs with delay. Due to @Published emit before changes
.delay(for: 0.3, scheduler: DispatchQueue.main) // convert to outputs with delay. Due to @Published emit before changes
.map { _ in attachmentViewModels.map { $0.uploadState } }
}
.switchToLatest()
@ -367,18 +367,20 @@ extension ComposeContentViewModel {
guard outputs.allSatisfy({ $0 == .finish }) else { return false }
return true
}
.prepend(true)
let isPollOptionsAllValid = $pollOptions
.map { options in
return Publishers.MergeMany(options.map { $0.$text })
.delay(for: 0.5, scheduler: DispatchQueue.main) // convert to outputs with delay. Due to @Published emit before changes
.delay(for: 0.3, scheduler: DispatchQueue.main) // convert to outputs with delay. Due to @Published emit before changes
.map { _ in options.map { $0.text } }
}
.switchToLatest()
.map { outputs in
return outputs.allSatisfy { !$0.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty }
}
.prepend(true)
let isPublishBarButtonItemEnabledPrecondition1 = Publishers.CombineLatest4(
isComposeContentEmpty,
isComposeContentValid,
@ -394,17 +396,15 @@ extension ComposeContentViewModel {
}
.eraseToAnyPublisher()
let isPublishBarButtonItemEnabledPrecondition2 = Publishers.CombineLatest4(
isComposeContentEmpty,
isComposeContentValid,
let isPublishBarButtonItemEnabledPrecondition2 = Publishers.CombineLatest(
$isPollActive,
isPollOptionsAllValid
)
.map { isComposeContentEmpty, isComposeContentValid, isPollComposing, isPollOptionsAllValid -> Bool in
if isPollComposing {
return isComposeContentValid && !isComposeContentEmpty && isPollOptionsAllValid
.map { isPollActive, isPollOptionsAllValid -> Bool in
if isPollActive {
return isPollOptionsAllValid
} else {
return isComposeContentValid && !isComposeContentEmpty
return true
}
}
.eraseToAnyPublisher()