package Ġbg . crc . ro aming app . helper Ċ Ċ import Ġandroid . content . Context Ċ import Ġbg . crc . ro aming app . app . Application Session Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ BLOCK _ COUNTRY Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ BLOCK _ TELE CO MS Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ IS _ SECOND _ TIME _ TELE CO MES Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ IS _ UPDATE _ TELE CO MS Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ LIST _ OF _ TELE CO MS Ċ import Ġbg . crc . ro aming app . app . Application Session . PRE F _ TELE CO MS _ VERSION Ċ import Ġbg . crc . ro aming app . constant . App Utils Ċ import Ġbg . crc . ro aming app . constant . Constants Ċ import Ġbg . crc . ro aming app . constant . ErrorHandler Ċ import Ġbg . crc . ro aming app . debug . My Debug Ċ import Ġbg . crc . ro aming app . models . tele com s list . Country Ċ import Ġbg . crc . ro aming app . server . ApiClient Ċ import Ġbg . crc . ro aming app . server . Connection Detector Ċ import Ġbg . crc . ro aming app . server . Request Interface Ċ import Ġbg . crc . ro aming app . server . Request Parameters Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġio . reactivex . schedul ers . Schedulers Ċ Ċ /** Ċ Ġ* ĠEasy Ġaccess Ġof Ġtele com s Ġlist . ĠBelow Ġaccess Ġprovided Ġby Ġthis Ġclass Ċ Ġ* Ġ 1 ) ĠRequest ĠFor Ġtele com s . Ċ Ġ* Ġ 2 ) ĠAccess Ġfetched Ġtele com s Ċ Ġ* Ġ 3 ) ĠHelp Ġto Ġadd Ġand Ġremove Ġtele com s . Ċ Ġ* Ġ*/ Ċ object ĠTele com s Helper Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Roaming Protect " Ġ// java Class . simple Name Ċ Ċ // ĠĠĠ Ġval Ġcontext Ġ= ĠRo aming Protect . context ĊĠĠĠ Ġprivate Ġvar Ġcomposite Disposable Ġ= ĠComposite Disposable () ĊĊĠĠĠ Ġprivate Ġvar ĠlistOf Tele com s : ĠArrayList < Country ?> ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠlistOf Tele com s Ġ= ĠApp Utils . get Tele com s Data ArrayList () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠOn Tele com s ChangeListener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Tele com s Change () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Tele com s Fetch Error () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Tele com sRequest () Ġ{} ĊĠĠĠĠĠĠĠ Ġfun Ġon Tele com s F etched () Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġon Tele com s Change : ĠOn Tele com s ChangeListener ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequest Ġto Ġserver Ġfor Ġgetting Ġlist Ġof Ġtele com s . ĊĠĠĠĠ Ġ* ĠAfter Ġsuccessfully Ġfetched , Ġlist Ġof Ġtele com s Ġdata Ġset Ġinto Ġthe Ġpreference Ġ. ĊĠĠĠĠ Ġ**/ ĊĠĠĠ Ġprivate Ġfun Ġapi Call For Tele com s List ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġon Tele com s F etched : ĠOn Tele com s ChangeListener ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . on Tele com s Change Ġ= Ġon Tele com s F etched ĊĠĠĠĠĠĠĠ Ġif Ġ( Connection Detector . isConnected To Home Internet ( context )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparameter Ġ= ĠRequest Parameters . get Tele com s List Parameter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . getString ( Constants . PRE F _ SECRET _ KEY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . getInt ( Constants . PRE F _ USER _ ID ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠapiClient Ġ= ĠApi Client . getClient ( context ). create ( Request Interface :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com sRequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomposite Disposable . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠapiClient . tele com s List ( parameter ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele com s Data Ġ= ĠApp Utils . getUser Selected Tele com s ArrayList ( PRE F _ BLOCK _ TELE CO MS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Countries Ġ= ĠApp Utils . get Tele com s Data ArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . countries ?. forEach Ġ{ Ġcountry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . set Country Value Using Code ( country , Ġold Countries ?. last OrNull Ġ{ Ġc Ġ-> Ġc ?. m cc . equals ( country . m cc ) Ġ}, Ġtele com s Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . ec ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Handler . OK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log ( TAG , Ġ" api Call For Tele com s List , Ġcountries =" Ġ+ Ġit . countries ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . put UserData ( PRE F _ TELE CO MS _ VERSION , Ġit . vn ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . put UserData ( PRE F _ IS _ UPDATE _ TELE CO MS , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . save Tele com s Data ArrayList ( it . countries Ġas ĠArrayList < Country >, ĠP REF _ LIST _ OF _ TELE CO MS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit User Tele com Selection ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tele com s Ġ= Ġit . countries . to Collection ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s F etched () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Handler . server Handle Error ( context , Ġit . ec , Ġnull , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s Fetch Error () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log (" error ", Ġerror . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s F etched () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log (" catch ", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Tele com s Ġ= Ġ ĠApp Utils . get Tele com s Data ArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( listOf Tele com s Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . show Tele com s No Internet Dialog ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com sRequest () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit User Tele com Selection ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s F etched () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . show Tele com s No Update Dialog ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOn Ġfirst Ġlogin Ġinitialize Ġuser Ġsettings ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinit User Tele com Selection ( f etched : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Second Time Ġ= ĠApplication Session . getUser Boolean ( PRE F _ IS _ SECOND _ TIME _ TELE CO MES ) ĊĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log ( TAG , Ġ" init User Tele com Selection , Ġis Second Time =" Ġ+ Ġis Second Time ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( f etched Ġ|| Ġ! is Second Time ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . put UserData ( PRE F _ IS _ SECOND _ TIME _ TELE CO MES , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinitial Ġsettings Ġ- Ġall Ġtele com s Ġselected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtele com s Data Ġ= ĠApp Utils . get Tele com s Data ArrayList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log ( TAG , Ġ" init User Tele com Selection , Ġtele com s Data Ġ!= Ġnull ?" Ġ+ Ġ( tele com s Data Ġ!= Ġnull )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tele com s Data Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Country List : ĠArrayList < String > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtele com s Data . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tele com s Data [ i ]?. tel cos ?. any Ġ{ Ġtel co Ġ-> Ġtel co . is Check Tele com s Ġ== Ġtrue Ġ} Ġ== Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Country List . add ( tele com s Data [ i ]?. phone Code Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . save User Selected Tele com s ArrayList ( block Country List , ĠP REF _ BLOCK _ COUNTRY ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġblock Tele com s List : ĠArrayList < String > Ġ= Ġarray ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġtele com s Data . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtl Ġ= Ġtele com s Data [ i ]?. tel cos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i 1 Ġin Ġtl !!. indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( tl [ i 1 ]. is Check Tele com s Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Tele com s List . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"% s Ġ% s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtele com s Data [ i ]?. m cc , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtl [ i 1 ]. c Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Utils . save User Selected Tele com s ArrayList ( block Tele com s List , ĠP REF _ BLOCK _ TELE CO MS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġinitial Ġsettings Ġ- Ġsend Ġnotifications Ġis ĠON ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApplication Session . setUser Setting Notification ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġto Ġserver Ġfor Ġfetch Ġlist Ġof Ġtele com s . ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġrequest Ġto Ġserver , Ġwhen Ġreceive Ġupdate Ġregarding Ġlist Ġof Ġtele com s , Ġlist Ġof Ġtele com s Ġnull . ĊĠĠĠ Ġ**/ ĊĠĠĠ Ġfun Ġcheck Or Request Tele com s List ( context : ĠContext , Ġon Tele com s F etched : ĠOn Tele com s ChangeListener ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( My Debug . IS _ DEBUG ) ĠMy Debug . show Log ( TAG , Ġ" check Or Request Tele com s List ," + ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠlistOf Tele com s Ġ== Ġnull ? Ġ" Ġ+ Ġ( listOf Tele com s Ġ== Ġnull ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġcomposite Disposable . size () Ġ== Ġ 0 ? Ġ" Ġ+ Ġ( composite Disposable . size () Ġ== Ġ 0 ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ĠP REF _ IS _ UPDATE _ TELE CO MS =" Ġ+ ĠApplication Session . getUser Boolean ( PRE F _ IS _ UPDATE _ TELE CO MS ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ(( listOf Tele com s Ġ== Ġnull Ġ&& Ġcomposite Disposable . size () Ġ== Ġ 0 ) Ġ|| ĠApplication Session . getUser Boolean ( PRE F _ IS _ UPDATE _ TELE CO MS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapi Call For Tele com s List ( context , Ġon Tele com s F etched ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . on Tele com s Change Ġ= Ġon Tele com s F etched ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Tele com s Change ?. on Tele com s Change () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }