package Ġcom . ste phen b ain . lines . repository Ċ Ċ import Ġandroidx . paging . Paging Source Ċ import Ġcom . ste phen b ain . lines . api . Get Latest ApiResponse Ċ import Ġcom . ste phen b ain . lines . api . Lines ApiService Ċ import Ġcom . ste phen b ain . lines . api . Topic Ċ import Ġcom . ste phen b ain . lines . api . User Ċ import Ġcom . ste phen b ain . lines . common . to HashMap Ċ import Ġtim ber . log . Tim ber Ċ Ċ class ĠGet Latest Api Paging Source ( private Ġval Ġapi : ĠLines ApiService ) Ġ: ĠP aging Source < Int , ĠTopic With Users >() Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġload ( params : ĠLoad Params < Int >): ĠLoad Result < Int , ĠTopic With Users > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Number Ġ= Ġparams . key Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġapi . get Latest ( page Ġ= Ġpage Number ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Next Ġ= Ġresponse . topic List . topics . size Ġ== Ġresponse . topic List . per Page Ġ// Ġif Ġwe Ġhave Ġless Ġtopics Ġthan Ġpage Ġsize , Ġwe Ġare Ġat Ġthe Ġlast Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnext Key Ġ= Ġif Ġ( hasNext ) Ġpage Number Ġ+ Ġ 1 Ġelse Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Page ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġresponse . to Topics With Users (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprev Key Ġ= Ġnull , Ġ// Ġonly Ġpaging Ġforward ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext Key Ġ= Ġnext Key ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( t , Ġ" error Ġloading Ġhome Ġdata ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoad Result . Error ( t ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠGet Latest ApiResponse . to Topics With Users (): ĠList < Topic With Users > Ġ{ ĊĠĠĠ Ġval Ġall Users Ġ= Ġusers . to HashMap Ġ{ Ġit . id Ġ} ĊĠĠĠ Ġreturn Ġtopic List . topics . map Ġ{ Ġit . with Users ( all Users ) Ġ} Ċ } Ċ Ċ private Ġfun ĠTopic . with Users ( all Users : ĠMap < Long , ĠUser >): ĠTopic With Users Ġ{ ĊĠĠĠ Ġreturn ĠTopic With Users ( ĊĠĠĠĠĠĠĠ Ġtopic Ġ= Ġthis , ĊĠĠĠĠĠĠĠ Ġusers Ġ= Ġpost ers . map NotNull Ġ{ Ġall Users [ it . userId ] Ġ} ĊĠĠĠ Ġ) Ċ } Ċ Ċ data Ġclass ĠTopic With Users ( ĊĠĠĠ Ġprivate Ġval Ġtopic : ĠTopic , ĊĠĠĠ Ġval Ġusers : ĠList < User > Ċ ) Ġ: ĠTopic Ġby Ġtopic