Skip to content

Commit

Permalink
Improve introspection for SignalProducerWorkflow actions (#192)
Browse files Browse the repository at this point in the history
  • Loading branch information
amorde authored Feb 23, 2023
1 parent 8b7e97b commit dbdcb96
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions WorkflowReactiveSwift/Sources/SignalProducerWorkflow.swift
Original file line number Diff line number Diff line change
Expand Up @@ -47,18 +47,27 @@ struct SignalProducerWorkflow<Value>: Workflow {
public typealias State = Void
public typealias Rendering = Void

struct SignalProducerWorkflowAction: WorkflowAction {
typealias WorkflowType = SignalProducerWorkflow
let output: Value

func apply(toState state: inout Void) -> Value? {
output
}
}

var signalProducer: SignalProducer<Value, Never>

public init(signalProducer: SignalProducer<Value, Never>) {
self.signalProducer = signalProducer
}

public func render(state: State, context: RenderContext<SignalProducerWorkflow>) -> Rendering {
let sink = context.makeSink(of: AnyWorkflowAction.self)
let sink = context.makeSink(of: SignalProducerWorkflowAction.self)
context.runSideEffect(key: "") { [signalProducer] lifetime in
signalProducer
.take(during: lifetime.reactiveLifetime)
.map { AnyWorkflowAction(sendingOutput: $0) }
.map { SignalProducerWorkflowAction(output: $0) }
.observe(on: QueueScheduler.main)
.startWithValues(sink.send)
}
Expand Down

0 comments on commit dbdcb96

Please sign in to comment.