package Ġby . android academy . first application . repository čĊč Ċ import Ġby . android academy . first application . api . T mdb Service Api č Ċ import Ġby . android academy . first application . data . Movie č Ċ import Ġby . android academy . first application . data . Video č Ċ import Ġby . android academy . first application . repository . cache . Movies Cache čĊč Ċ class ĠMov ies Repository ( čĊĠĠĠ Ġprivate Ġval Ġt mdb Service Api : ĠT mdb Service Api , čĊĠĠĠ Ġprivate Ġval Ġt mdb Service Mapper : ĠT mdb Service Mapper , čĊĠĠĠ Ġprivate Ġval Ġcache : ĠMov ies Cache č Ċ ) Ġ{ čĊčĊĠĠĠ Ġsuspend Ġfun Ġget Pop ular Movies (): ĠList < Movie > Ġ{ čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( cache . is Cached ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcache . get Movies () čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġpopular Movies Dto Ġ= Ġt mdb Service Api . get Pop ular Movies () čĊĠĠĠĠĠĠĠ Ġval Ġmovies Ġ= Ġt mdb Service Mapper . map ( popular Movies Dto ) čĊĠĠĠĠĠĠĠ Ġcache . insert Movies ( movies ) čĊĠĠĠĠĠĠĠ Ġreturn Ġmovies čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġsuspend Ġfun Ġget Movie Tr ailer Url ( movie : ĠMovie ): ĠString Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġcached Url Ġ= Ġcache . get Movie Tr ailer Url ( movie . id ) čĊčĊĠĠĠĠĠĠĠ Ġif Ġ( cached Url Ġ!= Ġnull ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcached Url čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġval Ġmovie Videos Dto Ġ= Ġt mdb Service Api . get Movie Videos ( movie . id ) čĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġt mdb Service Mapper . map Tr ailer Url ( movie Videos Dto . results . first ()) čĊčĊĠĠĠĠĠĠĠ Ġcache . insert Video ( Video ( movie . id , Ġurl )) čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġurl čĊĠĠĠ Ġ} čĊĠĠĠ Ġfun Ġdelete Cached Data () Ġ{ čĊĠĠĠĠĠĠĠ Ġcache . clear Cache () čĊĠĠĠ Ġ} čĊč Ċ }