Skip to content

Commit b354a8f

Browse files
committed
Concat small classes to increase readablility
1 parent 913c08c commit b354a8f

File tree

8 files changed

+55
-151
lines changed

8 files changed

+55
-151
lines changed
+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.hadilq.guidomia.guidomia.impl.presentation.di
16+
package com.hadilq.guidomia.core.api
1717

1818
import androidx.fragment.app.Fragment
1919
import dagger.MapKey
@@ -23,4 +23,4 @@ import kotlin.reflect.KClass
2323
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
2424
@Retention(AnnotationRetention.RUNTIME)
2525
@MapKey
26-
annotation class GuidomiaFragmentKey(val value: KClass<out Fragment>)
26+
annotation class FragmentKey(val value: KClass<out Fragment>)
+2-2
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.hadilq.guidomia.guidomia.impl.presentation.di
16+
package com.hadilq.guidomia.core.api
1717

1818
import androidx.lifecycle.ViewModel
1919
import dagger.MapKey
@@ -23,4 +23,4 @@ import kotlin.reflect.KClass
2323
@Target(AnnotationTarget.FUNCTION, AnnotationTarget.CLASS)
2424
@Retention(AnnotationRetention.RUNTIME)
2525
@MapKey
26-
annotation class GuidomiaViewModelKey(val value: KClass<out ViewModel>)
26+
annotation class ViewModelKey(val value: KClass<out ViewModel>)

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaFragmentComponent.kt

+51
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,39 @@
1515
*/
1616
package com.hadilq.guidomia.guidomia.impl.presentation.di
1717

18+
import androidx.fragment.app.Fragment
19+
import androidx.lifecycle.ViewModel
20+
import com.hadilq.guidomia.core.api.FragmentKey
21+
import com.hadilq.guidomia.core.api.SimpleFragmentFactory
22+
import com.hadilq.guidomia.core.api.SimpleViewModelFactory
23+
import com.hadilq.guidomia.core.api.ViewModelKey
24+
import com.hadilq.guidomia.di.api.AppScope
1825
import com.hadilq.guidomia.di.api.FragmentScope
26+
import com.hadilq.guidomia.di.api.RetainScope
1927
import com.hadilq.guidomia.di.api.SingleIn
2028
import com.hadilq.guidomia.guidomia.impl.presentation.GuidomiaFragment
29+
import com.hadilq.guidomia.guidomia.impl.presentation.GuidomiaViewModel
30+
import com.squareup.anvil.annotations.ContributesMultibinding
31+
import com.squareup.anvil.annotations.ContributesTo
2132
import com.squareup.anvil.annotations.MergeSubcomponent
2233
import dagger.Subcomponent
34+
import javax.inject.Inject
35+
36+
@[ContributesMultibinding(AppScope::class) FragmentKey(GuidomiaFragment::class)]
37+
class GuidomiaFragmentFactory @Inject constructor(
38+
private val componentBuilder: GuidomiaFragmentComponent.Builder
39+
) : SimpleFragmentFactory {
40+
41+
override fun instantiate(): Fragment = componentBuilder.build().guidomiaFragment()
42+
}
43+
44+
@[ContributesMultibinding(AppScope::class) ViewModelKey(GuidomiaViewModel::class)]
45+
class GuidomiaViewModelFactory @Inject constructor(
46+
private val componentBuilder: GuidomiaRetainComponent.Builder
47+
) : SimpleViewModelFactory {
48+
49+
override fun create(): ViewModel = componentBuilder.build().guidomiaViewModel()
50+
}
2351

2452
@[SingleIn(FragmentScope::class) MergeSubcomponent(FragmentScope::class)]
2553
interface GuidomiaFragmentComponent {
@@ -31,3 +59,26 @@ interface GuidomiaFragmentComponent {
3159

3260
fun guidomiaFragment(): GuidomiaFragment
3361
}
62+
63+
@[SingleIn(RetainScope::class) MergeSubcomponent(RetainScope::class)]
64+
interface GuidomiaRetainComponent {
65+
66+
@Subcomponent.Builder
67+
interface Builder {
68+
fun build(): GuidomiaRetainComponent
69+
}
70+
71+
fun guidomiaViewModel(): GuidomiaViewModel
72+
}
73+
74+
@[SingleIn(AppScope::class) ContributesTo(AppScope::class)]
75+
interface GuidomiaFragmentComponentProvider {
76+
77+
fun guidomiaFragmentComponentBuilder(): GuidomiaFragmentComponent.Builder
78+
}
79+
80+
@[SingleIn(AppScope::class) ContributesTo(AppScope::class)]
81+
interface GuidomiaRetainComponentProvider {
82+
83+
fun guidomiaRetainComponentBuilder(): GuidomiaRetainComponent.Builder
84+
}

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaFragmentComponentProvider.kt

-26
This file was deleted.

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaFragmentFactory.kt

-31
This file was deleted.

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaRetainComponent.kt

-33
This file was deleted.

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaRetainComponentProvider.kt

-26
This file was deleted.

guidomia/impl/src/main/java/com/hadilq/guidomia/guidomia/impl/presentation/di/GuidomiaViewModelFactory.kt

-31
This file was deleted.

0 commit comments

Comments
 (0)