diff --git a/app/build.gradle.kts b/app/build.gradle.kts index c8d07a80d7..68cbb45387 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -13,7 +13,6 @@ import com.android.build.gradle.tasks.GenerateBuildConfig import com.google.firebase.appdistribution.gradle.firebaseAppDistribution import config.BuildTimeConfig import extension.AssetCopyTask -import extension.ComponentMergingStrategy import extension.GitBranchNameValueSource import extension.GitRevisionValueSource import extension.allEnterpriseImpl @@ -23,7 +22,7 @@ import extension.allServicesImpl import extension.buildConfigFieldStr import extension.koverDependencies import extension.locales -import extension.setupAnvil +import extension.setupDependencyInjection import extension.setupKover import java.util.Locale @@ -248,11 +247,7 @@ knit { } } -setupAnvil( - generateDaggerCode = true, - generateDaggerFactoriesUsingAnvil = false, - componentMergingStrategy = ComponentMergingStrategy.KSP, -) +setupDependencyInjection() dependencies { allLibrariesImpl() diff --git a/appnav/build.gradle.kts b/appnav/build.gradle.kts index 715dd79d9b..7c29626d75 100644 --- a/appnav/build.gradle.kts +++ b/appnav/build.gradle.kts @@ -8,7 +8,7 @@ @file:Suppress("UnstableApiUsage") import extension.allFeaturesApi -import extension.setupAnvil +import extension.setupDependencyInjection plugins { id("io.element.android-compose-library") @@ -19,7 +19,7 @@ android { namespace = "io.element.android.appnav" } -setupAnvil() +setupDependencyInjection() dependencies { allFeaturesApi(project) diff --git a/features/analytics/impl/build.gradle.kts b/features/analytics/impl/build.gradle.kts index f78574e51d..b722196c59 100644 --- a/features/analytics/impl/build.gradle.kts +++ b/features/analytics/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.features.analytics.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/features/cachecleaner/api/build.gradle.kts b/features/cachecleaner/api/build.gradle.kts index 7bfe8f6c5d..81f689bb63 100644 --- a/features/cachecleaner/api/build.gradle.kts +++ b/features/cachecleaner/api/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.features.cachecleaner.api" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.architecture) diff --git a/features/cachecleaner/impl/build.gradle.kts b/features/cachecleaner/impl/build.gradle.kts index 137f00e31e..45cc5fe09b 100644 --- a/features/cachecleaner/impl/build.gradle.kts +++ b/features/cachecleaner/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.features.cachecleaner.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.cachecleaner.api) diff --git a/features/call/impl/build.gradle.kts b/features/call/impl/build.gradle.kts index 13922366c2..0c9ae5a4b0 100644 --- a/features/call/impl/build.gradle.kts +++ b/features/call/impl/build.gradle.kts @@ -1,6 +1,6 @@ import extension.buildConfigFieldStr import extension.readLocalProperty -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -60,7 +60,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/changeroommemberroles/impl/build.gradle.kts b/features/changeroommemberroles/impl/build.gradle.kts index dfe7690aed..fe5cbe3333 100644 --- a/features/changeroommemberroles/impl/build.gradle.kts +++ b/features/changeroommemberroles/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2025 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.changeroommemberroles.api) diff --git a/features/createroom/impl/build.gradle.kts b/features/createroom/impl/build.gradle.kts index d2306837d0..faf293c54d 100644 --- a/features/createroom/impl/build.gradle.kts +++ b/features/createroom/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/features/deactivation/impl/build.gradle.kts b/features/deactivation/impl/build.gradle.kts index 7694ac8bc1..3908b9d0a4 100644 --- a/features/deactivation/impl/build.gradle.kts +++ b/features/deactivation/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/features/enterprise/impl-foss/build.gradle.kts b/features/enterprise/impl-foss/build.gradle.kts index 642b2fef40..2b3e236770 100644 --- a/features/enterprise/impl-foss/build.gradle.kts +++ b/features/enterprise/impl-foss/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.features.enterprise.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.compound) diff --git a/features/ftue/impl/build.gradle.kts b/features/ftue/impl/build.gradle.kts index e95a4697ae..44ccf323b9 100644 --- a/features/ftue/impl/build.gradle.kts +++ b/features/ftue/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.ftue.api) diff --git a/features/home/impl/build.gradle.kts b/features/home/impl/build.gradle.kts index e3c8321cd5..57fefaf413 100644 --- a/features/home/impl/build.gradle.kts +++ b/features/home/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/invite/impl/build.gradle.kts b/features/invite/impl/build.gradle.kts index d6337f65c9..6a1cec8056 100644 --- a/features/invite/impl/build.gradle.kts +++ b/features/invite/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.invite.api) diff --git a/features/invitepeople/impl/build.gradle.kts b/features/invitepeople/impl/build.gradle.kts index bdb1c6942e..9133700f06 100644 --- a/features/invitepeople/impl/build.gradle.kts +++ b/features/invitepeople/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/features/joinroom/impl/build.gradle.kts b/features/joinroom/impl/build.gradle.kts index e195efd1bc..22821a3a84 100644 --- a/features/joinroom/impl/build.gradle.kts +++ b/features/joinroom/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.joinroom.api) diff --git a/features/knockrequests/impl/build.gradle.kts b/features/knockrequests/impl/build.gradle.kts index 39004b30e0..7a93786b08 100644 --- a/features/knockrequests/impl/build.gradle.kts +++ b/features/knockrequests/impl/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -import extension.setupAnvil +import extension.setupDependencyInjection plugins { id("io.element.android-compose-library") @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.knockrequests.api) diff --git a/features/leaveroom/impl/build.gradle.kts b/features/leaveroom/impl/build.gradle.kts index ff9eb5de95..edc663475f 100644 --- a/features/leaveroom/impl/build.gradle.kts +++ b/features/leaveroom/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.features.leaveroom.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.leaveroom.api) diff --git a/features/licenses/impl/build.gradle.kts b/features/licenses/impl/build.gradle.kts index 52589aeaf5..1fecb66b90 100644 --- a/features/licenses/impl/build.gradle.kts +++ b/features/licenses/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -17,7 +17,7 @@ android { namespace = "io.element.android.features.licenses.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.serialization.json) diff --git a/features/location/impl/build.gradle.kts b/features/location/impl/build.gradle.kts index 4c62bdff1a..93b0ef039f 100644 --- a/features/location/impl/build.gradle.kts +++ b/features/location/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.location.api) diff --git a/features/lockscreen/impl/build.gradle.kts b/features/lockscreen/impl/build.gradle.kts index 4260e9e792..ff5f629e86 100644 --- a/features/lockscreen/impl/build.gradle.kts +++ b/features/lockscreen/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.lockscreen.api) diff --git a/features/login/impl/build.gradle.kts b/features/login/impl/build.gradle.kts index ec01f6012a..3873ea70d7 100644 --- a/features/login/impl/build.gradle.kts +++ b/features/login/impl/build.gradle.kts @@ -1,5 +1,4 @@ -import extension.ComponentMergingStrategy -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -24,7 +23,7 @@ android { } } -setupAnvil(componentMergingStrategy = ComponentMergingStrategy.KSP) +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/logout/impl/build.gradle.kts b/features/logout/impl/build.gradle.kts index 102b277044..09fdc1bd96 100644 --- a/features/logout/impl/build.gradle.kts +++ b/features/logout/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/features/messages/impl/build.gradle.kts b/features/messages/impl/build.gradle.kts index 1519f204f6..15e087bac4 100644 --- a/features/messages/impl/build.gradle.kts +++ b/features/messages/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.messages.api) diff --git a/features/migration/impl/build.gradle.kts b/features/migration/impl/build.gradle.kts index 9314ab9da6..0a9048a5c6 100644 --- a/features/migration/impl/build.gradle.kts +++ b/features/migration/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.features.migration.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.features.migration.api) diff --git a/features/networkmonitor/impl/build.gradle.kts b/features/networkmonitor/impl/build.gradle.kts index 076cc8944d..7efe1bb118 100644 --- a/features/networkmonitor/impl/build.gradle.kts +++ b/features/networkmonitor/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.features.networkmonitor.impl" diff --git a/features/poll/impl/build.gradle.kts b/features/poll/impl/build.gradle.kts index 40c44480df..200fe0f4b8 100644 --- a/features/poll/impl/build.gradle.kts +++ b/features/poll/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.poll.api) diff --git a/features/preferences/impl/build.gradle.kts b/features/preferences/impl/build.gradle.kts index a74896686d..d6c716ca87 100644 --- a/features/preferences/impl/build.gradle.kts +++ b/features/preferences/impl/build.gradle.kts @@ -1,6 +1,6 @@ import config.BuildTimeConfig import extension.buildConfigFieldStr -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -42,7 +42,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/features/rageshake/impl/build.gradle.kts b/features/rageshake/impl/build.gradle.kts index 23180827fc..ea4eb33ba6 100644 --- a/features/rageshake/impl/build.gradle.kts +++ b/features/rageshake/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/reportroom/impl/build.gradle.kts b/features/reportroom/impl/build.gradle.kts index d60cc76f8d..797fa08741 100644 --- a/features/reportroom/impl/build.gradle.kts +++ b/features/reportroom/impl/build.gradle.kts @@ -5,7 +5,7 @@ * Please see LICENSE files in the repository root for full details. */ -import extension.setupAnvil +import extension.setupDependencyInjection plugins { id("io.element.android-compose-library") @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.reportroom.api) diff --git a/features/roomaliasresolver/impl/build.gradle.kts b/features/roomaliasresolver/impl/build.gradle.kts index dcb14f6162..f70f2a6f7b 100644 --- a/features/roomaliasresolver/impl/build.gradle.kts +++ b/features/roomaliasresolver/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.roomaliasresolver.api) diff --git a/features/roomcall/impl/build.gradle.kts b/features/roomcall/impl/build.gradle.kts index 0ec555bfb5..5c69ffed36 100644 --- a/features/roomcall/impl/build.gradle.kts +++ b/features/roomcall/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.features.roomcall.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.roomcall.api) diff --git a/features/roomdetails/impl/build.gradle.kts b/features/roomdetails/impl/build.gradle.kts index 302ae7d8c6..fa5569a873 100644 --- a/features/roomdetails/impl/build.gradle.kts +++ b/features/roomdetails/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/roomdirectory/impl/build.gradle.kts b/features/roomdirectory/impl/build.gradle.kts index 3f48136514..813d6be1ff 100644 --- a/features/roomdirectory/impl/build.gradle.kts +++ b/features/roomdirectory/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.roomdirectory.api) diff --git a/features/roommembermoderation/impl/build.gradle.kts b/features/roommembermoderation/impl/build.gradle.kts index 93294988f6..7208b5985f 100644 --- a/features/roommembermoderation/impl/build.gradle.kts +++ b/features/roommembermoderation/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2025 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/features/securebackup/impl/build.gradle.kts b/features/securebackup/impl/build.gradle.kts index 68916b4fe8..399547108b 100644 --- a/features/securebackup/impl/build.gradle.kts +++ b/features/securebackup/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/share/impl/build.gradle.kts b/features/share/impl/build.gradle.kts index c059a24982..3f8ef152fb 100644 --- a/features/share/impl/build.gradle.kts +++ b/features/share/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/signedout/impl/build.gradle.kts b/features/signedout/impl/build.gradle.kts index f5f1357cbc..f4da2e48a4 100644 --- a/features/signedout/impl/build.gradle.kts +++ b/features/signedout/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.features.signedout.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.features.signedout.api) diff --git a/features/startchat/impl/build.gradle.kts b/features/startchat/impl/build.gradle.kts index ddc8a271ef..42d5263d58 100644 --- a/features/startchat/impl/build.gradle.kts +++ b/features/startchat/impl/build.gradle.kts @@ -1,5 +1,4 @@ -import extension.ComponentMergingStrategy -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -23,7 +22,7 @@ android { } } -setupAnvil(componentMergingStrategy = ComponentMergingStrategy.KSP) +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/features/userprofile/impl/build.gradle.kts b/features/userprofile/impl/build.gradle.kts index 7bcebae565..0805f0d7fc 100644 --- a/features/userprofile/impl/build.gradle.kts +++ b/features/userprofile/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/features/verifysession/impl/build.gradle.kts b/features/verifysession/impl/build.gradle.kts index 6454c893e8..b318b10fce 100644 --- a/features/verifysession/impl/build.gradle.kts +++ b/features/verifysession/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/features/viewfolder/impl/build.gradle.kts b/features/viewfolder/impl/build.gradle.kts index 015e23a85f..023f3c5762 100644 --- a/features/viewfolder/impl/build.gradle.kts +++ b/features/viewfolder/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.features.viewfolder.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/libraries/androidutils/build.gradle.kts b/libraries/androidutils/build.gradle.kts index 62cef138d2..c3ddda519b 100644 --- a/libraries/androidutils/build.gradle.kts +++ b/libraries/androidutils/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -18,7 +18,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.di) diff --git a/libraries/architecture/build.gradle.kts b/libraries/architecture/build.gradle.kts index 100722c32a..e481aff77a 100644 --- a/libraries/architecture/build.gradle.kts +++ b/libraries/architecture/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.architecture" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.di) diff --git a/libraries/audio/impl/build.gradle.kts b/libraries/audio/impl/build.gradle.kts index 61a4cd7eba..1138223752 100644 --- a/libraries/audio/impl/build.gradle.kts +++ b/libraries/audio/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2025 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.libraries.audio.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.audio.api) diff --git a/libraries/cryptography/impl/build.gradle.kts b/libraries/cryptography/impl/build.gradle.kts index def2c73346..6e517d5401 100644 --- a/libraries/cryptography/impl/build.gradle.kts +++ b/libraries/cryptography/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.cryptography.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/dateformatter/impl/build.gradle.kts b/libraries/dateformatter/impl/build.gradle.kts index ed8c7731bd..770b9a7047 100644 --- a/libraries/dateformatter/impl/build.gradle.kts +++ b/libraries/dateformatter/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-compose-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.libraries.dateformatter.impl" diff --git a/libraries/deeplink/impl/build.gradle.kts b/libraries/deeplink/impl/build.gradle.kts index 412c162299..70bbca2336 100644 --- a/libraries/deeplink/impl/build.gradle.kts +++ b/libraries/deeplink/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.deeplink.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.deeplink.api) diff --git a/libraries/eventformatter/impl/build.gradle.kts b/libraries/eventformatter/impl/build.gradle.kts index 372325286f..2f97cab31b 100644 --- a/libraries/eventformatter/impl/build.gradle.kts +++ b/libraries/eventformatter/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/libraries/featureflag/impl/build.gradle.kts b/libraries/featureflag/impl/build.gradle.kts index bd702fafac..4cfdb546fa 100644 --- a/libraries/featureflag/impl/build.gradle.kts +++ b/libraries/featureflag/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.libraries.featureflag.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.featureflag.api) diff --git a/libraries/fullscreenintent/impl/build.gradle.kts b/libraries/fullscreenintent/impl/build.gradle.kts index 37fbd01aca..40a65d48e8 100644 --- a/libraries/fullscreenintent/impl/build.gradle.kts +++ b/libraries/fullscreenintent/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.fullscreenintent.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.fullscreenintent.api) diff --git a/libraries/indicator/impl/build.gradle.kts b/libraries/indicator/impl/build.gradle.kts index d5046eb00c..1a5e2d560e 100644 --- a/libraries/indicator/impl/build.gradle.kts +++ b/libraries/indicator/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-compose-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.libraries.indicator.impl" diff --git a/libraries/matrix/impl/build.gradle.kts b/libraries/matrix/impl/build.gradle.kts index 93edc25a81..c5f444b049 100644 --- a/libraries/matrix/impl/build.gradle.kts +++ b/libraries/matrix/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.libraries.matrix.impl" } -setupAnvil() +setupDependencyInjection() dependencies { releaseImplementation(libs.matrix.sdk) diff --git a/libraries/matrixui/build.gradle.kts b/libraries/matrixui/build.gradle.kts index 3b54a0224b..e5fb78eb6d 100644 --- a/libraries/matrixui/build.gradle.kts +++ b/libraries/matrixui/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.di) diff --git a/libraries/mediapickers/impl/build.gradle.kts b/libraries/mediapickers/impl/build.gradle.kts index c21d096e92..7ca588844d 100644 --- a/libraries/mediapickers/impl/build.gradle.kts +++ b/libraries/mediapickers/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-compose-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.libraries.mediapickers.impl" diff --git a/libraries/mediapickers/test/build.gradle.kts b/libraries/mediapickers/test/build.gradle.kts index 4b10dca551..17517d886d 100644 --- a/libraries/mediapickers/test/build.gradle.kts +++ b/libraries/mediapickers/test/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-compose-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.libraries.mediapickers.test" diff --git a/libraries/mediaplayer/impl/build.gradle.kts b/libraries/mediaplayer/impl/build.gradle.kts index 6bd19680a3..0a0dcf5fe0 100644 --- a/libraries/mediaplayer/impl/build.gradle.kts +++ b/libraries/mediaplayer/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.libraries.mediaplayer.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.mediaplayer.api) diff --git a/libraries/mediaupload/api/build.gradle.kts b/libraries/mediaupload/api/build.gradle.kts index ce4f8c0f60..ff14dc052f 100644 --- a/libraries/mediaupload/api/build.gradle.kts +++ b/libraries/mediaupload/api/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.libraries.mediaupload.api" diff --git a/libraries/mediaupload/impl/build.gradle.kts b/libraries/mediaupload/impl/build.gradle.kts index be2637e6e1..437473a5b7 100644 --- a/libraries/mediaupload/impl/build.gradle.kts +++ b/libraries/mediaupload/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.mediaupload.api) diff --git a/libraries/mediaviewer/impl/build.gradle.kts b/libraries/mediaviewer/impl/build.gradle.kts index 311a0441c8..8221c6b77e 100644 --- a/libraries/mediaviewer/impl/build.gradle.kts +++ b/libraries/mediaviewer/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.coroutines.core) diff --git a/libraries/network/build.gradle.kts b/libraries/network/build.gradle.kts index 9b4d905135..95f89f8d01 100644 --- a/libraries/network/build.gradle.kts +++ b/libraries/network/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -20,7 +20,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/oidc/impl/build.gradle.kts b/libraries/oidc/impl/build.gradle.kts index c0f8e9d1d6..4aa270c750 100644 --- a/libraries/oidc/impl/build.gradle.kts +++ b/libraries/oidc/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -23,7 +23,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.appconfig) diff --git a/libraries/permissions/impl/build.gradle.kts b/libraries/permissions/impl/build.gradle.kts index 347032c65e..3ab164e31a 100644 --- a/libraries/permissions/impl/build.gradle.kts +++ b/libraries/permissions/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.accompanist.permission) diff --git a/libraries/preferences/impl/build.gradle.kts b/libraries/preferences/impl/build.gradle.kts index 80988f9c07..3a21ca5cb9 100644 --- a/libraries/preferences/impl/build.gradle.kts +++ b/libraries/preferences/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.preferences.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.preferences.api) diff --git a/libraries/push/impl/build.gradle.kts b/libraries/push/impl/build.gradle.kts index d256666156..4a3da20370 100644 --- a/libraries/push/impl/build.gradle.kts +++ b/libraries/push/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -22,7 +22,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/pushproviders/firebase/build.gradle.kts b/libraries/pushproviders/firebase/build.gradle.kts index 537b29d3c6..e17234b745 100644 --- a/libraries/pushproviders/firebase/build.gradle.kts +++ b/libraries/pushproviders/firebase/build.gradle.kts @@ -8,7 +8,7 @@ @file:Suppress("UnstableApiUsage") import config.BuildTimeConfig -import extension.setupAnvil +import extension.setupDependencyInjection plugins { id("io.element.android-library") @@ -45,7 +45,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/pushproviders/unifiedpush/build.gradle.kts b/libraries/pushproviders/unifiedpush/build.gradle.kts index c98d98f64e..f74d4f6c80 100644 --- a/libraries/pushproviders/unifiedpush/build.gradle.kts +++ b/libraries/pushproviders/unifiedpush/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.pushproviders.unifiedpush" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/pushstore/impl/build.gradle.kts b/libraries/pushstore/impl/build.gradle.kts index 3bda0aaaed..8b53e6aa07 100644 --- a/libraries/pushstore/impl/build.gradle.kts +++ b/libraries/pushstore/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -19,7 +19,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/roomselect/impl/build.gradle.kts b/libraries/roomselect/impl/build.gradle.kts index 3ded043610..5f9ebf7536 100644 --- a/libraries/roomselect/impl/build.gradle.kts +++ b/libraries/roomselect/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.libraries.roomselect.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/libraries/session-storage/impl/build.gradle.kts b/libraries/session-storage/impl/build.gradle.kts index 76462ef035..a2b2581e1b 100644 --- a/libraries/session-storage/impl/build.gradle.kts +++ b/libraries/session-storage/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.sessionstorage.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/textcomposer/impl/build.gradle.kts b/libraries/textcomposer/impl/build.gradle.kts index 0c8af9a636..c7b4c15089 100644 --- a/libraries/textcomposer/impl/build.gradle.kts +++ b/libraries/textcomposer/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -19,7 +19,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.architecture) diff --git a/libraries/troubleshoot/impl/build.gradle.kts b/libraries/troubleshoot/impl/build.gradle.kts index f88ccc8f85..b82d5a5091 100644 --- a/libraries/troubleshoot/impl/build.gradle.kts +++ b/libraries/troubleshoot/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -21,7 +21,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/libraries/usersearch/impl/build.gradle.kts b/libraries/usersearch/impl/build.gradle.kts index d720eef9fa..6498c3a44e 100644 --- a/libraries/usersearch/impl/build.gradle.kts +++ b/libraries/usersearch/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.libraries.usersearch.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.core) diff --git a/libraries/voiceplayer/impl/build.gradle.kts b/libraries/voiceplayer/impl/build.gradle.kts index f579586aa0..b512608a0d 100644 --- a/libraries/voiceplayer/impl/build.gradle.kts +++ b/libraries/voiceplayer/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.libraries.voiceplayer.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.voiceplayer.api) diff --git a/libraries/voicerecorder/impl/build.gradle.kts b/libraries/voicerecorder/impl/build.gradle.kts index bd3f7e72cb..4fecdf7776 100644 --- a/libraries/voicerecorder/impl/build.gradle.kts +++ b/libraries/voicerecorder/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.libraries.voicerecorder.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.voicerecorder.api) diff --git a/libraries/wellknown/impl/build.gradle.kts b/libraries/wellknown/impl/build.gradle.kts index 3bc23953a0..1d7927da57 100644 --- a/libraries/wellknown/impl/build.gradle.kts +++ b/libraries/wellknown/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2025 New Vector Ltd. @@ -17,7 +17,7 @@ android { namespace = "io.element.android.libraries.wellknown.impl" } -setupAnvil() +setupDependencyInjection() dependencies { api(projects.libraries.wellknown.api) diff --git a/plugins/src/main/kotlin/extension/AnvilExtensions.kt b/plugins/src/main/kotlin/extension/AnvilExtensions.kt deleted file mode 100644 index 2ebd991b57..0000000000 --- a/plugins/src/main/kotlin/extension/AnvilExtensions.kt +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2024 New Vector Ltd. - * - * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial - * Please see LICENSE files in the repository root for full details. - */ - -package extension - -import dev.zacsweers.metro.gradle.MetroPluginExtension -import org.gradle.accessors.dm.LibrariesForLibs -import org.gradle.api.Project -import org.gradle.api.provider.Provider -import org.gradle.kotlin.dsl.the -import org.gradle.plugin.use.PluginDependency - -/** - * Setup Anvil plugin with the given configuration. - * @param generateDaggerCode whether to enable general Dagger code generation using Kapt. `false` by default. - * @param generateDaggerFactoriesUsingAnvil whether to generate Dagger factories using Anvil instead of Kapt. `true` by default. - * @param componentMergingStrategy how to perform component merging. This is `ComponentMergingStrategy.NONE` by default, which will prevent component merging - * from running. - */ -fun Project.setupAnvil( - generateDaggerCode: Boolean = false, - generateDaggerFactoriesUsingAnvil: Boolean = true, - componentMergingStrategy: ComponentMergingStrategy = ComponentMergingStrategy.NONE, -) { - val libs = the() - -// // Add dagger dependency, needed for generated code -// dependencies.implementation(libs.dagger) - - // Apply Anvil plugin and configure it - applyPluginIfNeeded(libs.plugins.metro) - applyPluginIfNeeded(libs.plugins.ksp) - -// project.pluginManager.withPlugin(libs.plugins.anvil.get().pluginId) { -// // Setup extension -// extensions.configure(AnvilExtension::class.java) { -// this.generateDaggerFactories.set(generateDaggerFactoriesUsingAnvil) -// this.disableComponentMerging.set(componentMergingStrategy == ComponentMergingStrategy.NONE) -// -// useKsp( -// contributesAndFactoryGeneration = true, -// componentMerging = componentMergingStrategy == ComponentMergingStrategy.KSP, -// ) -// } -// } - -// if (generateDaggerCode) { -// // Needed at the top level since dagger code should be generated at a single point for performance reasons -// dependencies.add("ksp", libs.dagger.compiler) -// } - - project.pluginManager.withPlugin(libs.plugins.metro.get().pluginId) { - // Setup extension - extensions.configure(MetroPluginExtension::class.java) { -// debug.set(true) -// generateAssistedFactories.set(true) -// this.generateAssistedFactories.set(generateDaggerFactoriesUsingAnvil) - } - } - - // These dependencies are only needed for compose library or application modules - if (project.pluginManager.hasPlugin("io.element.android-compose-library") - || project.pluginManager.hasPlugin("io.element.android-compose-application")) { - // Annotations to generate DI code for Appyx nodes - dependencies.implementation(project.project(":anvilannotations")) - // Code generator for the annotations above - dependencies.add("ksp", project.project(":anvilcodegen")) - } -} - -private fun Project.applyPluginIfNeeded(plugin: Provider) { - val pluginId = plugin.get().pluginId - if (!pluginManager.hasPlugin(pluginId)) { - pluginManager.apply(pluginId) - } -} - -enum class ComponentMergingStrategy { - NONE, - KAPT, - KSP -} diff --git a/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt b/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt new file mode 100644 index 0000000000..c15d9b0502 --- /dev/null +++ b/plugins/src/main/kotlin/extension/DependencyInjectionExtensions.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2024 New Vector Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial + * Please see LICENSE files in the repository root for full details. + */ + +package extension + +import org.gradle.accessors.dm.LibrariesForLibs +import org.gradle.api.Project +import org.gradle.api.provider.Provider +import org.gradle.kotlin.dsl.the +import org.gradle.plugin.use.PluginDependency + +/** + * Setup the Metro plugin with the shared configuration. + * @param generateNodeFactories Whether to set up the KSP plugin and dependencies to generate Appyx Node factories. + */ +fun Project.setupDependencyInjection( + generateNodeFactories: Boolean = shouldApplyAppyxCodegen(), +) { + val libs = the() + + // Apply Metro plugin and configure it + applyPluginIfNeeded(libs.plugins.metro) + + if (generateNodeFactories) { + applyPluginIfNeeded(libs.plugins.ksp) + + // Annotations to generate DI code for Appyx nodes + dependencies.implementation(project.project(":anvilannotations")) + // Code generator for the annotations above + dependencies.add("ksp", project.project(":anvilcodegen")) + } +} + +// These dependencies should only be needed for compose library or application modules +private fun Project.shouldApplyAppyxCodegen(): Boolean { + return project.pluginManager.hasPlugin("io.element.android-compose-library") + || project.pluginManager.hasPlugin("io.element.android-compose-application") +} + +private fun Project.applyPluginIfNeeded(plugin: Provider) { + val pluginId = plugin.get().pluginId + if (!pluginManager.hasPlugin(pluginId)) { + pluginManager.apply(pluginId) + } +} diff --git a/services/analytics/impl/build.gradle.kts b/services/analytics/impl/build.gradle.kts index 6143511f26..45b5d0a9f4 100644 --- a/services/analytics/impl/build.gradle.kts +++ b/services/analytics/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -16,7 +16,7 @@ android { namespace = "io.element.android.services.analytics.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(projects.libraries.androidutils) diff --git a/services/analytics/noop/build.gradle.kts b/services/analytics/noop/build.gradle.kts index a4255733f1..d17a4b7380 100644 --- a/services/analytics/noop/build.gradle.kts +++ b/services/analytics/noop/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.services.analytics.noop" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/services/analyticsproviders/posthog/build.gradle.kts b/services/analyticsproviders/posthog/build.gradle.kts index 01e6dbc836..d6a03d1cb3 100644 --- a/services/analyticsproviders/posthog/build.gradle.kts +++ b/services/analyticsproviders/posthog/build.gradle.kts @@ -1,6 +1,6 @@ import config.BuildTimeConfig import extension.buildConfigFieldStr -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -31,7 +31,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/services/analyticsproviders/sentry/build.gradle.kts b/services/analyticsproviders/sentry/build.gradle.kts index 1b1c351712..08912a28b7 100644 --- a/services/analyticsproviders/sentry/build.gradle.kts +++ b/services/analyticsproviders/sentry/build.gradle.kts @@ -1,7 +1,7 @@ import config.BuildTimeConfig import extension.buildConfigFieldStr import extension.readLocalProperty -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -34,7 +34,7 @@ android { } } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger) diff --git a/services/apperror/impl/build.gradle.kts b/services/apperror/impl/build.gradle.kts index 01163d240c..1e602f3ea4 100644 --- a/services/apperror/impl/build.gradle.kts +++ b/services/apperror/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-compose-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.services.apperror.impl" diff --git a/services/appnavstate/api/build.gradle.kts b/services/appnavstate/api/build.gradle.kts index bf3f26ae68..f25cf59764 100644 --- a/services/appnavstate/api/build.gradle.kts +++ b/services/appnavstate/api/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -15,7 +15,7 @@ android { namespace = "io.element.android.services.appnavstate.api" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.coroutines.core) diff --git a/services/appnavstate/impl/build.gradle.kts b/services/appnavstate/impl/build.gradle.kts index 6a12051df8..2e82e13994 100644 --- a/services/appnavstate/impl/build.gradle.kts +++ b/services/appnavstate/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2022-2024 New Vector Ltd. @@ -11,7 +11,7 @@ plugins { id("io.element.android-library") } -setupAnvil() +setupDependencyInjection() android { namespace = "io.element.android.services.appnavstate.impl" diff --git a/services/toolbox/impl/build.gradle.kts b/services/toolbox/impl/build.gradle.kts index d99efee5c0..ffc95448eb 100644 --- a/services/toolbox/impl/build.gradle.kts +++ b/services/toolbox/impl/build.gradle.kts @@ -1,4 +1,4 @@ -import extension.setupAnvil +import extension.setupDependencyInjection /* * Copyright 2023, 2024 New Vector Ltd. @@ -14,7 +14,7 @@ android { namespace = "io.element.android.services.toolbox.impl" } -setupAnvil() +setupDependencyInjection() dependencies { implementation(libs.dagger)