package Ġcom . kin vey . books he lf . ui . activity Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Adapter View Ċ import Ġandroid . widget . Adapter View . On ItemClickListener Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . facebook . Callback Manager Ċ import Ġcom . facebook . Callback Manager . Factory Ċ import Ġcom . facebook . Facebook Callback Ċ import Ġcom . facebook . Facebook Exception Ċ import Ġcom . facebook . login . Login Manager Ċ import Ġcom . facebook . login . Login Result Ċ import Ġcom . kin vey . android . Client Ċ import Ġcom . kin vey . android . callback . Kin vey Purge Callback Ċ import Ġcom . kin vey . android . callback . Kin vey Read Callback Ċ import Ġcom . kin vey . android . model . User Ċ import Ġcom . kin vey . android . store . DataStore Ċ import Ġcom . kin vey . android . store . User Store Ċ import Ġcom . kin vey . android . sync . Kin vey Pull Callback Ċ import Ġcom . kin vey . android . sync . Kin vey Push Callback Ċ import Ġcom . kin vey . android . sync . Kin vey Push Response Ċ import Ġcom . kin vey . android . sync . Kin vey Sync Callback Ċ import Ġcom . kin vey . books he lf . App Ċ import Ġcom . kin vey . books he lf . ui . adapter . Books Adapter Ċ import Ġcom . kin vey . books he lf . Constants Ċ import Ġcom . kin vey . books he lf . R Ċ import Ġcom . kin vey . books he lf . entity . Author Ċ import Ġcom . kin vey . books he lf . entity . Book Ċ import Ġcom . kin vey . java . Abstract Client Ċ import Ġcom . kin vey . java . core . Kin vey Client Callback Ċ import Ġcom . kin vey . java . dto . Base User Ċ import Ġcom . kin vey . java . model . Kin vey Pull Response Ċ import Ġcom . kin vey . java . model . Kin vey Read Response Ċ import Ġcom . kin vey . java . store . Store Type Ċ import Ġkotlinx . android . synt hetic . main . activity _ shelf .* Ċ import Ġkotlinx . android . synt hetic . main . content _ shelf .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ class ĠShe lf Activity Ġ: ĠAppCompatActivity (), ĠOn ItemClickListener Ġ{ ĊĠĠĠ Ġprivate Ġval ĠSAVE _ BOOK S _ COUNT Ġ= Ġ 5 ĊĠĠĠ Ġprivate Ġvar Ġclient : ĠClient < User >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġadapter : ĠBooks Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbook Store : ĠData Store < Book >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġprogress Dialog : ĠProgress Dialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Callback Manager : ĠCallback Manager ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ shelf ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( my Toolbar ) ĊĠĠĠĠĠĠĠ Ġclient Ġ= Ġ( application Ġas ĠApp ). shared Client ĊĠĠĠĠĠĠĠ Ġbook Store Ġ= ĠData Store . collection ( Constants . COLLECTION _ NAME , ĠBook :: class . java , ĠStore Type . SYNC , Ġclient ) ĊĠĠĠĠĠĠĠ Ġm Callback Manager Ġ= ĠFactory . create () ĊĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). register Callback ( m Callback Manager , ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠFacebook Callback < Login Result ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( login Result : ĠLogin Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" Success ĠLogin ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkin vey Facebook Login ( login Result ?. accessToken ?. token Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , Ġ" Login ĠCancel ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠFacebook Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , Ġexception . message , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġif Ġ( client Ġ!= Ġnull Ġ&& Ġclient ?. is User LoggedIn Ġ== Ġtrue ) Ġ{ Ġdata Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġm Callback Manager ?. on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsync () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ sync )) ĊĠĠĠĠĠĠĠ Ġbook Store ?. sync ( object Ġ: ĠKin vey Sync Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( kin vey Push Response : ĠKin vey Push Response ?, Ġkin vey Pull Response : ĠKin vey Pull Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ sync _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pull Started () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Push Started () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pull Success ( kin vey Pull Response : ĠKin vey Pull Response ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Push Success ( kin vey Push Response : ĠKin vey Push Response ?) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( t : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ sync _ failed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdata : ĠUnit ĊĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Store ?. find ( object Ġ: ĠKin vey Read Callback < Book > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠKin vey Read Response < Book > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Book Adapter ( result ?. result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" List Callback : Ġsuccess ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" List Callback : Ġfailure ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Book Adapter ( list : ĠList < Book > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbooks Ġ= Ġlist Ġ?: ĠlistOf () ĊĠĠĠĠĠĠĠ Ġshe lf List ?. on ItemClickListener Ġ= Ġthis @ She lf Activity ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠBooks Adapter ( books , Ġthis @ She lf Activity ) ĊĠĠĠĠĠĠĠ Ġshe lf List ?. adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ shelf , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ new Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , ĠBook Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ save _ batch Ġ-> Ġsave Batch () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ sync Ġ-> Ġsync () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ pull Ġ-> Ġpull () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ push Ġ-> Ġpush () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ purge Ġ-> Ġpurge () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ login Ġ-> Ġlogin () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ facebook _ login Ġ-> Ġfacebook Login () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ logout Ġ-> Ġlogout () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpull () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ pull )) ĊĠĠĠĠĠĠĠ Ġbook Store ?. pull ( object Ġ: ĠKin vey Pull Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠKin vey Pull Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ pull _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ pull _ failed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpush () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ push )) ĊĠĠĠĠĠĠĠ Ġbook Store ?. push ( object Ġ: ĠKin vey Push Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠKin vey Push Response ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ push _ completed , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ push _ failed , ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Progress ( current : ĠLong , Ġall : ĠLong ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Batch () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġgenerate List ( SAVE _ BOOK S _ COUNT ) ĊĠĠĠĠĠĠĠ Ġbook Store ?. save ( list , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠKin vey Client Callback < List < Book >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠList < Book > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application , Ġresources . getString ( R . string . toast _ batch _ items _ created ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application , Ġresources . getString ( R . string . toast _ save _ failed ), ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate List ( count : ĠInt ): ĠList < Book > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbook : ĠBook ĊĠĠĠĠĠĠĠ Ġval Ġbooks List Ġ= Ġmutable ListOf < Book >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook Ġ= ĠBook () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook . name Ġ= Ġ" Book Ġv 5 Ġ#$ i " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbook . author Ġ= ĠAuthor (" Author Ġv 5 Ġ# {\ $ i }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbooks List . add ( book ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbooks List ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogin () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ login )) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Store . login ( Constants . USER _ NAME , ĠConstants . USER _ PASSWORD , Ġclient Ġas ĠClient < User >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠKin vey Client Callback < User > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// successfully Ġlogged Ġin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ sign _ in _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ can _ not _ login , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ un successful , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfacebook Login () Ġ{ ĊĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). log In With Read Permissions ( this , ĠlistOf (" public _ profile ", Ġ" user _ friends ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġkin vey Facebook Login ( accessToken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ login )) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Store . login Facebook < User >( accessToken , Ġclient Ġas ĠClient < User >, Ġobject Ġ: ĠKin vey Client Callback < User > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// successfully Ġlogged Ġin ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ sign _ in _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ can _ not _ login , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsign Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ un successful , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsign Up () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ sign _ up )) ĊĠĠĠĠĠĠĠ ĠUser Store . sign Up ( Constants . USER _ NAME , ĠConstants . USER _ PASSWORD , Ġclient Ġas ĠClient < User >, Ġobject Ġ: ĠKin vey Client Callback < User > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ sign _ up _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ can _ not _ sign _ up , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ logout )) ĊĠĠĠĠĠĠĠ ĠUser Store . logout ( client Ġas ĠAbstract Client < Base User >, Ġobject Ġ: ĠKin vey Client Callback < Void > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Book Adapter ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbook Store Ġ= ĠData Store . collection < Book , ĠClient < *> >( Constants . COLLECTION _ NAME , ĠBook :: class . java , ĠStore Type . SYNC , Ġclient ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ logout _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ logout _ failed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpurge () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Progress ( resources . getString ( R . string . progress _ purge )) ĊĠĠĠĠĠĠĠ Ġbook Store ?. purge ( object Ġ: ĠKin vey Purge Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ purge _ completed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Progress () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ She lf Activity , ĠR . string . toast _ purge _ failed , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( progress Dialog Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. setMessage ( message ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdismiss Progress () Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress Dialog ?. dismiss () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( parent : ĠAdapter View < *> ?, Ġview : ĠView , Ġposition : ĠInt , Ġid : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbook Ġ= Ġadapter ?. getItem ( position ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġi Ġ= ĠIntent ( this , ĠBook Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġi . putExtra ( Constants . EXTRA _ ID , Ġbook [ Constants . ID ]. toString ()) ĊĠĠĠĠĠĠĠ ĠstartActivity ( i ) ĊĠĠĠ Ġ} Ċ }