/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠMar c ĠD onal d Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . mar cd onal d . hib i . screens . search . search results Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . mar cd onal d . hib i . data . network . No Connectivity Exception Ċ import Ġcom . mar cd onal d . hib i . data . network . j ish o . J ish o API Service Ċ import Ġcom . mar cd onal d . hib i . data . network . j ish o . ap ire sponse . Data Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . net . Socket TimeoutException Ċ Ċ class ĠSearch ViewModel ( private Ġval Ġapi Service : ĠJ ish o API Service ) Ġ: ĠViewModel () Ġ{ Ċ ĉ private Ġvar Ġ_ display Loading Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Loading : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Loading ĊĊ ĉ private Ġvar Ġ_ display No Connection Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay No Connection : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display No Connection ĊĊ ĉ private Ġvar Ġ_ display Timeout Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Timeout : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Timeout ĊĊ ĉ private Ġvar Ġ_ display Error Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Error : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Error ĊĊ ĉ private Ġvar Ġ_ display No Results Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay No Results : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display No Results ĊĊ ĉ private Ġvar Ġ_ search Results Ġ= ĠMutable LiveData < List < Data >>() Ċ ĉ val Ġsearch Results : ĠLive Data < List < Data >> Ċĉ ĉ get () Ġ= Ġ_ search Results ĊĊ ĉ var Ġentry Id : ĠInt Ġ= Ġ 0 ĊĊ ĉ fun Ġsearch ( search Term : ĠString ) Ġ{ Ċĉ ĉ _ display Loading . value Ġ= Ġtrue Ċĉ ĉ viewModel Scope . launch Ġ{ Ċĉĉ ĉ try Ġ{ Ċĉĉĉ ĉ val Ġsearch Response Ġ= Ġapi Service . search Term ( search Term ) Ċĉĉĉ ĉ if ( search Response . data . isNotEmpty ()) Ġ{ Ċĉĉĉĉ ĉ _ search Results . value Ġ= Ġsearch Response . data Ċĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉ ĉ _ display No Results . value Ġ= Ġtrue Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ġcatch ( e : ĠNo Connectivity Exception ) Ġ{ Ċĉĉĉ ĉ _ display No Connection . value Ġ= Ġtrue Ċĉĉ ĉ } Ġcatch ( e : ĠSocket TimeoutException ) Ġ{ Ċĉĉĉ ĉ _ display Timeout . value Ġ= Ġtrue Ċĉĉ ĉ } Ġcatch ( e : ĠException ) Ġ{ Ċĉĉĉ ĉ _ display Error . value Ġ= Ġtrue Ċĉĉĉ ĉ Tim ber . e (" Log : Ġsearch ViewModel : Ġsearch : Ġ${ e . message }") Ċĉĉ ĉ } Ġfinally Ġ{ Ċĉĉĉ ĉ _ display Loading . value Ġ= Ġfalse Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } Ċ }