package Ġcom . z ae em . my application . ui . dialogs Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . z ae em . my application . common . enums . MessageType Ċ import Ġcom . z ae em . my application . common . extensions . application Context Ċ import Ġcom . z ae em . my application . common . extensions . lazy Activity ViewModel Ċ import Ġcom . z ae em . my application . common . injector Ċ import Ġcom . z ae em . my application . data . models . Message ListView Item Ċ import Ġcom . z ae em . my application . databinding . Dialog Message Actions Binding Ċ Ċ class ĠMessage Actions Dialog Ġ: ĠBase Bottom Sheet Dialog Fragment () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠDialog Message Actions Binding ĊĊĠĠĠ Ġval Ġmessage List ViewModel Ġby Ġlazy Activity ViewModel Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconversation Sid Ġ= Ġrequire Arguments (). getString ( ARGUMENT _ CONVER S ATION _ SID ) !! ĊĠĠĠĠĠĠĠ Ġinjector . create Message List ViewModel ( application Context , Ġconversation Sid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠDialog Message Actions Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġmessage List ViewModel . selected Message Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġre actions View Ġ= Ġbinding . edit Re actions . root ĊĠĠĠĠĠĠĠ Ġre actions View . reactions Ġ= Ġmessage . reactions ĊĠĠĠĠĠĠĠ Ġmessage List ViewModel . self User . observe ( this ) Ġ{ Ġre actions View . identity Ġ= Ġit . identity Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . copy . visibility Ġ= Ġif Ġ( message . type Ġ== ĠMessageType . MEDIA ) ĠG ONE Ġelse ĠVIS IBLE ĊĊĠĠĠĠĠĠĠ Ġre actions View . on ChangeListener Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage List ViewModel . set Re actions ( reactions View . reactions ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . copy . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage List ViewModel . copy Message To Clipboard () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . share . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshare Message ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . delete . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage List ViewModel . on Show Remove Message Dialog . call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshare Message ( message : ĠMessage ListView Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ SEND ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( message . type Ġ== ĠMessageType . MEDIA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġmessage . media Type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= Ġmessage . media Upload Uri Ġ?: Ġmessage . media Uri Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ STREAM , Ġuri ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . type Ġ= Ġ" text / plain " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Intent . EXTRA _ TEXT , Ġmessage . body ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent . create Chooser ( intent , Ġnull )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARG UMENT _ CONVER S ATION _ SID Ġ= Ġ" ARGUMENT _ CONVER S ATION _ SID " ĊĊĠĠĠĠĠĠĠ Ġfun ĠgetInstance ( conversation Sid : ĠString ) Ġ= ĠMessage Actions Dialog (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( ARGUMENT _ CONVER S ATION _ SID , Ġconversation Sid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ