Dependency injection improvement (#596)
* inject MastodonApi into LoginActivity * inject AccountManager into MainActivity * inject AccountManager into SplashActivity, convert to Kotlin * inject AccountManager into AccountActivity * inject AccountManager into LoginActivity * inject AccountManager into NotificationsFragment and NotificationClearBroadcastReceiver, fix MainActivity * ooops * use same OkHttpClient for Retrofit & Picasso * fix ordering of okhttp interceptors * remove dependencies on TuskyApplication * bugfixmain
parent
8894908a9d
commit
3a873df06f
@ -1,48 +0,0 @@ |
||||
/* Copyright 2017 Andrew Dawson |
||||
* |
||||
* 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 <http://www.gnu.org/licenses>. */
|
||||
|
||||
package com.keylesspalace.tusky; |
||||
|
||||
import android.content.Intent; |
||||
import android.os.Bundle; |
||||
import android.support.v7.app.AppCompatActivity; |
||||
|
||||
import com.keylesspalace.tusky.db.AccountEntity; |
||||
import com.keylesspalace.tusky.db.AccountManager; |
||||
import com.keylesspalace.tusky.util.NotificationHelper; |
||||
|
||||
public class SplashActivity extends AppCompatActivity { |
||||
@Override |
||||
protected void onCreate(Bundle savedInstanceState) { |
||||
super.onCreate(savedInstanceState); |
||||
|
||||
/* Determine whether the user is currently logged in, and if so go ahead and load the |
||||
* timeline. Otherwise, start the activity_login screen. */ |
||||
|
||||
NotificationHelper.deleteLegacyNotificationChannels(this); |
||||
|
||||
AccountEntity activeAccount = TuskyApplication.getInstance(this).getServiceLocator() |
||||
.get(AccountManager.class).getActiveAccount(); |
||||
|
||||
Intent intent; |
||||
if (activeAccount != null) { |
||||
intent = new Intent(this, MainActivity.class); |
||||
} else { |
||||
intent = LoginActivity.getIntent(this, false); |
||||
} |
||||
startActivity(intent); |
||||
finish(); |
||||
} |
||||
} |
@ -0,0 +1,50 @@ |
||||
/* Copyright 2018 Conny Duck |
||||
* |
||||
* 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 <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky |
||||
|
||||
import android.content.Intent |
||||
import android.os.Bundle |
||||
import android.support.v7.app.AppCompatActivity |
||||
|
||||
import com.keylesspalace.tusky.db.AccountManager |
||||
import com.keylesspalace.tusky.di.Injectable |
||||
import com.keylesspalace.tusky.util.NotificationHelper |
||||
|
||||
import javax.inject.Inject |
||||
|
||||
class SplashActivity : AppCompatActivity(), Injectable { |
||||
|
||||
@Inject |
||||
lateinit var accountManager: AccountManager |
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) { |
||||
super.onCreate(savedInstanceState) |
||||
|
||||
/** delete old notification channels that were in use in Tusky 1.4 */ |
||||
NotificationHelper.deleteLegacyNotificationChannels(this) |
||||
|
||||
/** Determine whether the user is currently logged in, and if so go ahead and load the |
||||
* timeline. Otherwise, start the activity_login screen. */ |
||||
|
||||
val intent = if (accountManager.activeAccount != null) { |
||||
Intent(this, MainActivity::class.java) |
||||
} else { |
||||
LoginActivity.getIntent(this, false) |
||||
} |
||||
startActivity(intent) |
||||
finish() |
||||
} |
||||
} |
@ -0,0 +1,26 @@ |
||||
/* Copyright 2018 Conny Duck |
||||
* |
||||
* 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 <http://www.gnu.org/licenses>. */ |
||||
|
||||
package com.keylesspalace.tusky.di |
||||
|
||||
import com.keylesspalace.tusky.receiver.NotificationClearBroadcastReceiver |
||||
import dagger.Module |
||||
import dagger.android.ContributesAndroidInjector |
||||
|
||||
@Module |
||||
abstract class BroadcastReceiverModule { |
||||
@ContributesAndroidInjector |
||||
abstract fun contributeNotificationClearBroadcastReceiver() : NotificationClearBroadcastReceiver |
||||
} |
Loading…
Reference in new issue