diff --git a/formula/src/main/java/com/instacart/formula/ActionBuilder.kt b/formula/src/main/java/com/instacart/formula/ActionBuilder.kt index ce4ec212b..36bf6f30e 100644 --- a/formula/src/main/java/com/instacart/formula/ActionBuilder.kt +++ b/formula/src/main/java/com/instacart/formula/ActionBuilder.kt @@ -20,12 +20,12 @@ abstract class ActionBuilder( /** * Current input associated with the Formula evaluation. */ - val input: Input, + override val input: Input, /** * Current state associated with the Formula evaluation. */ - val state: State, -) { + override val state: State, +) : ParameterProvider { /** * Adds an [Action] as part of this [Evaluation]. [Action] will be initialized diff --git a/formula/src/main/java/com/instacart/formula/ParameterProvider.kt b/formula/src/main/java/com/instacart/formula/ParameterProvider.kt new file mode 100644 index 000000000..716840a84 --- /dev/null +++ b/formula/src/main/java/com/instacart/formula/ParameterProvider.kt @@ -0,0 +1,13 @@ +package com.instacart.formula + +interface ParameterProvider { + + /** + * Current formula input. + */ + val input: Input + /** + * Current formula state. + */ + val state: State +} \ No newline at end of file diff --git a/formula/src/main/java/com/instacart/formula/Snapshot.kt b/formula/src/main/java/com/instacart/formula/Snapshot.kt index cafc46eed..457e95ab2 100644 --- a/formula/src/main/java/com/instacart/formula/Snapshot.kt +++ b/formula/src/main/java/com/instacart/formula/Snapshot.kt @@ -6,17 +6,17 @@ package com.instacart.formula * is a state change within the Formula hierarchy, a new snapshot will be generated and * [Formula.evaluate] will be called again. */ -interface Snapshot { +interface Snapshot : ParameterProvider { /** * The current Formula input value passed by the parent. */ - val input: Input + override val input: Input /** * The current Formula state value. */ - val state: State + override val state: State /** * Context is a short-lived object associated with the current evaluation. It should not be diff --git a/formula/src/main/java/com/instacart/formula/TransitionContext.kt b/formula/src/main/java/com/instacart/formula/TransitionContext.kt index ca7a94f21..6c18bba3b 100644 --- a/formula/src/main/java/com/instacart/formula/TransitionContext.kt +++ b/formula/src/main/java/com/instacart/formula/TransitionContext.kt @@ -9,11 +9,11 @@ import com.instacart.formula.internal.toResult * Transition context provides the current [input], the current [state] and utilities to help * create [Transition.Result] within [Transition.toResult]. */ -interface TransitionContext { +interface TransitionContext : ParameterProvider { val effectDelegate: EffectDelegate - val input: Input - val state: State + override val input: Input + override val state: State /** * Returns a result that indicates to do nothing as part of this event.