package Ġcom . brand tw el ch . picture me . user profile Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . brand tw el ch . picture me . R Ċ import Ġcom . brand tw el ch . picture me . arch . M vi Intent Ċ import Ġcom . brand tw el ch . picture me . arch . M vi ViewModel Ċ import Ġcom . brand tw el ch . picture me . arch . M vi ViewState Ċ import Ġcom . brand tw el ch . picture me . db . entities . Post Ċ import Ġcom . brand tw el ch . picture me . db . entities . Profile Ċ import Ġjava . sql . Timestamp Ċ import Ġjava . util . logging . Level Ċ import Ġjava . util . logging . Logger Ċ Ċ class ĠUser Profile ViewModel Ġ: ĠM vi ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġstate LiveData : ĠMutable LiveData < M vi ViewState > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠMutable LiveData < M vi ViewState >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġval ĠLOGGER : ĠLogger ? Ġ= ĠLogger . getLogger ( UserProfile ViewModel :: class . java . canonical Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreduce ( intent : ĠUser Profile Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġmap Ġintent s Ġto Ġbusiness Ġlogic ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġprocess Intent ( intent : ĠM vi Intent ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLOGGER ?. log ( Level . INFO , ĠString . format (" Intent Ġreceived : Ġ% s ", Ġintent )) ĊĊĠĠĠĠĠĠĠ Ġval Ġcurrent State Ġ= Ġstate LiveData . value Ġas ĠUser Profile ViewState ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( intent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Profile Intent . ACTIVITY _ STARTED Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Profile Intent . TIME LINE _ FRAGMENT _ CREATED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate LiveData . value Ġ= Ġcurrent State . copy () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUser Profile Intent . EDIT _ PROFILE _ BUTTON _ PRES SED Ġ-> Ġ{ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOGGER ?. log ( Level . WARNING , ĠString . format (" Unknown Ġintent Ġ( Ġ% Ġ) Ġreceived ", Ġintent )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstates (): ĠMutable LiveData < M vi ViewState > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdefault State Ġ= ĠUser Profile ViewState () ĊĠĠĠĠĠĠĠ Ġdefault State . is CurrentUser Ġ= Ġis Current UserProfile ( default State . profile ) ĊĠĠĠĠĠĠĠ Ġdefault State . timeline Items Ġ= Ġgenerate Dummy Posts () ĊĊĠĠĠĠĠĠĠ Ġstate LiveData . value Ġ= Ġdefault State ĊĊĠĠĠĠĠĠĠ Ġreturn Ġstate LiveData ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Dummy Posts (): ĠArrayList < Post > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġposts Ġ= Ġarray ListOf < Post >() ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= ĠPost ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Post er Id Ġ= Ġi , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtimestamp Ġ= ĠTimestamp . valueOf (" 2 0 2 0 - 1 0 - 2 1 Ġ 1 9 : 1 1 : 0 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost Body Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposts . add ( post ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġposts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Current UserProfile ( profile : ĠProfile ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO : Ġimplement Ġa Ġuser Ġsession Ġobject Ġthat Ġholds Ġsession Ġinfo Ġsuch Ġas Ġthe Ġ[ Profile ] Ġobject Ġof Ġthe Ġcurrent Ġuser ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }