/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠC EX . âĢĭ IO ĠLtd Ġ( UK ) Ċ Ġ* Ċ Ġ* ĠĠĠ Ġ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 . c ex direct . lib Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent . FLAG _ ACTIVITY _ NEW _ TASK Ċ import Ġandroidx . annotation . Restrict To Ċ import Ġcom . c ex direct . lib . check . Check Activity Ċ import Ġcom . c ex direct . lib . di . Core Module Ċ import Ġcom . c ex direct . lib . di . D agger Direct Component Ċ import Ġcom . c ex direct . lib . di . Direct Component Ċ import Ġcom . c ex direct . lib . di . Identity Sub component Ċ import Ġcom . c ex direct . lib . network . models . Country Data Ċ import Ġcom . c ex direct . lib . network . models . Order Status Ċ import Ġcom . c ex direct . lib . network . models . Rule Data Ċ import Ġjava . util .* Ċ import Ġkotlin . collections . HashSet Ċ Ċ @ Suppress Lint (" Static Field Leak ") Ċ object ĠDirect Ġ{ ĊĊĠĠĠ Ġval Ġfingerprint Ġby Ġlazy Ġ{ ĠUUID . randomUUID (). toString () Ġ} ĊĊĠĠĠ Ġvar Ġcredentials : ĠCredentials Ġ= ĠCredentials ("", Ġ"") ĊĠĠĠ Ġvar Ġuser Email Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġpending OrderId Ġ= Ġ"" ĊĊĠĠĠ Ġvar Ġcountries : ĠList < Country Data > Ġ= Ġempty List () ĊĠĠĠ Ġval Ġrules Ġ= ĠHashSet < Rule Data >() ĊĊĠĠĠ Ġprivate Ġvar Ġorder Status Callback : ĠOrder Status Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġidentity Sub component : ĠIdentity Sub component ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġdirect Component . identity Sub component () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfield ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġsource Uri : ĠString ĊĠĠĠĠĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ġget ĊĠĠĠ Ġlateinit Ġvar Ġdirect Component : ĠDirect Component ĊĠĠĠĠĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) Ġget ĊĠĠĠ Ġlateinit Ġvar Ġcontext : ĠContext ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠpackageName : ĠString ĊĊĠĠĠ Ġfun Ġinit With ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠ Ġsource Uri Ġ= Ġ" android :// $ packageName " ĊĠĠĠĠĠĠĠ Ġdirect Component Ġ= ĠD agger Direct Component ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. core Module ( Core Module ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġupdate Rules ( new Rules : ĠCollection < Rule Data >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrules . clear () ĊĠĠĠĠĠĠĠ Ġrules . addAll ( new Rules ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġrelease Identity Sub component () Ġ{ ĊĠĠĠĠĠĠĠ Ġidentity Sub component Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġpending OrderId Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġuser Email Ġ= Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Order Status Callback ( callback : ĠOrder Status Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġorder Status Callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Restrict To ( Restrict To . Scope . LIBRARY _ GROUP ) ĊĠĠĠ Ġfun Ġnotify Order Status Changed ( order Status : ĠOrder Status , ĠorderId : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġorder Status Callback ?. on Order Status Changed ( order Status , ĠorderId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Direct () Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( credentials . placement Id . isNotBlank () Ġ&& Ġcredentials . secret . isNotBlank ()) ĊĠĠĠĠĠĠĠ ĠIntent ( context , ĠCheck Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġflags Ġ= ĠFLAG _ ACTIVITY _ NEW _ TASK Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ Ġcontext . startActivity ( it ) Ġ} ĊĠĠĠ Ġ} Ċ } Ċ