package Ġcom . example . clean architecture . ui . contributor Ċ Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġcom . example . clean architecture . base . Base ViewModel Ċ import Ġcom . example . clean architecture . domain . use case . contributor . Get Contributor UseCase Ċ import Ġcom . example . clean architecture . extension . add Ċ import Ġcom . example . clean architecture . model . Contributor Item Ċ import Ġcom . example . clean architecture . model . Contributor Item Mapper Ċ import Ġcom . example . clean architecture . model . Repo Item Ċ import Ġcom . example . clean architecture . util . Rx Utils Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠContributor ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġget Contributor UseCase : ĠGet Contributor UseCase , ĊĠĠĠ Ġprivate Ġval Ġcontributor Item Mapper : ĠContributor Item Mapper Ċ ) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġrepo Item Ġ= ĠMutable LiveData < Repo Item >() ĊĠĠĠ Ġval Ġavatar : ĠLive Data < String > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠTransform ations . map ( repo Item ) Ġ{ Ġit . owner Item ?. avatar Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcontributions Ġ= ĠMutable LiveData < List < Contributor Item >>() ĊĊĠĠĠ Ġfun Ġget Cont ributions (): ĠLive Data < List < Contributor Item >> Ġ= ĠTransform ations . switch Map ( repo Item ) Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitem . name Ġ!= Ġnull Ġ&& Ġitem . owner Item ?. login Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Contributor UseCase . create Observable ( Get Contributor UseCase . Params ( item . name , Ġitem . owner Item . login )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. compose ( Rx Utils . apply Observable Scheduler ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . map Ġ{ Ġcontributor Item Mapper . map To Presentation ( it ) Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontributions . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e (" Get Ġcontributor Ġerror : Ġ$ it ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Throwable ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontributions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠ Ġ} Ċ }