package Ġcom . bread wallet . tools . util Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . String Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . bread wallet . R Ċ import Ġcom . google . android . material . text field . TextInput Layout Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġjava . util .* ĊĊ Ċ /** ĠL it ew allet Ċ Ġ* ĠCreated Ġby ĠM oh amed ĠB arry Ġon Ġ 1 2 / 2 4 / 2 0 Ċ Ġ* Ġemail : Ġm os ad ial iou @ gmail . com Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 0 ĠLite coin ĠFoundation . ĠAll Ġrights Ġreserved . Ċ Ġ*/ ĊĊ Ċ /** Ċ Ġ* ĠExtension Ġto Ġcreate Ġand Ġexecute Ġan Ġasynchronous Ġtask Ċ Ġ* Ġas Ġwe Ġpreviously Ġdid Ġit Ġwith Ġthe Ġdeprecated Ġclass Ġ[ android . os . AsyncTask ] Ċ Ġ*/ Ċ fun Ġ< R > ĠCor outine Scope . execute AsyncTask ( ĊĠĠĠ Ġon Pre Execute : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġdo In Background : Ġ() Ġ-> ĠR , ĊĠĠĠ Ġon Post Execute : Ġ( R ) Ġ-> ĠUnit Ċ ) Ġ= Ġlaunch Ġ{ ĊĠĠĠ Ġon Pre Execute () Ġ// Ġruns Ġin ĠMain ĠThread ĊĠĠĠ Ġval Ġresult Ġ= Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdo In Background () Ġ// Ġruns Ġin Ġbackground Ġthread Ġwithout Ġblocking Ġthe ĠMain ĠThread ĊĠĠĠ Ġ} ĊĠĠĠ Ġon Post Execute ( result ) Ġ// Ġruns Ġin ĠMain ĠThread Ċ } Ċ Ċ /** Ċ Ġ* ĠInt Ġextension Ċ Ġ*/ Ċ Ċ fun ĠInt . no Error () Ġ= Ġthis Ġ== ĠInt . NO _ ERROR Ċ Ċ val ĠInt . Companion . NO _ ERROR : ĠInt ĊĠĠĠ Ġget () Ġ= Ġ 0 Ċ Ċ /** Ċ Ġ* ĠString Ġextension Ċ Ġ*/ Ċ fun ĠString . Companion . join ( array : ĠArray < String >, Ġseparator : ĠChar ?): ĠString Ġ{ ĊĠĠĠ Ġif Ġ( array . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠ Ġ} ĊĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġarray . size Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ( array [ i ]) ĊĠĠĠĠĠĠĠ ĠstringBuilder . append ( separator ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠstringBuilder . append ( array [ array . size Ġ- Ġ 1 ]) ĊĠĠĠ Ġreturn ĠstringBuilder . toString () Ċ } Ċ Ċ /** Ċ Ġ* ĠText Input Layout Ġextension Ċ Ġ*/ Ċ fun ĠText Input Layout . onError (@ String Res Ġerror : ĠInt ) Ġ{ ĊĠĠĠ Ġthis . error Ġ= Ġif Ġ( error . no Error ()) Ġnull Ġelse Ġresources . getString ( error ) Ċ } Ċ Ċ fun ĠText Input Layout . text (): ĠCharSequence Ġ= Ġthis . edit Text ?. text Ġ?: Ġ"" Ċ Ċ /** Ċ Ġ* ĠFragment Activity Ġextension Ċ Ġ*/ Ċ fun ĠFragment Activity . add Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container Ċ ) Ġ{ ĊĠĠĠ Ġadd Fragment ( this . support FragmentManager , Ġfragment , Ġnull , ĠaddTo Back Stack , Ġcontainer Id ) Ċ } Ċ Ċ fun ĠFragment Activity . replace Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container Ċ ) Ġ{ ĊĠĠĠ Ġreplace Fragment ( this . support FragmentManager , Ġfragment , Ġnull , ĠaddTo Back Stack , Ġcontainer Id ) Ċ } Ċ Ċ /** Ċ Ġ* ĠFragment Ġextension Ċ Ġ*/ Ċ fun ĠFragment . add Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container , ĊĠĠĠ Ġtransition : ĠInt ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġadd Fragment ( this . child FragmentManager , Ġfragment , Ġtransition , ĠaddTo Back Stack , Ġcontainer Id ) Ċ } Ċ Ċ fun ĠFragment . replace Child Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container , ĊĠĠĠ Ġtransition : ĠInt ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġreplace Fragment ( this . child FragmentManager , Ġfragment , Ġtransition , ĠaddTo Back Stack , Ġcontainer Id ) Ċ } Ċ Ċ fun ĠFragment . replace Fragment ( ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container , ĊĠĠĠ Ġtransition : ĠInt ? Ġ= Ġnull Ċ ) Ġ{ ĊĊĠĠĠ Ġreplace Fragment ( ĊĠĠĠĠĠĠĠ Ġthis . require FragmentManager (), ĊĠĠĠĠĠĠĠ Ġfragment , ĊĠĠĠĠĠĠĠ Ġtransition , ĊĠĠĠĠĠĠĠ ĠaddTo Back Stack , ĊĠĠĠĠĠĠĠ Ġcontainer Id ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġadd Fragment ( ĊĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġtransition : ĠInt ?, ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠ Ġtransition ?. let Ġ{ Ġtransaction . set Transition ( it ) Ġ} ĊĠĠĠ Ġtransaction . add ( container Id , Ġfragment ) ĊĠĠĠ Ġif Ġ( addTo Back Stack ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( fragment . tag ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtransaction . commit () Ċ } Ċ Ċ private Ġfun Ġreplace Fragment ( ĊĠĠĠ Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġtransition : ĠInt ?, ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġcontainer Id : ĠInt Ġ= ĠR . id . fragment _ container Ċ ) Ġ{ ĊĠĠĠ Ġval Ġtransaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠ Ġtransition ?. let Ġ{ Ġtransaction . set Transition ( it ) Ġ} ĊĠĠĠ Ġtransaction . replace ( container Id , Ġfragment ) ĊĠĠĠ Ġif Ġ( addTo Back Stack ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( fragment . tag ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtransaction . commit () Ċ } Ċ Ċ /** Ċ Ġ* ĠContext Ġextension Ċ Ġ*/ Ċ Ċ fun ĠFragment . getString ( locale : ĠLocale , Ġres Id : ĠInt ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) Ġ{ Ġ// Ġuse Ġlatest Ġapi ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= ĠConfiguration ( resources . configuration ) ĊĠĠĠĠĠĠĠ Ġconfig . set Locale ( locale ) ĊĠĠĠĠĠĠĠ Ġrequire Context (). create Configuration Context ( config ). getText ( res Id ). toString () ĊĠĠĠ Ġ} Ġelse Ġ{ Ġ// Ġsupport Ġolder Ġandroid Ġversions ĊĠĠĠĠĠĠĠ Ġval Ġconf : ĠConfiguration Ġ= Ġresources . configuration ĊĠĠĠĠĠĠĠ Ġval Ġsaved Locale : ĠLocale Ġ= Ġconf . locale ĊĠĠĠĠĠĠĠ Ġconf . locale Ġ= Ġlocale ĊĠĠĠĠĠĠĠ Ġresources . update Configuration ( conf , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġretrieve Ġresources Ġfrom Ġdesired Ġlocale ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresources . getString ( res Id ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġrestore Ġoriginal Ġlocale ĊĠĠĠĠĠĠĠ Ġconf . locale Ġ= Ġsaved Locale ĊĠĠĠĠĠĠĠ Ġresources . update Configuration ( conf , Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġresult ĊĠĠĠ Ġ} Ċ }