package Ġcom . k art ik cd . word search . presentation . view model Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Capabilities Ċ import Ġandroid . os . Build Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . k art ik cd . word search . data . model . Dictionary Ċ import Ġcom . k art ik cd . word search . data . model . Dictionary Item Ċ import Ġcom . k art ik cd . word search . data . util . Resource Ċ import Ġcom . k art ik cd . word search . domain . use case . Get Search Word Mean ing UseCase Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . lang . Exception Ċ Ċ class ĠDictionary ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġapp : ĠApplication , ĊĠĠĠ Ġprivate Ġval Ġget Search Word Mean ing UseCase : ĠGet Search Word Mean ing UseCase Ċ ): ĠAndroid ViewModel ( app ) Ġ{ ĊĠĠĠ Ġval Ġdictionary Mean ing : ĠMutable LiveData < Resource < Dictionary >> Ġ= ĠMutable LiveData () ĊĊĠĠĠ Ġ// Get Ġsearch Ġword Ġmeaning ĊĠĠĠ Ġfun Ġget Se ar ched Word Mean ing ( search Query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdictionary Mean ing . post Value ( Resource . Loading ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Network Available ( app )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Result Ġ= Ġget Search Word Mean ing UseCase . execute ( search Query ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdictionary Mean ing . post Value ( api Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdictionary Mean ing . post Value ( Resource . Error (" Internet Ġis Ġnot Ġavailable ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdictionary Mean ing . post Value ( Resource . Error ( e . message . toString ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Network Available ( context : ĠContext ?): Boolean { ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . Q ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcapabilities Ġ= Ġconnectivity Manager . get Network Capabilities ( connectivity Manager . active Network ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( capabilities Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapabilities . has Transport ( Network Capabilities . TRANSPORT _ CELL ULAR ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapabilities . has Transport ( Network Capabilities . TRANSPORT _ WIFI ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcapabilities . has Transport ( Network Capabilities . TRANSPORT _ ETHER NET ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactive Network Info Ġ= Ġconnectivity Manager . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Network Info Ġ!= Ġnull Ġ&& Ġactive Network Info . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĊĠĠĠ Ġ} Ċ }