Skip to content

Commit 2b5920e

Browse files
authored
Merge pull request #6894 from vector-im/feature/bma/remove_fragment_module
Remove fragment module
2 parents d85a164 + 4c2f853 commit 2b5920e

File tree

180 files changed

+1093
-1659
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+1093
-1659
lines changed

changelog.d/6894.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove FragmentModule and the Fragment factory. No need to Inject the constructor on your Fragment, just add @AndroidEntryPoint annotation and @Inject class members.

docs/hilt_migration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ Hilt is built on top of Dagger 2 and simplify usage by removing needs to create
77
When you create a new feature, you should have the following:
88

99
Annotate your Activity with @AndroidEntryPoint
10+
Annotate your Fragment with @AndroidEntryPoint
1011
If you have a BottomSheetFragment => Annotate it with @AndroidEntryPoint
11-
Otherwise => Add your Fragment to the FragmentModule
1212
Add your ViewModel.Factory to the MavericksViewModelModule
1313
Makes sure your ViewModel as the following code:
1414

tools/templates/ElementFeature/root/src/app_package/Fragment.kt.ftl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ import javax.inject.Inject
1818
data class ${fragmentArgsClass}() : Parcelable
1919
</#if>
2020

21-
//TODO add this fragment into FragmentModule
22-
class ${fragmentClass} @Inject constructor(
23-
private val viewModelFactory: ${viewModelClass}.Factory
24-
) : VectorBaseFragment(), ${viewModelClass}.Factory by viewModelFactory {
21+
@AndroidEntryPoint
22+
class ${fragmentClass}() :
23+
VectorBaseFragment(),
24+
${viewModelClass}.Factory by viewModelFactory {
2525

2626
<#if createFragmentArgs>
2727
private val fragmentArgs: ${fragmentArgsClass} by args()

vector/src/debug/java/im/vector/app/features/debug/leak/DebugMemoryLeaksFragment.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import im.vector.app.core.platform.VectorBaseFragment
2828
import im.vector.app.databinding.FragmentDebugMemoryLeaksBinding
2929

3030
@AndroidEntryPoint
31-
class DebugMemoryLeaksFragment : VectorBaseFragment<FragmentDebugMemoryLeaksBinding>() {
31+
class DebugMemoryLeaksFragment :
32+
VectorBaseFragment<FragmentDebugMemoryLeaksBinding>() {
3233

3334
private val viewModel: DebugMemoryLeaksViewModel by fragmentViewModel()
3435

vector/src/main/java/im/vector/app/core/di/ActivityEntryPoint.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
package im.vector.app.core.di
1818

19-
import androidx.fragment.app.FragmentFactory
2019
import androidx.lifecycle.ViewModelProvider
2120
import dagger.hilt.EntryPoint
2221
import dagger.hilt.InstallIn
@@ -25,6 +24,5 @@ import dagger.hilt.android.components.ActivityComponent
2524
@InstallIn(ActivityComponent::class)
2625
@EntryPoint
2726
interface ActivityEntryPoint {
28-
fun fragmentFactory(): FragmentFactory
2927
fun viewModelFactory(): ViewModelProvider.Factory
3028
}

vector/src/main/java/im/vector/app/core/di/FragmentKey.kt

Lines changed: 0 additions & 27 deletions
This file was deleted.

vector/src/main/java/im/vector/app/core/di/FragmentModule.kt

Lines changed: 0 additions & 954 deletions
This file was deleted.

vector/src/main/java/im/vector/app/core/di/VectorFragmentFactory.kt

Lines changed: 0 additions & 43 deletions
This file was deleted.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
/*
2+
* Copyright (c) 2022 New Vector Ltd
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package im.vector.app.core.dialogs
18+
19+
import androidx.fragment.app.Fragment
20+
import im.vector.app.core.resources.ColorProvider
21+
import im.vector.app.core.time.Clock
22+
import javax.inject.Inject
23+
24+
/**
25+
* Factory for [GalleryOrCameraDialogHelper].
26+
*/
27+
class GalleryOrCameraDialogHelperFactory @Inject constructor(
28+
private val colorProvider: ColorProvider,
29+
private val clock: Clock,
30+
) {
31+
fun create(fragment: Fragment): GalleryOrCameraDialogHelper {
32+
return GalleryOrCameraDialogHelper(fragment, colorProvider, clock)
33+
}
34+
}

vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import android.app.Activity
2121
import android.content.Context
2222
import android.os.Build
2323
import android.os.Bundle
24-
import android.os.Parcelable
2524
import android.view.Menu
2625
import android.view.MenuInflater
2726
import android.view.MenuItem
@@ -39,8 +38,6 @@ import androidx.core.content.ContextCompat
3938
import androidx.core.util.Consumer
4039
import androidx.core.view.MenuProvider
4140
import androidx.core.view.isVisible
42-
import androidx.fragment.app.Fragment
43-
import androidx.fragment.app.FragmentFactory
4441
import androidx.fragment.app.FragmentManager
4542
import androidx.lifecycle.Lifecycle
4643
import androidx.lifecycle.ViewModelProvider
@@ -67,7 +64,6 @@ import im.vector.app.core.extensions.registerStartForActivityResult
6764
import im.vector.app.core.extensions.restart
6865
import im.vector.app.core.extensions.setTextOrHide
6966
import im.vector.app.core.extensions.singletonEntryPoint
70-
import im.vector.app.core.extensions.toMvRxBundle
7167
import im.vector.app.core.resources.BuildMeta
7268
import im.vector.app.core.utils.AndroidSystemSettingsProvider
7369
import im.vector.app.core.utils.ToolbarConfig
@@ -169,7 +165,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
169165

170166
lateinit var navigator: Navigator
171167
private set
172-
private lateinit var fragmentFactory: FragmentFactory
173168

174169
private lateinit var activeSessionHolder: ActiveSessionHolder
175170
private lateinit var vectorPreferences: VectorPreferences
@@ -210,8 +205,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
210205
val singletonEntryPoint = singletonEntryPoint()
211206
val activityEntryPoint = EntryPointAccessors.fromActivity(this, ActivityEntryPoint::class.java)
212207
ThemeUtils.setActivityTheme(this, getOtherThemes())
213-
fragmentFactory = activityEntryPoint.fragmentFactory()
214-
supportFragmentManager.fragmentFactory = fragmentFactory
215208
viewModelFactory = activityEntryPoint.viewModelFactory()
216209
super.onCreate(savedInstanceState)
217210
addOnMultiWindowModeChangedListener(onMultiWindowModeChangedListener)
@@ -464,12 +457,6 @@ abstract class VectorBaseActivity<VB : ViewBinding> : AppCompatActivity(), Maver
464457
bugReporter.inMultiWindowMode = it.isInMultiWindowMode
465458
}
466459

467-
protected fun createFragment(fragmentClass: Class<out Fragment>, argsParcelable: Parcelable? = null): Fragment {
468-
return fragmentFactory.instantiate(classLoader, fragmentClass.name).apply {
469-
arguments = argsParcelable?.toMvRxBundle()
470-
}
471-
}
472-
473460
/* ==========================================================================================
474461
* PRIVATE METHODS
475462
* ========================================================================================== */

0 commit comments

Comments
 (0)