/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠKin vey ĠInc . Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ċ Ġ* Ġin Ġcompliance Ġwith Ġthe ĠLicense . ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ċ Ġ* Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ċ Ġ* Ġor Ġimplied . ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ġunder Ċ Ġ* Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . kin vey . sample . status share . ui . fragments Ċ Ċ import Ġandroid . R . layout Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . app . AlertDialog . Builder Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . Menu Inflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . OnClickListener Ċ import Ġandroid . widget . Array Adapter Ċ import Ġcom . kin vey . android . store . Linked DataStore Ċ import Ġcom . kin vey . java . Abstract Client Ċ import Ġcom . kin vey . java . core . Kin vey Client Callback Ċ import Ġcom . kin vey . java . linked Resources . Linked File Ċ import Ġcom . kin vey . java . model . Kin vey MetaData . AccessControl List Ċ import Ġcom . kin vey . java . store . Store Type Ċ import Ġcom . kin vey . sample . status share . R Ċ import Ġcom . kin vey . sample . status share . model . Update Entity Ċ import Ġcom . kin vey . sample . status share . utils . Bitmap Tools Ċ import Ġcom . kin vey . sample . status share . utils . Constants Ċ import Ġcom . kin vey . sample . status share . utils . Constants . ACL _ FIELD Ċ import Ġcom . kin vey . sample . status share . utils . Constants . ATTACHMENT _ FIELD Ċ import Ġcom . kin vey . sample . status share . utils . Constants . PUBLIC _ FIELD Ċ import Ġcom . kin vey . sample . status share . utils . Constants . USERNAME _ FIELD _ NAME Ċ import Ġcom . kin vey . sample . status share . utils . Ui Utils Ċ import Ġkotlinx . android . synt hetic . main . fragment _ write _ update .* Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . io . ByteArray InputStream Ċ Ċ /** Ċ Ġ* Ġ@ author Ġed ward f Ċ Ġ* Ġ@ since Ġ 2 . 0 Ċ Ġ*/ Ċ class ĠUpdate Edit Fragment Ġ: ĠKin vey Fragment (), ĠOn ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġm Dialog : ĠAlertDialog ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġimage : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġdata Store : ĠLinked DataStore < Update Entity >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġdata Store Ġ= ĠLinked DataStore ( client Ġas ĠAbstract Client <* >, ĠConstants . COL _ UP DAT ES , ĠUpdate Entity :: class . java , ĠStore Type . AUTO ) ĊĠĠĠĠĠĠĠ Ġset Has Options Menu ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= ĠarrayOf (" From ĠCamera ", Ġ" From ĠSD ĠCard ") ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠArray Adapter ( activity !! , Ġlayout . select _ dialog _ item , Ġitems ) ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠBuilder ( activity ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Select ĠImage ") ĊĠĠĠĠĠĠĠ Ġbuilder . setAdapter ( adapter ) Ġ{ Ġdialog , Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( item Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ?. start Camera () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ?. start File Picker () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Dialog Ġ= Ġbuilder . create () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġimage Ġ= Ġmain Activity ?. bitmap ĊĠĠĠĠĠĠĠ Ġif Ġ( image Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" setting Ġimage view ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Image ?. setBackground Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Image ?. setImage Bitmap ( image ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" not Ġsetting Ġimage view ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġview ID Ġ= ĠR . layout . fragment _ write _ update ĊĊĠĠĠ Ġoverride Ġfun Ġbind Views ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpreview Image ?. setOnClickListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Update () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprogress Dialog Ġ= ĠProgress Dialog . show ( activity , Ġ"", Ġ" Post ing . ĠPlease Ġwait ...", Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval ĠbyteArray Ġ= ĠBitmap Tools . compress Image ( image ) ĊĠĠĠĠĠĠĠ Ġval ĠfileName Ġ= Ġattachment Filename () ĊĠĠĠĠĠĠĠ Ġsave Update Attachment ( progress Dialog , ĠbyteArray , ĠfileName ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġattachment Filename (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ client ?. active User ?. id }_ attachment _${ System . currentTimeMillis ()}. png " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Update Attachment ( progress Dialog : ĠProgress Dialog , Ġbytes : ĠByteArray ?, Ġfilename : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdate Entity Ġ= ĠUpdate Entity ( userId Ġ= Ġclient ?. active User ?. id ) ĊĠĠĠĠĠĠĠ Ġupdate Entity . author Name Ġ= Ġ( client ?. active User )?. get ( USERNAME _ FIELD _ NAME )?. toString () ĊĠĠĠĠĠĠĠ Ġupdate Entity . text Ġ= Ġupdate Edit . text . toString () ĊĠĠĠĠĠĠĠ Ġupdate Entity . acl ?. set Glob ally Readable ( true ) ĊĠĠĠĠĠĠĠ ĠTim ber . d (" update Entity . get Meta (). is Glob ally Readable () Ġ= Ġ${ update Entity . acl ?. is Glob ally Readable }") ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes Ġ!= Ġnull Ġ&& Ġfilename Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . i (" there Ġis Ġan Ġattachment !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlf Ġ= ĠLinked File ( filename ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlf . add Extra ( PUBLIC _ FIELD , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġacl Ġ= ĠAccess Control List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġacl . set Glob ally Readable ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlf . add Extra ( ACL _ FIELD , Ġacl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Entity . put File ( ATTACHMENT _ FIELD , Ġlf ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb ais Ġ= Ġif Ġ( bytes Ġ== Ġnull ) Ġnull Ġelse ĠByteArrayInputStream ( bytes ) ĊĠĠĠĠĠĠĠ Ġif Ġ( ba is Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Entity . getFile ( ATTACHMENT _ FIELD )?. input Ġ= Ġb ais ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdata Store ?. save ( update Entity , Ġobject Ġ: ĠKin vey Client Callback < Update Entity > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠUpdate Entity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ Ġreturn Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" post Update : ĠSUCCESS Ġ_ id Ġ= Ġ${ result . id } Ġgr Ġ= Ġ${ result . acl ?. is Glob ally Readable }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ais ?. close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUi Utils . hide Keyboard ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ?. bitmap Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmain Activity ?. share List Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( Share List Fragment (), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ== Ġnull ) Ġ{ Ġreturn Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . d (" failed Ġto Ġupload Ġlinked Ġapp Ġdata ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Dialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu , Ġinflater : ĠMenu Inflater ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu . clear () ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( R . menu . menu _ edit _ share , Ġmenu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ send _ post Ġ-> Ġdo Update () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( v Ġ=== Ġpreview Image ) Ġ{ Ġm Dialog ?. show () Ġ} ĊĠĠĠ Ġ} Ċ }