package Ġcom . bit love . f et life . model . resource . get Ċ Ċ import Ġandroid . arch . lifecycle . LiveData Ċ import Ġandroid . arch . paging . DataSource Ċ import Ġandroid . arch . paging . Live Paged List Builder Ċ import Ġandroid . arch . paging . Paged List Ċ import Ġandroid . util . Log Ċ import Ġcom . bit love . f et life . model . data object . entity . content . Explore Story Entity Ċ import Ġcom . bit love . f et life . model . data object . wrapper . Explore Story Ċ import Ġcom . bit love . f et life . model . db . F et Life Content Database Ċ import Ġcom . bit love . f et life . model . resource . Base Resource Ċ import Ġcom . bit love . f et life . model . resource . Resource Result Ċ import Ġorg . jetbrains . ank o . coroutines . experimental . bg Ċ Ċ abstract Ġclass ĠGet List Resource < ResourceType >( userId Ġ: ĠString ?, Ġval ĠpageSize : ĠInt Ġ= Ġ 1 5 ) Ġ: ĠBase Resource < Paged List < ResourceType >>( userId ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġpage Sync ed : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġexecute () Ġ: ĠResource Result < Paged List < ResourceType >> Ġ{ ĊĠĠĠĠĠĠĠ Ġpage Sync ed Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġload In Background () ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . execute () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġload In Background () Ġ{ ĊĠĠĠĠĠĠĠ Ġbg Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetContent Database Wrapper (). safe Run ( userId , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Db Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdb Source Ġ= Ġinit Load ( content Db ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Result . live Data . add Source ( db Source , Ġ{ data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Sync ed Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsync With Network ( 2 , ĠgetItem At Position ( pageSize - 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Sync ed Ġ= Ġ 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage d List Callback . data Ġ= Ġdata Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. add Weak Callback ( null , page d List Callback ) Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" ***** DB DATA ***** ", ( this @ Get List Resource Ġas ? ĠGet Explore List Resource )?. type ?. toString ()? :" no ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( entity Ġin Ġdata !! ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ("* ", ( entity Ġas ? ĠExplo re Story )?. getEntity ()?. server Order ?. toString ()? :"- 1 ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Result . live Data . value Ġ= Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload More (): ĠResource Result < Paged List < ResourceType >> Ġ{ ĊĠĠĠĠĠĠĠ Ġsync With Network ( page Sync ed + 1 , ĠgetItem At Position (( page Sync ed Ġ* ĠpageSize ) Ġ- 1 )) ĊĠĠĠĠĠĠĠ Ġpage Sync ed ++ ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . load More () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun ĠgetItem At Position ( position : ĠInt ) Ġ: ĠResource Type ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġload Result . live Data . value ?. get OrNull ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Load ( content Db : ĠF et Life Content Database ) Ġ: ĠLive Data < Paged List < ResourceType >> Ġ{ ĊĠĠĠĠĠĠĠ Ġsync With Network ( 1 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġpage Sync ed Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠLive Paged List Builder < Int , ResourceType >( load List From Db ( content Db ), Paged List . Config . Builder (). set PageSize ( pageSize ). set Pref etch Distance ( pageSize ). setInitial Load Size Hint ( pageSize ). set Enable Place holders ( true ). build ()). build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġsync With Network ( page : ĠInt ?, Ġitem : ĠResource Type ?) ĊĊĠĠĠ Ġabstract Ġfun Ġload List From Db ( content Db : ĠF et Life Content Database ) Ġ: ĠDataSource . Factory < Int , ResourceType > Ċ }