package Ġnet . kom unan . kom un ant w . ui . home . tab Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . paging . Live Paged List Builder Ċ import Ġandroidx . paging . Paged List Ċ import Ġio . object box . android . Object Box DataSource Ċ import Ġio . object box . android . Object Box LiveData Ċ import Ġio . object box . kotlin . in Values Ċ import Ġnet . kom unan . kom un ant w . common . Preference Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . Source Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . Source _ Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . Timeline Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . Timeline _ Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . cache . Tweet Ċ import Ġnet . kom unan . kom un ant w . core . repository . entity . cache . Tweet _ Ċ import Ġnet . kom unan . kom un ant w . ui . common . base . TW Base ViewModel Ċ Ċ class ĠHome Tab ViewModel ( private Ġval Ġtimeline Id : ĠLong ) Ġ: ĠT W Base ViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtimeline : ĠLive Data < Timeline ?> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTransform ations . map ( Object Box LiveData ( Timeline . query (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġequal ( Timeline _. id , Ġtimeline Id ) ĊĠĠĠĠĠĠĠ Ġ}. build ()), ĠList < Timeline >:: first OrNull ) ĊĊĠĠĠ Ġprivate Ġval Ġsource Ids : ĠLive Data < List < Long >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTransform ations . map ( timeline ) Ġ{ Ġit ?. sources ?. map ( Source :: id ) Ġ?: Ġempty List () Ġ} ĊĊĠĠĠ Ġval Ġtweets : ĠLive Data < Paged List < Tweet >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTransform ations . switch Map ( source Ids ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLive Paged List Builder ( Object Box DataSource . Factory ( Tweet . query (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink ( Tweet _. sources ). in Values ( Source _. id , Ġit . to Long Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Desc ( Tweet _. id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. build ()), ĠPreference . pageSize ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠFactory ( private Ġval Ġtimeline Id : ĠLong ) Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Class Ġ== ĠHome Tab ViewModel :: class . java ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHome Tab ViewModel ( timeline Id ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unknown ĠViewModel Ġclass : Ġ${ model Class . name }. ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ