package Ġcom . clean architecture . presentation . search Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . clean architecture . domain . common . Mapper Ċ import Ġcom . clean architecture . domain . search navigation . Domain Search Navigation Ċ import Ġcom . clean architecture . domain . search navigation . Get Product sBy Search Navigation UseCase Ċ import Ġcom . clean architecture . presentation . common . Base ViewModel Ċ import Ġcom . clean architecture . presentation . common . Ui Error Ċ import Ġcom . clean architecture . presentation . common . extensions . addTo Ċ Ċ class ĠSearch ViewModel ( private Ġval Ġget Product sBy Search Navigation UseCase : ĠGet Product sBy Search Navigation UseCase , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmapper : ĠMapper < Domain Search Navigation , ĠUi Search Navigation >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġui Error Mapper : ĠMapper < Throwable , ĠUi Error >) Ġ: ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Search ViewModel " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġloading LiveData Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġvar Ġcontent LiveData Ġ= ĠMutable LiveData < Ui Search Navigation >() ĊĠĠĠ Ġvar Ġerror LiveData Ġ= ĠMutable LiveData < Ui Error >() ĊĊĠĠĠ Ġfun Ġget Products () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Product sBy Search Navigation UseCase . execute () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġmapper . map ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresponse : ĠUi Search Navigation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent LiveData . value Ġ= Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror : ĠThrowable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġerror . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror LiveData . value Ġ= Ġui Error Mapper . map ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). addTo ( composite Disposable ) ĊĠĠĠ Ġ} Ċ }