package Ġk z . so z di k . favorites . data Ċ Ċ import Ġk z . so z di k . core . models . Response Wrapper Ċ import Ġk z . so z di k . core . network . provider . Token Provider Ċ import Ġk z . so z di k . dictionary . data . api . model . to Word Dto Ċ import Ġk z . so z di k . dictionary . data . db . Word Dao Ċ import Ġk z . so z di k . dictionary . data . db . model . to Word Ċ import Ġk z . so z di k . dictionary . domain . model . Word Ċ import Ġk z . so z di k . favorites . data . api . Favorite Api Ċ import Ġk z . so z di k . favorites . domain . F avorites Repository Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠF avorites Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġfavorite Api : ĠF avorite Api , ĊĠĠĠ Ġprivate Ġval Ġword Dao : ĠWord Dao , ĊĠĠĠ Ġprivate Ġval Ġtoken Provider : ĠToken Provider , Ċ ) Ġ: ĠF avorites Repository Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget F avorites ( lang From : ĠString ): ĠList < Word > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Authorized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġword Dto List Ġ= Ġfavorite Api . load F avorites ( lang From ). data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Word Dto () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword Dao . insert ( word Dto List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġword Dao . get Favorite Words ( lang From ). map Ġ{ Ġit . to Word () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġclear F avorites ( lang From : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfavorite Api . clear F avorites ( lang From ) ĊĠĠĠĠĠĠĠ Ġword Dao . delete Favorite Words ( lang From ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġget Favorite Words Count (): ĠInt Ġ= Ġword Dao . favorite Words Count () ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinverse Favorite ( word : ĠWord ): ĠWord Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( is Authorized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate On Remote ( word ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate In Db ( word ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate On Remote ( word : ĠWord ): ĠWord Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Favorite Ġ= Ġ! word . is Favorite ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġif Ġ( is Favorite ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Api . create Favorite Phrase ( word . lang From , Ġword . lang To , Ġword . phrase ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfavorite Api . delete Favorite Phrase ( word . lang From , Ġword . lang To , Ġword . phrase ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( response . result Ġ== ĠResponse Wrapper . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Favorite Value Ġ= Ġresponse . data . fav our ite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġword Dto Ġ= Ġresponse . data . to Word Dto (). copy ( fav our ite Ġ= Ġnew Favorite Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword Dao . update ( word Dto ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword . copy ( is Favorite Ġ= Ġnew Favorite Value Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġupdate In Db ( word : ĠWord ): ĠWord Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Favorite Ġ= Ġ! word . is Favorite ĊĠĠĠĠĠĠĠ Ġval Ġword Dto Ġ= Ġword Dao . get Word ( word . phrase , Ġword . lang From , Ġword . lang To ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( word Dto Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchanged Rows Count Ġ= Ġword Dao . update ( word Dto . copy ( fav our ite Ġ= Ġif Ġ( is Favorite ) Ġ 1 Ġelse Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( changed Rows Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġword ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġword . copy ( is Favorite Ġ= Ġis Favorite ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġword ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Authorized (): ĠBoolean Ġ= Ġtoken Provider . getToken () Ġ!= Ġnull Ċ }