package Ġcom . example . n hl stats Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . example . n hl stats . common . data . Network Client Ċ import Ġcom . example . n hl stats . features . players . presentation . Player ViewModel Ċ import Ġcom . example . n hl stats . features . stand ings . current se as ont able . Current Season ViewModel Ċ import Ġcom . example . n hl stats . features . stand ings . team standing . Team Stand ing ViewModel Ċ import Ġcom . example . n hl stats . features . teams . data . Teams Repository Impl Ċ import Ġcom . example . n hl stats . features . teams . data . network . Teams Service Ċ import Ġcom . example . n hl stats . features . teams . domain . Teams Repository Ċ import Ġcom . example . n hl stats . features . teams . presentation . m vi . list . Teams ViewModel Ċ import Ġcom . example . n hl stats . features . teams . presentation . m vi . team _ detail . Team Detail ViewModel Ċ import Ġcom . example . n hl stats . features . teams . presentation . m vi . team _ detail _ players . Team Players ViewModel Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . android . view model . dsl . viewModel Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . core . module . Module Ċ import Ġorg . k oin . core . qual ifier . named Ċ import Ġorg . k oin . dsl . module Ċ import Ġru . ter r ak ok . c icer one . C icer one Ċ Ċ class ĠN hl Application Ġ: ĠApplication () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġsetup K oin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup K oin () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapp Module Ġ= Ġcreate App Module () ĊĠĠĠĠĠĠĠ Ġval Ġnetwork Module Ġ= Ġcreate Network Module () ĊĠĠĠĠĠĠĠ Ġval Ġnavigation Ġ= Ġcreate Navigation () ĊĠĠĠĠĠĠĠ Ġval Ġteams Ġ= Ġcreate Teams Module () ĊĊĠĠĠĠĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnetwork Module , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteams , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeclare Team Feature Module () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdeclare Team Feature Module (): ĠModule Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ Ġ( team Id : ĠInt ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTeam Detail ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (), Ġteam Id , Ġget ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnamed ( Flow Key . TE AMS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ Ġ( team Id : ĠInt ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTeam Players ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġteam Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnamed ( Flow Key . TE AMS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠTeams ViewModel ( get (), Ġget ( named ( Flow Key . TE AMS ))) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠCurrent Season ViewModel ( get ( named ( Flow Key . STAND INGS ))) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĠTeam Stand ing ViewModel ( get ( named ( Flow Key . STAND INGS ))) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ Ġ( player Id : ĠInt ) Ġ-> ĠPlayer ViewModel ( player Id , Ġget ( named ( Flow Key . TE AMS ))) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Navigation (): ĠModule Ġ= Ġmodule Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc icer one Ġ= ĠC icer one . create () ĊĠĠĠĠĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc icer one . router ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc icer one . navigator Holder ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Teams Module (): ĠModule Ġ= Ġmodule Ġ{ ĊĠĠĠĠĠĠĠ Ġfactory Ġ{ Ġprovide Team Service ( get ()) Ġ} ĊĠĠĠĠĠĠĠ Ġsingle < Teams Repository > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTeams Repository Impl ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġprovide Team Service ( client : ĠNetwork Client ): ĠTeams Service Ġ= ĊĠĠĠĠĠĠĠ Ġclient . create Service ( Teams Service :: class . java ) ĊĊĊĠĠĠ Ġprivate Ġfun Ġcreate Network Module () Ġ= ĊĠĠĠĠĠĠĠ Ġmodule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ Ġprovide Ok HttpClient () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĠNetwork Client ( get ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprovide Ok HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġlogging . setLevel ( Http Logging Interceptor . Level . BODY ) ĊĠĠĠĠĠĠĠ Ġreturn ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( logging ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate App Module (): ĠModule Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmodule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ Ġandroid Context () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }