package Ġcom . pup py ad option . android dev challenge Ċ Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . remember Ċ import Ġandroidx . navigation . Nav Host Controller Ċ import Ġandroidx . navigation . Nav Type Ċ import Ġandroidx . navigation . compose .* Ċ import Ġcom . pup py ad option . android dev challenge . Main Dest inations . P UP PY _ ID _ KEY Ċ import Ġcom . pup py ad option . android dev challenge . ui . P up p ies Ċ import Ġcom . pup py ad option . android dev challenge . ui . P up py Detail Ċ Ċ object ĠMain Dest inations Ġ{ ĊĠĠĠ Ġconst Ġval ĠLIST _ P UP PI ES Ġ= Ġ" list _ pup p ies " ĊĠĠĠ Ġconst Ġval ĠP UP PY _ DETAIL Ġ= Ġ" pup py _ detail " ĊĠĠĠ Ġconst Ġval ĠP UP PY _ ID _ KEY Ġ= Ġ" pup py Id " Ċ } Ċ Ċ @ Composable Ċ fun ĠNav Graph ( start Destination : ĠString Ġ= ĠMain Dest inations . LIST _ P UP PI ES ) Ġ{ ĊĠĠĠ Ġval Ġnav Controller Ġ= Ġremember Nav Controller () ĊĊĠĠĠ Ġval Ġactions Ġ= Ġremember ( nav Controller ) Ġ{ ĠMain Actions ( nav Controller ) Ġ} ĊĠĠĠ ĠNav Host ( ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġnav Controller , ĊĠĠĠĠĠĠĠ Ġstart Destination Ġ= Ġstart Destination ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcomp osable ( Main Dest inations . LIST _ P UP PI ES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up p ies ( select P up py Ġ= Ġactions . select P up py ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcomp osable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Main Dest inations . P UP PY _ DETAIL }/ {$ P UP PY _ ID _ KEY }", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠlistOf ( nav Argument ( P UP PY _ ID _ KEY ) Ġ{ Ġtype Ġ= ĠNav Type . Int Type Ġ}) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġback Stack Entry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġrequire NotNull ( back Stack Entry . arguments ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP up py Detail ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp up py Id Ġ= Ġarguments . getInt ( P UP PY _ ID _ KEY ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġup Press Ġ= Ġactions . up Press ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ /** Ċ Ġ* ĠModels Ġthe Ġnavigation Ġactions Ġin Ġthe Ġapp . Ċ Ġ*/ Ċ class ĠMain Actions ( nav Controller : ĠNav Host Controller ) Ġ{ ĊĠĠĠ Ġval Ġselect P up py : Ġ( Int ) Ġ-> ĠUnit Ġ= Ġ{ Ġp up py Id : ĠInt Ġ-> ĊĠĠĠĠĠĠĠ Ġnav Controller . navigate ("${ Main Dest inations . P UP PY _ DETAIL }/ $ pup py Id ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġup Press : Ġ() Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġnav Controller . navigate Up () ĊĠĠĠ Ġ} Ċ }