package Ġcom . ah med ab del me ged . database Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . ah med ab del me ged . database . model . Post Ċ import Ġcom . ah med ab del me ged . database . model . User Ċ import Ġcom . google . firebase . database .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ new _ post .* Ċ import Ġjava . util . HashMap Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠAh med ĠA bd - El me ged Ġon Ġ 3 / 1 8 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠNew Post Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" New Post Activity " ĊĠĠĠ Ġprivate Ġval ĠREQUIRED Ġ= Ġ" Required " ĊĊĠĠĠ Ġ// Ġ[ START Ġdeclare _ database _ ref ] ĊĠĠĠ Ġprivate Ġval Ġm Database : ĠDatabase Reference Ġby Ġlazy Ġ{ ĠFirebase Database . getInstance (). reference Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġdeclare _ database _ ref ] ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ new _ post ) ĊĠĠĠĠĠĠĠ Ġfab _ submit _ post . setOnClickListener Ġ{ Ġsubmit Post () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubmit Post () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtitle Ġ= Ġfield _ title . text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġfield _ body . text . toString () ĊĊĠĠĠĠĠĠĠ Ġ// ĠTitle Ġis Ġrequired ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( title )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield _ title . error Ġ= ĠREQUIRED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠBody Ġis Ġrequired ĊĠĠĠĠĠĠĠ Ġif Ġ( TextUtils . isEmpty ( body )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield _ body . error Ġ= ĠREQUIRED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠDisable Ġbutton Ġso Ġthere Ġare Ġno Ġmulti - posts ĊĠĠĠĠĠĠĠ Ġset Editing Enabled ( false ) ĊĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Post ing ...", ĠToast . LENGTH _ SHORT ). show () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ[ START Ġsingle _ value _ read ] ĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġuid ĊĠĠĠĠĠĠĠ Ġm Database . child (" users "). child ( userId ). addListener For Single Value Event ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġuser Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdata Snapshot . getValue < User >( User :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ START _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUser Ġis Ġnull , Ġerror Ġout ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" User Ġ$ userId Ġis Ġunexpected ly Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ New Post Activity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Error : Ġcould Ġnot Ġfetch Ġuser .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWrite Ġnew Ġpost ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite New Post ( userId , Ġuser . username , Ġtitle , Ġbody ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFinish Ġthis ĠActivity , Ġback Ġto Ġthe Ġstream ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Editing Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ END _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" getUser : on Cancelled ", Ġdatabase Error . to Exception ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ START _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Editing Enabled ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ[ END _ EXCL UDE ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ[ END Ġsingle _ value _ read ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Editing Enabled ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfield _ title . isEnabled Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġfield _ body . isEnabled Ġ= Ġenabled ĊĠĠĠĠĠĠĠ Ġfab _ submit _ post . visibility Ġ= Ġif Ġ( enabled ) ĠView . VISIBLE Ġelse ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ[ START Ġwrite _ fan _ out ] ĊĠĠĠ Ġprivate Ġfun Ġwrite New Post ( userId : ĠString , Ġusername : ĠString , Ġtitle : ĠString , Ġbody : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġnew Ġpost Ġat Ġ/ user - posts /$ userid /$ post id Ġand Ġat ĊĠĠĠĠĠĠĠ Ġ// Ġ/ posts /$ post id Ġsimultaneously ĊĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġm Database . child (" posts "). push (). key ĊĠĠĠĠĠĠĠ Ġval Ġpost Ġ= ĠPost ( userId , Ġusername , Ġtitle , Ġbody ) ĊĠĠĠĠĠĠĠ Ġval Ġpost Values Ġ= Ġpost . toMap () ĊĊĠĠĠĠĠĠĠ Ġval Ġchild Updates Ġ= ĠHashMap < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġchild Updates [" / posts /$ key "] Ġ= Ġpost Values ĊĠĠĠĠĠĠĠ Ġchild Updates [" / user - posts /$ userId /$ key "] Ġ= Ġpost Values ĊĊĠĠĠĠĠĠĠ Ġm Database . update Children ( child Updates ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// Ġ[ END Ġwrite _ fan _ out ] Ċ Ċ } Ċ