package Ġca . c ply on . co int ime . ui . detail Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Provider Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġca . c ply on . co int ime . data . Coin Ċ import Ġca . c ply on . co int ime . data . source . Coin Repository Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠCoin Detail ViewModel ( private Ġval Ġrepository : ĠCoin Repository , Ġapplication : ĠApplication ) Ġ: ĊĠĠĠ ĠAndroid ViewModel ( ĊĠĠĠĠĠĠĠ Ġapplication ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLaunch ing Ġa Ġnew Ġcoroutine Ġto Ġinsert Ġthe Ġdata Ġin Ġa Ġnon - blocking Ġway ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Coin ( coin : ĠCoin ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . add Coin ( coin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Coin ( coin : ĠCoin ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete Coin ( coin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Coin ( coin : ĠCoin ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . update Coin ( coin ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Ob verse Image ( image : ĠBitmap ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . save Image ( getApplication (), Ġimage , Ġ" ob verse ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsave Reverse Image ( image : ĠBitmap ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . save Image ( getApplication (), Ġimage , Ġ" reverse ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Image ( path : ĠString ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrepository . load Image ( path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Image ( path : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . delete Image ( path ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠCoin Detail ViewModel Factory ( ĊĠĠĠ Ġprivate Ġval Ġcoin Repository : ĠCoin Repository , ĊĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication Ċ ) Ġ: ĠViewModel Provider . New Instance Factory () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠViewModel > Ġcreate ( model Class : ĠClass < T >) Ġ= ĊĠĠĠĠĠĠĠ Ġ( Coin Detail ViewModel ( coin Repository , Ġapplication ) Ġas ĠT ) Ċ } Ċ