package Ġnet . ys library . mon ot weet y . ui . login Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġnet . ys library . mon ot weet y . R Ċ import Ġnet . ys library . mon ot weet y . analytics . Analytics Ċ import Ġnet . ys library . mon ot weet y . databinding . Fragment Login Binding Ċ import Ġnet . ys library . mon ot weet y . ui . base . View Binding Fragment Ċ import Ġnet . ys library . mon ot weet y . ui . base . consume Effects Ċ import Ġnet . ys library . mon ot weet y . ui . base . consume States Ċ import Ġnet . ys library . mon ot weet y . ui . base . navigate Safe Ċ import Ġnet . ys library . mon ot weet y . ui . base . set De bounce ClickListener Ċ import Ġnet . ys library . mon ot weet y . ui . di . Has Component Ċ import Ġnet . ys library . mon ot weet y . ui . di . ViewModel Factory Ċ import Ġnet . ys library . mon ot weet y . ui . di . getComponent Provider Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠLogin Fragment Ġ: ĠView Binding Fragment < Fragment Login Binding >( ĊĠĠĠ ĠR . layout . fragment _ login , ĊĠĠĠ ĠFragment Login Binding :: bind Ċ ), ĠHas Component < Login Fragment Component > Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcomponent : ĠLogin Fragment Component Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire Activity (). getComponent Provider < Login Fragment Component . Component Provider >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. login Fragment Component () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠViewModel Factory < Login ViewModel > ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġanalytics : ĠAnalytics ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠLogin ViewModel Ġby Ġview Models Ġ{ Ġfactory Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġcomponent . inject ( this ) ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner LiveData . observe ( this ) Ġ{ Ġowner Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . consume Effects ( owner . lifecycle Scope , Ġthis :: handle Effect ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . consume States ( owner . lifecycle Scope , Ġthis :: render ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠviewModel . dispatch ( Login Intent . Initialize ) ĊĊĠĠĠĠĠĠĠ Ġanalytics . screen View ( Analytics . Screen . Login , Ġthis :: class ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding . login . set De bounce ClickListener Ġ{ ĠviewModel . dispatch ( Login Intent . Do Login ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Effect ( effect : ĠLogin Effect ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( effect ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Effect . To Main Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Effect . To Login Form Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate Safe ( Login Fragment Directions . to Login Form ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender ( state : ĠLogin State ) Ġ{ ĊĊĠĠĠ Ġ} Ċ } Ċ