package Ġcom . sle ew ell . sle ew ell . mvp . menu . profile . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . ApiClient Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . I User Api Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . model . profile . Profile Info Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . model . profile . ResponseBody Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . model . profile . Response Success Ċ import Ġcom . sle ew ell . sle ew ell . database . analy se . night . entities . Night Ċ import Ġcom . sle ew ell . sle ew ell . modules . audio . audio Analy ser . data Manager . Audio Analy se Db Utils Ċ import Ġcom . sle ew ell . sle ew ell . modules . audio . audio Analy ser . data Manager . I Analy se DataManager Ċ import Ġcom . sle ew ell . sle ew ell . modules . audio . audio Analy ser . listeners . I Audio Analy se Record Listener Ċ import Ġcom . sle ew ell . sle ew ell . modules . audio . audio Analy ser . model . Analy se Value Ċ import Ġcom . sle ew ell . sle ew ell . mvp . main Activity . view . MainActivity Ċ import Ġcom . sle ew ell . sle ew ell . mvp . menu . profile . contract . Profile Contract Ċ import Ġokhttp 3 . MediaType . Companion . to MediaType OrNull Ċ import Ġokhttp 3 . Multipart Body Ċ import Ġokhttp 3 . RequestBody . Companion . as RequestBody Ċ import Ġokhttp 3 . RequestBody . Companion . to RequestBody Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġjava . io . File ĊĊ Ċ class ĠProfile Model ( context : ĠContext ) Ġ: ĠProfile Contract . Model , ĠI Audio Analy se Record Listener Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtag Ġ= Ġ" Profile Model M VP " ĊĠĠĠ Ġprivate Ġvar Ġapi : ĠI User Api ? Ġ= ĠApi Client . ret rofit . create ( I User Api :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġdata Manager : ĠI Analy se DataManager Ġ= ĠAudio Analy se Db Utils ( context , Ġthis ) ĊĊĠĠĠ Ġoverride Ġfun Ġget Profile Information ( token : ĠString , Ġon Profile Info Listener : ĠProfile Contract . Model . On Profile Info Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall : ĠCall < Profile Info >? Ġ= Ġapi ?. get Profile Information ( token ) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object Ġ: ĠCallback < Profile Info > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Profile Info >, Ġresponse : ĠResponse < Profile Info >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠProfile Info ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Profile Info Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Profile Info Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Profile Info >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġerror Ġhere Ġsince Ġrequest Ġfailed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Profile Info Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Profile Information ( token : ĠString , ĊĠĠĠĠĠĠĠ Ġusername : ĠString , ĠfirstName : ĠString , ĠlastName : ĠString , Ġemail : ĠString , ĊĠĠĠĠĠĠĠ Ġon Finished Listener : ĠProfile Contract . Model . On Update Profile Info Listener ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ: ĠCall < Response Success >? Ġ= Ġapi ?. update Profile Information ( token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername . to RequestBody (" text / plain ". to MediaType OrNull ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfirstName . to RequestBody (" text / plain ". to MediaType OrNull ()), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlastName . to RequestBody (" text / plain ". to MediaType OrNull ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail . to RequestBody (" text / plain ". to MediaType OrNull ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object Ġ: ĠCallback < Response Success > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Response Success >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Response Success > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠResponse Success ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Response Success >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġerror Ġhere Ġsince Ġrequest Ġfailed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Profile Picture ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġon Finished Listener : ĠProfile Contract . Model . On Finished Listener < ResponseBody > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġapi ?. get Profile Picture ( token ) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object : ĠCallback < ResponseBody > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < ResponseBody >, Ġresponse : ĠResponse < ResponseBody >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠResponse Body ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < ResponseBody >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġerror Ġhere Ġsince Ġrequest Ġfailed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupload Profile Picture ( token : ĠString , Ġpicture : ĠFile ): ĠResponse Success ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġfile Body Ġ= Ġpicture . as RequestBody (" image /* ". to MediaType OrNull ()) ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= ĠMultip art Body . Part . create FormData (" picture ", Ġpicture . name , Ġfile Body ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġapi ?. upload Profile Picture ( token , Ġbody ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Account ( ĊĠĠĠĠĠĠĠ Ġtoken : ĠString , ĊĠĠĠĠĠĠĠ Ġon Finished Listener : ĠProfile Contract . Model . On Finished Listener < Response Success > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ: ĠCall < Response Success >? Ġ= Ġapi ?. delete Account ( token ) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object Ġ: ĠCallback < Response Success > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġon Response ( call : ĠCall < Response Success >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Response Success >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠResponse Success ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Response Success >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLog Ġerror Ġhere Ġsince Ġrequest Ġfailed ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLogout Ġthe Ġuser Ġfrom Ġthe ĠAPI ĊĠĠĠĠ Ġ* Ġ@ author ĠH ugo ĠBer th om Ã© ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġremove Token () Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . accessToken S le ew ell Ġ= Ġ"" ĊĠĠĠĠĠĠĠ ĠMainActivity . get Access Google Account Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDelete Ġall Ġthe Ġdata Ġn ights Ġsaved Ġon Ġthe Ġphone ĊĠĠĠĠ Ġ* Ġ@ author ĠH ugo ĠBer th om Ã© ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdelete All Night Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Manager . get Available Analy se () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Analy se Record End () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUn used ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Read Analy se Record ( data : ĠArray < Analy se Value >, Ġnight Id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUn used ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Analy se Record Error ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠUn used ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFunction Ġcalled Ġwhen Ġreceived Ġthe Ġlist Ġof Ġavailable Ġanaly se ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġanaly ses ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon List Available Analy ses ( analy ses : ĠList < Night >) Ġ{ ĊĠĠĠĠĠĠĠ Ġanaly ses . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Manager . delete Analy se ( it . u Id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }