@ file : Suppress (" unused ") Ċ Ċ package Ġcom . sw ed bank pay . mobile sdk Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . webkit . WebView Client Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . sw ed bank pay . mobile sdk . internal . Internal Payment ViewModel Ċ Ċ /** Ċ Ġ* ĠConvenience Ġfor Ġ` ViewModel Provider ( activity ). get ( Payment ViewModel :: class . java )`. Ċ Ġ*/ Ċ val ĠFragment Activity . payment ViewModel Ġget () Ġ= ĠViewModel Provider ( this )[ Payment ViewModel :: class . java ] Ċ Ċ /** Ċ Ġ* Ġ< a Ġhref =" https :// developer . android . com / reference / android x / lifecycle / ViewModel " Ġtarget ="_ blank "> ViewModel </ a > Ċ Ġ* Ġfor Ġcommunic ating Ġwith Ġa Ġ[ Payment Fragment ]. Ċ Ġ* Ċ Ġ* ĠGet Ġa ĠPayment ViewModel Ġfrom Ġthe Ġcontaining ĠActivity Ġ( but Ġsee Ġnotes Ġat Ġ[ Payment Fragment ]) Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠViewModel Providers . of ( activity ). get ( Payment ViewModel :: class . java ) Ċ Ġ*/ Ċ class ĠPayment ViewModel Ġ: ĠAndroid ViewModel Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ suppress ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" Convert Secondary Constructor To Primary ", Ġ" unused ") ĊĠĠĠ Ġconstructor ( app : ĠApplication ) Ġ: Ġsuper ( app ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠState Ġof Ġa Ġpayment Ġprocess ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠState Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠNo Ġpayment Ġactive ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠID LE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` false ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġis Ġactive Ġand Ġis Ġwaiting Ġeither Ġfor Ġuser Ġinteraction Ġor Ġbackend Ġresponse ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠIN _ PROGRESS Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` false ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġorder Ġis Ġbeing Ġupdated Ġ( because Ġyou Ġcalled Ġ[ update Payment Order ]). ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠUP DAT ING _ PAYMENT _ ORDER Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` false ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġis Ġcomplete . ĠYou Ġshould Ġhide Ġthe Ġ[ Payment Fragment ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġstatus Ġdoes Ġnot Ġsignal Ġanything Ġof Ġwhether Ġthe Ġpayment Ġwas Ġsuccessful . ĊĠĠĠĠĠĠĠĠ Ġ* ĠYou Ġneed Ġto Ġcheck Ġthe Ġstatus Ġfrom Ġyour Ġservers . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠCOMP LETE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` true ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġwas Ġcanceled Ġby Ġthe Ġuser . ĠYou Ġshould Ġhide Ġthe Ġ[ Payment Fragment ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠC ANCE LED Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` true ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġis Ġactive , Ġbut Ġcould Ġnot Ġproceed . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠBy Ġdefault , Ġ[ Payment Fragment ] Ġshows Ġan Ġerror Ġmessage Ġwith Ġa ĠRetry Ġbutton ĊĠĠĠĠĠĠĠĠ Ġ* Ġwhen Ġin Ġthis Ġstate . ĠSee Ġ[ Payment Fragment . Arguments Builder . setEnabled Default UI ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠRET RY ABLE _ ERROR Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` false ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPayment Ġhas Ġfailed . ĠYou Ġshould Ġhide Ġthe Ġ[ Payment Fragment ] Ġand Ġshow ĊĠĠĠĠĠĠĠĠ Ġ* Ġa Ġfailure Ġmessage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠFAILURE Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġ` true ` Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Final Ġget () Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}; ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ` true ` Ġif Ġthis Ġis Ġa Ġfinal Ġstate Ġfor Ġ[ Payment Fragment ], Ġ` false ` Ġotherwise ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġabstract Ġval Ġis Final : ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠContains Ġthe Ġstate Ġof Ġthe Ġpayment Ġprocess Ġand Ġpossible Ġassociated Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠRich State Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġstate Ġof Ġthe Ġpayment Ġprocess . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġstate : ĠState , ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ RETRY ABLE _ ERROR ][ State . RETRY ABLE _ ERROR ], ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġproperty Ġcontains Ġan Ġerror Ġmessage Ġdescribing Ġthe Ġsituation . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġretry able ErrorMessage : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ RETRY ABLE _ ERROR ][ State . RETRY ABLE _ ERROR ], Ġor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ FAILURE ][ State . FAILURE ] Ġcaused Ġby Ġan Ġ[ Exception ], ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġproperty Ġcontains Ġthat Ġexception . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġexception Ġis Ġof Ġany Ġtype Ġthrown Ġby Ġyour Ġ[ Configuration ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠWhen Ġusing ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ com . sw ed bank pay . mobile sdk . merchant backend . Merchant Backend Configuration ], ĊĠĠĠĠĠĠĠĠ Ġ* Ġyou Ġshould Ġbe Ġprepared Ġfor Ġ[ java . io . IOException ] Ġin Ġgeneral , Ġand ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ com . sw ed bank pay . mobile sdk . merchant backend . Request Problem Exception ] Ġin Ġparticular . ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġ[ com . sw ed bank pay . mobile sdk . merchant backend . Merchant Backend Configuration ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġthrows Ġan Ġ[ IllegalStateException ], Ġit Ġmeans Ġyou Ġare Ġnot Ġusing Ġit Ġcorrectly ; ĊĠĠĠĠĠĠĠĠ Ġ* Ġplease Ġrefer Ġto Ġthe Ġexception Ġmessage Ġfor Ġadvice . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġexception : ĠException ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġan ĠonError ĊĠĠĠĠĠĠĠĠ Ġ* Ġcallback Ġfrom Ġthe ĠChe k out ĠAPI , Ġthis Ġproperty Ġcontains Ġan Ġobject Ġdescribing Ġthe Ġerror . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġterminal Failure : ĠTerminal Failure ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġa Ġfailing ĊĠĠĠĠĠĠĠĠ Ġ* Ġredirect , Ġthis Ġproperty Ġcontains Ġthe Ġredirect Ġ[ Uri ] Ġthat Ġfailed Ġto Ġload . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġfailing Uri : ĠUri ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġa Ġfailing ĊĠĠĠĠĠĠĠĠ Ġ* Ġredirect , Ġthe Ġerror Ġcode Ġdescribing Ġthe Ġfailure . ĠThe Ġvalue Ġis Ġone Ġof Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ WebView Client ] ĠERROR _* Ġconstants . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġredirect ErrorCode : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġa Ġfailing ĊĠĠĠĠĠĠĠĠ Ġ* Ġredirect , Ġa Ġtext ual Ġdescription Ġof Ġthe Ġfailure . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġredirect Error Description : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġan Ġerror ĊĠĠĠĠĠĠĠĠ Ġ* Ġhttp Ġresponse Ġto Ġa Ġredirect , Ġthe Ġstatus Ġcode Ġof Ġthat Ġresponse . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġredirect Http Error Status : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ FAILURE ][ State . FAILURE ], Ġand Ġit Ġwas Ġcaused Ġby Ġan Ġerror ĊĠĠĠĠĠĠĠĠ Ġ* Ġhttp Ġresponse Ġto Ġa Ġredirect , Ġthe Ġreason Ġphrase Ġof Ġthat Ġresp one . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġredirect Http Error Reason : ĠString ?, ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ IN _ PROGRESS ][ State . IN _ PROGRESS ] Ġor ĊĠĠĠĠĠĠĠĠ Ġ* Ġ[ UP DAT ING _ PAYMENT _ ORDER ][ State . UP DAT ING _ PAYMENT _ ORDER ], Ġthe Ġ[ View Payment Order Info ] ĊĠĠĠĠĠĠĠĠ Ġ* Ġobject Ġdescribing Ġthe Ġcurrent Ġpayment Ġorder . ĠIf Ġthe Ġstate Ġis Ġ` UP DAT ING _ PAYMENT _ ORDER `, ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġis Ġthe Ġlast - known Ġ` View Payment Order Info `. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġview Payment Order Info : ĠView Payment Order Info ?, ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ IN _ PROGRESS ][ State . IN _ PROGRESS ], Ġand Ġan Ġattempt Ġto Ġupdate Ġthe ĊĠĠĠĠĠĠĠĠ Ġ* Ġpayment Ġorder Ġfailed , Ġthe Ġcause Ġof Ġthe Ġfailure . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġexception Ġis Ġof Ġany Ġtype Ġthrown Ġby Ġyour Ġ[ Configuration ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Exception : ĠException ? ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInterface Ġyou Ġcan Ġimplement Ġto Ġbe Ġnotified Ġwhen Ġthe Ġuser Ġclicks Ġon ĊĠĠĠĠ Ġ* Ġthe ĠTerms Ġof ĠService Ġlink Ġin Ġthe ĠPayment ĠMenu , Ġand Ġoptionally Ġoverride ĊĠĠĠĠ Ġ* Ġthe Ġbehaviour . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinterface ĠOn Terms Of Service ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġuser Ġclicks Ġon Ġthe ĠTerms Ġof ĠService Ġlink Ġin Ġthe ĠPayment ĠMenu . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpayment ViewModel Ġthe Ġ[ Payment ViewModel ] Ġof Ġthe Ġ[ Payment Fragment ] Ġthe Ġuser Ġis Ġinteracting Ġwith ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġurl Ġthe ĠTerms Ġof ĠService Ġurl ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġyou Ġhandled Ġthe Ġevent Ġyourself Ġand Ġwish Ġto Ġdisable Ġthe Ġdefault Ġbehaviour , Ġ` false ` Ġif Ġyou Ġwant Ġto Ġlet Ġthe ĠSDK Ġshow Ġthe ĠTo S Ġweb Ġpage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġon Terms Of Service Click ( payment ViewModel : ĠPayment ViewModel , Ġurl : ĠString ): ĠBoolean ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġinternal Vm Ġ= ĠMutable LiveData < Internal Payment ViewModel ?> () ĊĊĠĠĠ Ġprivate Ġval Ġinternal State Ġ= ĠTransform ations . switch Map ( internal Vm ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit ?. ui State ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġon Retry Previous Action Ġ= ĠMutable LiveData < Unit >() ĊĊĠĠĠ Ġinternal Ġfun Ġattach Internal ViewModel ( internal Vm : ĠInternal Payment ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . internal Vm . value Ġ= Ġinternal Vm ĊĠĠĠ Ġ} ĊĠĠĠ Ġinternal Ġfun Ġdetach Internal ViewModel ( internal Vm : ĠInternal Payment ViewModel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . internal Vm . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġinternal Vm ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Cle ared () ĊĠĠĠĠĠĠĠ Ġinternal Vm . value Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Owner Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrent Ġstate Ġand Ġassociated Ġdata Ġof Ġthe Ġ[ Payment Fragment ] Ġcorresponding Ġto Ġthis Ġ[ Payment ViewModel ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġconvenience , Ġthis Ġproperty Ġwill Ġretain Ġthe Ġlast - known Ġstate Ġof Ġa ĠPayment Fragment ĊĠĠĠĠ Ġ* Ġafter Ġit Ġhas Ġbeen Ġremoved . ĠWhen Ġa Ġnew ĠPayment Fragment Ġis Ġadded Ġto Ġthe Ġsame ĠActivity , ĊĠĠĠĠ Ġ* Ġthis Ġproperty Ġwill Ġreflect Ġthat ĠPayment Fragment Ġfrom Ġthere Ġon . ĠTo Ġsupport Ġmultiple ĊĠĠĠĠ Ġ* ĠPayment Fragments Ġin Ġan ĠActivity , Ġsee Ġ[ Payment Fragment . Arguments Builder . viewModel Provider Key ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDue Ġto Ġthe Ġsemantics Ġof Ġ[ Transform ations ], Ġyou Ġshould Ġbe Ġcareful Ġif Ġaccessing ĊĠĠĠĠ Ġ* Ġthis Ġvalue Ġusing Ġ[ LiveData . getValue ] Ġdirectly Ġrather Ġthan Ġby Ġan Ġ[ Observer ]. ĊĠĠĠĠ Ġ* ĠSpecific ally , Ġif Ġnothing Ġis Ġob serving Ġthis Ġproperty Ġ( possibly Ġindirect ly , Ġsuch Ġas Ġthrough ĊĠĠĠĠ Ġ* Ġthe Ġ[ state ] Ġproperty ), Ġthen Ġthe Ġvalue Ġwill Ġnot Ġbe Ġupdated , Ġand Ġthe Ġstate Ġmay Ġbe Ġper manently ĊĠĠĠĠ Ġ* Ġlost Ġif Ġthe ĠPayment Fragment Ġis Ġremoved Ġbefore Ġadding Ġan Ġobserver Ġto Ġthis Ġproperty . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġrich State Ġ= ĠTransform ations . map ( internal State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠState . IDLE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Payment ViewModel . UIState . Loading Ġ-> ĠState . IN _ PROGRESS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . View Consumer Identification Ġ-> ĠState . IN _ PROGRESS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . View Payment Order Ġ-> ĠState . IN _ PROGRESS ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Updating Payment Order Ġ-> ĠState . UP DAT ING _ PAYMENT _ ORDER ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Initialization Error Ġ-> ĠState . FAILURE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Retry able Error Ġ-> ĠState . RETRY ABLE _ ERROR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Payment ViewModel . UIState . Complete Ġ-> ĠState . COMPLETE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInternal Payment ViewModel . UIState . Canceled Ġ-> ĠState . C ANCE LED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Failure Ġ-> ĠState . FAILURE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretry able ErrorMessage Ġ= Ġ( it Ġas ? ĠInternal Payment ViewModel . UIState . Retry able Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take Unless Ġ{ Ġit Ġ== Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let ( getApplication < Application >() :: getString ) ĊĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Initialization Error Ġ-> Ġit . exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInternal Payment ViewModel . UIState . Retry able Error Ġ-> Ġit . exception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfailure Reason Ġ= Ġ( it Ġas ? ĠInternal Payment ViewModel . UIState . Failure )?. failure Reason ĊĠĠĠĠĠĠĠ Ġval Ġsw ed bank Pay Error Ġ= Ġfailure Reason Ġas ? ĠInternal Payment ViewModel . Failure Reason . Sw ed bank Pay Error ĊĠĠĠĠĠĠĠ Ġval Ġredirect Error Ġ= Ġfailure Reason Ġas ? ĠInternal Payment ViewModel . Failure Reason . Redirect Error ĊĠĠĠĠĠĠĠ Ġval Ġredirect Http Error Ġ= Ġfailure Reason Ġas ? ĠInternal Payment ViewModel . Failure Reason . Redirect Http Error ĊĊĠĠĠĠĠĠĠ Ġval Ġpayment Order State Ġ= Ġit Ġas ? ĠInternal Payment ViewModel . UIState . View Payment Order ĊĊĠĠĠĠĠĠĠ ĠRich State ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate Ġ= Ġstate , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry able ErrorMessage Ġ= Ġretry able ErrorMessage , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception Ġ= Ġexception , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġterminal Failure Ġ= Ġsw ed bank Pay Error ?. terminal Failure , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfailing Uri Ġ= Ġredirect Error ?. uri Ġ?: Ġredirect Http Error ?. uri , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredirect ErrorCode Ġ= Ġredirect Error ?. errorCode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Error Description Ġ= Ġredirect Error ?. description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Http Error Status Ġ= Ġredirect Http Error ?. statusCode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredirect Http Error Reason Ġ= Ġredirect Http Error ?. reason Phrase , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Payment Order Info Ġ= Ġpayment Order State ?. view Payment Order Info , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Exception Ġ= Ġpayment Order State ?. update Exception , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrent Ġstate Ġof Ġthe Ġ[ Payment Fragment ] Ġcorresponding Ġto Ġthis Ġ[ Payment ViewModel ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġnotes Ġat Ġ[ rich State ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġstate Ġ= ĠTransform ations . map ( rich State ) Ġ{ Ġit . state Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ` true ` Ġif Ġthe Ġpayment Ġmenu Ġis Ġcurrently Ġshown Ġin Ġthe Ġ[ Payment Fragment ], ĊĠĠĠĠ Ġ* Ġ` false ` Ġotherwise . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġuse Ġthis Ġproperty Ġto Ġcontrol Ġthe Ġvisibility Ġof Ġa Ġcustomized Ġinstrument Ġcho oser . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġshowing Payment Menu Ġ= ĠTransform ations . switch Map ( internal Vm ) Ġ{ Ġit ?. show ing Payment Menu Ġ} ĊĊĠĠĠ Ġinternal Ġvar Ġon Terms Of Service ClickListener : ĠOn Terms Of Service ClickListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġon Terms Of Service ClickListener Owner : ĠLifecycle Owner ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield ?. lifecycle ?. remove Observer ( on Terms Of Service ClickListener Lifecycle Observer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ?. lifecycle ?. add Observer ( on Terms Of Service ClickListener Lifecycle Observer ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġon Terms Of Service ClickListener Lifecycle Observer Ġ= ĊĠĠĠĠĠĠĠ ĠLifecycle Event Observer Ġ{ Ġsource , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source . lifecycle . currentState Ġ== ĠLifecycle . State . DESTROY ED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Owner Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġan ĠOn Terms Of Service ClickListener Ġto Ġbe Ġnotified Ġwhen Ġthe Ġuser Ġclicks Ġon Ġthe ĠTerms Ġof ĠService Ġlink ĊĠĠĠĠ Ġ* Ġin Ġthe ĠPayment ĠMenu . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOptionally , Ġyou Ġmay Ġprovide Ġa Ġ[ Lifecycle Owner ] Ġthat Ġthis Ġlistener Ġis Ġbound Ġto . ĊĠĠĠĠ Ġ* ĠIt Ġwill Ġthen Ġbe Ġautomatically Ġremoved Ġwhen Ġthe ĠLifecycle Owner Ġis Ġdestroyed . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġdo Ġnot Ġprovide Ġa ĠLifecycle Owner , Ġbe Ġcareful Ġnot Ġto Ġleak Ġexpensive Ġobjects Ġhere . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlifecycle Owner : Ġthe ĠLifecycle Owner Ġto Ġbind Ġthe Ġlistener Ġto , Ġor Ġ` null ` Ġto Ġkeep Ġthe Ġlistener Ġuntil Ġthe Ġnext Ġcall Ġto Ġthis Ġmethod ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener Ġthe ĠOn Terms Of Service ClickListener Ġto Ġset , Ġor Ġ` null ` Ġto Ġremove Ġthe Ġlistener ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset On Terms Of Service ClickListener ( ĊĠĠĠĠĠĠĠ Ġlifecycle Owner : ĠLifecycle Owner ?, ĊĠĠĠĠĠĠĠ Ġlistener : ĠOn Terms Of Service ClickListener ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Ġ= Ġlistener ĊĠĠĠĠĠĠĠ Ġon Terms Of Service ClickListener Owner Ġ= Ġwhen Ġ( listener ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġlifecycle Owner ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġcurrent Ġstate Ġis Ġ[ RETRY ABLE _ ERROR ][ State . RETRY ABLE _ ERROR ], Ġattempts Ġthe Ġprevious ĊĠĠĠĠ Ġ* Ġaction Ġagain . ĠThis Ġcall Ġtransitions Ġthe Ġstate Ġto Ġ[ IN _ PROGRESS ][ State . IN _ PROGRESS ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġretry Previous Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠPayment Fragment Ġob serves Ġon Retry Previous Action . ĊĠĠĠĠĠĠĠ Ġ// ĠSetting Ġa Ġnew Ġvalue Ġnot ifies Ġthe Ġobserver , Ġbut Ġalso Ġcauses ĊĠĠĠĠĠĠĠ Ġ// Ġany Ġfuture Ġobserver Ġadded Ġto Ġimmediately Ġreceive Ġa Ġcallback . ĊĠĠĠĠĠĠĠ Ġ// ĠTo Ġhave Ġretry Previous Action Ġonly Ġcause Ġa Ġsingle Ġretry Ġattempt , ĊĠĠĠĠĠĠĠ Ġ// Ġwe Ġnull ify Ġthe Ġvalue Ġimmediately Ġhere , Ġand Ġcheck Ġfor Ġnull Ġin Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġobserver , Ġignoring Ġthe Ġqu ies cent Ġnull Ġstate . ĊĠĠĠĠĠĠĠ Ġon Retry Previous Action . value Ġ= ĠUnit ĊĠĠĠĠĠĠĠ Ġon Retry Previous Action . value Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAt tempts Ġto Ġupdate Ġthe Ġongoing Ġpayment Ġorder . ĊĠĠĠĠ Ġ* ĠThe Ġmeaning Ġof Ġ` update Info ` Ġis Ġup Ġto Ġyour Ġ Ġ[ Configuration . update Payment Order ] ĊĠĠĠĠ Ġ* Ġimplementation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġare Ġusing ĊĠĠĠĠ Ġ* Ġ[ com . sw ed bank pay . mobile sdk . merchant backend . Merchant Backend Configuration ], ĊĠĠĠĠ Ġ* Ġand Ġthe Ġpayment Ġorder Ġis Ġin Ġinstrument Ġmode , Ġyou Ġcan Ġset Ġthe Ġinstrument ĊĠĠĠĠ Ġ* Ġby Ġcalling Ġthis Ġwith Ġa Ġ` String ` Ġargument Ġspecifying Ġthe Ġnew Ġinstrument ; ĊĠĠĠĠ Ġ* Ġsee Ġ[ Payment Instrument s ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġupdate Info Ġany Ġdata Ġyou Ġneed Ġto Ġperform Ġthe Ġupdate . ĠThe Ġvalue Ġmust Ġbe Ġone Ġthat Ġis Ġvalid Ġfor Ġ[ Parcel . writeValue ], Ġe . g . Ġ[ String ] Ġor Ġ[ Parcelable ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Payment Order ( update Info : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Vm . value ?. update Payment Order ( update Info ) ĊĠĠĠ Ġ} Ċ }