@ file : Suppress (" unused ") Ċ Ċ package Ġio . thumb cat . oss . gt comp anion . co hort s _ explorer Ċ Ċ import Ġco . touch lab . state ly . ensure Never Frozen Ċ import Ġdev . icer ock . mo ko . mv vm . dispatcher . Events Dispatcher Ċ import Ġdev . icer ock . mo ko . mv vm . li ved ata . LiveData Ċ import Ġdev . icer ock . mo ko . mv vm . li ved ata . Mutable LiveData Ċ import Ġdev . icer ock . mo ko . mv vm . view model . ViewModel Ċ import Ġio . thumb cat . oss . gt comp anion . domain . Version Ċ import Ġio . thumb cat . oss . gt comp anion . domain . use case . Get Co hort s Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . k oin . core . K oin Component Ċ import Ġorg . k oin . core . inject Ċ Ċ type alias ĠCo hort s Explorer Data Ġ= ĠMutable Map < Long , ĠMutable Map < Long , ĠCo hort s Explorer Co hort >> Ċ Ċ data Ġclass ĠCo hort s Explorer Co hort ( ĊĠĠĠ Ġval Ġchamp ion Key : ĠString , ĊĠĠĠ Ġval Ġchamp ion Name : ĠString , ĊĠĠĠ Ġval Ġfollow er Key : ĠString , ĊĠĠĠ Ġval Ġfollow er Name : ĠString , ĊĠĠĠ Ġval Ġcategory Name : ĠString Ċ ) Ċ Ċ @ Suppress (" Member Visibility Can Be Private ", Ġ" D uplicated Code ") Ċ @ Experimental Cor outines Api Ċ class ĠCo hort s Explorer ViewModel ( ĊĠĠĠ Ġval Ġevents Dispatcher : ĠEvents Dispatcher < Co hort Row Selection Listener > Ċ ) Ġ: ĠViewModel (), ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġval Ġget Co hort s UseCase : ĠGet Co hort s Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġ_ co hort s : ĠMutable LiveData < Co hort s Explorer Data > Ġ= ĠMutable LiveData ( mutable Map Of ()) ĊĠĠĠ Ġval Ġco hort s : ĠLive Data < Co hort s Explorer Data > Ġ= Ġ_ co hort s ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġensure Never Frozen () ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= ĠGet Co hort s . Request ( Version . Latest ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġget Co hort s UseCase . get ( request ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcategories Ġ= Ġresponse . co hort s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . category Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġindex , Ġco hort Ġ-> Ġindex Ġto Ġco hort Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġco hort s Ġ= Ġcategories ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ( index , Ġcategory ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex . to Long () Ġto Ġresponse . co hort s ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . category Ġ== Ġcategory Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġit . champ ion . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġco hort Index , Ġco hort Ġ-> Ġco hort Index . to Long () Ġto Ġco hort . to Presentation Model () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Map () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. associate Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable Map () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ co hort s . post Value ( co hort s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Co hort Row Selected ( co hort : ĠCo hort s Explorer Co hort ) Ġ{ ĊĠĠĠĠĠĠĠ Ġevents Dispatcher . dispatchEvent Ġ{ Ġroute To Co hort R oster View ( co hort ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠCo hort Row Selection Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġroute To Co hort R oster View ( co hort : ĠCo hort s Explorer Co hort ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠGet Co hort s . Response . Co hort . to Presentation Model (): ĠCo hort s Explorer Co hort Ġ{ ĊĠĠĠ Ġreturn ĠCo hort s Explorer Co hort ( ĊĠĠĠĠĠĠĠ Ġchamp ion Key Ġ= Ġchamp ion . key , ĊĠĠĠĠĠĠĠ Ġchamp ion Name Ġ= Ġchamp ion . name , ĊĠĠĠĠĠĠĠ Ġfollow er Key Ġ= Ġfollow er Unit . key , ĊĠĠĠĠĠĠĠ Ġfollow er Name Ġ= Ġfollow er Unit . name , ĊĠĠĠĠĠĠĠ Ġcategory Name Ġ= Ġcategory . name ĊĠĠĠ Ġ) Ċ } Ċ