package Ġxyz . mir age . app . business . datas ources . cache . post Ċ Ċ import Ġandroidx . room . Embedded Ċ import Ġandroidx . room . Relation Ċ import Ġcom . squareup . mos hi . Json Adapter Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġxyz . mir age . app . business . domain . models . Attachment Ċ import Ġxyz . mir age . app . business . domain . models . Post Ċ import Ġxyz . mir age . app . presentation . core . util . Date Utils Ċ Ċ val Ġm oshi : ĠM oshi Ġ= ĠM oshi . Builder (). build () Ċ val Ġfile Adapter : ĠJson Adapter < Attachment > Ġ= Ġm oshi . adapter ( Attachment :: class . java ) Ċ Ċ data Ġclass ĠPost Author ( ĊĠĠĠ Ġ@ Embedded ĊĠĠĠ Ġval Ġpost : ĠPost Entity , ĊĠĠĠ Ġ@ Relation ( ĊĠĠĠĠĠĠĠ Ġparent Column Ġ= Ġ" author Id ", ĊĠĠĠĠĠĠĠ Ġentity Column Ġ= Ġ" id " ĊĠĠĠ Ġ) ĊĠĠĠ Ġval Ġauthor : ĠProfile Entity Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġto Post (): ĠPost Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPost ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġpost . id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġpost . text , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes Ġ= Ġpost . likes , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlik ed Ġ= Ġpost . lik ed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret weets Ġ= Ġpost . ret weets , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret weet ed Ġ= Ġpost . ret weet ed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Ret weet Ġ= Ġpost . is Ret weet , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ= Ġpost . file ?. let Ġ{ Ġconvert String ToFile ( it ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprofile Ġ= Ġauthor . to Profile (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcreatedAt Ġ= Ġpost . createdAt , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert String ToFile ( file : ĠString ): ĠAttachment Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfile Adapter . fromJson ( file ) Ġ?: Ġthrow ĠException (" Couldn 't Ġrestore Ġattachment ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠPost Author ĊĊĠĠĠĠĠĠĠ Ġif Ġ( post Ġ!= Ġother . post ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( author Ġ!= Ġother . author ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġpost . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġauthor . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġconvert File ToString ( file : ĠAttachment ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġfile Adapter . toJson ( file ) Ċ } Ċ Ċ fun ĠPost . to Entity ( is Feed : ĠBoolean Ġ= Ġtrue ): ĠPost Entity Ġ{ ĊĠĠĠ Ġreturn ĠPost Entity ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġtext , ĊĠĠĠĠĠĠĠ Ġlikes Ġ= Ġlikes , ĊĠĠĠĠĠĠĠ Ġlik ed Ġ= Ġlik ed , ĊĠĠĠĠĠĠĠ Ġret weets Ġ= Ġret weets , ĊĠĠĠĠĠĠĠ Ġret weet ed Ġ= Ġret weet ed , ĊĠĠĠĠĠĠĠ Ġis Ret weet Ġ= Ġis Ret weet , ĊĠĠĠĠĠĠĠ Ġfile Ġ= Ġfile ?. let Ġ{ Ġconvert File ToString ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġauthor Id Ġ= Ġprofile . id , ĊĠĠĠĠĠĠĠ ĠcreatedAt Ġ= ĠcreatedAt , ĊĠĠĠĠĠĠĠ Ġdate Cached Ġ= ĠDate Utils . create Timestamp (), ĊĠĠĠĠĠĠĠ Ġis Feed Ġ= Ġis Feed ĊĠĠĠ Ġ) Ċ } Ċ Ċ fun ĠList < Post Author >. to Post List (): ĠList < Post > Ġ{ ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġit . to Post () Ġ} Ċ }