/* 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 androidx.localbroadcastmanager.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) } }