package Ġcom . example . android . polit ical prepared ness Ċ Ċ import Ġandroid . app . Application Ċ import Ġcom . example . android . polit ical prepared ness . database . E lection DataSource Ċ import Ġcom . example . android . polit ical prepared ness . database . E lection Database Ċ import Ġcom . example . android . polit ical prepared ness . database . E lection Main Repository Ċ import Ġcom . example . android . polit ical prepared ness . election . E lection s ViewModel Ċ import Ġcom . example . android . polit ical prepared ness . election . V oter Info ViewModel Ċ import Ġcom . example . android . polit ical prepared ness . network . BASE _ URL Ċ import Ġcom . example . android . polit ical prepared ness . network . C iv ics ApiService Ċ import Ġcom . example . android . polit ical prepared ness . network . C iv ics HttpClient Ċ import Ġcom . example . android . polit ical prepared ness . network . json adapter . E lection Adapter Ċ import Ġcom . example . android . polit ical prepared ness . represent ative . Represent ative ViewModel Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . adapters . R fc 3 3 3 9 Date Json Adapter Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ import Ġorg . k oin . android x . view model . dsl . viewModel Ċ import Ġorg . k oin . core . context . start K oin Ċ import Ġorg . k oin . core . qual ifier . named Ċ import Ġorg . k oin . dsl . module Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . mos hi . M oshi Converter Factory Ċ import Ġtim ber . log . Tim ber Ċ import Ġjava . util .* Ċ Ċ class ĠMy App Ġ: ĠApplication () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ ĠTim ber . plant ( Tim ber . Debug Tree ()) ĊĠĠĠĠĠĠĠ Ġval Ġmy Module Ġ= Ġmodule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Declare Ġa ĠViewModel Ġ- Ġbe Ġlater Ġinject Ġinto ĠFragment Ġwith Ġdedicated Ġinjector Ġusing Ġby ĠviewModel () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠE lection s ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġas ĠE lection DataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRepresent ative ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġas ĠE lection DataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Declare Ġsingleton Ġdefinitions Ġto Ġbe Ġlater Ġinjected Ġusing Ġby Ġinject () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// This Ġview Ġmodel Ġis Ġdeclared Ġsingleton Ġto Ġbe Ġused Ġacross Ġmultiple Ġfragments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠV oter Info ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġas ĠE lection DataSource ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC iv ics HttpClient . getClient () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle < Converter . Factory >( named (" mos hi ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( E lection Adapter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( Date :: class . java , ĠR fc 3 3 3 9 Date Json Adapter ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠM oshi Converter Factory . create ( mos hi ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( get ( named (" mos hi "))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ Ġget < Ret rofit >(). create ( C iv ics ApiService :: class . java ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĠE lection Main Repository ( get (), Ġget ()) Ġas ĠE lection DataSource Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsingle Ġ{ ĠE lection Database . getInstance ( this @ My App ). election Dao Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnetwork Module Ġ= Ġmodule Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstart K oin Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context ( this @ My App ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodules ( listOf ( my Module )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }