package Ġnl . ent re co . data . analytics Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġnl . ent re co . domain . Analytics Ċ import Ġnl . ent re co . domain . beta . Don ation Ċ import Ġnl . ent re co . domain . beta . Feature Ċ import Ġnl . ent re co . domain . w tf . W tf Item Ċ Ċ type alias ĠFa Ġ= Ġcom . google . firebase . analytics . Firebase Analytics Ċ type alias ĠFa Event Ġ= Ġcom . google . firebase . analytics . Firebase Analytics . Event Ċ type alias ĠFa Param Ġ= Ġcom . google . firebase . analytics . Firebase Analytics . Param Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEnt re co Ġon Ġ 1 5 / 1 1 / 2 0 1 7 . Ċ Ġ*/ Ċ class ĠFirebase Analytics ( context : ĠContext ) Ġ: ĠAnalytics Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfb Ġby Ġlazy Ġ{ ĠFa . getInstance ( context ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack Score ( s cored : ĠString , Ġtotal : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfb . log Event (" s cored ", Ġtrack Score Bundle ( s cored , Ġtotal )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġtrack Score Bundle ( s cored : ĠString , Ġtotal : ĠInt ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . SCORE , Ġs cored ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( Fa Param . VALUE , Ġtotal ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack Ach ievement ( ach ievement Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfb . log Event ( Fa Event . UNLOCK _ ACH IE VE MENT , Ġtrack Ach ievement Bundle ( ach ievement Id )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġtrack Ach ievement Bundle ( ach ievement Id : ĠString ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ACH IE VE MENT _ ID , Ġach ievement Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Fav Double Property ( fav our ite Double : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfb . setUser Property (" fav _ double ", Ġfavour ite Double ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack View Feature ( feature : ĠFeature , Ġamount : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfb . log Event ( Fa Event . ADD _ TO _ W ISH LIST , Ġtrack View Feature Bundle ( amount , Ġfeature )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġtrack View Feature Bundle ( amount : ĠInt , Ġfeature : ĠFeature ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ CATEGORY , Ġ" feature ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Int ( Fa Param . QU ANT ITY , Ġamount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ NAME , Ġfeature . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ ID , Ġfeature . ref ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack View F aq ( item : ĠW tf Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfb . log Event ( Fa Event . VIEW _ ITEM , Ġtrack View F aq Bundle ( item )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġtrack View F aq Bundle ( item : ĠW tf Item ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ ID , Ġitem . doc Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ NAME , Ġitem . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ CATEGORY , Ġ" faq ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack Purchase Start ( don ation : ĠDon ation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġe commerce Bundle Ġ= Ġto Bundle ( don ation ) ĊĠĠĠĠĠĠĠ Ġfb . log Event ( Fa Event . BEGIN _ CHECK OUT , Ġe commerce Bundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack Purchase ( don ation : ĠDon ation , ĠorderId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtrack Ach ievement (" Made ĠDon ation ") ĊĊĠĠĠĠĠĠĠ Ġval Ġe commerce Bundle Ġ= Ġto Bundle ( don ation ) ĊĠĠĠĠĠĠĠ Ġe commerce Bundle . putString ( Fa Param . TRANSACTION _ ID , ĠorderId ) ĊĠĠĠĠĠĠĠ Ġe commerce Bundle . putString ( Fa Param . AFF ILI ATION , Ġ" Ent re co Ġ- ĠDart s App ") ĊĠĠĠĠĠĠĠ Ġe commerce Bundle . put Double ( Fa Param . VALUE , Ġformat Micro s ( don ation . price Micro s , Ġdon ation . votes . to Long ())) ĊĠĠĠĠĠĠĠ Ġe commerce Bundle . putString ( Fa Param . CUR RE NCY , Ġdon ation . price Currency Code ) ĊĊĠĠĠĠĠĠĠ Ġfb . log Event ( Fa Event . PUR CH ASE , Ġe commerce Bundle ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtrack Purchase Failed ( productId : ĠString , Ġstep : ĠString ) Ġ{} ĊĊĠĠĠ Ġinternal Ġfun Ġtrack Purchase Failed Bundle ( step : ĠString , ĠproductId : ĠString ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ CATEGORY , Ġ" don ations ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ ID , ĠproductId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġto Bundle ( don ation : ĠDon ation ): ĠBundle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproduct Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ ID , Ġdon ation . sku ) Ġ// ĠITEM _ ID Ġor ĠITEM _ NAME Ġis Ġrequired ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ NAME , Ġdon ation . title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ CATEGORY , Ġ" Don ations ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ VARIANT , Ġdon ation . price ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . ITEM _ B RAND , Ġ" Ent re co ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Double ( Fa Param . PRICE , Ġformat Micro s ( don ation . price Micro s , Ġdon ation . votes . to Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( Fa Param . CUR RE NCY , Ġdon ation . price Currency Code ) Ġ// ĠItem - level Ġcurrency Ġunused Ġtoday ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Long ( Fa Param . QU ANT ITY , Ġdon ation . votes . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġarray ListOf ( product ) ĊĠĠĠĠĠĠĠ Ġval Ġe commerce Bundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġe commerce Bundle . put Parcelable ArrayList (" items ", Ġitems ) ĊĠĠĠĠĠĠĠ Ġreturn Ġe commerce Bundle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġformat Micro s ( price Micro s : ĠLong , Ġquantity : ĠLong ): ĠDouble Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprice Micro s . toDouble () Ġ/ Ġquantity Ġ/ Ġ 1 0 0 0 0 0 0 ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( invalid Format : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( division By Zero : ĠArithmetic Exception ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 . 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ