package Ġsh v yn 2 2 . flex ing weather . di Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preference DataStore Factory Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . preferences DataStore File Ċ import Ġandroidx . room . Room Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġsh v yn 2 2 . flex ing weather . api . Api Interface Ċ import Ġsh v yn 2 2 . flex ing weather . data . local . App Database Ċ import Ġsh v yn 2 2 . flex ing weather . data . local . dao . Location Dao Ċ import Ġsh v yn 2 2 . flex ing weather . repository . Repository Ċ import Ġsh v yn 2 2 . flex ing weather . repository . Repository Impl Ċ import Ġsh v yn 2 2 . flex ing weather . util . BASE _ URL Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ object ĠApp Module Ġ{ ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ret rofit (): ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Api Interface ( ret rofit : ĠRet rofit ): ĠApi Interface Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Api Interface :: class . java ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide App Database ( app : ĠApplication ): ĠApp Database Ġ= ĊĠĠĠĠĠĠĠ ĠRoom ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Database :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" app _ database " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Location Dao ( db : ĠApp Database ): ĠLocation Dao Ġ= ĊĠĠĠĠĠĠĠ Ġdb . location Dao () ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Repository ( ĊĠĠĠĠĠĠĠ Ġapi : ĠApi Interface , ĊĠĠĠĠĠĠĠ Ġlocation Dao : ĠLocation Dao ĊĠĠĠ Ġ): ĠRepository Ġ= ĠRepository Impl ( api , Ġlocation Dao ) ĊĊĠĠĠ Ġ@ Singleton ĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide DataStore ( app : ĠApplication ): ĠData Store < Preferences > Ġ= ĊĠĠĠĠĠĠĠ ĠPreference DataStore Factory . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproduce File Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapp . preferences DataStore File (" preferences ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ċ }