package Ġcom . example . h obby fi . work Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . net . Uri Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . work . Coroutine Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġandroidx . work . work Data Of Ċ import Ġcom . example . h obby fi . Main Application Ċ import Ġcom . example . h obby fi . R Ċ import Ġcom . example . h obby fi . repositories . Chat room Repository Ċ import Ġcom . example . h obby fi . repositories . Event Repository Ċ import Ġcom . example . h obby fi . repositories . UserRepository Ċ import Ġcom . example . h obby fi . shared . Constants Ċ import Ġcom . example . h obby fi . utils . Image Utils Ċ import Ġcom . example . h obby fi . utils . Token Utils Ċ import Ġcom . example . h obby fi . utils . Worker Utils Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . with Context Ċ import Ġorg . green robot . event bus . EventBus Ċ import Ġorg . kode in . di . generic . instance Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . lang . IllegalArgumentException Ċ Ċ class ĠImage Upload Worker ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġworker Parameters : ĠWorker Parameters Ċ ) Ġ: ĠK ode in Coroutine Worker ( context , Ġworker Parameters ) Ġ{ ĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġdo Work (): ĠResult Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġauth Token Ġ= Ġinput Data . getString ( Constants . AUTH _ HEADER ) Ġ?: Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġval Ġmodel Id Ġ= Ġif ( input Data . getLong ( Constants . ID , Ġ- 1 L ) Ġ== Ġ- 1 L ) Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġinput Data . getLong ( Constants . ID , Ġ- 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġinput Data . getString ( Constants . TYPE ) Ġ?: Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġval Ġchat roomId Ġ= Ġif ( input Data . getLong ( Constants . CHAT ROOM _ ID , Ġ- 1 L ) Ġ== Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġtype Ġ== ĠConstants . EDIT _ EVENT _ TYPE ) Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġinput Data . getLong ( Constants . CHAT ROOM _ ID , Ġ- 1 L ) ĊĠĠĠĠĠĠĠ Ġval Ġimage Ġ= Ġinput Data . getString ( Constants . IMAGE ) Ġ?: Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġval Ġpref Id Ġ= Ġif ( input Data . getInt ( Constants . PRE F _ ID , Ġ- 1 ) Ġ== Ġ- 1 ) Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġinput Data . getInt ( Constants . PRE F _ ID , Ġ- 1 ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġh obby fi API . upload Image ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Utils . get Encoded Image From Uri ( context . content Resolver , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUri . parse ( image ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage Utils . Compress Type . PROFILE _ PI CTURE ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchat roomId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġyes , Ġthis Ġshouldn 't Ġbe Ġhere , Ġbut Ġwe Ġhave Ġcontext , Ġso Ġwhy Ġnot Ġab use Ġit ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠMain Application . application Context . resources . getString ( R . string . image _ upload _ success ), ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpref Config . write Last Pref Fetch Time Now ( pref Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Bus . getDefault (). post ( Worker Utils . Image Upload Event ( model Id , Ġtype , Ġresponse !!. response !! )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResult . success () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Device Token Worker ", Ġ" H obby fi Ġimage Ġupload Ġrequest Ġ=> >> ĠFAIL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠMain Application . application Context . resources . getString ( R . string . image _ upload _ fail ), ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif ( ex Ġ! is ĠIllegalArgumentException Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ex Ġis ĠHttp Exception Ġ&& Ġex . code () Ġ!= Ġ 4 0 6 Ġ&& Ġex . code () Ġ!= Ġ 4 0 0 )) ĠResult . retry () Ġelse ĠResult . failure () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠProgress Ġ= Ġ" Progress " ĊĠĠĠ Ġ} Ċ }