package Ġcom . put r ash . common Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . System Clock Ċ import Ġandroid . text . style . Locale Span Ċ import Ġandroid . view . View Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġcom . put r ash . data . response . Error Data Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġjava . text . NumberFormat ; Ċ import Ġjava . text . Decimal Format Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ Ċ fun ĠInt . to Dp (): ĠInt Ġ= Ġ( this Ġ/ ĠResources . getSystem (). display Metrics . density ). toInt () Ċ Ċ fun ĠInt . to Px (): ĠInt Ġ= Ġ( this Ġ* ĠResources . getSystem (). display Metrics . density ). toInt () Ċ Ċ fun ĠString . capitalize (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . replace First Char Ġ{ Ġit . uppercase () Ġ} Ċ } Ċ Ċ fun ĠString . parse Currency (): ĠDouble Ġ{ ĊĠĠĠ Ġval Ġcurrency Value Ġ= Ġthis . replace ( Regex ("[ SG D Ġ, .] "), Ġ"") ĊĠĠĠ Ġval Ġresult Ġ= Ġcurrency Value . if Empty Ġ{ Ġ" 0 " Ġ} ĊĠĠĠ Ġreturn Ġ( result . toDouble () Ġ/ Ġ 1 0 0 ) Ċ } Ċ Ċ fun ĠDouble . to Dollar (): ĠString Ġ{ ĊĠĠĠ Ġval Ġformatter Ġ= ĠDecimal Format ("# , ## 0 . 0 0 ") ĊĠĠĠ Ġreturn Ġ" SG D Ġ${ formatter . format (( this )) }" Ċ } Ċ Ċ fun ĠDate . format Date (): ĠString Ġ{ ĊĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat ( Constants . DATE , ĠLocale . getDefault ()) ĊĠĠĠ Ġreturn Ġformatter . format ( this ) Ċ } Ċ Ċ fun ĠDate . format Time (): ĠString Ġ{ ĊĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat ( Constants . TIME , ĠLocale . getDefault ()) ĊĠĠĠ Ġreturn Ġformatter . format ( this ) Ċ } Ċ Ċ fun ĠString . parse Date (): ĠDate Ġ{ ĊĠĠĠ Ġval Ġformatter Ġ= ĠSimpleDateFormat ( Constants . DATE _ FORMAT , ĠLocale . getDefault ()) ĊĠĠĠ Ġreturn Ġformatter . parse ( this ) Ġ?: ĠDate () Ċ } Ċ Ċ fun ĠView . set Safe ClickListener ( throttle : ĠLong Ġ= Ġ 6 0 0 L , Ġaction : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . setOnClickListener ( object Ġ: ĠView . OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlast Click Time : ĠLong Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( System Clock . elapsed Realtime () Ġ- Ġlast Click Time Ġ< Ġthrottle ) Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġaction () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Click Time Ġ= ĠSystem Clock . elapsed Realtime () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠString . toObject (): ĠT Ġ{ ĊĠĠĠ Ġreturn ĠGson (). fromJson ( this , Ġobject : ĠType Token < T >() Ġ{} . type ) Ċ } Ċ Ċ fun ĠResponse Body ?. handleError (): ĠString Ġ{ ĊĠĠĠ Ġval Ġdata Ġ= ĠGson (). fromJson ( this ?. string (), ĠError Data :: class . java ) ĊĠĠĠ Ġreturn Ġdata . error Ċ }