package Ġjp . bucket eer . sdk . evaluation Ċ Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġbucket eer . feature . Evaluation OuterClass Ċ import Ġbucket eer . user . User OuterClass Ċ import Ġjp . bucket eer . sdk . Api Ċ import Ġjp . bucket eer . sdk . Constants Ċ import Ġjp . bucket eer . sdk . dispatcher . Dispatcher Ċ import Ġjp . bucket eer . sdk . evaluation . db . Current Evaluation Dao Ċ import Ġjp . bucket eer . sdk . evaluation . db . Latest Evaluation Dao Ċ import Ġjp . bucket eer . sdk . evaluation . dto . Current Evaluation List Data Changed Action Ċ import Ġjp . bucket eer . sdk . evaluation . dto . Latest Evaluation Changed Action Ċ import Ġjp . bucket eer . sdk . evaluation . dto . Refresh Man ually StateChanged Action Ċ import Ġjp . bucket eer . sdk . log . log d Ċ import Ġjp . bucket eer . sdk . log . lo ge Ċ Ċ internal Ġclass ĠLatest Evaluation Action Creator ( ĊĠĠĠ Ġprivate Ġval Ġdispatcher : ĠDispatcher , ĊĠĠĠ Ġval Ġapi : ĠApi , ĊĠĠĠ Ġprivate Ġval Ġlatest Evaluation Dao : ĠLatest Evaluation Dao , ĊĠĠĠ Ġprivate Ġval Ġcurrent Evaluation Dao : ĠCurrent Evaluation Dao , ĊĠĠĠ Ġprivate Ġval Ġshare Pref : ĠSharedPreferences Ċ ) Ġ{ ĊĊĠ Ġ@ Visible ForTesting ĊĠ Ġvar ĠcurrentUser Evalu ations Id : ĠString Ġ= Ġshare Pref . getString ( ĊĠĠĠĠĠ ĠConstants . PREFER ENCE _ KEY _ USER _ EVAL UATION _ ID , Ġ"") Ġ?: Ġ"" ĊĊĠ Ġfun Ġrefresh Latest Evaluation Man ually From Api ( user : ĠUser OuterClass . User ) Ġ{ ĊĠĠĠ Ġdispatcher . send ( ĊĠĠĠĠĠĠĠ ĠRefresh Man ually StateChanged Action ( Refresh Man ually StateChanged Action . State . Loading )) ĊĠĠĠ Ġval Ġresult Ġ= Ġrefresh Latest Evaluation From Api ( user ) ĊĠĠĠ Ġval Ġstate Ġ= Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠ Ġis ĠApi . Result . Success Ġ-> ĠRefresh Man ually StateChanged Action . State . Loaded ĊĠĠĠĠĠ Ġis ĠApi . Result . Fail Ġ-> ĠRefresh Man ually StateChanged Action . State . Error ( result . e ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġdispatcher . send ( Refresh Man ually StateChanged Action ( state )) ĊĠ Ġ} ĊĊĠ Ġfun Ġrefresh Latest Evaluation From Api ( user : ĠUser OuterClass . User ): ĠApi . Result < *> Ġ{ ĊĠĠĠ Ġrefresh Latest Evaluation From Dao ( user ) ĊĠĠĠ Ġval ĠcurrentUser Evaluation Id Ġ= Ġthis . currentUser Evalu ations Id ĊĠĠĠ Ġval Ġresult Ġ= Ġapi . fetch Evaluation ( user , ĠcurrentUser Evaluation Id ) ĊĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠ Ġis ĠApi . Result . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġresult . value ĊĠĠĠĠĠĠĠĠĠ Ġval Ġuser Evalu ations Id Ġ= Ġresponse . user Evalu ations Id ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing Ġin Ġcase Ġof Ġthere Ġare Ġno Ġchanges Ġin Ġthe Ġuser Ġevalu ations ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( currentUser Evaluation Id Ġ== Ġuser Evalu ations Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog d Ġ{ Ġ" Nothing Ġto Ġsync " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġresponse . evalu ations ?. evalu ations List Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( response . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvaluation OuterClass . User Evalu ations . State . FULL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! latest Evaluation Dao . delete All And Insert ( user , Ġlist )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlo ge Ġ{ Ġ" Failed Ġto Ġupdate Ġlatest Ġevalu ations " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ run ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate User Evaluation Id ( user Evalu ations Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfeature Ids Ġ= Ġlist . map Ġ{ Ġit . feature Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Evaluation Dao . delete NotIn ( user . id , Ġfeature Ids ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Evalu ations Ġ= Ġcurrent Evaluation Dao . get Evalu ations ( user . id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . send ( Latest Evaluation Changed Action ( user , Ġlist )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . send ( Current Evaluation List Data Changed Action ( user . id , Ġcurrent Evalu ations )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvaluation OuterClass . User Evalu ations . State . PAR TIAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatest Evaluation Dao . put ( user , Ġlist ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher . send ( Latest Evaluation Changed Action ( user , Ġlatest Evaluation Dao . get ( user ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvaluation OuterClass . User Evalu ations . State . QUE U ED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvaluation OuterClass . User Evalu ations . State . UN RE CO GN IZED , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdo Ġnothing ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġis ĠApi . Result . Fail Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġlog d ( throwable Ġ= Ġresult . e ) Ġ{ Ġ" ApiError : Ġ${ result . e . message }" Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġ@ Visible ForTesting ĊĠ Ġfun Ġupdate User Evaluation Id ( user Evalu ations Id : ĠString ) Ġ{ ĊĠĠĠ ĠcurrentUser Evalu ations Id Ġ= Ġuser Evalu ations Id ĊĠĠĠ Ġshare Pref . edit (). putString ( ĊĠĠĠĠĠĠĠ ĠConstants . PREFER ENCE _ KEY _ USER _ EVAL UATION _ ID , ĊĠĠĠĠĠĠĠ Ġuser Evalu ations Id ĊĠĠĠ Ġ). commit () ĊĠ Ġ} ĊĊĠ Ġ@ Visible ForTesting ĊĠ Ġfun Ġrefresh Latest Evaluation From Dao ( user : ĠUser OuterClass . User ) Ġ{ ĊĠĠĠ Ġval Ġlatest Evaluation From Dao Ġ= Ġlatest Evaluation Dao . get ( user ) ĊĠĠĠ Ġdispatcher . send ( Latest Evaluation Changed Action ( user , Ġlatest Evaluation From Dao )) ĊĠ Ġ} Ċ } Ċ