package Ġcom . hab its . app . overview Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġat . fl or ians ch uster . control . Controller Ċ import Ġat . fl or ians ch uster . control . Mut ator Ċ import Ġat . fl or ians ch uster . control . create Controller Ċ import Ġcom . hab its . app . App Coordinator Ċ import Ġcom . hab its . app . App Route Ċ import Ġcom . hab its . app . core . Dispatcher Provider Ċ import Ġcom . hab its . models . H abit Ċ import Ġcom . hab its . models . Model Test Ċ import Ġkotlinx . coroutines . flow . flow Ċ Ċ internal Ġclass ĠOverview ViewModel ( ĊĠĠĠ Ġcoord inator : ĠApp Coordinator , ĊĠĠĠ Ġdispatcher Provider : ĠDispatcher Provider Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġsealed Ġclass ĠAction Ġ{ ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠH abit Clicked ( val Ġhabit : ĠH abit ) Ġ: ĠAction () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsealed Ġclass ĠMutation ĊĊĠĠĠ Ġdata Ġclass ĠState ( ĊĠĠĠĠĠĠĠ Ġval Ġhab its : ĠList < H abit > Ġ= ĠModel Test . hab its ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġcontroller : ĠController < Action , ĠMutation , ĠState > Ġ= ĠviewModel Scope . create Controller ( ĊĠĠĠĠĠĠĠ Ġdispatcher Ġ= Ġdispatcher Provider . default , ĊĠĠĠĠĠĠĠ ĠinitialState Ġ= ĠState (), ĊĠĠĠĠĠĠĠ Ġmut ator Ġ= Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠAction . H abit Clicked Ġ-> Ġflow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroute Ġ= ĠApp Route . Show H abit Detail ( action . habit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoord inator . navigate ( route ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ }