package Ġcom . jo ey . che eta h . core . media . scan Ċ Ċ import Ġandroid . app . Activity Ċ import Ġcom . jo ey . che eta h . core . utils . Jump er Ċ import Ġcom . jo urney apps . barcode scanner . Capture Activity Ċ import Ġio . reactivex . Back pressure Strategy Ċ import Ġio . reactivex . Single Ċ import Ġio . reactivex . subjects . Publish Subject Ċ import Ġio . reactivex . subjects . Subject Ċ Ċ /** Ċ Ġ* ĠDescription : Ċ Ġ* Ġauthor : Jo ey Ċ Ġ* Ġdate : 2 0 1 8 / 1 0 / 1 7 Ċ Ġ*/ Ċ object ĠScan Code Helper Ġ{ ĊĠĠĠ Ġvar Ġscan Activity : Class < out ĠActivity > Ġ= ĠCapture Activity :: class . java ĊĊĠĠĠ Ġfun Ġreplace Scan Activity ( clazz : ĠClass < out ĠActivity >) Ġ{ ĊĠĠĠĠĠĠĠ Ġscan Activity Ġ= Ġclazz ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġsubjects Ġ= ĠHashMap < String , ĠSubject < String >>() ĊĊĠĠĠ Ġinternal Ġfun Ġdispatch Success ( key : ĠString , Ġpath : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġsubjects [ key ] ĊĠĠĠĠĠĠĠ Ġsubjects . remove ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( subject Ġ!= Ġnull Ġ&& Ġ! subject . has Complete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . onNext ( path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġdis Patch Error ( key : ĠString , Ġe : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= Ġsubjects [ key ] ĊĠĠĠĠĠĠĠ Ġsubjects . remove ( key ) ĊĠĠĠĠĠĠĠ Ġif Ġ( subject Ġ!= Ġnull Ġ&& Ġ! subject . has Complete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsubject . onError ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġscan ( activity : ĠActivity ): ĠSingle < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsubject Ġ= ĠPublish Subject . create < String >(). to Serialized () ĊĠĠĠĠĠĠĠ Ġsubjects [ activity . toString ()] Ġ= Ġsubject ĊĠĠĠĠĠĠĠ ĠJump er . make ( activity , ĠScan Code Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. putString (" Scan _ Result ", Ġactivity . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. jump () ĊĠĠĠĠĠĠĠ Ġreturn Ġsubject . to Flow able ( Back pressure Strategy . BUFFER ). single Or Error () ĊĠĠĠ Ġ} ĊĊĊ Ċ }