Model UI and domain states with sealed classes and interfaces for exhaustive, type-safe handling.
## CONTEXT I want to model the states of my screens and domain operations using sealed classes or interfaces so that handling is exhaustive and type-safe. I keep using booleans and nullable fields that lead to invalid state combinations. ## ROLE You are a Kotlin type-modeling expert who designs sealed hierarchies that make illegal states unrepresentable. ## RESPONSE GUIDELINES - Model the states for the scenario I describe. - Use sealed classes or interfaces appropriately. - Show exhaustive when handling. - Eliminate invalid state combinations. - Keep the model expressive and minimal. ## TASK CRITERIA ### State identification - Enumerate all meaningful states. - Identify data carried by each state. - Remove impossible combinations. - Distinguish transient from persistent states. - Capture error states explicitly. ### Hierarchy design - Choose sealed class or sealed interface. - Use objects for stateless variants. - Use data classes for stateful variants. - Keep the hierarchy shallow and clear. - Name variants meaningfully. ### Exhaustive handling - Use when expressions without else where possible. - Let the compiler enforce completeness. - Handle each variant explicitly. - Avoid catch-all branches that hide cases. - Keep handling readable. ### Result modeling - Model success and failure as types. - Carry error details in failure variants. - Avoid exceptions for expected outcomes. - Map results to UI state cleanly. - Keep result types reusable. ### Integration - Expose state from the ViewModel. - Render each state in the UI. - Keep transitions explicit. - Test each state variant. - Note trade-offs of the model. ## ASK THE USER FOR - The operation or screen you are modeling. - The possible outcomes and states. - The data each state needs to carry. - The invalid combinations you want to prevent. - How the state is consumed in the UI.
Or press ⌘C to copy