package Ġcom . github . k amil 1 3 3 8 . recording _ app Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġcom . github . k amil 1 3 3 8 . activity _ recognition _ core . core . permission . Check Permission UseCase Ċ import Ġcom . github . k amil 1 3 3 8 . recording _ app . storage _ use _ case . Extract Database UseCase Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . rx kotlin . plus Assign Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ import Ġjavax . inject . Inject ĊĊ Ċ class ĠHome ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġcheck Permission UseCase : ĠCheck Permission UseCase , ĊĠĠĠ Ġprivate Ġval Ġextract Database UseCase : ĠExtract Database UseCase Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġpermission Granted Ġ= ĠMutable LiveData < Boolean ?> () ĊĠĠĠ Ġval Ġextracting Succeeded Ġ= ĠMutable LiveData < Boolean ?> () ĊĊĠĠĠ Ġval Ġrequested Permission : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĊĠĠĠ Ġprivate Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġdis pos ables . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Write Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpermission Ġ= ĠManifest . permission . WRITE _ EXTERNAL _ STORAGE ĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġcheck Permission UseCase . execute ( permission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe (:: handle Permission Check ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Permission Check ( result : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpermission Granted . value Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġpermission Granted . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġextract Database () Ġ{ ĊĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġextract Database UseCase . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: handle Extraction Successful Result , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ:: handle Extraction Failed Result ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Extraction Successful Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġextracting Succeeded . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġextracting Succeeded . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Extraction Failed Result ( exception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġextracting Succeeded . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġextracting Succeeded . value Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }