/* Ċ Ġ* ĠĠ ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠProject ĠCHIP ĠAuthors Ċ Ġ* ĠĠ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġcom . google . chip . ch ipt ool . setup payload scanner Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Base 6 4 Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . toolbox . JsonObject Request Ċ import Ġcom . android . vol ley . toolbox . Vol ley Ċ import Ġcom . google . chip . ch ipt ool . R Ċ import Ġcom . google . chip . ch ipt ool . util . Fragment Util Ċ import Ġcom . google . gson . Gson Ċ import Ġkotlinx . android . synt hetic . main . chip _ ledger _ info _ fragment . view . vendor Id Tv Ċ import Ġkotlinx . android . synt hetic . main . chip _ ledger _ info _ fragment . view . productId Tv Ċ import Ġkotlinx . android . synt hetic . main . chip _ ledger _ info _ fragment . view . commission ing Flow Url Tv Ċ import Ġkotlinx . android . synt hetic . main . chip _ ledger _ info _ fragment . view . redirect Btn Ċ Ċ /** ĠShow Ġthe Ġ[ CHIP DeviceInfo ] Ġfrom ĠLed ger Ġ*/ Ċ class ĠCHIP Ledger Details Fragment Ġ: ĠFragment () Ġ{ ĊĊĠ Ġprivate Ġlateinit Ġvar Ġdevice Info : ĠCHIP DeviceInfo ĊĊĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ): ĠView Ġ{ ĊĊĠĠĠ Ġdevice Info Ġ= ĠcheckNotNull ( require Arguments (). get Parcelable ( ARG _ DEVICE _ INFO )) ĊĠĠĠ Ġval Ġqueue Ġ= ĠVol ley . new Request Queue ( context ) ĊĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . chip _ ledger _ info _ fragment , Ġcontainer , Ġfalse ). apply Ġ{ ĊĊĠĠĠĠĠ Ġ// ĠV ID Ġ/ ĠPID ĊĠĠĠĠĠ Ġvendor Id Tv . text Ġ= Ġ"${ device Info . vendor Id }" ĊĠĠĠĠĠ ĠproductId Tv . text Ġ= Ġ"${ device Info . productId }" ĊĊĠĠĠĠĠ Ġ// ĠLed ger Ġapi Ġurl ĊĠĠĠĠĠ Ġval Ġurl Ġ= ĠUri . parse ( context . getString ( R . string . dcl _ api _ root _ url )) ĊĠĠĠĠĠĠĠ Ġ. build Up on () ĊĠĠĠĠĠĠĠ Ġ. append Path ("${ device Info . vendor Id }") ĊĠĠĠĠĠĠĠ Ġ. append Path ("${ device Info . productId }") ĊĠĠĠĠĠĠĠ Ġ. build (). toString () ĊĠĠĠĠĠ ĠLog . d ( TAG , Ġ" D cl Ġrequest ĠUrl : Ġ$ url ") ĊĊĠĠĠĠĠ Ġ// ĠLed ger ĠAPI Ġcall ĊĠĠĠĠĠ Ġval ĠjsonObject Request Ġ= ĠJsonObject Request ( ĊĠĠĠĠĠĠĠ ĠRequest . Method . GET , Ġurl , Ġnull , ĊĠĠĠĠĠĠĠ Ġ{ Ġresponse Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Response Ġfrom Ġd cl Ġ$ response ") ĊĊĠĠĠĠĠĠĠĠĠ Ġ// Ġparse Ġredirect ĠUrl ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Json Ġ= Ġresponse . getJSONObject ( context . getString ( R . string . dcl _ response _ key )) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġredirect Url Ġ= Ġresponse Json . getString ( context . getString ( R . string . dcl _ custom _ flow _ url _ key )) ĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Redirect ĠUrl Ġfrom ĠLed ger : Ġ$ redirect Url ") ĊĠĠĠĠĠĠĠĠĠ Ġcom mission ing Flow Url Tv . text Ġ= Ġredirect Url ĊĊĠĠĠĠĠĠĠĠĠ Ġ// Ġgenerate Ġredirect Ġpayload ĊĠĠĠĠĠĠĠĠĠ Ġval Ġgson Ġ= ĠGson () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġpayload Json Ġ= Ġgson . toJson ( device Info ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġpayload Base 6 4 Ġ= ĠBase 6 4 . encode ToString ( payload Json . toByteArray (), ĠBase 6 4 . DEFAULT ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġredirect Url With Payload = ĠUri . parse ( redirect Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build Up on () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append QueryParameter (" payload ", Ġpayload Base 6 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. append QueryParameter (" return Url ", Ġcontext . getString ( R . string . custom _ flow _ return _ url )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. toString () ĊĊĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Redirect ĠUrl Ġwith ĠPayload : Ġ$ redirect Url With Payload ") ĊĠĠĠĠĠĠĠĠĠ Ġredirect Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFragment Util . getHost ( this @ CHIP Ledger Details Fragment , ĠCallback :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . handle Custom Flow Redirect Clicked ( redirect Url With Payload ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġ// Ġenable Ġredirect Ġbutton ĊĠĠĠĠĠĠĠĠĠ Ġredirect Btn . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" D cl Ġrequest Ġfailed : Ġ$ error ") ĊĠĠĠĠĠĠĠĠĠ Ġcom mission ing Flow Url Tv . text Ġ= Ġcontext . getString ( R . string . chip _ ledger _ info _ commission ing _ flow _ url _ not _ available ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġqueue . add ( jsonObject Request ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĠInterface Ġfor Ġnotify ing Ġthe Ġhost . Ġ*/ ĊĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠ Ġ/** ĠNot ifies Ġlistener Ġof ĠCustom Ġflow Ġredirect Ġbutton Ġclick . Ġ*/ ĊĠĠĠ Ġfun Ġhandle Custom Flow Redirect Clicked ( redirect Url : ĠString ) ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" CUSTOM _ FLOW " ĊĠĠĠ Ġprivate Ġconst Ġval ĠARG _ DEVICE _ INFO Ġ= Ġ" device _ info " ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġnew Instance ( device Info : ĠCHIP DeviceInfo ): ĠCHIP Ledger Details Fragment Ġ{ ĊĠĠĠĠĠ Ġreturn ĠCHIP Ledger Details Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle ( 1 ). apply Ġ{ Ġput Parcelable ( ARG _ DEVICE _ INFO , Ġdevice Info ) Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ