package Ġcom . github . p av los pt . ref actored umb rella . ui . home Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . github . p av los pt . ref actored umb rella . use case . github . Add Repo UseCase Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . Flow Preview Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . launch In Ċ import Ġkotlinx . coroutines . flow . on Each Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class , ĠFlow Preview :: class ) Ċ class ĠHome ViewModel ( private Ġval Ġadd Repo UseCase : ĠAdd Repo UseCase ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ intent Channel Ġ= ĠMutable State Flow < Home View Intent >( Home View Intent . None ) ĊĊĠĠĠ Ġprivate Ġval Ġ_ ui Events : ĠMutable LiveData < Home UI Event > Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġui Events : ĠLive Data < Home UI Event > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ ui Events ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ intent Channel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġview Intent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( view Intent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHome View Intent . Add Github Repo Ġ-> Ġadd Github Repo ( github Repo Ġ= Ġview Intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHome View Intent . None Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( viewModel Scope ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġprocess Intent ( intent Home : ĠHome View Intent ) Ġ= Ġ_ intent Channel . emit ( intent Home ) ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġadd Github Repo ( github Repo : ĠHome View Intent . Add Github Repo ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( github Repo . repo Name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġadd Repo UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAdd Repo UseCase . Params ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo Name Ġ= Ġgithub Repo . repo Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepo St ars Ġ= Ġgithub Repo . repo St ars ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ_ ui Events . value Ġ= ĠHome UI Event . Repo Added ĊĠĠĠ Ġ} Ċ } Ċ