Move some code to 'architecture' module
This commit is contained in:
@@ -116,7 +116,7 @@ class ContributesViewModelCodeGenerator : CodeGenerator {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val assistedViewModelFactoryFqName = FqName("io.element.android.x.core.di.AssistedViewModelFactory")
|
||||
private val viewModelKeyFqName = FqName("io.element.android.x.core.di.ViewModelKey")
|
||||
private val assistedViewModelFactoryFqName = FqName("io.element.android.x.architecture.viewmodel.AssistedViewModelFactory")
|
||||
private val viewModelKeyFqName = FqName("io.element.android.x.architecture.viewmodel.ViewModelKey")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ dependencies {
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(project(":libraries:matrix"))
|
||||
implementation(project(":libraries:core"))
|
||||
implementation(project(":libraries:architecture"))
|
||||
implementation(project(":features:onboarding"))
|
||||
implementation(project(":features:login"))
|
||||
implementation(project(":features:roomlist"))
|
||||
|
||||
@@ -2,8 +2,8 @@ package io.element.android.x
|
||||
|
||||
import android.app.Application
|
||||
import androidx.startup.AppInitializer
|
||||
import io.element.android.x.architecture.bindings
|
||||
import io.element.android.x.core.di.DaggerComponentOwner
|
||||
import io.element.android.x.core.di.bindings
|
||||
import io.element.android.x.di.AppBindings
|
||||
import io.element.android.x.di.AppComponent
|
||||
import io.element.android.x.di.DaggerAppComponent
|
||||
|
||||
@@ -16,8 +16,8 @@ import androidx.core.view.WindowCompat
|
||||
import com.bumble.appyx.core.integration.NodeHost
|
||||
import com.bumble.appyx.core.integrationpoint.NodeComponentActivity
|
||||
import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi
|
||||
import io.element.android.x.architecture.bindings
|
||||
import io.element.android.x.core.di.DaggerComponentOwner
|
||||
import io.element.android.x.core.di.bindings
|
||||
import io.element.android.x.designsystem.ElementXTheme
|
||||
import io.element.android.x.di.AppBindings
|
||||
import io.element.android.x.node.RootFlowNode
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.airbnb.mvrx.MavericksViewModelFactory
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.anvilannotations.ContributesViewModel
|
||||
import io.element.android.x.core.di.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.architecture.viewmodel.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.di.AppScope
|
||||
import io.element.android.x.di.SessionComponentsOwner
|
||||
import io.element.android.x.matrix.Matrix
|
||||
|
||||
@@ -4,7 +4,7 @@ import android.content.Context
|
||||
import com.squareup.anvil.annotations.MergeComponent
|
||||
import dagger.BindsInstance
|
||||
import dagger.Component
|
||||
import io.element.android.x.core.di.DaggerMavericksBindings
|
||||
import io.element.android.x.architecture.viewmodel.DaggerMavericksBindings
|
||||
|
||||
@SingleIn(AppScope::class)
|
||||
@MergeComponent(AppScope::class)
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.squareup.anvil.annotations.ContributesTo
|
||||
import com.squareup.anvil.annotations.MergeSubcomponent
|
||||
import dagger.BindsInstance
|
||||
import dagger.Subcomponent
|
||||
import io.element.android.x.core.di.DaggerMavericksBindings
|
||||
import io.element.android.x.core.di.NodeFactoriesBindings
|
||||
import io.element.android.x.architecture.viewmodel.DaggerMavericksBindings
|
||||
import io.element.android.x.architecture.NodeFactoriesBindings
|
||||
import io.element.android.x.matrix.MatrixClient
|
||||
|
||||
@SingleIn(SessionScope::class)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.element.android.x.di
|
||||
|
||||
import android.content.Context
|
||||
import io.element.android.x.core.di.bindings
|
||||
import io.element.android.x.architecture.bindings
|
||||
import io.element.android.x.matrix.MatrixClient
|
||||
import io.element.android.x.matrix.core.SessionId
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
|
||||
@@ -5,7 +5,7 @@ import androidx.startup.Initializer
|
||||
import coil.Coil
|
||||
import coil.ImageLoader
|
||||
import coil.ImageLoaderFactory
|
||||
import io.element.android.x.core.di.bindings
|
||||
import io.element.android.x.architecture.bindings
|
||||
import io.element.android.x.di.AppBindings
|
||||
|
||||
class CoilInitializer : Initializer<Unit> {
|
||||
@@ -37,4 +37,4 @@ private class ElementImageLoaderFactory(
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,8 +10,8 @@ import com.bumble.appyx.core.node.ParentNode
|
||||
import com.bumble.appyx.navmodel.backstack.BackStack
|
||||
import com.bumble.appyx.navmodel.backstack.operation.pop
|
||||
import com.bumble.appyx.navmodel.backstack.operation.push
|
||||
import io.element.android.x.core.di.createNode
|
||||
import io.element.android.x.core.di.viewModelSupportNode
|
||||
import io.element.android.x.architecture.createNode
|
||||
import io.element.android.x.architecture.viewmodel.viewModelSupportNode
|
||||
import io.element.android.x.features.messages.MessagesScreen
|
||||
import io.element.android.x.features.roomlist.RoomListNode
|
||||
import io.element.android.x.matrix.core.RoomId
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.bumble.appyx.core.node.Node
|
||||
import com.bumble.appyx.core.node.ParentNode
|
||||
import com.bumble.appyx.navmodel.backstack.BackStack
|
||||
import com.bumble.appyx.navmodel.backstack.operation.replace
|
||||
import io.element.android.x.core.di.viewModelSupportNode
|
||||
import io.element.android.x.architecture.viewmodel.viewModelSupportNode
|
||||
import io.element.android.x.features.login.node.LoginFlowNode
|
||||
import io.element.android.x.features.onboarding.OnBoardingScreen
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@@ -19,6 +19,7 @@ dependencies {
|
||||
anvil(project(":anvilcodegen"))
|
||||
implementation(project(":libraries:di"))
|
||||
implementation(project(":libraries:core"))
|
||||
implementation(project(":libraries:architecture"))
|
||||
implementation(project(":libraries:matrix"))
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(project(":libraries:elementresources"))
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.airbnb.mvrx.Uninitialized
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.anvilannotations.ContributesViewModel
|
||||
import io.element.android.x.core.di.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.architecture.viewmodel.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.di.AppScope
|
||||
import io.element.android.x.matrix.Matrix
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
|
||||
@@ -6,7 +6,7 @@ import com.airbnb.mvrx.Uninitialized
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.anvilannotations.ContributesViewModel
|
||||
import io.element.android.x.core.di.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.architecture.viewmodel.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.di.AppScope
|
||||
import io.element.android.x.matrix.Matrix
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
@@ -10,7 +10,7 @@ import com.bumble.appyx.core.node.ParentNode
|
||||
import com.bumble.appyx.navmodel.backstack.BackStack
|
||||
import com.bumble.appyx.navmodel.backstack.operation.pop
|
||||
import com.bumble.appyx.navmodel.backstack.operation.push
|
||||
import io.element.android.x.core.di.viewModelSupportNode
|
||||
import io.element.android.x.architecture.viewmodel.viewModelSupportNode
|
||||
import io.element.android.x.features.login.LoginScreen
|
||||
import io.element.android.x.features.login.changeserver.ChangeServerScreen
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@@ -18,6 +18,7 @@ dependencies {
|
||||
anvil(project(":anvilcodegen"))
|
||||
implementation(project(":libraries:di"))
|
||||
implementation(project(":libraries:core"))
|
||||
implementation(project(":libraries:architecture"))
|
||||
implementation(project(":libraries:matrix"))
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(project(":libraries:textcomposer"))
|
||||
|
||||
@@ -6,10 +6,9 @@ import com.airbnb.mvrx.Uninitialized
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.anvilannotations.ContributesViewModel
|
||||
import io.element.android.x.core.di.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.architecture.viewmodel.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.designsystem.components.avatar.AvatarData
|
||||
import io.element.android.x.designsystem.components.avatar.AvatarSize
|
||||
import io.element.android.x.di.AppScope
|
||||
import io.element.android.x.di.SessionScope
|
||||
import io.element.android.x.features.messages.model.MessagesItemAction
|
||||
import io.element.android.x.features.messages.model.MessagesItemActionsSheetState
|
||||
@@ -17,7 +16,6 @@ import io.element.android.x.features.messages.model.MessagesTimelineItemState
|
||||
import io.element.android.x.features.messages.model.MessagesViewState
|
||||
import io.element.android.x.features.messages.model.content.MessagesTimelineItemRedactedContent
|
||||
import io.element.android.x.features.messages.model.content.MessagesTimelineItemTextBasedContent
|
||||
import io.element.android.x.matrix.Matrix
|
||||
import io.element.android.x.matrix.MatrixClient
|
||||
import io.element.android.x.matrix.media.MediaResolver
|
||||
import io.element.android.x.matrix.timeline.MatrixTimeline
|
||||
|
||||
@@ -5,8 +5,8 @@ import com.airbnb.mvrx.MavericksViewModelFactory
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.anvilannotations.ContributesViewModel
|
||||
import io.element.android.x.architecture.viewmodel.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.core.data.StableCharSequence
|
||||
import io.element.android.x.core.di.daggerMavericksViewModelFactory
|
||||
import io.element.android.x.di.SessionScope
|
||||
import io.element.android.x.matrix.MatrixClient
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ dependencies {
|
||||
implementation(project(":libraries:core"))
|
||||
implementation(project(":libraries:elementresources"))
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(project(":libraries:architecture"))
|
||||
implementation(libs.mavericks.compose)
|
||||
implementation(libs.accompanist.pager)
|
||||
implementation(libs.accompanist.pagerindicator)
|
||||
|
||||
@@ -17,7 +17,7 @@ dependencies {
|
||||
anvil(project(":anvilcodegen"))
|
||||
implementation(project(":libraries:di"))
|
||||
implementation(project(":libraries:core"))
|
||||
implementation(project(":libraries:presentation"))
|
||||
implementation(project(":libraries:architecture"))
|
||||
implementation(project(":libraries:matrix"))
|
||||
implementation(project(":libraries:designsystem"))
|
||||
implementation(libs.appyx.core)
|
||||
|
||||
@@ -4,8 +4,8 @@ import com.squareup.anvil.annotations.ContributesTo
|
||||
import dagger.Binds
|
||||
import dagger.Module
|
||||
import dagger.multibindings.IntoMap
|
||||
import io.element.android.x.core.di.AssistedNodeFactory
|
||||
import io.element.android.x.core.di.NodeKey
|
||||
import io.element.android.x.architecture.AssistedNodeFactory
|
||||
import io.element.android.x.architecture.NodeKey
|
||||
import io.element.android.x.di.SessionScope
|
||||
|
||||
@Module
|
||||
|
||||
@@ -11,10 +11,10 @@ import com.bumble.appyx.core.plugin.plugins
|
||||
import dagger.assisted.Assisted
|
||||
import dagger.assisted.AssistedFactory
|
||||
import dagger.assisted.AssistedInject
|
||||
import io.element.android.x.core.di.AssistedNodeFactory
|
||||
import io.element.android.x.architecture.AssistedNodeFactory
|
||||
import io.element.android.x.features.roomlist.model.RoomListEvents
|
||||
import io.element.android.x.matrix.core.RoomId
|
||||
import io.element.android.x.presentation.presenterConnector
|
||||
import io.element.android.x.architecture.presenterConnector
|
||||
|
||||
class RoomListNode @AssistedInject constructor(
|
||||
@Assisted buildContext: BuildContext,
|
||||
|
||||
@@ -20,7 +20,7 @@ import io.element.android.x.features.roomlist.model.RoomListState
|
||||
import io.element.android.x.matrix.MatrixClient
|
||||
import io.element.android.x.matrix.media.MediaResolver
|
||||
import io.element.android.x.matrix.room.RoomSummary
|
||||
import io.element.android.x.presentation.Presenter
|
||||
import io.element.android.x.architecture.Presenter
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id("io.element.android-library")
|
||||
id("io.element.android-compose-library")
|
||||
alias(libs.plugins.molecule)
|
||||
}
|
||||
|
||||
@@ -8,7 +8,9 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(project(":libraries:core"))
|
||||
api(libs.dagger)
|
||||
api(libs.appyx.core)
|
||||
api(libs.androidx.lifecycle.runtime)
|
||||
api(libs.mavericks.compose)
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import com.bumble.appyx.core.modality.BuildContext
|
||||
import com.bumble.appyx.core.node.Node
|
||||
@@ -1,30 +1,12 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import android.content.Context
|
||||
import android.content.ContextWrapper
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.bumble.appyx.core.node.Node
|
||||
|
||||
/**
|
||||
* Use this to get the Dagger "Bindings" for your module. Bindings are used if you need to directly interact with a dagger component such as:
|
||||
* * an inject function: `inject(node: MyNode)`
|
||||
* * an explicit getter: `fun myClass(): MyClass`
|
||||
*
|
||||
* Anvil will make your Dagger component implement these bindings so that you can call any of these functions on an instance of your component.
|
||||
*
|
||||
* [bindings] will walk up the Node/Activity hierarchy and check for [DaggerComponentOwner] to see if any of its components implement the
|
||||
* specified bindings. Most of the time this will "just work" and you don't have to think about it.
|
||||
*
|
||||
* For example, if your class has @Inject properties:
|
||||
* 1) Create an bindings interface such as `YourModuleBindings`
|
||||
* 1) Add an inject function like `fun inject(yourClass: YourClass)`
|
||||
* 2) Contribute your interface to the correct component via `@ContributesTo(AppScope::class)`.
|
||||
* 3) Call bindings<YourModuleBindings>().inject(this).
|
||||
*/
|
||||
|
||||
inline fun <reified T : Any> Context.bindings() = bindings(T::class.java)
|
||||
import io.element.android.x.core.di.DaggerComponentOwner
|
||||
|
||||
inline fun <reified T : Any> Node.bindings() = bindings(T::class.java)
|
||||
inline fun <reified T : Any> Context.bindings() = bindings(T::class.java)
|
||||
|
||||
/** Use no-arg extension function instead: [Context.bindings] */
|
||||
fun <T : Any> Context.bindings(klass: Class<T>): T {
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import com.bumble.appyx.core.modality.BuildContext
|
||||
import com.bumble.appyx.core.node.Node
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import com.bumble.appyx.core.node.Node
|
||||
import dagger.MapKey
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.presentation
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import app.cash.molecule.AndroidUiDispatcher
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.presentation
|
||||
package io.element.android.x.architecture
|
||||
|
||||
import androidx.compose.runtime.Composable
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture.viewmodel
|
||||
|
||||
import com.airbnb.mvrx.MavericksState
|
||||
import com.airbnb.mvrx.MavericksViewModel
|
||||
@@ -1,10 +1,10 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture.viewmodel
|
||||
|
||||
import com.airbnb.mvrx.FragmentViewModelContext
|
||||
import com.airbnb.mvrx.MavericksState
|
||||
import com.airbnb.mvrx.MavericksViewModel
|
||||
import com.airbnb.mvrx.MavericksViewModelFactory
|
||||
import com.airbnb.mvrx.ViewModelContext
|
||||
import io.element.android.x.architecture.bindings
|
||||
|
||||
/**
|
||||
* To connect Mavericks ViewModel creation with Anvil's dependency injection, add the following to your MavericksViewModel.
|
||||
@@ -14,7 +14,7 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture.viewmodel
|
||||
|
||||
import com.airbnb.mvrx.MavericksViewModel
|
||||
import dagger.MapKey
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.element.android.x.core.di
|
||||
package io.element.android.x.architecture.viewmodel
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.compose.runtime.Composable
|
||||
@@ -5,9 +5,3 @@ plugins {
|
||||
android {
|
||||
namespace = "io.element.android.x.core"
|
||||
}
|
||||
|
||||
dependencies {
|
||||
api(libs.mavericks.compose)
|
||||
api(libs.dagger)
|
||||
api(libs.appyx.core)
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ anvil {
|
||||
dependencies {
|
||||
api(project(":libraries:rustsdk"))
|
||||
implementation(project(":libraries:di"))
|
||||
implementation(libs.dagger)
|
||||
implementation(project(":libraries:core"))
|
||||
implementation("net.java.dev.jna:jna:5.12.1@aar")
|
||||
implementation(libs.coil.compose)
|
||||
|
||||
@@ -31,4 +31,4 @@ include(":libraries:designsystem")
|
||||
include(":libraries:di")
|
||||
include(":anvilannotations")
|
||||
include(":anvilcodegen")
|
||||
include(":libraries:presentation")
|
||||
include(":libraries:architecture")
|
||||
|
||||
Reference in New Issue
Block a user