package Ġcom . github . ll max im ll . m yst ory is my world . presentation . m yst ories . node editor . view model Ċ Ċ import Ġandroidx . lifecycle . Saved State Handle Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . github . ll max im ll . m yst ory is my world . data . graph . repository . Graph Repository Impl Ċ import Ġcom . github . ll max im ll . m yst ory is my world . domain . models . node data . Node Data Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . states . Fetch State Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠNode Editor ViewModel Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġgraph Repository : ĠGraph Repository Impl , ĊĠĠĠ Ġprivate Ġval Ġsaved State Handle : ĠSaved State Handle Ċ ) Ġ: ĠNode Editor ViewModel () Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠgetNode () ĊĠĠĠĠĠĠĠ ĠgetNode DataList ById () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠnodeId : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġsaved State Handle . get (" id ") !! ĊĊĠĠĠ Ġvar ĠcurrentNode Data : ĠNode Data ? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġtitle Ġ= Ġ"" ĊĠĠĠ Ġvar Ġcontent Text Ġ= Ġ"" ĊĠĠĠ Ġval Ġchild List Ġ= Ġmutable ListOf < Node Data >() ĊĊĠĠĠ Ġprivate Ġfun ĠgetNode () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode :: ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Story State ( Fetch State . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph Repository . getNode Data ById Local ( nodeId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode :: success Ġ| Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Story State ( Fetch State . Success ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode :: failure ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Story State ( Fetch State . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetNode DataList ById () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ids Ġ= Ġsaved State Handle . get < Array < String > ?> (" child Node Ids ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list Ids Ġ!= Ġnull Ġ&& Ġlist Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Child State ( Fetch State . Loading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph Repository . getNode DataList ById Local ( list Ids . toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode DataList ById :: success Ġ| Ġ$ result ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Child State ( Fetch State . Success ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode DataList ById :: NotFound ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Fetch Child State ( Fetch State . NotFound ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" getNode DataList ById :: Ġlist Ids Ġ== Ġnull Ġor Ġlist Ids Ġis Ġempty ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }