package Ġat . tu w ien . android _ geo location Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġandroidx . room . Room Ċ import Ġat . tu w ien . android _ geo location . service . Location Db Ċ import Ġat . tu w ien . android _ geo location . service . model . Location Dao Ċ import Ġat . tu w ien . android _ geo location . service . model . MLS API Ċ import Ġat . tu w ien . android _ geo location . service . repository . Location Repository Ċ import Ġat . tu w ien . android _ geo location . view model . location . Enable Security ViewModel Ċ import Ġat . tu w ien . android _ geo location . view model . location . Location Details ViewModel Ċ import Ġat . tu w ien . android _ geo location . view model . location . Location List ViewModel Ċ import Ġcom . google . gson . Field Naming Policy Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . tu w ien . geo location _ android . R Ċ import Ġokhttp 3 . Cache Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġorg . k oin . android . ext . k oin . android Application Ċ import Ġorg . k oin . android x . view model . dsl . viewModel Ċ import Ġorg . k oin . dsl . module Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ Ċ val ĠviewModel Module Ġ= Ġmodule Ġ{ ĊĠĠĠ ĠviewModel Ġ{ ĠLocation List ViewModel ( get (), Ġget ()) Ġ} ĊĠĠĠ ĠviewModel Ġ{ ĠLocation Details ViewModel ( get (), Ġget ()) Ġ} ĊĠĠĠ ĠviewModel Ġ{ ĠEnable Security ViewModel ( get (), Ġget ()) Ġ} Ċ } Ċ Ċ val Ġrepository Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfun Ġprovide UserRepository ( dao : ĠLocation Dao , Ġapi : ĠM LS API , Ġapplication : ĠApplication ): ĠLocation Repository Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocation Repository ( dao , Ġapi , Ġapplication . application Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide UserRepository ( get (), Ġget (), Ġget ()) Ġ} Ċ } Ċ Ċ val Ġdatabase Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfun Ġprovide Database ( application : ĠApplication ): ĠLocation Db Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapplication . application Context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocation Db :: class . java , Ġapplication . application Context . getString ( R . string . database _ name ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. allow MainThread Queries () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġprovide Dao ( database : ĠLocation Db ): ĠLocation Dao Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdatabase . location Dao () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide Database ( android Application ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide Dao ( get ()) Ġ} Ċ } Ċ Ċ val Ġapi Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfun Ġprovide User Api ( ret rofit : ĠRet rofit ): ĠM LS API Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( MLS API :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide User Api ( get ()) Ġ} Ċ } Ċ Ċ val Ġretrofit Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfun Ġprovide Cache ( application : ĠApplication ): ĠCache Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcache Size Ġ= Ġ 1 0 Ġ* Ġ 1 0 2 4 Ġ* Ġ 1 0 2 4 ĊĠĠĠĠĠĠĠ Ġreturn ĠCache ( application . cacheDir , Ġcache Size . to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovide HttpClient ( cache : ĠCache ): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Builder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. cache ( cache ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovide Gson (): ĠGson Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson Builder (). setField Naming Policy ( Field Naming Policy . IDENTITY ). create () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġprovide Ret rofit ( factory : ĠGson , Ġclient : ĠOk HttpClient ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// location . services . mozilla . com / v 1 /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ( factory )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide Cache ( android Application ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide HttpClient ( get ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide Gson () Ġ} ĊĠĠĠ Ġsingle Ġ{ Ġprovide Ret rofit ( get (), Ġget ()) Ġ} Ċ }