diff --git a/anvilannotations/build.gradle.kts b/anvilannotations/build.gradle.kts index 80b108d11f..0f9e5d51fc 100644 --- a/anvilannotations/build.gradle.kts +++ b/anvilannotations/build.gradle.kts @@ -4,4 +4,4 @@ plugins { dependencies { api(libs.inject) -} \ No newline at end of file +} diff --git a/anvilannotations/src/main/java/io/element/android/x/anvilannotations/ContributesViewModel.kt b/anvilannotations/src/main/java/io/element/android/x/anvilannotations/ContributesViewModel.kt index e8fdc272c9..c1dd6c130d 100644 --- a/anvilannotations/src/main/java/io/element/android/x/anvilannotations/ContributesViewModel.kt +++ b/anvilannotations/src/main/java/io/element/android/x/anvilannotations/ContributesViewModel.kt @@ -14,4 +14,4 @@ import kotlin.reflect.KClass @Target(AnnotationTarget.CLASS) annotation class ContributesViewModel( val scope: KClass<*>, -) \ No newline at end of file +) diff --git a/anvilcodegen/build.gradle.kts b/anvilcodegen/build.gradle.kts index d915eb3711..f510f6f721 100644 --- a/anvilcodegen/build.gradle.kts +++ b/anvilcodegen/build.gradle.kts @@ -11,4 +11,4 @@ dependencies { implementation(libs.dagger) compileOnly("com.google.auto.service:auto-service-annotations:1.0.1") kapt("com.google.auto.service:auto-service:1.0.1") -} \ No newline at end of file +} diff --git a/anvilcodegen/src/main/java/io/element/android/x/anvilcodegen/ContributesViewModelCodeGenerator.kt b/anvilcodegen/src/main/java/io/element/android/x/anvilcodegen/ContributesViewModelCodeGenerator.kt index 544b6b4b11..7554fc8db6 100644 --- a/anvilcodegen/src/main/java/io/element/android/x/anvilcodegen/ContributesViewModelCodeGenerator.kt +++ b/anvilcodegen/src/main/java/io/element/android/x/anvilcodegen/ContributesViewModelCodeGenerator.kt @@ -31,10 +31,10 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.multibindings.IntoMap import io.element.android.x.anvilannotations.ContributesViewModel +import java.io.File import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile -import java.io.File /** * This is an anvil plugin that allows ViewModels to use [ContributesViewModel] alone and let this plugin automatically @@ -69,7 +69,12 @@ class ContributesViewModelCodeGenerator : CodeGenerator { .returns(assistedViewModelFactoryFqName.asClassName(module).parameterizedBy(STAR, STAR)) .addAnnotation(Binds::class) .addAnnotation(IntoMap::class) - .addAnnotation(AnnotationSpec.Companion.builder(viewModelKeyFqName.asClassName(module)).addMember("%T::class", vmClass.asClassName()).build()) + .addAnnotation( + AnnotationSpec.Companion + .builder(viewModelKeyFqName.asClassName(module)) + .addMember("%T::class", vmClass.asClassName()) + .build() + ) .build(), ) .build(), @@ -119,4 +124,4 @@ class ContributesViewModelCodeGenerator : CodeGenerator { private val assistedViewModelFactoryFqName = FqName("io.element.android.x.core.di.AssistedViewModelFactory") private val viewModelKeyFqName = FqName("io.element.android.x.core.di.ViewModelKey") } -} \ No newline at end of file +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b82495751d..5e5c34c131 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,8 +33,6 @@ android:exported="false" tools:node="remove"/> - - - \ No newline at end of file + diff --git a/app/src/main/java/io/element/android/x/MainActivity.kt b/app/src/main/java/io/element/android/x/MainActivity.kt index d6af9a459a..c852bea599 100644 --- a/app/src/main/java/io/element/android/x/MainActivity.kt +++ b/app/src/main/java/io/element/android/x/MainActivity.kt @@ -8,7 +8,6 @@ package io.element.android.x import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent -import androidx.activity.viewModels import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.core.tween @@ -38,16 +37,12 @@ import androidx.core.view.WindowCompat import androidx.navigation.NavHostController import com.airbnb.android.showkase.models.Showkase import com.airbnb.mvrx.compose.mavericksActivityViewModel -import com.airbnb.mvrx.compose.mavericksViewModel import com.google.accompanist.navigation.material.ExperimentalMaterialNavigationApi import com.ramcosta.composedestinations.DestinationsNavHost import com.ramcosta.composedestinations.animations.defaults.RootNavGraphDefaultAnimations import com.ramcosta.composedestinations.animations.rememberAnimatedNavHostEngine -import com.ramcosta.composedestinations.manualcomposablecalls.animatedComposable -import com.ramcosta.composedestinations.navigation.dependency import com.ramcosta.composedestinations.spec.Route import io.element.android.x.core.compose.OnLifecycleEvent -import io.element.android.x.core.di.DaggerComponentOwner import io.element.android.x.designsystem.ElementXTheme import io.element.android.x.destinations.OnBoardingScreenNavigationDestination import kotlinx.coroutines.runBlocking @@ -160,7 +155,6 @@ class MainActivity : ComponentActivity() { navGraph = NavGraphs.root, startRoute = startRoute, dependenciesContainerBuilder = { - } ) } diff --git a/app/src/main/java/io/element/android/x/di/AppBindings.kt b/app/src/main/java/io/element/android/x/di/AppBindings.kt index e3141ccf02..aa2710e7f9 100644 --- a/app/src/main/java/io/element/android/x/di/AppBindings.kt +++ b/app/src/main/java/io/element/android/x/di/AppBindings.kt @@ -9,4 +9,4 @@ interface AppBindings { fun coroutineScope(): CoroutineScope fun matrix(): Matrix fun sessionComponentsOwner(): SessionComponentsOwner -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/di/AppComponent.kt b/app/src/main/java/io/element/android/x/di/AppComponent.kt index 2c170f202b..e68a58eac3 100644 --- a/app/src/main/java/io/element/android/x/di/AppComponent.kt +++ b/app/src/main/java/io/element/android/x/di/AppComponent.kt @@ -8,10 +8,10 @@ import io.element.android.x.core.di.DaggerMavericksBindings @SingleIn(AppScope::class) @MergeComponent(AppScope::class) -interface AppComponent: DaggerMavericksBindings { +interface AppComponent : DaggerMavericksBindings { @Component.Factory interface Factory { fun create(@ApplicationContext @BindsInstance context: Context): AppComponent } -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/di/AppModule.kt b/app/src/main/java/io/element/android/x/di/AppModule.kt index 681365aa9f..5aa606007a 100644 --- a/app/src/main/java/io/element/android/x/di/AppModule.kt +++ b/app/src/main/java/io/element/android/x/di/AppModule.kt @@ -17,4 +17,4 @@ object AppModule { fun providesAppCoroutineScope(): CoroutineScope { return MainScope() + CoroutineName("ElementX Scope") } -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/di/SessionComponent.kt b/app/src/main/java/io/element/android/x/di/SessionComponent.kt index 5acc18d384..675cbd5f8b 100644 --- a/app/src/main/java/io/element/android/x/di/SessionComponent.kt +++ b/app/src/main/java/io/element/android/x/di/SessionComponent.kt @@ -9,7 +9,7 @@ import io.element.android.x.matrix.MatrixClient @SingleIn(SessionScope::class) @MergeSubcomponent(SessionScope::class) -interface SessionComponent: DaggerMavericksBindings { +interface SessionComponent : DaggerMavericksBindings { fun matrixClient(): MatrixClient diff --git a/app/src/main/java/io/element/android/x/di/SessionComponentsOwner.kt b/app/src/main/java/io/element/android/x/di/SessionComponentsOwner.kt index ef95205250..a96cab1592 100644 --- a/app/src/main/java/io/element/android/x/di/SessionComponentsOwner.kt +++ b/app/src/main/java/io/element/android/x/di/SessionComponentsOwner.kt @@ -41,5 +41,4 @@ class SessionComponentsOwner @Inject constructor(@ApplicationContext private val activeSessionComponent = null } } - } diff --git a/app/src/main/java/io/element/android/x/initializer/CoilInitializer.kt b/app/src/main/java/io/element/android/x/initializer/CoilInitializer.kt index 1b99716606..d67cb37843 100644 --- a/app/src/main/java/io/element/android/x/initializer/CoilInitializer.kt +++ b/app/src/main/java/io/element/android/x/initializer/CoilInitializer.kt @@ -35,6 +35,4 @@ private class ElementImageLoaderFactory( } .build() } - - -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/initializer/MatrixInitializer.kt b/app/src/main/java/io/element/android/x/initializer/MatrixInitializer.kt index 800819f1a7..ffa3e3178c 100644 --- a/app/src/main/java/io/element/android/x/initializer/MatrixInitializer.kt +++ b/app/src/main/java/io/element/android/x/initializer/MatrixInitializer.kt @@ -2,7 +2,6 @@ package io.element.android.x.initializer import android.content.Context import androidx.startup.Initializer -import com.airbnb.mvrx.Mavericks import io.element.android.x.matrix.tracing.TracingConfigurations import io.element.android.x.matrix.tracing.setupTracing import io.element.android.x.sdk.matrix.BuildConfig @@ -18,6 +17,4 @@ class MatrixInitializer : Initializer { } override fun dependencies(): List>> = emptyList() - - -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/initializer/MavericksInitializer.kt b/app/src/main/java/io/element/android/x/initializer/MavericksInitializer.kt index ff51aa1d60..266058cbfc 100644 --- a/app/src/main/java/io/element/android/x/initializer/MavericksInitializer.kt +++ b/app/src/main/java/io/element/android/x/initializer/MavericksInitializer.kt @@ -11,6 +11,4 @@ class MavericksInitializer : Initializer { } override fun dependencies(): List>> = listOf() - - -} \ No newline at end of file +} diff --git a/app/src/main/java/io/element/android/x/initializer/TimberInitializer.kt b/app/src/main/java/io/element/android/x/initializer/TimberInitializer.kt index a7065e482f..6286d72ab0 100644 --- a/app/src/main/java/io/element/android/x/initializer/TimberInitializer.kt +++ b/app/src/main/java/io/element/android/x/initializer/TimberInitializer.kt @@ -12,4 +12,4 @@ class TimberInitializer : Initializer { override fun dependencies(): List>> = listOf(TimberInitializer::class.java) -} \ No newline at end of file +} diff --git a/features/login/build.gradle.kts b/features/login/build.gradle.kts index 5717ba632b..fee5d397cb 100644 --- a/features/login/build.gradle.kts +++ b/features/login/build.gradle.kts @@ -12,7 +12,6 @@ anvil { generateDaggerFactories.set(true) } - dependencies { implementation(project(":anvilannotations")) anvil(project(":anvilcodegen")) diff --git a/features/messages/build.gradle.kts b/features/messages/build.gradle.kts index 4735cd6530..c35d60324c 100644 --- a/features/messages/build.gradle.kts +++ b/features/messages/build.gradle.kts @@ -12,7 +12,6 @@ anvil { generateDaggerFactories.set(true) } - dependencies { implementation(project(":anvilannotations")) anvil(project(":anvilcodegen")) diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/MessagesViewModel.kt b/features/messages/src/main/java/io/element/android/x/features/messages/MessagesViewModel.kt index 98165305f1..353e65ef6b 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/MessagesViewModel.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/MessagesViewModel.kt @@ -9,7 +9,6 @@ import io.element.android.x.anvilannotations.ContributesViewModel import io.element.android.x.core.di.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 diff --git a/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt b/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt index 5137f83761..2d284c1a80 100644 --- a/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt +++ b/features/roomlist/src/main/java/io/element/android/x/features/roomlist/RoomListViewModel.kt @@ -1,6 +1,9 @@ package io.element.android.x.features.roomlist -import com.airbnb.mvrx.* +import com.airbnb.mvrx.Loading +import com.airbnb.mvrx.MavericksViewModel +import com.airbnb.mvrx.MavericksViewModelFactory +import com.airbnb.mvrx.Success import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.x.anvilannotations.ContributesViewModel diff --git a/libraries/core/src/main/java/io/element/android/x/core/di/Bindings.kt b/libraries/core/src/main/java/io/element/android/x/core/di/Bindings.kt index 5d808c8c09..f561ad3499 100644 --- a/libraries/core/src/main/java/io/element/android/x/core/di/Bindings.kt +++ b/libraries/core/src/main/java/io/element/android/x/core/di/Bindings.kt @@ -27,7 +27,7 @@ inline fun Context.bindings() = bindings(T::class.java) */ inline fun Fragment.bindings() = bindings(T::class.java) -/** Use no-arg extension function instead: [Context.bindings] */ +/** Use no-arg extension function instead: [Context.bindings]. */ fun Context.bindings(klass: Class): T { // search dagger components in the context hierarchy return generateSequence(this) { (it as? ContextWrapper)?.baseContext } @@ -40,7 +40,7 @@ fun Context.bindings(klass: Class): T { ?: error("Unable to find bindings for ${klass.name}") } -/** Use no-arg extension function instead: [Fragment.bindings] */ +/** Use no-arg extension function instead: [Fragment.bindings]. */ fun Fragment.bindings(klass: Class): T { // search dagger components in fragment hierarchy, then fallback to activity and application return generateSequence(this, Fragment::getParentFragment) @@ -50,4 +50,4 @@ fun Fragment.bindings(klass: Class): T { .filterIsInstance(klass) .firstOrNull() ?: requireActivity().bindings(klass) -} \ No newline at end of file +} diff --git a/libraries/core/src/main/java/io/element/android/x/core/di/DaggerComponentOwner.kt b/libraries/core/src/main/java/io/element/android/x/core/di/DaggerComponentOwner.kt index d8e469befe..70401959e4 100644 --- a/libraries/core/src/main/java/io/element/android/x/core/di/DaggerComponentOwner.kt +++ b/libraries/core/src/main/java/io/element/android/x/core/di/DaggerComponentOwner.kt @@ -7,4 +7,4 @@ package io.element.android.x.core.di interface DaggerComponentOwner { /** This is either a component, or a list of components. */ val daggerComponent: Any -} \ No newline at end of file +} diff --git a/libraries/core/src/main/java/io/element/android/x/core/di/DaggerMavericksViewModelFactory.kt b/libraries/core/src/main/java/io/element/android/x/core/di/DaggerMavericksViewModelFactory.kt index 48793e9823..f810aeb2e2 100644 --- a/libraries/core/src/main/java/io/element/android/x/core/di/DaggerMavericksViewModelFactory.kt +++ b/libraries/core/src/main/java/io/element/android/x/core/di/DaggerMavericksViewModelFactory.kt @@ -29,6 +29,8 @@ inline fun , S : MavericksState> daggerMaveri * using its AssistedInject Factory. This class should be implemented by the companion object * of every ViewModel which uses AssistedInject via [daggerMavericksViewModelFactory]. * + * @param VM The ViewModel type + * @param S The ViewState type * @param viewModelClass The [Class] of the ViewModel being requested for creation * * This class accesses the map of ViewModel class to [AssistedViewModelFactory]s from the nearest [DaggerComponentOwner] and @@ -57,4 +59,4 @@ class DaggerMavericksViewModelFactory, S : MavericksS interface DaggerMavericksBindings { fun viewModelFactories(): Map>, AssistedViewModelFactory<*, *>> -} \ No newline at end of file +} diff --git a/libraries/di/build.gradle.kts b/libraries/di/build.gradle.kts index 80b108d11f..0f9e5d51fc 100644 --- a/libraries/di/build.gradle.kts +++ b/libraries/di/build.gradle.kts @@ -4,4 +4,4 @@ plugins { dependencies { api(libs.inject) -} \ No newline at end of file +} diff --git a/libraries/di/src/main/java/io/element/android/x/di/ApplicationContext.kt b/libraries/di/src/main/java/io/element/android/x/di/ApplicationContext.kt index 49ff8ae125..800950e2be 100644 --- a/libraries/di/src/main/java/io/element/android/x/di/ApplicationContext.kt +++ b/libraries/di/src/main/java/io/element/android/x/di/ApplicationContext.kt @@ -2,4 +2,4 @@ package io.element.android.x.di import javax.inject.Qualifier -@Qualifier annotation class ApplicationContext \ No newline at end of file +@Qualifier annotation class ApplicationContext diff --git a/libraries/di/src/main/java/io/element/android/x/di/SingleIn.kt b/libraries/di/src/main/java/io/element/android/x/di/SingleIn.kt index 43dd9acfb8..4408aa2e32 100644 --- a/libraries/di/src/main/java/io/element/android/x/di/SingleIn.kt +++ b/libraries/di/src/main/java/io/element/android/x/di/SingleIn.kt @@ -5,4 +5,4 @@ import kotlin.reflect.KClass @Scope @Retention(AnnotationRetention.RUNTIME) -annotation class SingleIn(val clazz: KClass<*>) \ No newline at end of file +annotation class SingleIn(val clazz: KClass<*>) diff --git a/libraries/matrix/src/main/java/io/element/android/x/matrix/Matrix.kt b/libraries/matrix/src/main/java/io/element/android/x/matrix/Matrix.kt index dd59606a15..bf20d0b0ac 100644 --- a/libraries/matrix/src/main/java/io/element/android/x/matrix/Matrix.kt +++ b/libraries/matrix/src/main/java/io/element/android/x/matrix/Matrix.kt @@ -10,6 +10,9 @@ import io.element.android.x.matrix.media.MediaFetcher import io.element.android.x.matrix.media.MediaKeyer import io.element.android.x.matrix.session.SessionStore import io.element.android.x.matrix.util.logError +import java.io.File +import java.util.concurrent.Executors +import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.asCoroutineDispatcher @@ -19,10 +22,6 @@ import org.matrix.rustcomponents.sdk.AuthenticationService import org.matrix.rustcomponents.sdk.Client import org.matrix.rustcomponents.sdk.ClientBuilder import timber.log.Timber -import java.io.File -import java.util.* -import java.util.concurrent.Executors -import javax.inject.Inject @SingleIn(AppScope::class) class Matrix @Inject constructor( diff --git a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt index db16d9f706..96caf48bb0 100644 --- a/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt +++ b/libraries/matrix/src/main/java/io/element/android/x/matrix/MatrixClient.kt @@ -1,7 +1,6 @@ package io.element.android.x.matrix import io.element.android.x.core.coroutine.CoroutineDispatchers -import io.element.android.x.di.SingleIn import io.element.android.x.matrix.core.UserId import io.element.android.x.matrix.media.MediaResolver import io.element.android.x.matrix.media.RustMediaResolver diff --git a/plugins/src/main/java/extension/CommonExtension.kt b/plugins/src/main/java/extension/CommonExtension.kt index 2454f3d727..5fe83566d1 100644 --- a/plugins/src/main/java/extension/CommonExtension.kt +++ b/plugins/src/main/java/extension/CommonExtension.kt @@ -45,7 +45,8 @@ fun CommonExtension<*, *, *, *>.composeConfig() { lint { // Extra rules for compose - error.add("ComposableLambdaParameterNaming") + // Disabled until lint stops inspecting generated ksp files... + // error.add("ComposableLambdaParameterNaming") error.add("ComposableLambdaParameterPosition") } } diff --git a/tools/detekt/detekt.yml b/tools/detekt/detekt.yml index 6659692329..06fddfbfd3 100644 --- a/tools/detekt/detekt.yml +++ b/tools/detekt/detekt.yml @@ -95,6 +95,7 @@ comments: active: true OutdatedDocumentation: active: true + allowParamOnConstructorProperties: true UndocumentedPublicClass: active: false UndocumentedPublicFunction: diff --git a/tools/lint/lint.xml b/tools/lint/lint.xml index 816fcb633a..c356115b08 100644 --- a/tools/lint/lint.xml +++ b/tools/lint/lint.xml @@ -112,6 +112,9 @@ + + +