package Ġcom . j pp . mp domain . use case Ċ Ċ import Ġcom . j pp . mp domain . Connectivity Ċ import Ġcom . j pp . mp domain . repository . Account Repository Ċ import Ġcom . j pp . mp domain . repository . Connectivity Repository Ċ import Ġcom . j pp . mp domain . repository . Movie Page Repository Ċ import Ġcom . j pp . mp domain . repository . Movie State Repository Ċ import Ġcom . j pp . mp domain . repository . Session Repository Ċ Ċ /** Ċ Ġ* ĠUse Ġcase Ġto Ġupdate Ġthe Ġfavorite Ġstate Ġof Ġa Ġmovie . Ċ Ġ*/ Ċ class ĠUpdate Favorite Movie State UseCase ( ĊĠĠĠ Ġprivate Ġval Ġmovie State Repository : ĠMovie State Repository , ĊĠĠĠ Ġprivate Ġval Ġmovie Page Repository : ĠMovie Page Repository , ĊĠĠĠ Ġprivate Ġval Ġsession Repository : ĠSession Repository , ĊĠĠĠ Ġprivate Ġval Ġaccount Repository : ĠAccount Repository , ĊĠĠĠ Ġprivate Ġval Ġconnectivity Repository : ĠConnect ivity Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun Ġexecute ( movie Id : ĠDouble , Ġas Favorite : ĠBoolean ): ĠTry < Unit > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( connectivity Repository . getCurrent Connectivity () Ġis ĠConnect ivity . Disconnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTry . Failure ( Try . Failure Cause . No Connectivity ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent Session Ġ= Ġsession Repository . getCurrent Session () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠTry . Failure ( Try . Failure Cause . User Not Logged ) ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Account Ġ= Ġaccount Repository . getUser Account ( current Session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠTry . Failure ( Try . Failure Cause . User Not Logged ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmovie State Repository . update Favorite Movie State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġas Favorite , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Account , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Session ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmovie Page Repository . flush Favorite Movie Pages () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTry . Success ( Unit ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTry . Failure ( Try . Failure Cause . Unknown ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ