From 16b504adfe9e18dc432d42c12c5c4ed2245a123d Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Thu, 26 Apr 2018 20:16:15 +0200
Subject: [PATCH] Moved ViewModel provisioning into Dagger graph

Signed-off-by: Janne Koschinski <janne@kuschku.de>
---
 .../quasseldroid/dagger/ActivityBaseModule.kt | 37 +++++++++++++
 .../quasseldroid/dagger/ActivityModule.kt     | 54 +++++++++----------
 .../ui/chat/ChatFragmentProvider.kt           |  4 +-
 .../channel/ChannelInfoFragmentProvider.kt    |  4 +-
 .../info/user/UserInfoFragmentProvider.kt     |  4 +-
 .../ui/chat/input/ChatlineFragment.kt         |  5 +-
 .../ui/chat/topic/TopicFragment.kt            |  5 +-
 .../ui/chat/topic/TopicFragmentProvider.kt    |  4 +-
 .../about/AboutFragmentProvider.kt            |  4 +-
 .../client/ClientSettingsFragmentProvider.kt  |  4 +-
 .../crash/CrashFragmentProvider.kt            |  4 +-
 .../license/LicenseFragmentProvider.kt        |  4 +-
 .../whitelist/WhitelistFragmentProvider.kt    |  4 +-
 .../CoreSettingsFragmentProvider.kt           |  4 +-
 .../aliasitem/AliasItemFragment.kt            |  5 +-
 .../aliasitem/AliasItemFragmentProvider.kt    |  4 +-
 .../aliaslist/AliasListFragmentProvider.kt    |  4 +-
 .../ChatlistCreateFragmentProvider.kt         |  4 +-
 .../chatlist/ChatlistEditFragmentProvider.kt  |  4 +-
 .../HighlightListFragmentProvider.kt          |  4 +-
 .../HighlightRuleFragmentProvider.kt          |  4 +-
 .../IdentityCreateFragmentProvider.kt         |  4 +-
 .../identity/IdentityEditFragmentProvider.kt  |  4 +-
 .../ignoreitem/IgnoreItemFragmentProvider.kt  |  4 +-
 .../ignorelist/IgnoreListFragmentProvider.kt  |  4 +-
 .../network/NetworkCreateFragmentProvider.kt  |  4 +-
 .../network/NetworkEditFragmentProvider.kt    |  4 +-
 .../NetworkConfigFragmentProvider.kt          |  4 +-
 .../NetworkServerFragmentProvider.kt          |  4 +-
 .../setup/accounts/edit/AccountEditModule.kt  |  4 +-
 .../AccountSelectionFragmentProvider.kt       |  4 +-
 .../selection/AccountSelectionSlide.kt        |  6 ++-
 .../setup/AccountSetupFragmentProvider.kt     |  4 +-
 .../util/service/ServiceBoundActivity.kt      |  5 +-
 .../util/service/ServiceBoundFragment.kt      |  9 ++--
 35 files changed, 137 insertions(+), 97 deletions(-)
 create mode 100644 app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt

diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt
new file mode 100644
index 000000000..44e5bbead
--- /dev/null
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityBaseModule.kt
@@ -0,0 +1,37 @@
+package de.kuschku.quasseldroid.dagger
+
+import android.arch.lifecycle.ViewModelProvider
+import android.arch.lifecycle.ViewModelProviders
+import android.content.Context
+import android.support.v4.app.FragmentActivity
+import dagger.Module
+import dagger.Provides
+import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountViewModel
+import de.kuschku.quasseldroid.viewmodel.EditorViewModel
+import de.kuschku.quasseldroid.viewmodel.QuasselViewModel
+
+@Module
+object ActivityBaseModule {
+  @Provides
+  @JvmStatic
+  fun bindContext(activity: FragmentActivity): Context = activity
+
+  @Provides
+  @JvmStatic
+  fun provideViewModelProvider(activity: FragmentActivity) = ViewModelProviders.of(activity)
+
+  @Provides
+  @JvmStatic
+  fun provideQuasselViewModel(viewModelProvider: ViewModelProvider) =
+    viewModelProvider[QuasselViewModel::class.java]
+
+  @Provides
+  @JvmStatic
+  fun provideAccountViewModel(viewModelProvider: ViewModelProvider) =
+    viewModelProvider[AccountViewModel::class.java]
+
+  @Provides
+  @JvmStatic
+  fun provideEditorViewModel(viewModelProvider: ViewModelProvider) =
+    viewModelProvider[EditorViewModel::class.java]
+}
diff --git a/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityModule.kt b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityModule.kt
index daef1c0e8..9b59628b8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/dagger/ActivityModule.kt
@@ -85,111 +85,111 @@ import de.kuschku.quasseldroid.ui.setup.accounts.setup.AccountSetupFragmentProvi
 @Module
 abstract class ActivityModule {
   @ActivityScope
-  @ContributesAndroidInjector(modules = [ChatActivityModule::class, ChatFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [ChatActivityModule::class, ChatFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindChatActivity(): ChatActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [UserInfoFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [UserInfoFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindUserInfoActivity(): UserInfoActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [ChannelInfoFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [ChannelInfoFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindChannelInfoActivity(): ChannelInfoActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [TopicFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [TopicFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindTopicActivity(): TopicActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [ClientSettingsFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [ClientSettingsFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindClientSettingsActivity(): ClientSettingsActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [WhitelistFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [WhitelistFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindWhitelistActivity(): WhitelistActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [CrashFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [CrashFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindCrashActivity(): CrashActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AboutFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AboutFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAboutActivity(): AboutActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [LicenseFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [LicenseFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindLicenseActivity(): LicenseActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [CoreSettingsFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [CoreSettingsFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindCoreSettingsActivity(): CoreSettingsActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [NetworkCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [NetworkCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindNetworkCreateActivity(): NetworkCreateActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [NetworkEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [NetworkEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindNetworkEditActivity(): NetworkEditActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [NetworkServerFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [NetworkServerFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindNetworkServerActivity(): NetworkServerActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [IdentityCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [IdentityCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindIdentityCreateActivity(): IdentityCreateActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [IdentityEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [IdentityEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindIdentityEditActivity(): IdentityEditActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [ChatlistCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [ChatlistCreateFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindChatListCreateActivity(): ChatlistCreateActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [ChatlistEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [ChatlistEditFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindChatListEditActivity(): ChatlistEditActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [IgnoreListFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [IgnoreListFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindIgnoreListActivity(): IgnoreListActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [IgnoreItemFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [IgnoreItemFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindIgnoreItemActivity(): IgnoreItemActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [HighlightListFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [HighlightListFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindHighlightListActivity(): HighlightListActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [HighlightRuleFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [HighlightRuleFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindHighlightRuleActivity(): HighlightRuleActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AliasListFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AliasListFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAliasListActivity(): AliasListActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AliasItemFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AliasItemFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAliasItemActivity(): AliasItemActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [NetworkConfigFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [NetworkConfigFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindNetworkConfigActivity(): NetworkConfigActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AccountSetupFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AccountSetupFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAccountSetupActivity(): AccountSetupActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AccountSelectionFragmentProvider::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AccountSelectionFragmentProvider::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAccountSelectionActivity(): AccountSelectionActivity
 
   @ActivityScope
-  @ContributesAndroidInjector(modules = [AccountEditModule::class, SettingsModule::class, DatabaseModule::class])
+  @ContributesAndroidInjector(modules = [AccountEditModule::class, SettingsModule::class, DatabaseModule::class, ActivityBaseModule::class])
   abstract fun bindAccountEditActivity(): AccountEditActivity
 
   @ActivityScope
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
index 35d091d90..ce591728a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/ChatFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.chat
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -34,7 +34,7 @@ import de.kuschku.quasseldroid.ui.chat.nicks.NickListFragment
 @Module
 abstract class ChatFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: ChatActivity): Context
+  abstract fun bindFragmentActivity(activity: ChatActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindBufferViewConfigFragment(): BufferViewConfigFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
index ee329dbb9..876d1c6b6 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/channel/ChannelInfoFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.channel
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class ChannelInfoFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: ChannelInfoActivity): Context
+  abstract fun bindFragmentActivity(activity: ChannelInfoActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindChannelInfoFragment(): ChannelInfoFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
index 06167bc89..225171f12 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/info/user/UserInfoFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.info.user
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class UserInfoFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: UserInfoActivity): Context
+  abstract fun bindFragmentActivity(activity: UserInfoActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindUserInfoFragment(): UserInfoFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
index b9f56f829..9e2eaae8c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/input/ChatlineFragment.kt
@@ -23,7 +23,6 @@
 package de.kuschku.quasseldroid.ui.chat.input
 
 import android.arch.lifecycle.Observer
-import android.arch.lifecycle.ViewModelProviders
 import android.os.Bundle
 import android.support.v7.widget.AppCompatImageButton
 import android.support.v7.widget.DefaultItemAnimator
@@ -88,6 +87,9 @@ class ChatlineFragment : ServiceBoundFragment() {
   @Inject
   lateinit var autoCompleteAdapter: AutoCompleteAdapter
 
+  @Inject
+  lateinit var editorViewModel: EditorViewModel
+
   lateinit var editorHelper: EditorHelper
 
   lateinit var autoCompleteHelper: AutoCompleteHelper
@@ -107,7 +109,6 @@ class ChatlineFragment : ServiceBoundFragment() {
     val view = inflater.inflate(R.layout.fragment_chatline, container, false)
     ButterKnife.bind(this, view)
 
-    val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java)
     editorViewModel.quasselViewModel.onNext(viewModel)
 
     autoCompleteHelper = AutoCompleteHelper(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
index 4ae8faaa7..152acefcc 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragment.kt
@@ -23,7 +23,6 @@
 package de.kuschku.quasseldroid.ui.chat.topic
 
 import android.arch.lifecycle.Observer
-import android.arch.lifecycle.ViewModelProviders
 import android.os.Bundle
 import android.support.v7.widget.DefaultItemAnimator
 import android.support.v7.widget.LinearLayoutManager
@@ -74,6 +73,9 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable {
   @Inject
   lateinit var autoCompleteAdapter: AutoCompleteAdapter
 
+  @Inject
+  lateinit var editorViewModel: EditorViewModel
+
   private lateinit var editorHelper: EditorHelper
 
   override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
@@ -81,7 +83,6 @@ class TopicFragment : SettingsFragment(), SettingsFragment.Savable {
     val view = inflater.inflate(R.layout.fragment_topic, container, false)
     ButterKnife.bind(this, view)
 
-    val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java)
     editorViewModel.quasselViewModel.onNext(viewModel)
 
     val autoCompleteHelper = AutoCompleteHelper(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
index aaa5c157c..45d32d9eb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/chat/topic/TopicFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.chat.topic
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class TopicFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: TopicActivity): Context
+  abstract fun bindFragmentActivity(activity: TopicActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindTopicFragment(): TopicFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
index 68f43c681..40f529ced 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/about/AboutFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.about
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class AboutFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: AboutActivity): Context
+  abstract fun bindFragmentActivity(activity: AboutActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindAboutFragment(): AboutFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
index 674c9d720..304b22e62 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/client/ClientSettingsFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.client
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class ClientSettingsFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: ClientSettingsActivity): Context
+  abstract fun bindFragmentActivity(activity: ClientSettingsActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindClientSettingsFragment(): ClientSettingsFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
index db045a545..3be00ebb5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/crash/CrashFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.crash
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class CrashFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: CrashActivity): Context
+  abstract fun bindFragmentActivity(activity: CrashActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindClientSettingsFragment(): CrashFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
index f8107fb53..14758b222 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/license/LicenseFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.license
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class LicenseFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: LicenseActivity): Context
+  abstract fun bindFragmentActivity(activity: LicenseActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindLicenseFragment(): LicenseFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
index 0f6f181bd..ef07f186f 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/clientsettings/whitelist/WhitelistFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.clientsettings.whitelist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class WhitelistFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: WhitelistActivity): Context
+  abstract fun bindFragmentActivity(activity: WhitelistActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindWhitelistFragment(): WhitelistFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
index 000ac271c..09bd1f719 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/CoreSettingsFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class CoreSettingsFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: CoreSettingsActivity): Context
+  abstract fun bindFragmentActivity(activity: CoreSettingsActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindCoreSettingsFragment(): CoreSettingsFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
index 253d2dc7a..22b6499cd 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragment.kt
@@ -23,7 +23,6 @@
 package de.kuschku.quasseldroid.ui.coresettings.aliasitem
 
 import android.app.Activity
-import android.arch.lifecycle.ViewModelProviders
 import android.content.Intent
 import android.os.Bundle
 import android.support.v7.widget.DefaultItemAnimator
@@ -80,6 +79,9 @@ class AliasItemFragment : SettingsFragment(), SettingsFragment.Savable,
   @Inject
   lateinit var autoCompleteAdapter: AutoCompleteAdapter
 
+  @Inject
+  lateinit var editorViewModel: EditorViewModel
+
   private lateinit var editorHelper: EditorHelper
 
   private var rule: IAliasManager.Alias? = null
@@ -94,7 +96,6 @@ class AliasItemFragment : SettingsFragment(), SettingsFragment.Savable,
       rule = it
     }
 
-    val editorViewModel = ViewModelProviders.of(this).get(EditorViewModel::class.java)
     editorViewModel.quasselViewModel.onNext(viewModel)
 
     val autoCompleteHelper = AutoCompleteHelper(
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
index bfbeb0368..c9c882f04 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliasitem/AliasItemFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliasitem
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class AliasItemFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: AliasItemActivity): Context
+  abstract fun bindFragmentActivity(activity: AliasItemActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindAliasItemFragment(): AliasItemFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
index 129e7bdea..100e7b342 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/aliaslist/AliasListFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.aliaslist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class AliasListFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: AliasListActivity): Context
+  abstract fun bindFragmentActivity(activity: AliasListActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindAliasListFragment(): AliasListFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
index a17d733b7..3c8aa28ac 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistCreateFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class ChatlistCreateFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: ChatlistCreateActivity): Context
+  abstract fun bindFragmentActivity(activity: ChatlistCreateActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindChatListCreateFragment(): ChatListCreateFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
index c3c578ccb..938c3f195 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/chatlist/ChatlistEditFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.chatlist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class ChatlistEditFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: ChatlistEditActivity): Context
+  abstract fun bindFragmentActivity(activity: ChatlistEditActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindChatListEditFragment(): ChatListEditFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
index 9aeeec1e9..685c3b0b4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightlist/HighlightListFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightlist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class HighlightListFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: HighlightListActivity): Context
+  abstract fun bindFragmentActivity(activity: HighlightListActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindHighlightListFragment(): HighlightListFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
index f051118dd..62db0e492 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/highlightrule/HighlightRuleFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.highlightrule
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class HighlightRuleFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: HighlightRuleActivity): Context
+  abstract fun bindFragmentActivity(activity: HighlightRuleActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindHighlightRuleFragment(): HighlightRuleFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
index a42c6ebd6..00695aca8 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityCreateFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class IdentityCreateFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: IdentityCreateActivity): Context
+  abstract fun bindFragmentActivity(activity: IdentityCreateActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindIdentityCreateFragment(): IdentityCreateFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
index 767a69982..23ae48862 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/identity/IdentityEditFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.identity
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class IdentityEditFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: IdentityEditActivity): Context
+  abstract fun bindFragmentActivity(activity: IdentityEditActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindIdentityEditFragment(): IdentityEditFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
index abc12c455..642cc5136 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignoreitem/IgnoreItemFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignoreitem
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class IgnoreItemFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: IgnoreItemActivity): Context
+  abstract fun bindFragmentActivity(activity: IgnoreItemActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindIgnoreItemFragment(): IgnoreItemFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
index 00d0d4c2d..676de8beb 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/ignorelist/IgnoreListFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.ignorelist
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class IgnoreListFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: IgnoreListActivity): Context
+  abstract fun bindFragmentActivity(activity: IgnoreListActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindIgnoreFragment(): IgnoreListFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
index 012bd1f9f..5a3299ba4 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkCreateFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class NetworkCreateFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: NetworkCreateActivity): Context
+  abstract fun bindFragmentActivity(activity: NetworkCreateActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindNetworkCreateFragment(): NetworkCreateFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
index b79250c5a..c84585854 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/network/NetworkEditFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.network
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class NetworkEditFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: NetworkEditActivity): Context
+  abstract fun bindFragmentActivity(activity: NetworkEditActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindNetworkEditFragment(): NetworkEditFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
index 20b85552d..33993d9f5 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkconfig/NetworkConfigFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkconfig
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class NetworkConfigFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: NetworkConfigActivity): Context
+  abstract fun bindFragmentActivity(activity: NetworkConfigActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindNetworkConfigFragment(): NetworkConfigFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
index 38191184e..9886571b1 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/coresettings/networkserver/NetworkServerFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.coresettings.networkserver
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class NetworkServerFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: NetworkServerActivity): Context
+  abstract fun bindFragmentActivity(activity: NetworkServerActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindNetworkServerFragment(): NetworkServerFragment
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
index 8e7e688c0..5d2e19c9c 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/edit/AccountEditModule.kt
@@ -22,12 +22,12 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.edit
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 
 @Module
 abstract class AccountEditModule {
   @Binds
-  abstract fun bindContext(activity: AccountEditActivity): Context
+  abstract fun bindFragmentActivity(activity: AccountEditActivity): FragmentActivity
 }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
index f85903e62..ef739d9a3 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class AccountSelectionFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: AccountSelectionActivity): Context
+  abstract fun bindFragmentActivity(activity: AccountSelectionActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindAccountSelectionSlide(): AccountSelectionSlide
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
index 1a7b81b65..901b96c0a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/selection/AccountSelectionSlide.kt
@@ -24,7 +24,6 @@ package de.kuschku.quasseldroid.ui.setup.accounts.selection
 
 import android.app.Activity
 import android.arch.lifecycle.Observer
-import android.arch.lifecycle.ViewModelProviders
 import android.content.Intent
 import android.os.Bundle
 import android.support.v7.widget.DefaultItemAnimator
@@ -42,11 +41,15 @@ import de.kuschku.quasseldroid.ui.setup.accounts.edit.AccountEditActivity
 import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity.Companion.REQUEST_CREATE_FIRST
 import de.kuschku.quasseldroid.ui.setup.accounts.selection.AccountSelectionActivity.Companion.REQUEST_CREATE_NEW
 import de.kuschku.quasseldroid.ui.setup.accounts.setup.AccountSetupActivity
+import javax.inject.Inject
 
 class AccountSelectionSlide : SlideFragment() {
   @BindView(R.id.account_list)
   lateinit var accountList: RecyclerView
 
+  @Inject
+  lateinit var accountViewModel: AccountViewModel
+
   override fun isValid() = adapter?.selectedItemId ?: -1L != -1L
 
   override val title = R.string.slide_account_select_title
@@ -66,7 +69,6 @@ class AccountSelectionSlide : SlideFragment() {
                                savedInstanceState: Bundle?): View {
     val view = inflater.inflate(R.layout.setup_select_account, container, false)
     ButterKnife.bind(this, view)
-    val accountViewModel = ViewModelProviders.of(this).get(AccountViewModel::class.java)
     val firstObserver = object : Observer<List<AccountDatabase.Account>?> {
       override fun onChanged(t: List<AccountDatabase.Account>?) {
         if (t?.isEmpty() != false)
diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
index 21c910409..1a24f9b90 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/ui/setup/accounts/setup/AccountSetupFragmentProvider.kt
@@ -22,7 +22,7 @@
 
 package de.kuschku.quasseldroid.ui.setup.accounts.setup
 
-import android.content.Context
+import android.support.v4.app.FragmentActivity
 import dagger.Binds
 import dagger.Module
 import dagger.android.ContributesAndroidInjector
@@ -30,7 +30,7 @@ import dagger.android.ContributesAndroidInjector
 @Module
 abstract class AccountSetupFragmentProvider {
   @Binds
-  abstract fun bindContext(activity: AccountSetupActivity): Context
+  abstract fun bindFragmentActivity(activity: AccountSetupActivity): FragmentActivity
 
   @ContributesAndroidInjector
   abstract fun bindAccountSetupConnectionSlide(): AccountSetupConnectionSlide
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
index 821eb6f25..5da403c0a 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundActivity.kt
@@ -23,7 +23,6 @@
 package de.kuschku.quasseldroid.util.service
 
 import android.app.Activity
-import android.arch.lifecycle.ViewModelProviders
 import android.content.Context
 import android.content.Intent
 import android.content.SharedPreferences
@@ -74,7 +73,8 @@ abstract class ServiceBoundActivity : ThemedActivity(),
   @Inject
   lateinit var connectionSettings: ConnectionSettings
 
-  protected lateinit var viewModel: QuasselViewModel
+  @Inject
+  lateinit var viewModel: QuasselViewModel
 
   protected var accountId: Long = -1
 
@@ -84,7 +84,6 @@ abstract class ServiceBoundActivity : ThemedActivity(),
     connection.context = this
     checkConnection()
     super.onCreate(savedInstanceState)
-    viewModel = ViewModelProviders.of(this)[QuasselViewModel::class.java]
     viewModel.backendWrapper.onNext(this.backend)
     updateRecentsHeader()
   }
diff --git a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
index 76946a8d1..ed86c0137 100644
--- a/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
+++ b/app/src/main/java/de/kuschku/quasseldroid/util/service/ServiceBoundFragment.kt
@@ -22,7 +22,6 @@
 
 package de.kuschku.quasseldroid.util.service
 
-import android.arch.lifecycle.ViewModelProviders
 import android.content.Context
 import android.os.Bundle
 import dagger.android.support.DaggerFragment
@@ -31,14 +30,16 @@ import de.kuschku.libquassel.util.Optional
 import de.kuschku.quasseldroid.Keys
 import de.kuschku.quasseldroid.viewmodel.QuasselViewModel
 import io.reactivex.subjects.BehaviorSubject
+import javax.inject.Inject
 
 abstract class ServiceBoundFragment : DaggerFragment() {
+  @Inject
+  lateinit var viewModel: QuasselViewModel
+
   private val connection = BackendServiceConnection()
   protected val backend: BehaviorSubject<Optional<Backend>>
     get() = connection.backend
 
-  protected lateinit var viewModel: QuasselViewModel
-
   protected fun runInBackground(f: () -> Unit) {
     connection.backend.value.ifPresent {
       it.sessionManager().handlerService.backend(f)
@@ -60,8 +61,6 @@ abstract class ServiceBoundFragment : DaggerFragment() {
     connection.context = context
     super.onCreate(savedInstanceState)
     connection.start()
-
-    viewModel = ViewModelProviders.of(requireActivity())[QuasselViewModel::class.java]
   }
 
   override fun onStart() {
-- 
GitLab