package Ġcom . my ether wallet . me w connect . feature . auth . utils Ċ Ċ import Ġandroid . os . Handler Ċ import Ġcom . my ether wallet . me w connect . core . persist . pref en re ces . Application Preferences Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠB Art Well Ġon Ġ 0 7 . 0 2 . 2 0 1 9 . Ċ Ġ*/ Ċ Ċ private Ġval ĠTIMER _ TIMEOUT Ġ= ĠTimeUnit . MIN UTES . to Millis ( 5 ) Ċ private Ġval ĠAT TEMP TS _ TIMEOUT Ġ= ĠTimeUnit . MIN UTES . to Millis ( 2 ) Ċ private Ġconst Ġval ĠAT TEMP TS _ LIMIT Ġ= Ġ 5 Ċ Ċ class ĠAuth Attempts Helper ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhandler : ĠHandler , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġpreferences : ĠApplication Preferences , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcallback : Ġ( minute : ĠInt , Ġsecond : ĠInt ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġis Res umed Ġ= Ġfalse ĊĊĠĠĠ Ġfun Ġcheck (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( preferences . get Auth First Attempt Time () Ġ+ ĠAT TEMP TS _ TIMEOUT Ġ> ĠgetCurrent Time ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( preferences . get Auth Attempts Count () Ġ+ Ġ 1 Ġ>= ĠAT TEMP TS _ LIMIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . set Auth Timer Time ( getCurrent Time ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Timer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . reset Auth Attempts Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences . set Auth First Attempt Time ( getCurrent Time ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpreferences . increment Auth Attempts Count () ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreset () Ġ{ ĊĠĠĠĠĠĠĠ Ġpreferences . reset Auth Attempts Count () ĊĠĠĠĠĠĠĠ Ġpreferences . set Auth First Attempt Time ( 0 L ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresume () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Res umed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Res umed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Timer () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpause () Ġ{ ĊĠĠĠĠĠĠĠ Ġis Res umed Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart Timer () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Res umed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( check Timer ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall Timer Callback () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Timer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ 1 0 0 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ( 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcall Timer Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ(( TIMER _ TIMEOUT Ġ- Ġ( getCurrent Time () Ġ- Ġpreferences . get Auth Timer Time ())) Ġ/ Ġ 1 0 0 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġminute Ġ= Ġleft Ġ/ Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġcallback ( minute , Ġleft Ġ- Ġ 6 0 Ġ* Ġminute ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Timer (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtime Ġ= Ġpreferences . get Auth Timer Time () ĊĠĠĠĠĠĠĠ Ġif Ġ( time Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtime Ġ+ ĠTIMER _ TIMEOUT Ġ> ĠgetCurrent Time () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetCurrent Time () Ġ= ĠSystem . currentTimeMillis () Ċ }