package Ġcom . h udson . wan android . data . repository Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . paging . Pager Ċ import Ġandroidx . paging . Paging Config Ċ import Ġcom . h udson . wan android . data . Wan Android Api Ċ import Ġcom . h udson . wan android . data . common . App Executor Ċ import Ġcom . h udson . wan android . data . common . merge call . Call Ċ import Ġcom . h udson . wan android . data . common . merge call . Ret rofit Call Ċ import Ġcom . h udson . wan android . data . db . Wan Android Db Ċ import Ġcom . h udson . wan android . data . entity . Hot Word Ċ import Ġcom . h udson . wan android . data . entity . Search Hot Word Ċ import Ġcom . h udson . wan android . data . entity . wrapper . Resource Ċ import Ġcom . h udson . wan android . data . repository . base . Base Network Bound Resource Ċ import Ġcom . h udson . wan android . data . repository . paging . Search Paging Source Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠH udson Ġon Ġ 2 0 2 0 / 8 / 1 0 . Ċ Ġ*/ Ċ @ Singleton Ċ class ĠHot Search Word Repository Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġapp Executor : ĠApp Executor , ĊĠĠĠ Ġprivate Ġval Ġw an Android Api : ĠW an Android Api , ĊĠĠĠ Ġprivate Ġval Ġdb : ĠW an Android Db Ċ ){ ĊĊĠĠĠ Ġfun Ġload Hot Search Word (): ĠLive Data < Resource < List < Hot Word >> >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġobject Ġ: ĠBase Network Bound Resource < List < Hot Word >, ĠSearch Hot Word >( db . data Wrapper Dao (), app Executor ){ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġshould Fetch ( data : ĠList < Hot Word >? ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . should Fetch ( data ) Ġ|| Ġdata Ġ== Ġnull Ġ|| Ġdata . isEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( request Type : ĠSearch Hot Word ): ĠList < Hot Word >? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequest Type . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Call (): ĠCall < Search Hot Word > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠRet rofit Call ( wan Android Api . search Hot Word Api ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}. as LiveData () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload History Search () Ġ= Ġdb . hot Word Dao (). query History () ĊĊĠĠĠ Ġsuspend Ġfun Ġstore History Search ( hot Word : ĠHot Word ) Ġ= Ġdb . hot Word Dao (). insert ( hot Word ) ĊĊĠĠĠ Ġsuspend Ġfun Ġclean History Search () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . hot Word Dao (). clean History () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch SearchResult ( search Word : ĠString ) Ġ= ĠP ager ( Paging Config ( pageSize Ġ= ĠPAGE _ SIZE )){ ĊĠĠĠĠĠĠĠ ĠSearch Paging Source ( wan Android Api , Ġsearch Word ) ĊĠĠĠ Ġ}. flow ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠPAGE _ SIZE Ġ= Ġ 2 0 ĊĠĠĠ Ġ} Ċ }