Ċ package Ġcom . example . android . navigation . view Models Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . example . android . navigation . Database Quotes . get Database Ċ import Ġcom . example . android . navigation . Repository . Quotes Repository Ċ Ċ import Ġkotlinx . coroutines .* Ċ Ċ class ĠView Models ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġdatabase Ġ= Ġget Database ( application ) ĊĠĠĠ Ġprivate Ġval Ġquotes Repository Ġ= ĠQu otes Repository ( database ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquotes Repository . refresh Quotes () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġplaylist Ġ= Ġquotes Repository . quotes ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFactory Ġfor Ġconstructing ĠDev Byte ViewModel Ġwith Ġparameter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠFactory ( val Ġapp : ĠApplication ) Ġ: ĠViewModel Provider . Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel ?> Ġcreate ( model Class : ĠClass < T >): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model Class . isAssignableFrom ( ViewModels :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Models ( app ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Unable Ġto Ġconstruct Ġview model ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ