package Ġuk . co . v ict oria jan ed avis . chat app . presentation . ui . home Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroid . util . Log Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġuk . co . v ict oria jan ed avis . chat app . domain . inter actors . Get Received Friend Requests Count Ċ import Ġuk . co . v ict oria jan ed avis . chat app . domain . inter actors . Is User LoggedIn Ċ import Ġuk . co . v ict oria jan ed avis . chat app . domain . inter actors . Logout User Ċ import Ġuk . co . v ict oria jan ed avis . chat app . presentation . common . State Ċ import Ġuk . co . v ict oria jan ed avis . chat app . presentation . common . State .* Ċ import Ġuk . co . v ict oria jan ed avis . chat app . domain . common . Stream State .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠFriend Requests Toolbar ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġreceived Requests Count : ĠGet Received Friend Requests Count , ĊĠĠĠ Ġprivate Ġval Ġis User LoggedIn : ĠIs User LoggedIn , ĊĠĠĠ Ġprivate Ġval Ġlogout User : ĠLogout User Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfriend Requests Count LiveData Ġ= ĠMutable LiveData < State < Int >>() ĊĠĠĠ Ġprivate Ġval Ġis User LoggedIn LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġprivate Ġval Ġlogout User LiveData Ġ= ĠMutable LiveData < State < Unit >>() ĊĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Items () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Friend Requests Count LiveData (): ĠLive Data < State < Int >> Ġ= Ġfriend Requests Count LiveData ĊĊĠĠĠ Ġfun Ġget Is User LoggedIn LiveData (): ĠLive Data < Boolean > Ġ= Ġis User LoggedIn LiveData ĊĊĠĠĠ Ġfun Ġget Logout User LiveData (): ĠLive Data < State < Unit >> Ġ= Ġlogout User LiveData ĊĊĠĠĠ Ġfun Ġlogout User () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogout User LiveData . value Ġ= ĠShow Loading ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( bind To Logout User ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Items () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . clear () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( bind To UseCase ()) ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( bind To Is User LoggedIn ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind To UseCase () Ġ: ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreceived Requests Count . get Behavior Stream ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġstream State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( stream State ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOnNext Ġ-> Ġfriend Requests Count LiveData . value Ġ= ĠShow Content ( stream State . content ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOn Error Ġ-> Ġfriend Requests Count LiveData . value Ġ= ĠShow Error (" Error Ġfetching Ġfriend Ġrequests Ġfrom Ġnetwork ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind To Is User LoggedIn () Ġ: ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis User LoggedIn . get Behavior Stream ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġis User LoggedIn Ġ-> Ġis User LoggedIn LiveData . value Ġ= Ġis User LoggedIn Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġe Ġ-> ĠLog . e (" Friend Req s Toolbar ", Ġ" Error Ġchecking Ġif Ġuser Ġis Ġlogged Ġin : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException (" Error Ġchecking Ġif Ġuser Ġis Ġlogged Ġin : Ġ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind To Logout User () Ġ: ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlogout User . get Single ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġe Ġ-> Ġlogout User LiveData . value Ġ= ĠShow Error (" Logout Ġfailed : Ġ${ e . message }") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }