/* Copyright 2018 charlag * * This file is a part of Tusky. * * This program is free software; you can redistribute it and/or modify it under the terms of the * GNU General Public License as published by the Free Software Foundation; either version 3 of the * License, or (at your option) any later version. * * Tusky is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even * the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along with Tusky; if not, * see . */ package com.keylesspalace.tusky.di import android.app.Application import android.content.Context import android.content.SharedPreferences import android.preference.PreferenceManager import android.support.v4.content.LocalBroadcastManager import com.keylesspalace.tusky.TuskyApplication import com.keylesspalace.tusky.appstore.EventHub import com.keylesspalace.tusky.appstore.EventHubImpl import com.keylesspalace.tusky.db.AccountManager import com.keylesspalace.tusky.db.AppDatabase import com.keylesspalace.tusky.network.MastodonApi import com.keylesspalace.tusky.network.TimelineCases import com.keylesspalace.tusky.network.TimelineCasesImpl import dagger.Module import dagger.Provides import javax.inject.Singleton /** * Created by charlag on 3/21/18. */ @Module class AppModule { @Provides fun providesApplication(app: TuskyApplication): Application = app @Provides fun providesContext(app: Application): Context = app @Provides fun providesSharedPreferences(app: Application): SharedPreferences { return PreferenceManager.getDefaultSharedPreferences(app) } @Provides fun providesBroadcastManager(app: Application): LocalBroadcastManager { return LocalBroadcastManager.getInstance(app) } @Provides fun providesTimelineUseCases(api: MastodonApi, eventHub: EventHub): TimelineCases { return TimelineCasesImpl(api, eventHub) } @Provides @Singleton fun providesAccountManager(app: TuskyApplication): AccountManager { return app.serviceLocator.get(AccountManager::class.java) } @Provides @Singleton fun providesEventHub(): EventHub = EventHubImpl @Provides @Singleton fun providesDatabase(app: TuskyApplication): AppDatabase { return app.serviceLocator.get(AppDatabase::class.java) } }