Merge remote-tracking branch 'origin/yostyle/voice_broadcast_playing' into yostyle/voice_broadcast_playing

This commit is contained in:
manuroe
2022-10-20 17:51:46 +02:00
42 changed files with 365 additions and 217 deletions
@@ -19,6 +19,7 @@ import Foundation
struct ComposerViewState: BindableState {
var eventSenderDisplayName: String?
var sendMode: ComposerSendMode = .send
var placeholder: String?
}
extension ComposerViewState {
@@ -63,4 +63,10 @@ final class ComposerViewModelTests: XCTestCase {
context.send(viewAction: .cancel)
XCTAssert(result == .cancel)
}
func testPlaceholder() {
XCTAssert(context.viewState.placeholder == nil)
viewModel.placeholder = "Placeholder Test"
XCTAssert(context.viewState.placeholder == "Placeholder Test")
}
}
@@ -111,6 +111,7 @@ struct Composer: View {
didUpdateText: wysiwygViewModel.didUpdateText
)
.tintColor(theme.colors.accent)
.placeholder(viewModel.viewState.placeholder, color: theme.colors.tertiaryContent)
.frame(height: wysiwygViewModel.idealHeight)
.padding(.horizontal, horizontalPadding)
.onAppear {
@@ -45,6 +45,15 @@ final class ComposerViewModel: ComposerViewModelType, ComposerViewModelProtocol
}
}
var placeholder: String? {
get {
state.placeholder
}
set {
state.placeholder = newValue
}
}
// MARK: - Public
override func process(viewAction: ComposerViewAction) {
@@ -21,4 +21,5 @@ protocol ComposerViewModelProtocol {
var callback: ((ComposerViewModelResult) -> Void)? { get set }
var sendMode: ComposerSendMode { get set }
var eventSenderDisplayName: String? { get set }
var placeholder: String? { get set }
}
@@ -84,8 +84,7 @@ final class TimelinePollCoordinator: Coordinator, Presentable, PollAggregatorDel
func start() { }
func toPresentable() -> UIViewController {
VectorHostingController(rootView: TimelinePollView(viewModel: viewModel.context),
forceZeroSafeAreaInsets: true)
VectorHostingController(rootView: TimelinePollView(viewModel: viewModel.context))
}
func canEndPoll() -> Bool {
@@ -26,13 +26,13 @@ class TimelinePollProvider {
/// Create or retrieve the poll timeline coordinator for this event and return
/// a view to be displayed in the timeline
func buildTimelinePollViewForEvent(_ event: MXEvent) -> UIView? {
func buildTimelinePollVCForEvent(_ event: MXEvent) -> UIViewController? {
guard let session = session, let room = session.room(withRoomId: event.roomId) else {
return nil
}
if let coordinator = coordinatorsForEventIdentifiers[event.eventId] {
return coordinator.toPresentable().view
return coordinator.toPresentable()
}
let parameters = TimelinePollCoordinatorParameters(session: session, room: room, pollStartEvent: event)
@@ -42,7 +42,7 @@ class TimelinePollProvider {
coordinatorsForEventIdentifiers[event.eventId] = coordinator
return coordinator.toPresentable().view
return coordinator.toPresentable()
}
/// Retrieve the poll timeline coordinator for the given event or nil if it hasn't been created yet
@@ -61,8 +61,7 @@ final class VoiceBroadcastPlaybackCoordinator: Coordinator, Presentable {
func start() { }
func toPresentable() -> UIViewController {
VectorHostingController(rootView: VoiceBroadcastPlaybackView(viewModel: viewModel.context),
forceZeroSafeAreaInsets: true)
VectorHostingController(rootView: VoiceBroadcastPlaybackView(viewModel: viewModel.context))
}
func canEndVoiceBroadcast() -> Bool {
@@ -26,13 +26,13 @@ class VoiceBroadcastPlaybackProvider {
/// Create or retrieve the voiceBroadcast timeline coordinator for this event and return
/// a view to be displayed in the timeline
func buildVoiceBroadcastPlaybackViewForEvent(_ event: MXEvent, senderDisplayName: String?) -> UIView? {
func buildVoiceBroadcastPlaybackVCForEvent(_ event: MXEvent, senderDisplayName: String?) -> UIViewController? {
guard let session = session, let room = session.room(withRoomId: event.roomId) else {
return nil
}
if let coordinator = coordinatorsForEventIdentifiers[event.eventId] {
return coordinator.toPresentable().view
return coordinator.toPresentable()
}
let dispatchGroup = DispatchGroup()
@@ -62,7 +62,7 @@ class VoiceBroadcastPlaybackProvider {
coordinatorsForEventIdentifiers[event.eventId] = coordinator
return coordinator.toPresentable().view
return coordinator.toPresentable()
}