/* Ċ Ġ* Ġ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 . settings . updated ialog Ċ Ċ 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 . github . Github RateLimit Exceeded Exception Ċ import Ġcom . mar cd onal d . hib i . internal . utils . Update Utils Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . net . Socket TimeoutException Ċ Ċ class ĠUpdate Dialog ViewModel ( private Ġval Ġupdate Utils : ĠUpdate Utils ) Ġ: ĠViewModel () Ġ{ Ċ ĉ private Ġval Ġ_ display Dismiss Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Dismiss : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Dismiss ĊĊ ĉ private Ġval Ġ_ display Open Button Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Open Button : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Open Button ĊĊ ĉ private Ġval Ġ_ display Loading Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Loading : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Loading ĊĊ ĉ private Ġval Ġ_ display No Connection Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay No Connection : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display No Connection ĊĊ ĉ private Ġval Ġ_ display RateLimit Error Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay RateLimit Error : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display RateLimit Error ĊĊ ĉ private Ġval Ġ_ display No Update Available Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay No Update Available : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display No Update Available ĊĊ ĉ private Ġval Ġ_ new Version Name Ġ= ĠMutable LiveData < String >() Ċ ĉ val Ġnew Version Name : ĠLive Data < String > Ċĉ ĉ get () Ġ= Ġ_ new Version Name ĊĊ ĉ private Ġval Ġ_ display Error Ġ= ĠMutable LiveData < Boolean >() Ċ ĉ val Ġdisplay Error : ĠLive Data < Boolean > Ċĉ ĉ get () Ġ= Ġ_ display Error ĊĊ ĉ init Ġ{ Ċĉ ĉ _ display Open Button . value Ġ= Ġfalse Ċĉ ĉ _ display No Connection . value Ġ= Ġfalse Ċĉ ĉ _ display No Update Available . value Ġ= Ġfalse Ċĉ ĉ _ display Dismiss . value Ġ= Ġtrue Ċ ĉ } ĊĊ ĉ fun Ġcheck () Ġ{ Ċĉ ĉ viewModel Scope . launch ( Dispatch ers . Default ) Ġ{ Ċĉĉ ĉ _ display Loading . post Value ( true ) Ċĉĉ ĉ try Ġ{ Ċĉĉĉ ĉ val Ġnewest Version Ġ= Ġupdate Utils . check For Update () Ċĉĉĉ ĉ if ( new est Version Ġ!= Ġnull ) Ġ{ Ċĉĉĉĉ ĉ _ new Version Name . post Value ( new est Version . name ) Ċĉĉĉĉ ĉ _ display Open Button . post Value ( true ) Ċĉĉĉĉ ĉ _ display No Update Available . post Value ( false ) Ċĉĉĉ ĉ } Ġelse Ġ{ Ċĉĉĉĉ ĉ _ display No Update Available . post Value ( true ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ġcatch ( e : ĠGithub RateLimit Exceeded Exception ) Ġ{ Ċĉĉĉ ĉ _ display RateLimit Error . post Value ( true ) Ċĉĉ ĉ } Ġcatch ( e : ĠNo Connectivity Exception ) Ġ{ Ċĉĉĉ ĉ _ display No Connection . post Value ( true ) Ċĉĉ ĉ } Ġcatch ( e : ĠException ) Ġ{ Ċĉĉĉ ĉ _ display Error . post Value ( true ) Ċĉĉĉ ĉ Tim ber . e (" Log : Ġupdate Dialog ViewModel : Ġcheck : Ġ${ e . message }") Ċĉĉ ĉ } Ġfinally Ġ{ Ċĉĉĉ ĉ _ display Loading . post Value ( false ) Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } Ċ }