package Ġcom . github . ll max im ll . m yst ory is my world . presentation . m yst ories . story summary cloud . view model Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġandroidx . work . Work Info Ċ import Ġandroidx . work . Work Manager Ċ import Ġcom . github . ll max im ll . m yst ory is my world . R Ċ 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 . data . social . repository . Social Repository Impl Ċ import Ġcom . github . ll max im ll . m yst ory is my world . domain . models . graph . Graph Data Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . explore . explore topic . Graph Category Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . m yst ories . story summary cloud . Version State Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . states . Fetch State Ċ import Ġcom . github . ll max im ll . m yst ory is my world . presentation . states . Simple State Ċ import Ġcom . github . ll max im ll . m yst ory is my world . utils . Network Status Ċ import Ġcom . github . ll max im ll . m yst ory is my world . work . Download Story Worker Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġkotlinx . coroutines . async Ċ import Ġkotlinx . coroutines . coroutine Scope Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . flow . State Flow Ċ import Ġkotlinx . coroutines . flow . as State Flow Ċ import Ġkotlinx . coroutines . launch Ċ import Ġtim ber . log . Tim ber Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠStory Summary Cloud ViewModel Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġmutable Network State Ġ= ĠMutable State Flow < Network Status >( Network Status . Unavailable ) ĊĠĠĠ Ġval Ġnetwork State : ĠState Flow < Network Status > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmutable Network State . as State Flow () ĊĊĠĠĠ Ġfun Ġset Network State ( state : ĠNetwork Status ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable Network State . value Ġ= Ġstate ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠÐ¡ ÐºÐ° Ñĩ Ð¸Ð² Ð°Ð½Ð¸Ðµ ĠÐ¸ ÑģÑĤ Ð¾ÑĢ Ð¸Ð¸ ĠÐ¸Ð· ĠÐ¾Ð± Ð» Ð°Ðº Ð° ĊĠĠĠ Ġprotected Ġval Ġmutable Fetch Graph Remote State Ġ= ĠMutable State Flow < Fetch State < Graph Data >>( Fetch State . Initial ) ĊĠĠĠ Ġval Ġfetch Graph Remote State : ĠLive Data < Fetch State < Graph Data >> Ġ= ĊĠĠĠĠĠĠĠ Ġmutable Fetch Graph Remote State . as LiveData ( viewModel Scope . coroutine Context ) ĊĊĠĠĠ Ġ// ĠÐ¡ ÐºÐ° Ñĩ Ð¸Ð² Ð°Ð½Ð¸Ðµ ĠÐ¸Ð»Ð¸ ĠÐ¾ÑĤ Ð¿ÑĢÐ°Ð² ÐºÐ° ĠÐ¸ ÑģÑĤ Ð¾ÑĢ Ð¸Ð¸ ĠÐ² ĠÐ¾Ð± Ð» Ð°Ðº Ð¾ ĊĠĠĠ Ġval Ġupload Mediator LiveData Ġ= ĠMed iator LiveData < Simple State < Version State >>() ĊĊĠĠĠ Ġ// ĠÐ£ Ð´Ð°Ð» ÐµÐ½Ð¸Ðµ ĠÐ¸ ÑģÑĤ Ð¾ÑĢ Ð¸Ð¸ ĠÐ¸Ð· ĠÐ¾Ð± Ð» Ð°Ðº Ð° ĊĠĠĠ Ġval Ġremove Mediator LiveData Ġ= ĠMed iator LiveData < Simple State < Nothing ? >>() ĊĊĠĠĠ Ġprotected Ġval Ġmutable Fetch Like Comment State Ġ= ĠMutable State Flow < Fetch State < Map < String , ĠInt >> >( Fetch State . Initial ) ĊĠĠĠ Ġval Ġfetch Like Comment State : ĠLive Data < Fetch State < Map < String , ĠInt >>> Ġ= ĊĠĠĠĠĠĠĠ Ġmutable Fetch Like Comment State . as LiveData ( viewModel Scope . coroutine Context ) ĊĊĠĠĠ Ġprivate Ġval Ġmutable Version State Ġ= ĠMutable State Flow ( Version State . INITIAL ) ĊĠĠĠ Ġval Ġversion State : ĠLive Data < Version State > Ġ= ĊĠĠĠĠĠĠĠ Ġmutable Version State . as LiveData ( viewModel Scope . coroutine Context ) ĊĊĠĠĠ Ġfun Ġset Version State ( state : ĠVersion State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmutable Version State . value Ġ= Ġstate ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ H ilt ViewModel Ċ class ĠStory Summary Cloud ViewModel Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġwork Manager : ĠWork Manager , ĊĠĠĠ Ġprivate Ġval Ġsaved State Handle : ĠSaved State Handle , ĊĠĠĠ Ġprivate Ġval Ġgraph Repository : ĠGraph Repository Impl , ĊĠĠĠ Ġprivate Ġval Ġsocial Repository : ĠSocial Repository Impl Ċ ) Ġ: ĠStory Summary Cloud ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġremote Graph Id : ĠString Ġ= Ġsaved State Handle . get (" graph Remote Id ") Ġ?: Ġ" Null " ĊĠĠĠ Ġprivate Ġval Ġlocal Graph Id : ĠLong Ġ= Ġsaved State Handle . get (" graph Local Id ") Ġ?: Ġ- 1 L ĊĊĠĠĠ Ġvar Ġgraph Data Local : ĠGraph Data ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget Graph Data Local () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠÐĹ Ð°Ð¿ ÑĢÐ¾Ñģ Ñĭ ĊĊĠĠĠ Ġfun Ġget Graph Data Remote ( custom Remote Graph Id : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Graph Remote State . value Ġ= ĠFetch State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph Repository . get Graph Data ById Remote ( custom Remote Graph Id Ġ?: Ġremote Graph Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . v (" remote Graph Id :${ custom Remote Graph Id Ġ?: Ġremote Graph Id } Ġresult :${ result . get OrNull () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . is Success Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Graph Remote State . value Ġ= ĠFetch State . Success ( result . get OrNull () !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . is Failure Ġ&& Ġresult . exception OrNull () Ġis ĠNullPointerException Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Graph Remote State . value Ġ= ĠFetch State . NotFound ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Graph Remote State . value Ġ= ĠFetch State . Error ( result . exception OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupload Graph Data Remote () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( version State . value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVersion State . LOCAL _ BIG GER _ REMOTE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . value Ġ= ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġworker Mode Ġ= ĠDownload Story Worker . Companion . Download Worker Mode . UPLOAD _ ST ORY _ UPDATE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Id Ġ= ĠDownload Story Worker . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Mode Ġ= Ġworker Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Id Ġ= Ġremote Graph Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= Ġwork Manager . get Work Info ById LiveData ( work Id ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple State . Success ( Version State . VERSION _ CURRENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . CANCEL LED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . add Source ( live Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVersion State . REMOTE _ BIG GER _ LOCAL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . value Ġ= ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Id Ġ= ĠDownload Story Worker . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Mode Ġ= ĠDownload Story Worker . Companion . Download Worker Mode . DOWNLOAD _ ST ORY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Id Ġ= Ġremote Graph Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= Ġwork Manager . get Work Info ById LiveData ( work Id ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple State . Success ( Version State . VERSION _ CURRENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . CANCEL LED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . add Source ( live Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVersion State . NOT _ FOUND _ REMOTE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġworker Mode Ġ= ĠDownload Story Worker . Companion . Download Worker Mode . UPLOAD _ ST ORY _ CREATE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Id Ġ= ĠDownload Story Worker . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Mode Ġ= Ġworker Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Id Ġ= Ġremote Graph Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= Ġwork Manager . get Work Info ById LiveData ( work Id ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple State . Success ( Version State . VERSION _ CURRENT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . CANCEL LED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . add Source ( live Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupload Mediator LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠUnit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Graph Data Remote () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Mediator LiveData . value Ġ= ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwork Id Ġ= ĠDownload Story Worker . run ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwork Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġworker Mode Ġ= ĠDownload Story Worker . Companion . Download Worker Mode . REMOVE _ ST ORY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph Id Ġ= Ġremote Graph Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlive Data Ġ= Ġwork Manager . get Work Info ById LiveData ( work Id ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . SUCCEEDED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple State . Success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . CANCEL LED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWork Info . State . FAILED Ġ-> ĠSimple State . Error ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠSimple State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġremove Mediator LiveData . add Source ( live Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Mediator LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Like Comment () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Like Comment State . value Ġ= ĠFetch State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġsocial Repository . get Like Comment Count By Graph Id Remote ( remote Graph Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . is Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Object Ġ= Ġresult . get OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Object ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Like Comment State . value Ġ= ĠFetch State . Success ( result Object ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Like Comment State . value Ġ= ĠFetch State . NotFound ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Fetch Like Comment State . value Ġ= ĠFetch State . Error ( result . exception OrNull ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġget Graph Data Local (): ĠString Ġ= Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjob Ġ= Ġasync Ġ{ Ġgraph Repository . get Graph ById Local ( local Graph Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġgraph Data Local Ġ= Ġjob . await () ĊĠĠĠĠĠĠĠ Ġremote Graph Id Ġ= Ġgraph Data Local ?. remote Id Ġ?: Ġ" Null " ĊĠĠĠĠĠĠĠ Ġreturn @ coroutine Scope Ġremote Graph Id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠÐŀ Ð± ÑĢÐ°Ð±Ð¾ÑĤ ÐºÐ° ĊĊĠĠĠ Ġfun ĠgetString Res Of Category ( category : ĠGraph Category ): ĠInt Ġ= ĊĠĠĠĠĠĠĠ Ġwhen Ġ( category ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Category . GLOBAL Ġ-> ĠR . string . fragment _ story _ summary _ cloud _ category _ global ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Category . SAN DB OX Ġ-> ĠR . string . fragment _ story _ summary _ cloud _ category _ sandbox ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Category . PROCESS ING Ġ-> ĠR . string . fragment _ story _ summary _ cloud _ category _ processing ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Category . PERSON AL Ġ-> ĠR . string . fragment _ story _ summary _ cloud _ category _ personal ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . fragment _ story _ summary _ cloud _ category _ unknown ĊĠĠĠĠĠĠĠ Ġ} Ċ }