package Ġcom . hack athon . just al ine Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . core . net . to Uri Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġcom . hack athon . MainActivity Ċ import Ġcom . hack athon . R Ċ import Ġcom . hack athon . data . model . Create Post Request Ċ import Ġcom . hack athon . data . model . Post Ċ import Ġcom . hack athon . di . module . Schedulers Module Ċ import Ġcom . hack athon . domain . auth . Post Task Ċ import Ġio . reactivex . dis pos ables . Composite Disposable Ċ import Ġorg . k oin . standalone . K oin Component Ċ import Ġorg . k oin . standalone . inject Ċ import Ġjava . io . ByteArray OutputStream Ċ import Ġjava . io . File Ċ import Ġjava . util .* Ċ Ċ class ĠU plo ader Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġval Ġpost Task : ĠPost Task Ġby Ġinject () ĊĠĠĠ Ġval Ġs chedulers Module : ĠS chedulers Module Ġby Ġinject () ĊĠĠĠ Ġval Ġstorage Ġ= ĠFirebase Storage . getInstance () ĊĊĠĠĠ Ġfun Ġupload ( context : ĠContext , Ġbitmap : ĠBitmap ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġstorage Ġreference Ġfrom Ġour Ġapp ĊĠĠĠĠĠĠĠ Ġval Ġstorage Ref Ġ= Ġstorage . reference Ċ Ċ // ĠCreate Ġa Ġreference Ġto Ġ" mount ains . jpg " ĊĠĠĠĠĠĠĠ Ġval Ġmount ains Ref Ġ= Ġstorage Ref . child ( Date (). time . toString () Ġ+ Ġ". jpg ") ĊĊĠĠĠĠĠĠĠ Ġval Ġba os Ġ= ĠByteArrayOutputStream () ĊĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . JPEG , Ġ 1 0 0 , Ġba os ) ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġba os . toByteArray () ĊĊĠĠĠĠĠĠĠ Ġval Ġupload Task Ġ= Ġmount ains Ref . put Bytes ( data ) ĊĠĠĠĠĠĠĠ Ġupload Task . add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . error Occurred , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ}. add On Success Listener Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmount ains Ref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComposite Disposable (). add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Task . create Post ( Create Post Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 4 1 . 0 7 9 7 6 7 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 2 9 . 0 0 6 4 7 7 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Ġ= Ġit . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ" Le vent , ĠI stan bul ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ )). subscribe On ( schedul ers Module . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( schedul ers Module . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . error Occurred , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupload ( context : ĠContext , Ġfile : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġstorage Ġreference Ġfrom Ġour Ġapp ĊĠĠĠĠĠĠĠ Ġval Ġstorage Ref Ġ= Ġstorage . reference Ċ Ċ // ĠCreate Ġa Ġreference Ġto Ġ" mount ains . jpg " ĊĠĠĠĠĠĠĠ Ġval Ġmount ains Ref Ġ= Ġstorage Ref . child ( Date (). time . toString () Ġ+ Ġ". mp 4 ") ĊĊĠĠĠĠĠĠĠ Ġval Ġupload Task Ġ= Ġmount ains Ref . put File ( file . to Uri ()) ĊĠĠĠĠĠĠĠ Ġupload Task . add On Failure Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . error Occurred , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ}. add On Success Listener Ġ{ Ġa Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmount ains Ref . download Url . add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Success ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠComposite Disposable (). add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Task . create Post ( Create Post Request ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlatitude Ġ= Ġ 4 1 . 0 7 9 7 6 7 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlongitude Ġ= Ġ 2 9 . 0 0 6 4 7 7 7 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Ġ= Ġit . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlocation Ġ= Ġ" Le vent , ĠI stan bul ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ )). subscribe On ( schedul ers Module . io ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( schedul ers Module . ui ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Success 2 ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMainActivity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , ĠR . string . error Occurred , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }