This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {assistantConversation} from "./assistant"; | |
async function main() { | |
await assistantConversation(); | |
} | |
main(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.myexample | |
import io.mockk.every | |
import io.mockk.mockk | |
import io.mockk.verify | |
import org.junit.Test | |
import kotlin.test.assertEquals | |
interface CallContext |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@AndroidEntryPoint | |
class MainActivity : BaseActivity() { | |
// The model to run authentication and content visibility | |
private val model: MainScreenModel by viewModels | |
override fun onCreate(savedInstanceState: Bundle?) { | |
super.onCreate(savedInstanceState) | |
MainContent(model) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Common interface to start feature-flow | |
*/ | |
interface FlowStarter<G: Any, U: Any> { | |
/** | |
* Creates a starting state | |
* @param email Email to proceed with | |
*/ | |
fun start(email: String): CommonMachineState<G, U> | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class EmailCheckState( | |
context: WelcomeContext, | |
private val data: WelcomeDataState, | |
private val checkEmail: CheckEmail | |
) : WelcomeState(context) { | |
private val email = requireNotNull(data.email) { | |
"Email is not provided" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Proxy definition (for readability) | |
*/ | |
private typealias LoginProxy = ProxyMachineState< | |
WelcomeGesture, // Host gesture system | |
WelcomeUiState, // Host ui-state system | |
LoginGesture, // Feature gesture system | |
LoginUiState // Feature ui-state system | |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
abstract class ProxyMachineState<PG: Any, PU: Any, CG: Any, CU: Any> : CommonMachineState<PG, PU>() { | |
/** | |
* Proxy state machine | |
*/ | |
private val machine = object : CommonStateMachine.Base<CG, CU>(::init) { | |
fun doStart() { | |
start() | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Common state machine | |
* @param G UI gesture | |
* @param U UI state | |
*/ | |
interface CommonStateMachine<G: Any, U: Any> : MachineInput<G>, MachineOutput<G, U> | |
/** | |
* Common state-machine state | |
* @param G UI gesture |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fun WelcomeScreen(onTerminate: @Composable () -> Unit) { | |
val model = hiltViewModel<WelcomeViewModel>() | |
val state = model.state.collectAsState(WelcomeUiState.Loading) | |
BackHandler(onBack = { model.process(Back) }) | |
when (val uiState = state.value) { | |
// Native ui-state rendering... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@Composable | |
fun LoginScreen(state: LoginUiState, onGesture: (LoginGesture) -> Unit) { | |
// Login screen rendering... | |
} | |
@Composable | |
fun RegistrationScreen(state: RegisterUiState, onGesture: (RegisterGesture) -> Unit) { | |
// Registration screen rendering... | |
} |
NewerOlder