package Ġstud ios . devs . mob i . q rst oring helper . view models Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Color Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġcom . google . zx ing . Barcode Format Ċ import Ġcom . google . zx ing . Encode Hint Type Ċ import Ġcom . google . zx ing . Multi Format Writer Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġstud ios . devs . mob i . q rst oring helper . extensions . when Success Ċ import Ġstud ios . devs . mob i . q rst oring helper . repositories . IM ain Repository Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject ĊĊ Ċ interface ĠMain ViewModel Input Output Ġ{ ĊĠĠĠ Ġval Ġinput : ĠMain ViewModel Input ĊĠĠĠ Ġval Ġoutput : ĠMain ViewModel Output Ċ } Ċ Ċ interface ĠMain ViewModel Input Ġ{ ĊĠĠĠ Ġfun Ġtext Input ( char Sequence : ĠCharSequence ) ĊĠĠĠ Ġfun Ġcreate QR () Ċ } Ċ Ċ interface ĠMain ViewModel Output Ġ{ ĊĠĠĠ Ġval ĠisValid Text : ĠObservable < Boolean > ĊĠĠĠ Ġval Ġgenerated QR : ĠObservable < Bitmap > Ċ } Ċ Ċ class ĠMain ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠI Main Repository , Ġapplication : ĠApplication Ċ ) Ġ: ĠAndroid ViewModel ( application ), ĠMain ViewModel Input , ĠMain ViewModel Output , ĠMain ViewModel Input Output Ġ{ ĊĊĠĠĠ Ġ// region ĠCONST ĠEx posed ĠInput Ġand ĠOutput ĊĠĠĠ Ġoverride Ġval Ġinput : ĠMain ViewModel Input ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĠĠĠ Ġoverride Ġval Ġoutput : ĠMain ViewModel Output ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region Ġoverride Ġoutput ĊĠĠĠ Ġoverride Ġval ĠisValid Text : ĠObservable < Boolean > ĊĠĠĠ Ġoverride Ġval Ġgenerated QR : ĠObservable < Bitmap > ĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġ// region Ġlocal ĊĠĠĠ Ġprivate Ġval Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĠĠĠ Ġprivate Ġval Ġtext Input Subject Ġ= ĠPublish Subject . create < String >() ĊĠĠĠ Ġprivate Ġval Ġcreate QR Subject Ġ= ĠPublish Subject . create < Unit >() ĊĊĠĠĠ Ġ// endregion ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠisValid Text Ġ= Ġtext Input Subject . map Ġ{ Ġit . isNotEmpty () Ġ}. start With ( false ) ĊĠĠĠĠĠĠĠ Ġgenerated QR Ġ= Ġcreate QR Subject . with Latest From ( textInput Subject , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġ_, Ġtext Ġ-> Ġrepository . create Bitmap FromText ( text ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. when Success ( false ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtext Input ( char Sequence : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Input Subject . onNext ( char Sequence . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate QR () Ġ{ ĊĠĠĠĠĠĠĠ Ġcreate QR Subject . onNext ( Unit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġcomposite Disposable . dispose () ĊĠĠĠ Ġ} Ċ Ċ }