Skip to content

Commit dc26134

Browse files
authored
Reduce boilerplate in each Activity in the way the ViewModel is obtained (#341)
1 parent 83d189e commit dc26134

File tree

13 files changed

+22
-96
lines changed

13 files changed

+22
-96
lines changed

app/src/main/java/com/duckduckgo/app/bookmarks/ui/BookmarksActivity.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package com.duckduckgo.app.bookmarks.ui
1818

1919
import android.app.AlertDialog
2020
import android.arch.lifecycle.Observer
21-
import android.arch.lifecycle.ViewModelProviders
2221
import android.content.Context
2322
import android.content.Intent
2423
import android.net.Uri
@@ -35,7 +34,6 @@ import com.duckduckgo.app.bookmarks.db.BookmarkEntity
3534
import com.duckduckgo.app.browser.BrowserActivity
3635
import com.duckduckgo.app.browser.R
3736
import com.duckduckgo.app.global.DuckDuckGoActivity
38-
import com.duckduckgo.app.global.ViewModelFactory
3937
import com.duckduckgo.app.global.baseHost
4038
import com.duckduckgo.app.global.faviconLocation
4139
import com.duckduckgo.app.global.image.GlideApp
@@ -46,18 +44,13 @@ import kotlinx.android.synthetic.main.include_toolbar.*
4644
import kotlinx.android.synthetic.main.view_bookmark_entry.view.*
4745
import org.jetbrains.anko.alert
4846
import timber.log.Timber
49-
import javax.inject.Inject
5047

5148
class BookmarksActivity : DuckDuckGoActivity() {
5249

53-
@Inject
54-
lateinit var viewModelFactory: ViewModelFactory
5550
lateinit var adapter: BookmarksAdapter
5651
private var deleteDialog: AlertDialog? = null
5752

58-
private val viewModel: BookmarksViewModel by lazy {
59-
ViewModelProviders.of(this, viewModelFactory).get(BookmarksViewModel::class.java)
60-
}
53+
private val viewModel: BookmarksViewModel by bindViewModel()
6154

6255
override fun onCreate(savedInstanceState: Bundle?) {
6356
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/browser/BrowserActivity.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.duckduckgo.app.browser
1818

1919
import android.arch.lifecycle.Observer
20-
import android.arch.lifecycle.ViewModelProviders
2120
import android.content.Context
2221
import android.content.Intent
2322
import android.content.Intent.EXTRA_TEXT
@@ -29,7 +28,6 @@ import com.duckduckgo.app.browser.BrowserViewModel.Command.Query
2928
import com.duckduckgo.app.browser.BrowserViewModel.Command.Refresh
3029
import com.duckduckgo.app.feedback.ui.FeedbackActivity
3130
import com.duckduckgo.app.global.DuckDuckGoActivity
32-
import com.duckduckgo.app.global.ViewModelFactory
3331
import com.duckduckgo.app.global.intentText
3432
import com.duckduckgo.app.global.view.ClearPersonalDataAction
3533
import com.duckduckgo.app.global.view.FireDialog
@@ -46,9 +44,6 @@ import javax.inject.Inject
4644

4745
class BrowserActivity : DuckDuckGoActivity() {
4846

49-
@Inject
50-
lateinit var viewModelFactory: ViewModelFactory
51-
5247
@Inject
5348
lateinit var clearPersonalDataAction: ClearPersonalDataAction
5449

@@ -57,9 +52,7 @@ class BrowserActivity : DuckDuckGoActivity() {
5752

5853
private var currentTab: BrowserTabFragment? = null
5954

60-
private val viewModel: BrowserViewModel by lazy {
61-
ViewModelProviders.of(this, viewModelFactory).get(BrowserViewModel::class.java)
62-
}
55+
private val viewModel: BrowserViewModel by bindViewModel()
6356

6457
override fun onCreate(savedInstanceState: Bundle?) {
6558
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/feedback/ui/FeedbackActivity.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.duckduckgo.app.feedback.ui
1818

1919
import android.arch.lifecycle.Observer
20-
import android.arch.lifecycle.ViewModelProviders
2120
import android.content.Context
2221
import android.content.Intent
2322
import android.os.Bundle
@@ -28,21 +27,14 @@ import com.duckduckgo.app.browser.R
2827
import com.duckduckgo.app.feedback.ui.FeedbackViewModel.Command
2928
import com.duckduckgo.app.feedback.ui.FeedbackViewModel.ViewState
3029
import com.duckduckgo.app.global.DuckDuckGoActivity
31-
import com.duckduckgo.app.global.ViewModelFactory
3230
import com.duckduckgo.app.global.view.TextChangedWatcher
3331
import kotlinx.android.synthetic.main.activity_feedback.*
3432
import org.jetbrains.anko.longToast
35-
import javax.inject.Inject
3633

3734

3835
class FeedbackActivity : DuckDuckGoActivity() {
3936

40-
@Inject
41-
lateinit var viewModelFactory: ViewModelFactory
42-
43-
private val viewModel: FeedbackViewModel by lazy {
44-
ViewModelProviders.of(this, viewModelFactory).get(FeedbackViewModel::class.java)
45-
}
37+
private val viewModel: FeedbackViewModel by bindViewModel()
4638

4739
override fun onCreate(savedInstanceState: Bundle?) {
4840
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/fire/FireActivity.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import android.animation.AnimatorListenerAdapter
2121
import android.app.Activity
2222
import android.app.ActivityManager
2323
import android.arch.lifecycle.Observer
24-
import android.arch.lifecycle.ViewModelProviders
2524
import android.content.Context
2625
import android.content.Intent
2726
import android.os.Bundle
@@ -30,9 +29,7 @@ import android.support.v4.app.ActivityOptionsCompat
3029
import com.duckduckgo.app.browser.BrowserActivity
3130
import com.duckduckgo.app.browser.R
3231
import com.duckduckgo.app.global.DuckDuckGoActivity
33-
import com.duckduckgo.app.global.ViewModelFactory
3432
import kotlinx.android.synthetic.main.activity_fire.*
35-
import javax.inject.Inject
3633

3734
/**
3835
* Activity which is responsible for killing the main process and restarting it. This Activity will automatically finish itself after a brief time.
@@ -49,12 +46,7 @@ import javax.inject.Inject
4946
*/
5047
class FireActivity : DuckDuckGoActivity() {
5148

52-
@Inject
53-
lateinit var viewModelFactory: ViewModelFactory
54-
55-
private val viewModel: FireViewModel by lazy {
56-
ViewModelProviders.of(this, viewModelFactory).get(FireViewModel::class.java)
57-
}
49+
private val viewModel: FireViewModel by bindViewModel()
5850

5951
override fun onCreate(savedInstanceState: Bundle?) {
6052
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/global/DuckDuckGoActivity.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,20 @@
1616

1717
package com.duckduckgo.app.global
1818

19+
import android.arch.lifecycle.ViewModel
20+
import android.arch.lifecycle.ViewModelProviders
1921
import android.os.Bundle
2022
import android.support.v7.app.AppCompatActivity
2123
import android.view.MenuItem
2224
import dagger.android.AndroidInjection
25+
import javax.inject.Inject
2326

2427

2528
abstract class DuckDuckGoActivity : AppCompatActivity() {
2629

30+
@Inject
31+
lateinit var viewModelFactory: ViewModelFactory
32+
2733
override fun onCreate(savedInstanceState: Bundle?) {
2834
AndroidInjection.inject(this)
2935
super.onCreate(savedInstanceState)
@@ -38,4 +44,6 @@ abstract class DuckDuckGoActivity : AppCompatActivity() {
3844
}
3945
return super.onOptionsItemSelected(item)
4046
}
47+
48+
protected inline fun <reified V : ViewModel> bindViewModel() = lazy { ViewModelProviders.of(this, viewModelFactory).get(V::class.java) }
4149
}

app/src/main/java/com/duckduckgo/app/launch/LaunchActivity.kt

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,16 @@
1717
package com.duckduckgo.app.launch
1818

1919
import android.arch.lifecycle.Observer
20-
import android.arch.lifecycle.ViewModelProviders
2120
import android.os.Bundle
2221
import com.duckduckgo.app.browser.BrowserActivity
2322
import com.duckduckgo.app.browser.R
2423
import com.duckduckgo.app.global.DuckDuckGoActivity
25-
import com.duckduckgo.app.global.ViewModelFactory
2624
import com.duckduckgo.app.onboarding.ui.OnboardingActivity
27-
import javax.inject.Inject
2825

2926

3027
class LaunchActivity : DuckDuckGoActivity() {
3128

32-
@Inject
33-
lateinit var viewModelFactory: ViewModelFactory
34-
35-
private val viewModel: LaunchViewModel by lazy {
36-
ViewModelProviders.of(this, viewModelFactory).get(LaunchViewModel::class.java)
37-
}
29+
private val viewModel: LaunchViewModel by bindViewModel()
3830

3931
override fun onCreate(savedInstanceState: Bundle?) {
4032
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/onboarding/ui/OnboardingActivity.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package com.duckduckgo.app.onboarding.ui
1818

19-
import android.arch.lifecycle.ViewModelProviders
2019
import android.content.Context
2120
import android.content.Intent
2221
import android.os.Build
@@ -27,7 +26,6 @@ import android.support.v4.content.ContextCompat
2726
import android.view.View
2827
import com.duckduckgo.app.browser.R
2928
import com.duckduckgo.app.global.DuckDuckGoActivity
30-
import com.duckduckgo.app.global.ViewModelFactory
3129
import com.duckduckgo.app.global.view.ColorCombiner
3230
import com.duckduckgo.app.global.view.launchDefaultAppActivity
3331
import com.duckduckgo.app.onboarding.ui.ColorChangingPageListener.NewColorListener
@@ -37,17 +35,12 @@ import javax.inject.Inject
3735

3836
class OnboardingActivity : DuckDuckGoActivity() {
3937

40-
@Inject
41-
lateinit var viewModelFactory: ViewModelFactory
42-
4338
@Inject
4439
lateinit var colorCombiner: ColorCombiner
4540

4641
private lateinit var viewPageAdapter: PagerAdapter
4742

48-
private val viewModel: OnboardingViewModel by lazy {
49-
ViewModelProviders.of(this, viewModelFactory).get(OnboardingViewModel::class.java)
50-
}
43+
private val viewModel: OnboardingViewModel by bindViewModel()
5144

5245
override fun onCreate(savedInstanceState: Bundle?) {
5346
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyDashboardActivity.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ package com.duckduckgo.app.privacy.ui
1818

1919
import android.app.Activity
2020
import android.arch.lifecycle.Observer
21-
import android.arch.lifecycle.ViewModelProviders
2221
import android.content.Context
2322
import android.content.Intent
2423
import android.os.Bundle
2524
import android.support.v4.content.ContextCompat
2625
import android.view.View
2726
import com.duckduckgo.app.browser.R
2827
import com.duckduckgo.app.global.DuckDuckGoActivity
29-
import com.duckduckgo.app.global.ViewModelFactory
3028
import com.duckduckgo.app.global.model.Site
3129
import com.duckduckgo.app.global.view.hide
3230
import com.duckduckgo.app.global.view.html
@@ -44,8 +42,6 @@ import javax.inject.Inject
4442

4543
class PrivacyDashboardActivity : DuckDuckGoActivity() {
4644

47-
@Inject
48-
lateinit var viewModelFactory: ViewModelFactory
4945
@Inject
5046
lateinit var repository: TabRepository
5147
@Inject
@@ -54,9 +50,7 @@ class PrivacyDashboardActivity : DuckDuckGoActivity() {
5450
private val trackersRenderer = TrackersRenderer()
5551
private val upgradeRenderer = PrivacyUpgradeRenderer()
5652

57-
private val viewModel: PrivacyDashboardViewModel by lazy {
58-
ViewModelProviders.of(this, viewModelFactory).get(PrivacyDashboardViewModel::class.java)
59-
}
53+
private val viewModel: PrivacyDashboardViewModel by bindViewModel()
6054

6155
override fun onCreate(savedInstanceState: Bundle?) {
6256
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/privacy/ui/PrivacyPracticesActivity.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.duckduckgo.app.privacy.ui
1818

1919
import android.arch.lifecycle.Observer
20-
import android.arch.lifecycle.ViewModelProviders
2120
import android.content.Context
2221
import android.content.Intent
2322
import android.os.Bundle
@@ -27,7 +26,6 @@ import com.duckduckgo.app.browser.BrowserActivity
2726
import com.duckduckgo.app.browser.R
2827
import com.duckduckgo.app.global.AppUrl.Url
2928
import com.duckduckgo.app.global.DuckDuckGoActivity
30-
import com.duckduckgo.app.global.ViewModelFactory
3129
import com.duckduckgo.app.global.model.Site
3230
import com.duckduckgo.app.privacy.renderer.banner
3331
import com.duckduckgo.app.privacy.renderer.text
@@ -39,17 +37,12 @@ import javax.inject.Inject
3937

4038
class PrivacyPracticesActivity : DuckDuckGoActivity() {
4139

42-
@Inject
43-
lateinit var viewModelFactory: ViewModelFactory
44-
4540
@Inject
4641
lateinit var repository: TabRepository
4742

4843
private val practicesAdapter = PrivacyPracticesAdapter()
4944

50-
private val viewModel: PrivacyPracticesViewModel by lazy {
51-
ViewModelProviders.of(this, viewModelFactory).get(PrivacyPracticesViewModel::class.java)
52-
}
45+
private val viewModel: PrivacyPracticesViewModel by bindViewModel()
5346

5447
override fun onCreate(savedInstanceState: Bundle?) {
5548
super.onCreate(savedInstanceState)

app/src/main/java/com/duckduckgo/app/privacy/ui/ScorecardActivity.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.duckduckgo.app.privacy.ui
1818

1919
import android.arch.lifecycle.Observer
20-
import android.arch.lifecycle.ViewModelProviders
2120
import android.content.Context
2221
import android.content.Intent
2322
import android.os.Bundle
@@ -26,9 +25,8 @@ import android.view.View
2625
import android.widget.TextView
2726
import com.duckduckgo.app.browser.R
2827
import com.duckduckgo.app.global.DuckDuckGoActivity
29-
import com.duckduckgo.app.global.ViewModelFactory
30-
import com.duckduckgo.app.global.view.html
3128
import com.duckduckgo.app.global.model.Site
29+
import com.duckduckgo.app.global.view.html
3230
import com.duckduckgo.app.privacy.renderer.*
3331
import com.duckduckgo.app.tabs.model.TabRepository
3432
import com.duckduckgo.app.tabs.tabId
@@ -39,14 +37,11 @@ import javax.inject.Inject
3937

4038
class ScorecardActivity : DuckDuckGoActivity() {
4139

42-
@Inject lateinit var viewModelFactory: ViewModelFactory
4340
@Inject lateinit var repository: TabRepository
4441
private val trackersRenderer = TrackersRenderer()
4542
private val upgradeRenderer = PrivacyUpgradeRenderer()
4643

47-
private val viewModel: ScorecardViewModel by lazy {
48-
ViewModelProviders.of(this, viewModelFactory).get(ScorecardViewModel::class.java)
49-
}
44+
private val viewModel: ScorecardViewModel by bindViewModel()
5045

5146
override fun onCreate(savedInstanceState: Bundle?) {
5247
super.onCreate(savedInstanceState)

0 commit comments

Comments
 (0)