package Ġorg . opp ia . app . administrator controls . app version Ċ Ċ import Ġandroidx . databinding . Observable Field Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġorg . opp ia . app . Build Config Ċ import Ġorg . opp ia . app . fragment . Fragment Scope Ċ import Ġorg . opp ia . app . view model . Observable ViewModel Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ġ[ ViewModel ] Ġfor Ġ[ App Version Fragment ] */ Ċ @ Fragment Scope Ċ class ĠApp Version ViewModel Ġ@ Inject Ġconstructor ( ĊĠ Ġfragment : ĠFragment Ċ ) Ġ: ĠObservable ViewModel () Ġ{ ĊĊĠ Ġval Ġversion Name Ġ= ĠObservable Field < String >( Build Config . VERSION _ NAME ) ĊĊĠ Ġprivate Ġval Ġlast Update DateTime Ġ= ĊĠĠĠ Ġfragment . activity !!. package Manager . get Package Info ( fragment . activity !!. packageName , Ġ/* Ġflags = Ġ*/ Ġ 0 ). last UpdateTime ĊĠ Ġval Ġlast Update Date Ġ= ĠObservable Field < String >( get DateTime ( last Update DateTime )) ĊĊĠ Ġ// ĠTODO (# 5 5 5 ): ĠCreate Ġone Ġcentral Ġutility Ġfile Ġfrom Ġwhere Ġwe Ġshould Ġaccess Ġdate Ġformat Ġor Ġeven Ġconvert Ġdate Ġtimestamp Ġto Ġstring Ġfrom Ġthat Ġfile . ĊĠ Ġprivate Ġfun Ġget DateTime ( l : ĠLong ): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġval Ġsdf Ġ= ĠSimpleDateFormat (" dd ĠM MMM Ġy yyy ", ĠLocale . US ) ĊĠĠĠĠĠ Ġval Ġnet Date Ġ= ĠDate ( l ) ĊĠĠĠĠĠ Ġsdf . format ( net Date ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠ Ġe . toString () ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ