/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 2 ĠNew ĠVector ĠLtd Ċ Ġ* Ċ Ġ* Ġ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 Ġim . vector . app . features . location . live . map . bottom sheet Ċ Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . view . isVisible Ċ import Ġcom . air bnb . e po xy . E po xy Attribute Ċ import Ġcom . air bnb . e po xy . E po xy Model Class Ċ import Ġim . vector . app . R Ċ import Ġim . vector . app . core . e po xy . Vector E po xy Holder Ċ import Ġim . vector . app . core . e po xy . Vector E po xy Model Ċ import Ġim . vector . app . core . e po xy . onClick Ċ import Ġim . vector . app . core . resources . String Provider Ċ import Ġim . vector . app . core . time . Clock Ċ import Ġim . vector . app . core . utils . TextUtils Ċ import Ġim . vector . app . features . home . Avatar Renderer Ċ import Ġim . vector . lib . core . utils . timer . Count Up Timer Ċ import Ġorg . matrix . android . sdk . api . util . Matrix Item Ċ import Ġorg . th reet en . bp . Duration Ċ Ċ @ E po xy Model Class ( layout Ġ= ĠR . layout . item _ live _ location _ users _ bottom _ sheet ) Ċ abstract Ġclass ĠLive Location User Item Ġ: ĠVector E po xy Model < Live Location User Item . Holder >() Ġ{ ĊĊĠĠĠ Ġinterface ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon User Selected ( userId : ĠString ) ĊĠĠĠĠĠĠĠ Ġfun Ġon Stop Sharing Clicked () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġcallback : ĠCallback ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġlateinit Ġvar Ġmatrix Item : ĠMatrix Item ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġlateinit Ġvar Ġavatar Renderer : ĠAvatar Renderer ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġlateinit Ġvar Ġstring Provider : ĠString Provider ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġlateinit Ġvar Ġclock : ĠClock ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġremaining Time : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġlocation UpdateTime Millis : ĠLong ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ E po xy Attribute ĊĠĠĠ Ġvar Ġshow Stop Sharing Button : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġbind ( holder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . bind ( holder ) ĊĠĠĠĠĠĠĠ Ġavatar Renderer . render ( matrix Item , Ġholder . item User Avatar ImageView ) ĊĠĠĠĠĠĠĠ Ġholder . item User DisplayName TextView . text Ġ= Ġmatrix Item . displayName ĊĠĠĠĠĠĠĠ Ġholder . item Remaining Time TextView . text Ġ= Ġremaining Time ĊĊĠĠĠĠĠĠĠ Ġholder . item Stop Sharing Button . isVisible Ġ= Ġshow Stop Sharing Button ĊĠĠĠĠĠĠĠ Ġif Ġ( show Stop Sharing Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item Stop Sharing Button . onClick Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ?. on Stop Sharing Clicked () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstop Timer ( holder ) ĊĠĠĠĠĠĠĠ Ġholder . timer Ġ= ĠCount Up Timer ( 1 0 0 0 ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtick Listener Ġ= Ġobject Ġ: ĠCount Up Timer . Tick Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tick ( milliseconds : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . item Last UpdatedAt TextView . text Ġ= Ġget Formatted Last UpdatedAt ( location UpdateTime Millis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresume () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . view . setOnClickListener Ġ{ Ġcallback ?. on User Selected ( matrix Item . id ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġun bind ( holder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . unbind ( holder ) ĊĠĠĠĠĠĠĠ Ġstop Timer ( holder ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstop Timer ( holder : ĠH older ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . timer ?. stop () ĊĠĠĠĠĠĠĠ Ġholder . timer Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Formatted Last UpdatedAt ( location UpdateTime Millis : ĠLong ?): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( location UpdateTime Millis Ġ== Ġnull ) Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġelapsed Time Ġ= Ġclock . epoch Millis () Ġ- Ġlocation UpdateTime Millis ĊĠĠĠĠĠĠĠ Ġval Ġduration Ġ= ĠDuration . of Millis ( elapsed Time . coerce At Least ( 0 L )) ĊĠĠĠĠĠĠĠ Ġval Ġformatted Duration Ġ= ĠText Utils . format Duration With Units ( string Provider , Ġduration , Ġappend Seconds Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn Ġstring Provider . getString ( R . string . live _ location _ bottom _ sheet _ last _ updated _ at , Ġformatted Duration ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠH older Ġ: ĠVector E po xy Holder () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtimer : ĠCount Up Timer ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġitem User Avatar ImageView Ġby Ġbind < ImageView >( R . id . item User Avatar ImageView ) ĊĠĠĠĠĠĠĠ Ġval Ġitem User DisplayName TextView Ġby Ġbind < TextView >( R . id . item User DisplayName TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Remaining Time TextView Ġby Ġbind < TextView >( R . id . item Remaining Time TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Last UpdatedAt TextView Ġby Ġbind < TextView >( R . id . item Last UpdatedAt TextView ) ĊĠĠĠĠĠĠĠ Ġval Ġitem Stop Sharing Button Ġby Ġbind < Button >( R . id . item Stop Sharing Button ) ĊĠĠĠ Ġ} Ċ } Ċ