/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠJose ĠMar ia ĠPay Ã¡ ĠCast illo Ċ Ġ* Ċ Ġ* Ġ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 . j pay a . dynamic features . home . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . j pay a . dynamic features . home . R Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠView Ġmodel Ġresponsible Ġfor Ġpre paring Ġand Ġmanaging Ġthe Ġdata Ġfor Ġ[ Home Fragment ]. Ċ Ġ* Ċ Ġ* Ġ@ see ĠViewModel Ċ Ġ*/ Ċ class ĠHome ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġ@ Visible ForTesting ( otherwise Ġ= ĠVis ible ForTesting . PRIVATE ) ĊĠĠĠ Ġval Ġfirebase Auth : ĠFirebase Auth Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ state Ġ= ĠMutable LiveData < Home ViewState >() ĊĠĠĠ Ġval Ġstate : ĠLive Data < Home ViewState > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ state ĊĊĠĠĠ Ġprivate Ġval Ġnav Fragments Ids Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠ ĠR . id . abbre viations _ list _ fragment ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNavigation Ġcontroller Ġadd Ġdestination Ġchanged Ġlistener . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġnav Controller ĠNavigation Ġmanager . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnavigation Controller Changed ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġ_, Ġdestination , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( nav Fragments Ids . contains ( destination . id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ state . post Value ( Home ViewState . Navigation Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ state . post Value ( Home ViewState . FullScreen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġauthenticate ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfirebase Auth . signIn Anonymous ly (). add On Complete Listener ( activity ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess , Ġupdate ĠUI Ġshowing Ġthe Ġdifferent Ġapplication Ġmenus ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ state . post Value ( Home ViewState . Navigation Screen ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog . w ( TAG , Ġ" signIn Anonymous ly : failure ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠToast . makeText ( base Context , Ġ" Authentication Ġfailed .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate UI ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ