mirror of
https://github.com/metabolist/metatext.git
synced 2025-04-23 20:14:06 +00:00
Merge 36d58ab99a
into 96d2ff3a2b
This commit is contained in:
commit
25d6eeb5fd
3 changed files with 23 additions and 7 deletions
ViewModels/Sources/ViewModels/View Models
Views/UIKit
|
@ -30,7 +30,7 @@ public final class CompositionViewModel: AttachmentsRenderingViewModel, Observab
|
|||
public let canRemoveAttachments = true
|
||||
|
||||
private let eventsSubject: PassthroughSubject<Event, Never>
|
||||
private let maxCharacters: Int
|
||||
@Published private var maxCharacters: Int
|
||||
private var cancellables = Set<AnyCancellable>()
|
||||
|
||||
init(eventsSubject: PassthroughSubject<Event, Never>, maxCharacters: Int?) {
|
||||
|
@ -62,8 +62,8 @@ public final class CompositionViewModel: AttachmentsRenderingViewModel, Observab
|
|||
|
||||
return tokens.map(\.countShorteningIfURL).reduce(tokens.count - 1, +)
|
||||
}
|
||||
.combineLatest($displayContentWarning, $contentWarning)
|
||||
.map { (maxCharacters ?? Self.defaultMaxCharacters) - ($0 + ($1 ? $2.count : 0)) }
|
||||
.combineLatest($displayContentWarning, $contentWarning, $maxCharacters)
|
||||
.map { ($3) - ($0 + ($1 ? $2.count : 0)) }
|
||||
.assign(to: &$remainingCharacters)
|
||||
|
||||
$displayContentWarning.filter { $0 }.assign(to: &$sensitive)
|
||||
|
@ -86,6 +86,10 @@ public final class CompositionViewModel: AttachmentsRenderingViewModel, Observab
|
|||
public func removeAttachment(viewModel: AttachmentViewModel) {
|
||||
attachmentViewModels.removeAll { $0 === viewModel }
|
||||
}
|
||||
|
||||
public func setMaxCharactersOrDefault(_ newMaxCharacters: Int?) {
|
||||
maxCharacters = newMaxCharacters ?? Self.defaultMaxCharacters
|
||||
}
|
||||
}
|
||||
|
||||
public extension CompositionViewModel {
|
||||
|
|
|
@ -101,6 +101,15 @@ public final class NewStatusViewModel: ObservableObject {
|
|||
.sink { [weak self] in self?.handle(event: $0) }
|
||||
.store(in: &cancellables)
|
||||
|
||||
$identityContext
|
||||
.map { $0.identity.instance?.maxTootChars }
|
||||
.sink { [weak self] maxTootChars in
|
||||
self?.compositionViewModels.forEach { cvm in
|
||||
cvm.setMaxCharactersOrDefault(maxTootChars)
|
||||
}
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
if let identity = identity {
|
||||
setIdentity(identity)
|
||||
}
|
||||
|
|
|
@ -203,11 +203,14 @@ private extension CompositionView {
|
|||
self.changeIdentityButton.accessibilityLabel = $0.identity.handle
|
||||
self.changeIdentityButton.accessibilityHint =
|
||||
NSLocalizedString("compose.change-identity-button.accessibility-hint", comment: "")
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
parentViewModel.identityContext.$authenticatedOtherIdentities
|
||||
.sink { [weak self] in self?.changeIdentityButton.menu = self?.changeIdentityMenu(identities: $0) }
|
||||
$0.$authenticatedOtherIdentities
|
||||
.sink { [weak self] authenticatedOtherIdentities in
|
||||
self?.changeIdentityButton.menu =
|
||||
self?.changeIdentityMenu(identities: authenticatedOtherIdentities)
|
||||
}
|
||||
.store(in: &self.cancellables)
|
||||
}
|
||||
.store(in: &cancellables)
|
||||
|
||||
viewModel.$attachmentViewModels
|
||||
|
|
Loading…
Reference in a new issue