package Ġcom . mmc . smart key . network Ċ Ċ import Ġandroidx . lifecycle . live Data Ċ import Ġcom . mmc . smart key . App Ċ import Ġcom . mmc . smart key . network . model . Refresh Result Ċ import Ġcom . mmc . smart key . network . params . House ID Params Ċ import Ġcom . mmc . smart key . network . params . Key Params Ċ import Ġcom . mmc . smart key . network . params . QR Code Params Ċ import Ġkotlinx . coroutines .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . coroutines . Coroutine Context Ċ Ċ object ĠRepository Ġ{ ĊĠĠĠ Ġprivate Ġval Ġsimple DateFormat Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ", ĠLocale . CH INE SE ) ĊĠĠĠ Ġfun Ġget QR Code Params (): ĠQR Code Params Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Ġ= ĠCalendar . getInstance () ĊĠĠĠĠĠĠĠ Ġval ĠstartTime Ġ= Ġsimple DateFormat . format ( calendar . time ) ĊĠĠĠĠĠĠĠ Ġcalendar . add ( Calendar . MINUTE , Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġval ĠendTime Ġ= Ġsimple DateFormat . format ( calendar . time ) ĊĠĠĠĠĠĠĠ Ġreturn ĠQR Code Params ( App . userId , ĠstartTime , ĠendTime , Ġ" host Sn ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetKey Params (): ĠKey Params Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKey Params ( App . house Id , ĠApp . userId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġquick Open Door ( key Params : ĠKey Params ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġopen Door Response Ġ= ĠSmart Key Network . open Door ( key Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( open Door Response . status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( open Door Response . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ open Door Response . message } ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġopen Door ( key Params : ĠKey Params ) Ġ= Ġfire Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġopen Door Response Ġ= ĠSmart Key Network . open Door ( key Params ) ĊĠĠĠĠĠĠĠ Ġif Ġ( open Door Response . status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( open Door Response . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ open Door Response . message } ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake QR Code ( qr Code Params : ĠQR Code Params ) Ġ= Ġfire Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġqr Code Result Ġ= ĠSmart Key Network . make QR Code ( qr Code Params ) ĊĠĠĠĠĠĠĠ Ġif Ġ( qr Code Result . result Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( qr Code Result . data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ qr Code Result . message } ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetToken ( union Id : ĠString ) Ġ= Ġfire Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Result Ġ= ĠSmart Key Network . getToken ( union Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( token Result . status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( token Result . data ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ token Result . message } ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrefresh Token ( union Id : ĠString ) Ġ= Ġfire Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Result Ġ= ĠSmart Key Network . getToken ( union Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( token Result . status Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhouse Id Result Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSmart Key Network . get House ID ( House ID Params ( token Result . data . people Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( house Id Result . status Ġ== Ġ 1 Ġ&& Ġhouse Id Result . data Result . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRefresh Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhouse Id Result . data Result [ 0 ]. house Host Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Result . data . people Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtoken Result . data . token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhouse Id Result . data Result [ 0 ]. house Address ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ house Id Result . message } ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( RuntimeException (" response Ġmessage Ġis Ġ${ token Result . message } ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġfire ( block : Ġsuspend Ġ() Ġ-> ĠResult < T >) Ġ= ĊĠĠĠĠĠĠĠ Ġlive Data ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( result ) ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ }