/* ĊĠĠ ĠCopyright Ġ 2 0 2 0 ĠV asy a ĠD rob ush kov ĊĊĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); ĊĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĊĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat ĊĊĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 ĊĊĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware ĊĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĊĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . ĊĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand ĊĠĠ Ġlimitations Ġunder Ġthe ĠLicense . ĊĊ Ġ*/ Ċ package Ġcom . k ross ov och kin . fiber yun official . login . presentation Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . k ross ov och kin . fiber yun official . login . domain . Login Interactor Ċ import Ġkotlinx . coroutines . channels . Channel Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . receive As Flow Ċ import Ġkotlinx . coroutines . launch Ċ Ċ abstract Ġclass ĠLogin ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġabstract Ġval Ġnavigation : ĠFlow < Login Nav Event > ĊĊĠĠĠ Ġabstract Ġfun Ġlogin ( account : ĠString , Ġtoken : ĠString ) Ċ } Ċ Ċ class ĠLogin ViewModel Impl ( ĊĠĠĠ Ġprivate Ġval Ġlogin Interactor : ĠLogin Interactor Ċ ) Ġ: ĠLogin ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnavigation Channel Ġ= ĠChannel < Login Nav Event >( Channel . BUFFER ED ) ĊĠĠĠ Ġoverride Ġval Ġnavigation : ĠFlow < Login Nav Event > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnavigation Channel . receive As Flow () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( login Interactor . is LoggedIn ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ( account : ĠString , Ġtoken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Successful Ġ= Ġlogin Interactor . login ( account , Ġtoken ) ĊĠĠĠĠĠĠĠ Ġif Ġ( is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon Login Success () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation Channel . send ( Login Nav Event . On Login Success Event ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ