package Ġcom . goo fy . goo ber . view model Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . goo fy . goo ber . inter actor . Ast ro Interactor Ċ import Ġcom . goo fy . goo ber . model . Details Intent Ċ import Ġcom . goo fy . goo ber . model . Details State Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġkotlinx . coroutines . flow . Mutable State Flow Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Opt In ( Experimental Cor outines Api :: class ) Ċ class ĠDetails ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġast ro Interactor : ĠAst ro Interactor Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġstate Ġ= ĠMutable State Flow ( Details State ()) ĊĊĠĠĠ Ġfun Ġconsume Intent ( intent : ĠDetails Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreduce ( intent ) ĊĠĠĠĠĠĠĠ Ġwhen Ġ( intent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDetails Intent . Load Content Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreduce ( astro Interactor . produce Display Details Intent ( intent . image )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreduce ( intent : ĠDetails Intent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstate . value Ġ= Ġstate . value . reduce ( intent ) ĊĠĠĠ Ġ} Ċ } Ċ