Skip to content

Consider creating interface WorkflowView<RenderingT: Screen> #606

@rjrjr

Description

@rjrjr

We could create a facade interface that just wrapped a plain old View. I don't think it's worth the effort. Feature developers basically never bump into this stuff, thanks to WorkflowViewStub and such. That will be even more true when the UI overhaul is done, I think.

But just to scratch the nerdsnipe itch, here's a sketch of what that could be.

fun <RenderingT> ViewRegistry.buildView(...): WorkflowView<RenderingT>

interface WorkflowView<RenderingT> {
  fun asView(): View
  
  fun start()

  val rendering: RenderingT
  val environment: ViewEnvironment

  fun update(
    rendering: RenderingT,
    environment: ViewEnvironment
  )
  // ...
}

fun <RenderingT> View.asWorkflowView(): WorkflowView<T>? {
  // Looks for the tag and confirms the type is right? 
}

Still thinking this would be a distraction, but I'm wavering. Dammit Steve, are you proud that you've done this to me?

Originally posted by @rjrjr in #602 (comment)

Metadata

Metadata

Assignees

Labels

uiRelated to UI integration

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions