package Ġus . mike and wan . photos . ui . controls . photo comment Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ import Ġus . mike and wan . photos . domain . Active Id Repository Ċ import Ġus . mike and wan . photos . domain . Photo Repository Ċ import Ġus . mike and wan . photos . domain . models . Photo Comment Ċ import Ġus . mike and wan . photos . domain . models . External Call Status Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠPhoto Comment ViewModel Ġ@ Inject Ġconstructor Ġ( ĊĠĠĠ Ġprivate Ġval Ġactive Id Repository : ĠActive Id Repository , ĊĠĠĠ Ġprivate Ġval Ġphoto Repository : ĠPhoto Repository Ċ ): ĠViewModel () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġ_ comments Ġ= ĠMutable State Flow ( emptyList < Photo Comment >()) ĊĠĠĠ Ġval Ġcomments Ġ= Ġ_ comments . as State Flow () ĊĊĠĠĠ Ġfun Ġadd Comments ( comment : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Comments Internal ( comment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġadd Comments Internal ( comment : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġphoto Id Ġ= Ġactive Id Repository . getActive Photo Id (). first () ĊĊĠĠĠĠĠĠĠ Ġif ( photo Id Ġ!= Ġnull Ġ&& Ġcomment . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġphoto Repository . add Comment ( photo Id , Ġcomment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( result Ġis ĠExternal Call Status . Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ comments . value Ġ= Ġresult . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Id Repository ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getActive Photo Id () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Latest Ġ{ Ġphoto Repository . get Comments ( it !! ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExternal Call Status . Loading Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExternal Call Status . Error Ġ-> Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠExternal Call Status . Success Ġ-> Ġit . result ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ Ġ_ comments . value Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. launch In ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }