diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 933c442501..be175c0436 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: with: name: vector-${{ matrix.target }}-debug path: | - vector/build/outputs/apk/*/debug/*.apk + vector-app/build/outputs/apk/*/debug/*.apk release: name: Build unsigned GPlay APKs @@ -65,7 +65,7 @@ jobs: with: name: vector-gplay-release-unsigned path: | - vector/build/outputs/apk/*/release/*.apk + vector-app/build/outputs/apk/*/release/*.apk exodus: runs-on: ubuntu-latest diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 70669596bb..da70d13a86 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -7,7 +7,7 @@ on: # Enrich gradle.properties for CI/CD env: - GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError" -Dkotlin.daemon.jvm.options="-Xmx2560m" -Dkotlin.incremental=false + GRADLE_OPTS: -Dorg.gradle.jvmargs="-Xmx3072m -Dfile.encoding=UTF-8 -XX:+HeapDumpOnOutOfMemoryError" -XX:MaxPermSize=512m -Dkotlin.daemon.jvm.options="-Xmx2g" -Dkotlin.incremental=false CI_GRADLE_ARG_PROPERTIES: --stacktrace -PpreDexEnable=false --max-workers 2 --no-daemon jobs: @@ -27,7 +27,7 @@ jobs: - uses: actions/checkout@v3 - name: Run knit run: | - ./gradlew knitCheck + ./gradlew knitCheck $CI_GRADLE_ARG_PROPERTIES # Check the project: ktlint, detekt, lint lint: @@ -41,7 +41,7 @@ jobs: - uses: actions/checkout@v3 - name: Run ktlint run: | - ./gradlew ktlintCheck --continue + ./gradlew ktlintCheck $CI_GRADLE_ARG_PROPERTIES --continue - name: Run detekt if: always() run: | @@ -49,8 +49,8 @@ jobs: - name: Run lint # Not always, if ktlint or detekt fail, avoid running the long lint check. run: | - ./gradlew lintGplayRelease $CI_GRADLE_ARG_PROPERTIES - ./gradlew lintFdroidRelease $CI_GRADLE_ARG_PROPERTIES + ./gradlew vector-app:lintGplayRelease $CI_GRADLE_ARG_PROPERTIES + ./gradlew vector-app:lintFdroidRelease $CI_GRADLE_ARG_PROPERTIES - name: Upload reports if: always() uses: actions/upload-artifact@v3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 2a89ed3040..81262f1e9f 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -49,6 +49,7 @@ jobs: disable-animations: true emulator-build: 7425822 script: | + ./gradlew gatherGplayDebugStringTemplates $CI_GRADLE_ARG_PROPERTIES ./gradlew unitTestsWithCoverage $CI_GRADLE_ARG_PROPERTIES ./gradlew instrumentationTestsWithCoverage $CI_GRADLE_ARG_PROPERTIES ./gradlew generateCoverageReport $CI_GRADLE_ARG_PROPERTIES @@ -65,6 +66,7 @@ jobs: disable-animations: true emulator-build: 7425822 script: | + ./gradlew gatherGplayDebugStringTemplates $CI_GRADLE_ARG_PROPERTIES ./gradlew unitTestsWithCoverage $CI_GRADLE_ARG_PROPERTIES ./gradlew instrumentationTestsWithCoverage $CI_GRADLE_ARG_PROPERTIES ./gradlew generateCoverageReport $CI_GRADLE_ARG_PROPERTIES diff --git a/build.gradle b/build.gradle index 903d25e45a..64434ac697 100644 --- a/build.gradle +++ b/build.gradle @@ -32,6 +32,7 @@ buildscript { classpath 'org.owasp:dependency-check-gradle:7.1.2' classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.7.10" classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0" + classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/changelog.d/6407.misc b/changelog.d/6407.misc new file mode 100644 index 0000000000..3f7a27fc01 --- /dev/null +++ b/changelog.d/6407.misc @@ -0,0 +1 @@ +Converts the vector module to a library with a parent vector-app application module diff --git a/coverage.gradle b/coverage.gradle index f335ed8063..716f9b7cc7 100644 --- a/coverage.gradle +++ b/coverage.gradle @@ -28,8 +28,8 @@ def initializeReport(report, projects, classExcludes) { report.executionData { fileTree(rootProject.rootDir.absolutePath).include( - "**/build/**/*.exec", - "**/build/outputs/code_coverage/**/coverage.ec", + "**/build/**/*.exec", + "**/build/outputs/code_coverage/**/coverage.ec", ) } report.reports { @@ -74,18 +74,18 @@ def collectProjects(predicate) { task generateCoverageReport(type: JacocoReport) { outputs.upToDateWhen { false } rootProject.apply plugin: 'jacoco' - def projects = collectProjects { ['vector', 'matrix-sdk-android'].contains(it.name) } + def projects = collectProjects { ['vector-app', 'vector', 'matrix-sdk-android'].contains(it.name) } initializeReport(it, projects, excludes) } task unitTestsWithCoverage(type: GradleBuild) { // the 7.1.3 android gradle plugin has a bug where enableTestCoverage generates invalid coverage - startParameter.projectProperties.coverage = [enableTestCoverage: false] + startParameter.projectProperties.coverage = [enableTestCoverage: false] tasks = [':vector:testGplayDebugUnitTest', ':matrix-sdk-android:testDebugUnitTest'] } task instrumentationTestsWithCoverage(type: GradleBuild) { - startParameter.projectProperties.coverage = [enableTestCoverage: true] + startParameter.projectProperties.coverage = [enableTestCoverage: true] startParameter.projectProperties['android.testInstrumentationRunnerArguments.notPackage'] = 'im.vector.app.ui' - tasks = [':vector:connectedGplayDebugAndroidTest', 'matrix-sdk-android:connectedDebugAndroidTest'] + tasks = [':vector-app:connectedGplayDebugAndroidTest', ':vector:connectedGplayDebugAndroidTest', 'matrix-sdk-android:connectedDebugAndroidTest'] } diff --git a/dependencies.gradle b/dependencies.gradle index d32d0d10ac..e25e7b42cb 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -85,6 +85,8 @@ ext.libs = [ 'material' : "com.google.android.material:material:1.6.1", 'appdistributionApi' : "com.google.firebase:firebase-appdistribution-api-ktx:$appDistribution", 'appdistribution' : "com.google.firebase:firebase-appdistribution:$appDistribution", + // Phone number https://github.com/google/libphonenumber + 'phonenumber' : "com.googlecode.libphonenumber:libphonenumber:8.12.54" ], dagger : [ 'dagger' : "com.google.dagger:dagger:$dagger", diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle index faa798c9dc..7b06edb530 100644 --- a/matrix-sdk-android/build.gradle +++ b/matrix-sdk-android/build.gradle @@ -199,8 +199,7 @@ dependencies { // Exif data handling implementation libs.apache.commonsImaging - // Phone number https://github.com/google/libphonenumber - implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.54' + implementation libs.google.phonenumber testImplementation libs.tests.junit // Note: version sticks to 1.9.2 due to https://github.com/mockk/mockk/issues/281 diff --git a/settings.gradle b/settings.gradle index 782d2caf4a..023d09e74a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,3 +1,4 @@ +include ':vector-app' include ':vector' include ':vector-config' include ':matrix-sdk-android' diff --git a/tools/check/check_code_quality.sh b/tools/check/check_code_quality.sh index 910616176c..fc46fca758 100755 --- a/tools/check/check_code_quality.sh +++ b/tools/check/check_code_quality.sh @@ -74,7 +74,9 @@ ${searchForbiddenStringsScript} ./tools/check/forbidden_strings_in_code.txt \ ./vector/src/debug/java \ ./vector/src/release/java \ ./vector/src/fdroid/java \ - ./vector/src/gplay/java + ./vector/src/gplay/java \ + ./vector-app/src/gplay/java \ + ./vector-app/src/main/java resultForbiddenStringInCode=$? @@ -95,7 +97,9 @@ ${searchForbiddenStringsScript} ./tools/check/forbidden_strings_in_code_app.txt ./vector/src/debug/java \ ./vector/src/release/java \ ./vector/src/fdroid/java \ - ./vector/src/gplay/java + ./vector/src/gplay/java \ + ./vector-app/src/gplay/java \ + ./vector-app/src/main/java resultForbiddenStringInCodeApp=$? @@ -107,7 +111,8 @@ ${searchForbiddenStringsScript} ./tools/check/forbidden_strings_in_resources.txt ./vector/src/main/res/color \ ./vector/src/main/res/layout \ ./vector/src/main/res/values \ - ./vector/src/main/res/xml + ./vector/src/main/res/xml \ + ./vector-app/src/main/res/values resultForbiddenStringInResource=$? @@ -115,7 +120,8 @@ echo echo "Search for forbidden patterns in layouts..." ${searchForbiddenStringsScript} ./tools/check/forbidden_strings_in_layout.txt \ - ./vector/src/main/res/layout + ./vector/src/main/res/layout \ + ./vector-app/src/main/res/layout resultForbiddenStringInLayout=$? @@ -155,7 +161,11 @@ ${checkLongFilesScript} ${maxLines} \ ./vector/src/main/java \ ./vector/src/release/java \ ./vector/src/sharedTest/java \ - ./vector/src/test/java + ./vector/src/test/java \ + ./vector/src/androidTest/java \ + ./vector/src/gplay/java \ + ./vector/src/main/java + resultLongFiles=$? diff --git a/vector/lint.xml b/tools/lint/lint.xml similarity index 100% rename from vector/lint.xml rename to tools/lint/lint.xml diff --git a/vector-app/build.gradle b/vector-app/build.gradle new file mode 100644 index 0000000000..e52d2b6bb9 --- /dev/null +++ b/vector-app/build.gradle @@ -0,0 +1,380 @@ +import com.android.build.OutputFile + +apply plugin: 'com.android.application' +apply plugin: 'com.google.firebase.appdistribution' +apply plugin: 'com.google.android.gms.oss-licenses-plugin' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-parcelize' +apply plugin: 'kotlin-kapt' +apply plugin: 'dagger.hilt.android.plugin' +apply plugin: 'kotlinx-knit' +apply plugin: 'com.likethesalad.stem' + +if (project.hasProperty("coverage")) { + apply plugin: 'jacoco' +} + +kapt { + correctErrorTypes = true +} + +knit { + files = fileTree(project.rootDir) { + include '**/*.md' + include '**/*.kt' + include '**/*.kts' + exclude '**/build/**' + exclude '**/.gradle/**' + exclude '**/towncrier/template.md' + exclude '**/CHANGES.md' + } +} + +// Note: 2 digits max for each value +ext.versionMajor = 1 +ext.versionMinor = 4 +// Note: even values are reserved for regular release, odd values for hotfix release. +// When creating a hotfix, you should decrease the value, since the current value +// is the value for the next regular release. +ext.versionPatch = 36 + +static def getGitTimestamp() { + def cmd = 'git show -s --format=%ct' + return cmd.execute().text.trim() as Long +} + +static def generateVersionCodeFromTimestamp() { + // It's unix timestamp, minus timestamp of October 3rd 2018 (first commit date) divided by 100: It's incremented by one every 100 seconds. + // plus 20_000_000 for compatibility reason with the previous way the Version Code was computed + // Note that the result will be multiplied by 10 when adding the digit for the arch + return ((getGitTimestamp() - 1_538_524_800) / 100).toInteger() + 20_000_000 +} + +def generateVersionCodeFromVersionName() { + // plus 4_000_000 for compatibility reason with the previous way the Version Code was computed + // Note that the result will be multiplied by 10 when adding the digit for the arch + return (versionMajor * 1_00_00 + versionMinor * 1_00 + versionPatch) + 4_000_000 +} + +def getVersionCode() { + if (gitBranchName() == "develop") { + return generateVersionCodeFromTimestamp() + } else { + return generateVersionCodeFromVersionName() + } +} + +static def gitRevision() { + def cmd = "git rev-parse --short=8 HEAD" + return cmd.execute().text.trim() +} + +static def gitRevisionDate() { + def cmd = "git show -s --format=%ci HEAD^{commit}" + return cmd.execute().text.trim() +} + +static def gitBranchName() { + def fromEnv = System.env.BUILDKITE_BRANCH as String ?: "" + + if (!fromEnv.isEmpty()) { + return fromEnv + } else { + // Note: this command return "HEAD" on Buildkite, so use the system env 'BUILDKITE_BRANCH' content first + def cmd = "git rev-parse --abbrev-ref HEAD" + return cmd.execute().text.trim() + } +} + +// For Google Play build, build on any other branch than main will have a "-dev" suffix +static def getGplayVersionSuffix() { + if (gitBranchName() == "main") { + return "" + } else { + return "-dev" + } +} + +static def gitTag() { + def cmd = "git describe --exact-match --tags" + return cmd.execute().text.trim() +} + +// For F-Droid build, build on a not tagged commit will have a "-dev" suffix +static def getFdroidVersionSuffix() { + if (gitTag() == "") { + return "-dev" + } else { + return "" + } +} + +project.android.buildTypes.all { buildType -> + buildType.javaCompileOptions.annotationProcessorOptions.arguments = + [ + validateEpoxyModelUsage: String.valueOf(buildType.name == 'debug') + ] +} + +// map for the version codes last digit +// x86 must have greater values than arm +// 64 bits have greater value than 32 bits +ext.abiVersionCodes = ["armeabi-v7a": 1, "arm64-v8a": 2, "x86": 3, "x86_64": 4].withDefault { 0 } + +def buildNumber = System.env.BUILDKITE_BUILD_NUMBER as Integer ?: 0 + +android { + // Due to a bug introduced in Android gradle plugin 3.6.0, we have to specify the ndk version to use + // Ref: https://issuetracker.google.com/issues/144111441 + ndkVersion "21.3.6528147" + + compileSdk versions.compileSdk + + defaultConfig { + applicationId "im.vector.app" + // Set to API 21: see #405 + minSdk versions.minSdk + targetSdk versions.targetSdk + multiDexEnabled true + + renderscriptTargetApi 24 + renderscriptSupportModeEnabled true + + // `develop` branch will have version code from timestamp, to ensure each build from CI has a incremented versionCode. + // Other branches (main, features, etc.) will have version code based on application version. + versionCode project.getVersionCode() + + // Required for sonar analysis + versionName "${versionMajor}.${versionMinor}.${versionPatch}-sonar" + + // Generate a random app task affinity + manifestPlaceholders = [appTaskAffinitySuffix: "H_${gitRevision()}"] + + buildConfigField "String", "GIT_REVISION", "\"${gitRevision()}\"" + buildConfigField "String", "GIT_REVISION_DATE", "\"${gitRevisionDate()}\"" + buildConfigField "String", "GIT_BRANCH_NAME", "\"${gitBranchName()}\"" + buildConfigField "String", "BUILD_NUMBER", "\"${buildNumber}\"" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + + // Keep abiFilter for the universalApk + ndk { + abiFilters "armeabi-v7a", "x86", 'arm64-v8a', 'x86_64' + } + + // Ref: https://developer.android.com/studio/build/configure-apk-splits.html + splits { + // Configures multiple APKs based on ABI. + abi { + // Enables building multiple APKs per ABI. + enable true + + // By default all ABIs are included, so use reset() and include to specify that we only + // want APKs for armeabi-v7a, x86, arm64-v8a and x86_64. + + // Resets the list of ABIs that Gradle should create APKs for to none. + reset() + + // Specifies a list of ABIs that Gradle should create APKs for. + include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" + + // Generate a universal APK that includes all ABIs, so user who install from CI tool can use this one by default. + universalApk true + } + } + + applicationVariants.all { variant -> + // assign different version code for each output + def baseVariantVersion = variant.versionCode * 10 + variant.outputs.each { output -> + def baseAbiVersionCode = project.ext.abiVersionCodes.get(output.getFilter(OutputFile.ABI)) + // Known limitation: it does not modify the value in the BuildConfig.java generated file + // See https://issuetracker.google.com/issues/171133218 + output.versionCodeOverride = baseVariantVersion + baseAbiVersionCode + print "ABI " + output.getFilter(OutputFile.ABI) + " \t-> VersionCode = " + output.versionCodeOverride + "\n" + output.outputFileName = output.outputFileName.replace("vector-app", "vector") + } + } + + // The following argument makes the Android Test Orchestrator run its + // "pm clear" command after each test invocation. This command ensures + // that the app's state is completely cleared between tests. + testInstrumentationRunnerArguments clearPackageData: 'true' + } + + testOptions { + // Disables animations during instrumented tests you run from the command line… + // This property does not affect tests that you run using Android Studio.” + animationsDisabled = true + + // Comment to run on Android 12 +// execution 'ANDROIDX_TEST_ORCHESTRATOR' + } + + signingConfigs { + debug { + keyAlias 'androiddebugkey' + keyPassword 'android' + storeFile file('./signature/debug.keystore') + storePassword 'android' + } + nightly { + keyAlias System.env.ELEMENT_ANDROID_NIGHTLY_KEYID ?: project.property("signing.element.nightly.keyId") + keyPassword System.env.ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD ?: project.property("signing.element.nightly.keyPassword") + storeFile file('./signature/nightly.keystore') + storePassword System.env.ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD ?: project.property("signing.element.nightly.storePassword") + } + release { + keyAlias project.property("signing.element.keyId") + keyPassword project.property("signing.element.keyPassword") + storeFile file(project.property("signing.element.storePath")) + storePassword project.property("signing.element.storePassword") + } + } + + buildTypes { + debug { + applicationIdSuffix ".debug" + signingConfig signingConfigs.debug + resValue "color", "launcher_background", "#0DBD8B" + + if (project.hasProperty("coverage")) { + testCoverageEnabled = coverage.enableTestCoverage + } + } + + release { + resValue "color", "launcher_background", "#0DBD8B" + postprocessing { + removeUnusedCode true + removeUnusedResources true + // We do not activate obfuscation as it makes it hard then to read crash reports, and it's a bit useless on an open source project :) + obfuscate false + optimizeCode true + proguardFiles 'proguard-rules.pro' + } + // signingConfig signingConfigs.release + } + + nightly { + initWith release + applicationIdSuffix ".nightly" + versionNameSuffix "-nightly" + resValue "color", "launcher_background", "#07007E" + + // We need to copy paste this block, this is not done automatically by `initWith release` + postprocessing { + removeUnusedCode true + removeUnusedResources true + // We do not activate obfuscation as it makes it hard then to read crash reports, and it's a bit useless on an open source project :) + obfuscate false + optimizeCode true + proguardFiles 'proguard-rules.pro' + } + matchingFallbacks = ['release'] + signingConfig signingConfigs.nightly + firebaseAppDistribution { + artifactType = "APK" + // We upload the universal APK to fix this error: + // "App Distribution found more than 1 output file for this variant. + // Please contact firebase-support@google.com for help using APK splits with App Distribution." + artifactPath = "$rootDir/vector-app/build/outputs/apk/gplay/nightly/vector-gplay-universal-nightly.apk" + // This file will be generated by the GitHub action + releaseNotesFile = "CHANGES_NIGHTLY.md" + groups = "external-testers" + // This should not be required, but if I do not add the appId, I get this error: + // "App Distribution halted because it had a problem uploading the APK: [404] Requested entity was not found." + appId = "1:912726360885:android:efd8545af52a9f9300427c" + } + } + } + + flavorDimensions "store" + + productFlavors { + gplay { + apply plugin: 'com.google.gms.google-services' + afterEvaluate { + tasks.matching { it.name.contains("GoogleServices") && !it.name.contains("Gplay") }*.enabled = false + } + + dimension "store" + isDefault = true + versionName "${versionMajor}.${versionMinor}.${versionPatch}${getGplayVersionSuffix()}" + buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"G\"" + buildConfigField "String", "FLAVOR_DESCRIPTION", "\"GooglePlay\"" + } + + fdroid { + dimension "store" + versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}" + buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\"" + buildConfigField "String", "FLAVOR_DESCRIPTION", "\"FDroid\"" + } + } + + lintOptions { + lintConfig file("../tools/lint/lint.xml") + + checkDependencies true + abortOnError true + } + + compileOptions { + sourceCompatibility versions.sourceCompat + targetCompatibility versions.targetCompat + } + + kotlinOptions { + jvmTarget = "11" + freeCompilerArgs += [ + "-opt-in=kotlin.RequiresOptIn", + // Fixes false positive "This is an internal Mavericks API. It is not intended for external use." + // of MvRx `by viewModel()` calls. Maybe due to the inlining of code... This is a temporary fix... + "-opt-in=com.airbnb.mvrx.InternalMavericksApi", + // Opt in for kotlinx.coroutines.FlowPreview too + "-opt-in=kotlinx.coroutines.FlowPreview", + // Opt in for kotlinx.coroutines.ExperimentalCoroutinesApi too + "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + ] + } + + buildFeatures { + viewBinding true + } +} + +dependencies { + implementation project(':vector') + implementation project(':vector-config') + implementation libs.dagger.hilt + implementation 'androidx.multidex:multidex:2.0.1' + implementation "androidx.sharetarget:sharetarget:1.1.0" + + kapt libs.dagger.hiltCompiler + + androidTestImplementation libs.androidx.testCore + androidTestImplementation libs.androidx.testRunner + androidTestImplementation libs.androidx.testRules + androidTestImplementation libs.androidx.junit + androidTestImplementation libs.androidx.espressoCore + androidTestImplementation libs.androidx.espressoContrib + androidTestImplementation libs.androidx.espressoIntents + androidTestImplementation libs.tests.kluent + androidTestImplementation libs.androidx.coreTesting + androidTestImplementation(libs.jetbrains.coroutinesTest) { + exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug" + } + // Plant Timber tree for test + androidTestImplementation libs.tests.timberJunitRule + // "The one who serves a great Espresso" + androidTestImplementation('com.adevinta.android:barista:4.2.0') { + exclude group: 'org.jetbrains.kotlin' + } + androidTestImplementation libs.mockk.mockkAndroid + androidTestUtil libs.androidx.orchestrator + androidTestImplementation libs.androidx.fragmentTesting + androidTestImplementation "org.jetbrains.kotlin:kotlin-reflect:1.7.10" + debugImplementation libs.androidx.fragmentTesting +} + diff --git a/vector/proguard-rules.pro b/vector-app/proguard-rules.pro similarity index 100% rename from vector/proguard-rules.pro rename to vector-app/proguard-rules.pro diff --git a/vector/signature/README.md b/vector-app/signature/README.md similarity index 100% rename from vector/signature/README.md rename to vector-app/signature/README.md diff --git a/vector/signature/debug.keystore b/vector-app/signature/debug.keystore similarity index 100% rename from vector/signature/debug.keystore rename to vector-app/signature/debug.keystore diff --git a/vector/signature/nightly.keystore b/vector-app/signature/nightly.keystore similarity index 100% rename from vector/signature/nightly.keystore rename to vector-app/signature/nightly.keystore diff --git a/vector/src/androidTest/java/im/vector/app/CantVerifyTest.kt b/vector-app/src/androidTest/java/im/vector/app/CantVerifyTest.kt similarity index 96% rename from vector/src/androidTest/java/im/vector/app/CantVerifyTest.kt rename to vector-app/src/androidTest/java/im/vector/app/CantVerifyTest.kt index e6b17c1e9e..6f9d6cdde9 100644 --- a/vector/src/androidTest/java/im/vector/app/CantVerifyTest.kt +++ b/vector-app/src/androidTest/java/im/vector/app/CantVerifyTest.kt @@ -23,6 +23,7 @@ import androidx.test.espresso.matcher.ViewMatchers import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest +import com.adevinta.android.barista.internal.viewaction.SleepViewAction import im.vector.app.features.MainActivity import im.vector.app.ui.robot.ElementRobot import org.junit.Rule @@ -33,7 +34,7 @@ import java.util.UUID @RunWith(AndroidJUnit4::class) @LargeTest -class CantVerifyTest : VerificationTestBase() { +class CantVerifyTest { @get:Rule val testRule = RuleChain diff --git a/vector/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt b/vector-app/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt similarity index 83% rename from vector/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt rename to vector-app/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt index 735e96c1e0..f09e522932 100644 --- a/vector/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt +++ b/vector-app/src/androidTest/java/im/vector/app/ClearCurrentSessionRule.kt @@ -21,6 +21,8 @@ import androidx.datastore.core.DataStore import androidx.datastore.preferences.core.Preferences import androidx.datastore.preferences.core.edit import androidx.test.platform.app.InstrumentationRegistry +import dagger.hilt.EntryPoints +import im.vector.app.core.di.SingletonEntryPoint import im.vector.app.features.analytics.store.AnalyticsStore import kotlinx.coroutines.runBlocking import org.junit.rules.TestWatcher @@ -39,10 +41,11 @@ class ClearCurrentSessionRule : TestWatcher() { runBlocking { reflectAnalyticDatastore(context).edit { it.clear() } runCatching { - val holder = (context.applicationContext as VectorApplication).activeSessionHolder - holder.getSafeActiveSession()?.signOutService()?.signOut(true) - (context.applicationContext as VectorApplication).vectorPreferences.clearPreferences() - holder.clearActiveSession() + val entryPoint = EntryPoints.get(context.applicationContext, SingletonEntryPoint::class.java) + val sessionHolder = entryPoint.activeSessionHolder() + sessionHolder.getSafeActiveSession()?.signOutService()?.signOut(true) + entryPoint.vectorPreferences().clearPreferences() + sessionHolder.clearActiveSession() } } return super.apply(base, description) diff --git a/vector/src/androidTest/java/im/vector/app/EspressoExt.kt b/vector-app/src/androidTest/java/im/vector/app/EspressoExt.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/EspressoExt.kt rename to vector-app/src/androidTest/java/im/vector/app/EspressoExt.kt diff --git a/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt b/vector-app/src/androidTest/java/im/vector/app/RegistrationTest.kt similarity index 99% rename from vector/src/androidTest/java/im/vector/app/RegistrationTest.kt rename to vector-app/src/androidTest/java/im/vector/app/RegistrationTest.kt index 7920e8e0d8..68a4d27deb 100644 --- a/vector/src/androidTest/java/im/vector/app/RegistrationTest.kt +++ b/vector-app/src/androidTest/java/im/vector/app/RegistrationTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vector/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt b/vector-app/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt similarity index 99% rename from vector/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt rename to vector-app/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt index 7dc20178f2..1243758b2f 100644 --- a/vector/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt +++ b/vector-app/src/androidTest/java/im/vector/app/SecurityBootstrapTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/vector/src/androidTest/java/im/vector/app/TestMatrixCallback.kt b/vector-app/src/androidTest/java/im/vector/app/TestMatrixCallback.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/TestMatrixCallback.kt rename to vector-app/src/androidTest/java/im/vector/app/TestMatrixCallback.kt diff --git a/vector/src/androidTest/java/im/vector/app/VerificationTestBase.kt b/vector-app/src/androidTest/java/im/vector/app/VerificationTestBase.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/VerificationTestBase.kt rename to vector-app/src/androidTest/java/im/vector/app/VerificationTestBase.kt diff --git a/vector/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt b/vector-app/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt similarity index 99% rename from vector/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt rename to vector-app/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt index 8c9faee336..da13e49e84 100644 --- a/vector/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt +++ b/vector-app/src/androidTest/java/im/vector/app/VerifySessionInteractiveTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import androidx.test.espresso.matcher.ViewMatchers.withText import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest +import com.adevinta.android.barista.internal.viewaction.SleepViewAction import im.vector.app.core.utils.getMatrixInstance import im.vector.app.features.MainActivity import im.vector.app.features.home.HomeActivity diff --git a/vector/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt b/vector-app/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt similarity index 98% rename from vector/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt rename to vector-app/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt index 23a662dcc8..53e088118b 100644 --- a/vector/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt +++ b/vector-app/src/androidTest/java/im/vector/app/VerifySessionPassphraseTest.kt @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -33,6 +33,7 @@ import androidx.test.ext.junit.rules.ActivityScenarioRule import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import androidx.test.platform.app.InstrumentationRegistry +import com.adevinta.android.barista.internal.viewaction.SleepViewAction import im.vector.app.core.resources.StringProvider import im.vector.app.core.utils.getMatrixInstance import im.vector.app.features.MainActivity diff --git a/vector/src/androidTest/java/im/vector/app/core/utils/TestMatrixHelper.kt b/vector-app/src/androidTest/java/im/vector/app/core/utils/TestMatrixHelper.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/core/utils/TestMatrixHelper.kt rename to vector-app/src/androidTest/java/im/vector/app/core/utils/TestMatrixHelper.kt diff --git a/vector/src/androidTest/java/im/vector/app/espresso/tools/EspressoPreference.kt b/vector-app/src/androidTest/java/im/vector/app/espresso/tools/EspressoPreference.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/espresso/tools/EspressoPreference.kt rename to vector-app/src/androidTest/java/im/vector/app/espresso/tools/EspressoPreference.kt diff --git a/vector/src/androidTest/java/im/vector/app/espresso/tools/ScreenshotFailureRule.kt b/vector-app/src/androidTest/java/im/vector/app/espresso/tools/ScreenshotFailureRule.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/espresso/tools/ScreenshotFailureRule.kt rename to vector-app/src/androidTest/java/im/vector/app/espresso/tools/ScreenshotFailureRule.kt diff --git a/vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt b/vector-app/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt rename to vector-app/src/androidTest/java/im/vector/app/espresso/tools/WaitActivity.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt b/vector-app/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/UiAllScreensSanityTest.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/AnalyticsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/AnalyticsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/AnalyticsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/AnalyticsRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/CreateNewRoomRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/CreateNewRoomRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/CreateNewRoomRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/CreateNewRoomRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/DialogRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/DialogRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/DialogRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/DialogRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/ElementRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/MessageMenuRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/MessageMenuRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/MessageMenuRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/MessageMenuRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/NewDirectMessageRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/NewDirectMessageRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/NewDirectMessageRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/NewDirectMessageRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/NewRoomRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/NewRoomRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/NewRoomRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/NewRoomRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/OnboardingRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingServersRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/OnboardingServersRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/OnboardingServersRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/OnboardingServersRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/RoomDetailRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomDetailRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/RoomDetailRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomDetailRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/RoomListRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomListRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/RoomListRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomListRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/RoomSettingsRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsAdvancedRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsAdvancedRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsAdvancedRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsAdvancedRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsGeneralRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsGeneralRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsGeneralRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsGeneralRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsHelpRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsHelpRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsHelpRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsHelpRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsLegalsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsLegalsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsLegalsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsLegalsRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsNotificationsRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsPreferencesRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsPreferencesRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsPreferencesRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsPreferencesRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsSecurityRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsSecurityRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsSecurityRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/SettingsSecurityRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/settings/labs/LabFeature.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/labs/LabFeature.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/settings/labs/LabFeature.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/settings/labs/LabFeature.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceCreateRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceCreateRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceCreateRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceCreateRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceMenuRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceMenuRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceMenuRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceMenuRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceRobot.kt diff --git a/vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceSettingsRobot.kt b/vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceSettingsRobot.kt similarity index 100% rename from vector/src/androidTest/java/im/vector/app/ui/robot/space/SpaceSettingsRobot.kt rename to vector-app/src/androidTest/java/im/vector/app/ui/robot/space/SpaceSettingsRobot.kt diff --git a/vector/src/gplay/AndroidManifest.xml b/vector-app/src/gplay/AndroidManifest.xml similarity index 81% rename from vector/src/gplay/AndroidManifest.xml rename to vector-app/src/gplay/AndroidManifest.xml index c0c0c4ef0f..bc74b9bb52 100755 --- a/vector/src/gplay/AndroidManifest.xml +++ b/vector-app/src/gplay/AndroidManifest.xml @@ -1,8 +1,7 @@ - + - + diff --git a/vector/src/gplay/debug/google-services.json b/vector-app/src/gplay/debug/google-services.json similarity index 100% rename from vector/src/gplay/debug/google-services.json rename to vector-app/src/gplay/debug/google-services.json diff --git a/vector/src/gplay/nightly/google-services.json b/vector-app/src/gplay/nightly/google-services.json similarity index 100% rename from vector/src/gplay/nightly/google-services.json rename to vector-app/src/gplay/nightly/google-services.json diff --git a/vector/src/gplay/release/google-services.json b/vector-app/src/gplay/release/google-services.json similarity index 100% rename from vector/src/gplay/release/google-services.json rename to vector-app/src/gplay/release/google-services.json diff --git a/vector-app/src/main/AndroidManifest.xml b/vector-app/src/main/AndroidManifest.xml new file mode 100644 index 0000000000..774fc43d48 --- /dev/null +++ b/vector-app/src/main/AndroidManifest.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vector/src/main/java/im/vector/app/VectorApplication.kt b/vector-app/src/main/java/im/vector/app/VectorApplication.kt similarity index 98% rename from vector/src/main/java/im/vector/app/VectorApplication.kt rename to vector-app/src/main/java/im/vector/app/VectorApplication.kt index 46cb6ec79b..ee04d908e8 100644 --- a/vector/src/main/java/im/vector/app/VectorApplication.kt +++ b/vector-app/src/main/java/im/vector/app/VectorApplication.kt @@ -1,11 +1,11 @@ /* - * Copyright 2019 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -66,6 +66,7 @@ import im.vector.app.features.settings.VectorLocale import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.themes.ThemeUtils import im.vector.app.features.version.VersionProvider +import im.vector.application.R import org.jitsi.meet.sdk.log.JitsiMeetDefaultLogHandler import org.matrix.android.sdk.api.Matrix import org.matrix.android.sdk.api.auth.AuthenticationService diff --git a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt b/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt similarity index 98% rename from vector/src/main/java/im/vector/app/core/di/SingletonModule.kt rename to vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt index a060ebe731..384c584e0c 100644 --- a/vector/src/main/java/im/vector/app/core/di/SingletonModule.kt +++ b/vector-app/src/main/java/im/vector/app/core/di/SingletonModule.kt @@ -1,11 +1,11 @@ /* - * Copyright 2019 New Vector Ltd + * Copyright (c) 2022 New Vector Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -28,7 +28,6 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import im.vector.app.BuildConfig import im.vector.app.EmojiCompatWrapper import im.vector.app.EmojiSpanify import im.vector.app.SpaceStateHandler @@ -58,6 +57,7 @@ import im.vector.app.features.settings.FontScalePreferencesImpl import im.vector.app.features.settings.VectorPreferences import im.vector.app.features.ui.SharedPreferencesUiStateRepository import im.vector.app.features.ui.UiStateRepository +import im.vector.application.BuildConfig import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.Dispatchers diff --git a/vector/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml b/vector-app/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml similarity index 100% rename from vector/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml rename to vector-app/src/main/res/drawable-anydpi-v26/ic_launcher_foreground.xml diff --git a/vector/src/main/res/drawable/ic_launcher_background.xml b/vector-app/src/main/res/drawable/ic_launcher_background.xml similarity index 100% rename from vector/src/main/res/drawable/ic_launcher_background.xml rename to vector-app/src/main/res/drawable/ic_launcher_background.xml diff --git a/vector/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/vector-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 100% rename from vector/src/main/res/mipmap-anydpi-v26/ic_launcher.xml rename to vector-app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml diff --git a/vector/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/vector-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 100% rename from vector/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml rename to vector-app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml diff --git a/vector/src/main/res/mipmap-hdpi/ic_launcher.png b/vector-app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from vector/src/main/res/mipmap-hdpi/ic_launcher.png rename to vector-app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/vector/src/main/res/mipmap-hdpi/ic_launcher_round.png b/vector-app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from vector/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to vector-app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/vector/src/main/res/mipmap-mdpi/ic_launcher.png b/vector-app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from vector/src/main/res/mipmap-mdpi/ic_launcher.png rename to vector-app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/vector/src/main/res/mipmap-mdpi/ic_launcher_round.png b/vector-app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from vector/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to vector-app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/vector/src/main/res/mipmap-xhdpi/ic_launcher.png b/vector-app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from vector/src/main/res/mipmap-xhdpi/ic_launcher.png rename to vector-app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/vector/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/vector-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from vector/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to vector-app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/vector/src/main/res/mipmap-xxhdpi/ic_launcher.png b/vector-app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from vector/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to vector-app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/vector/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/vector-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from vector/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to vector-app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/vector/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/vector-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from vector/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to vector-app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/vector/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/vector-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from vector/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to vector-app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/vector/src/main/res/values/font_certs.xml b/vector-app/src/main/res/values/font_certs.xml similarity index 100% rename from vector/src/main/res/values/font_certs.xml rename to vector-app/src/main/res/values/font_certs.xml diff --git a/vector-app/src/main/res/values/strings.xml b/vector-app/src/main/res/values/strings.xml new file mode 100644 index 0000000000..84dde58d40 --- /dev/null +++ b/vector-app/src/main/res/values/strings.xml @@ -0,0 +1,5 @@ + + + + ignored + diff --git a/vector/build.gradle b/vector/build.gradle index d63fbf59e8..c19aee0987 100644 --- a/vector/build.gradle +++ b/vector/build.gradle @@ -1,14 +1,9 @@ -import com.android.build.OutputFile - -apply plugin: 'com.android.application' -apply plugin: 'com.google.firebase.appdistribution' -apply plugin: 'com.google.android.gms.oss-licenses-plugin' +apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' apply plugin: 'kotlin-kapt' -apply plugin: 'com.likethesalad.stem' apply plugin: 'dagger.hilt.android.plugin' -apply plugin: 'kotlinx-knit' +apply plugin: 'com.likethesalad.stem-library' if (project.hasProperty("coverage")) { apply plugin: 'jacoco' @@ -18,98 +13,11 @@ kapt { correctErrorTypes = true } -knit { - files = fileTree(project.rootDir) { - include '**/*.md' - include '**/*.kt' - include '**/*.kts' - exclude '**/build/**' - exclude '**/.gradle/**' - exclude '**/towncrier/template.md' - exclude '**/CHANGES.md' - exclude '/node_modules' - } -} - -// Note: 2 digits max for each value -ext.versionMajor = 1 -ext.versionMinor = 4 -// Note: even values are reserved for regular release, odd values for hotfix release. -// When creating a hotfix, you should decrease the value, since the current value -// is the value for the next regular release. -ext.versionPatch = 36 - -static def getGitTimestamp() { - def cmd = 'git show -s --format=%ct' - return cmd.execute().text.trim() as Long -} - -static def generateVersionCodeFromTimestamp() { - // It's unix timestamp, minus timestamp of October 3rd 2018 (first commit date) divided by 100: It's incremented by one every 100 seconds. - // plus 20_000_000 for compatibility reason with the previous way the Version Code was computed - // Note that the result will be multiplied by 10 when adding the digit for the arch - return ((getGitTimestamp() - 1_538_524_800) / 100).toInteger() + 20_000_000 -} - -def generateVersionCodeFromVersionName() { - // plus 4_000_000 for compatibility reason with the previous way the Version Code was computed - // Note that the result will be multiplied by 10 when adding the digit for the arch - return (versionMajor * 1_00_00 + versionMinor * 1_00 + versionPatch) + 4_000_000 -} - -def getVersionCode() { - if (gitBranchName() == "develop") { - return generateVersionCodeFromTimestamp() - } else { - return generateVersionCodeFromVersionName() - } -} - static def gitRevision() { def cmd = "git rev-parse --short=8 HEAD" return cmd.execute().text.trim() } -static def gitRevisionDate() { - def cmd = "git show -s --format=%ci HEAD^{commit}" - return cmd.execute().text.trim() -} - -static def gitBranchName() { - def fromEnv = System.env.BUILDKITE_BRANCH as String ?: "" - - if (!fromEnv.isEmpty()) { - return fromEnv - } else { - // Note: this command return "HEAD" on Buildkite, so use the system env 'BUILDKITE_BRANCH' content first - def cmd = "git rev-parse --abbrev-ref HEAD" - return cmd.execute().text.trim() - } -} - -// For Google Play build, build on any other branch than main will have a "-dev" suffix -static def getGplayVersionSuffix() { - if (gitBranchName() == "main") { - return "" - } else { - return "-dev" - } -} - -static def gitTag() { - def cmd = "git describe --exact-match --tags" - return cmd.execute().text.trim() -} - -// For F-Droid build, build on a not tagged commit will have a "-dev" suffix -static def getFdroidVersionSuffix() { - if (gitTag() == "") { - return "-dev" - } else { - return "" - } -} - project.android.buildTypes.all { buildType -> buildType.javaCompileOptions.annotationProcessorOptions.arguments = [ @@ -117,13 +25,6 @@ project.android.buildTypes.all { buildType -> ] } -// map for the version codes last digit -// x86 must have greater values than arm -// 64 bits have greater value than 32 bits -ext.abiVersionCodes = ["armeabi-v7a": 1, "arm64-v8a": 2, "x86": 3, "x86_64": 4].withDefault { 0 } - -def buildNumber = System.env.BUILDKITE_BUILD_NUMBER as Integer ?: 0 - android { // Due to a bug introduced in Android gradle plugin 3.6.0, we have to specify the ndk version to use // Ref: https://issuetracker.google.com/issues/144111441 @@ -132,29 +33,9 @@ android { compileSdk versions.compileSdk defaultConfig { - applicationId "im.vector.app" // Set to API 21: see #405 minSdk versions.minSdk targetSdk versions.targetSdk - multiDexEnabled true - - renderscriptTargetApi 24 - renderscriptSupportModeEnabled true - - // `develop` branch will have version code from timestamp, to ensure each build from CI has a incremented versionCode. - // Other branches (main, features, etc.) will have version code based on application version. - versionCode project.getVersionCode() - - // Required for sonar analysis - versionName "${versionMajor}.${versionMinor}.${versionPatch}-sonar" - - // Generate a random app task affinity - manifestPlaceholders = [appTaskAffinitySuffix: "H_${gitRevision()}"] - - buildConfigField "String", "GIT_REVISION", "\"${gitRevision()}\"" - buildConfigField "String", "GIT_REVISION_DATE", "\"${gitRevisionDate()}\"" - buildConfigField "String", "GIT_BRANCH_NAME", "\"${gitBranchName()}\"" - buildConfigField "String", "BUILD_NUMBER", "\"${buildNumber}\"" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -163,38 +44,8 @@ android { abiFilters "armeabi-v7a", "x86", 'arm64-v8a', 'x86_64' } - // Ref: https://developer.android.com/studio/build/configure-apk-splits.html - splits { - // Configures multiple APKs based on ABI. - abi { - // Enables building multiple APKs per ABI. - enable true - - // By default all ABIs are included, so use reset() and include to specify that we only - // want APKs for armeabi-v7a, x86, arm64-v8a and x86_64. - - // Resets the list of ABIs that Gradle should create APKs for to none. - reset() - - // Specifies a list of ABIs that Gradle should create APKs for. - include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" - - // Generate a universal APK that includes all ABIs, so user who install from CI tool can use this one by default. - universalApk true - } - } - - applicationVariants.all { variant -> - // assign different version code for each output - def baseVariantVersion = variant.versionCode * 10 - variant.outputs.each { output -> - def baseAbiVersionCode = project.ext.abiVersionCodes.get(output.getFilter(OutputFile.ABI)) - // Known limitation: it does not modify the value in the BuildConfig.java generated file - // See https://issuetracker.google.com/issues/171133218 - output.versionCodeOverride = baseVariantVersion + baseAbiVersionCode - print "ABI " + output.getFilter(OutputFile.ABI) + " \t-> VersionCode = " + output.versionCodeOverride + "\n" - } - } + // Generate a random app task affinity + manifestPlaceholders = [appTaskAffinitySuffix: "H_${gitRevision()}"] // The following argument makes the Android Test Orchestrator run its // "pm clear" command after each test invocation. This command ensures @@ -210,87 +61,20 @@ android { // Comment to run on Android 12 // execution 'ANDROIDX_TEST_ORCHESTRATOR' } - signingConfigs { - debug { - keyAlias 'androiddebugkey' - keyPassword 'android' - storeFile file('./signature/debug.keystore') - storePassword 'android' - } - nightly { - keyAlias System.env.ELEMENT_ANDROID_NIGHTLY_KEYID ?: project.property("signing.element.nightly.keyId") - keyPassword System.env.ELEMENT_ANDROID_NIGHTLY_KEYPASSWORD ?: project.property("signing.element.nightly.keyPassword") - storeFile file('./signature/nightly.keystore') - storePassword System.env.ELEMENT_ANDROID_NIGHTLY_STOREPASSWORD ?: project.property("signing.element.nightly.storePassword") - } - release { - keyAlias project.property("signing.element.keyId") - keyPassword project.property("signing.element.keyPassword") - storeFile file(project.property("signing.element.storePath")) - storePassword project.property("signing.element.storePassword") - } - } - buildTypes { debug { - applicationIdSuffix ".debug" resValue "string", "app_name", "Element dbg" - resValue "color", "launcher_background", "#0DBD8B" - - signingConfig signingConfigs.debug - if (project.hasProperty("coverage")) { testCoverageEnabled = coverage.enableTestCoverage } } - - release { - resValue "string", "app_name", "Element" - resValue "color", "launcher_background", "#0DBD8B" - - postprocessing { - removeUnusedCode true - removeUnusedResources true - // We do not activate obfuscation as it makes it hard then to read crash reports, and it's a bit useless on an open source project :) - obfuscate false - optimizeCode true - proguardFiles 'proguard-rules.pro' - } - // signingConfig signingConfigs.release - } - nightly { initWith release - applicationIdSuffix ".nightly" - versionNameSuffix "-nightly" - - // Just override the background color of the launcher icon for the nightly build. - resValue "color", "launcher_background", "#07007E" - - // We need to copy paste this block, this is not done automatically by `initWith release` - postprocessing { - removeUnusedCode true - removeUnusedResources true - // We do not activate obfuscation as it makes it hard then to read crash reports, and it's a bit useless on an open source project :) - obfuscate false - optimizeCode true - proguardFiles 'proguard-rules.pro' - } + resValue "string", "app_name", "Element" matchingFallbacks = ['release'] - signingConfig signingConfigs.nightly - firebaseAppDistribution { - artifactType = "APK" - // We upload the universal APK to fix this error: - // "App Distribution found more than 1 output file for this variant. - // Please contact firebase-support@google.com for help using APK splits with App Distribution." - artifactPath = "$rootDir/vector/build/outputs/apk/gplay/nightly/vector-gplay-universal-nightly.apk" - // This file will be generated by the GitHub action - releaseNotesFile = "CHANGES_NIGHTLY.md" - groups = "external-testers" - // This should not be required, but if I do not add the appId, I get this error: - // "App Distribution halted because it had a problem uploading the APK: [404] Requested entity was not found." - appId = "1:912726360885:android:efd8545af52a9f9300427c" - } + } + release { + resValue "string", "app_name", "Element" } } @@ -298,14 +82,8 @@ android { productFlavors { gplay { - apply plugin: 'com.google.gms.google-services' - afterEvaluate { - tasks.matching { it.name.contains("GoogleServices") && !it.name.contains("Gplay") }*.enabled = false - } - dimension "store" isDefault = true - versionName "${versionMajor}.${versionMinor}.${versionPatch}${getGplayVersionSuffix()}" buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"G\"" buildConfigField "String", "FLAVOR_DESCRIPTION", "\"GooglePlay\"" @@ -314,20 +92,11 @@ android { fdroid { dimension "store" - versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}" - buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\"" buildConfigField "String", "FLAVOR_DESCRIPTION", "\"FDroid\"" } } - lintOptions { - lintConfig file("lint.xml") - - checkDependencies true - abortOnError true - } - compileOptions { sourceCompatibility versions.sourceCompat targetCompatibility versions.targetCompat @@ -367,7 +136,7 @@ android { dependencies { implementation project(":vector-config") - implementation project(":matrix-sdk-android") + api project(":matrix-sdk-android") implementation project(":matrix-sdk-android-flow") implementation project(":library:jsonviewer") implementation project(":library:ui-styles") @@ -375,7 +144,6 @@ dependencies { implementation project(":library:attachment-viewer") implementation project(":library:diff-match-patch") implementation project(":library:multipicker") - implementation 'androidx.multidex:multidex:2.0.1' implementation libs.jetbrains.coroutinesCore implementation libs.jetbrains.coroutinesAndroid @@ -384,49 +152,47 @@ dependencies { implementation libs.androidx.appCompat implementation libs.androidx.fragmentKtx implementation libs.androidx.constraintLayout - implementation "androidx.sharetarget:sharetarget:1.1.0" implementation libs.androidx.core implementation "androidx.media:media:1.6.0" implementation "androidx.transition:transition:1.4.1" implementation libs.androidx.biometric - implementation "org.threeten:threetenbp:1.4.0:no-tzdb" - implementation "com.gabrielittner.threetenbp:lazythreetenbp:0.11.0" + api "org.threeten:threetenbp:1.4.0:no-tzdb" + api "com.gabrielittner.threetenbp:lazythreetenbp:0.11.0" implementation libs.squareup.moshi kapt libs.squareup.moshiKotlin // Lifecycle implementation libs.androidx.lifecycleLivedata - implementation libs.androidx.lifecycleProcess + api libs.androidx.lifecycleProcess implementation libs.androidx.lifecycleRuntimeKtx - implementation libs.androidx.datastorepreferences + api libs.androidx.datastorepreferences // Opus Encoder implementation libs.element.opusencoder // Log - implementation libs.jakewharton.timber + api libs.jakewharton.timber // Debug - implementation 'com.facebook.stetho:stetho:1.6.0' + api 'com.facebook.stetho:stetho:1.6.0' - // Phone number https://github.com/google/libphonenumber - implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.54' + api libs.google.phonenumber // FlowBinding implementation libs.github.flowBinding implementation libs.github.flowBindingAppcompat - implementation libs.airbnb.epoxy + api libs.airbnb.epoxy implementation libs.airbnb.epoxyGlide kapt libs.airbnb.epoxyProcessor implementation libs.airbnb.epoxyPaging - implementation libs.airbnb.mavericks + api libs.airbnb.mavericks // Snap Helper https://github.com/rubensousa/GravitySnapHelper - implementation 'com.github.rubensousa:gravitysnaphelper:2.2.2' + api 'com.github.rubensousa:gravitysnaphelper:2.2.2' // Nightly // API-only library @@ -435,7 +201,7 @@ dependencies { gplayImplementation libs.google.appdistribution // Work - implementation libs.androidx.work + api libs.androidx.work // Paging implementation libs.androidx.pagingRuntimeKtx @@ -444,7 +210,7 @@ dependencies { implementation libs.arrow.core // Pref - implementation libs.androidx.preferenceKtx + api libs.androidx.preferenceKtx // UI implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' @@ -519,7 +285,7 @@ dependencies { implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10227332@aar') // Jitsi - implementation('org.jitsi.react:jitsi-meet-sdk:5.0.2') { + api('org.jitsi.react:jitsi-meet-sdk:5.0.2') { exclude group: 'com.google.firebase' exclude group: 'com.google.android.gms' exclude group: 'com.android.installreferrer' @@ -531,8 +297,8 @@ dependencies { implementation 'me.dm7.barcodescanner:zxing:1.9.13' // Emoji Keyboard - implementation libs.vanniktech.emojiMaterial - implementation libs.vanniktech.emojiGoogle + api libs.vanniktech.emojiMaterial + api libs.vanniktech.emojiGoogle implementation 'im.dlg:android-dialer:1.2.5' @@ -545,14 +311,14 @@ dependencies { implementation 'commons-codec:commons-codec:1.15' // MapTiler - fdroidImplementation(libs.maplibre.androidSdk) { + fdroidApi(libs.maplibre.androidSdk) { exclude group: 'com.google.android.gms', module: 'play-services-location' } - fdroidImplementation(libs.maplibre.pluginAnnotation) { + fdroidApi(libs.maplibre.pluginAnnotation) { exclude group: 'com.google.android.gms', module: 'play-services-location' } - gplayImplementation libs.maplibre.androidSdk - gplayImplementation libs.maplibre.pluginAnnotation + gplayApi libs.maplibre.androidSdk + gplayApi libs.maplibre.pluginAnnotation // TESTS testImplementation libs.tests.junit diff --git a/vector/src/gplay/java/im/vector/app/nightly/FirebaseNightlyProxy.kt b/vector/src/gplay/java/im/vector/app/nightly/FirebaseNightlyProxy.kt index 59a1e3eb17..94a36036b6 100644 --- a/vector/src/gplay/java/im/vector/app/nightly/FirebaseNightlyProxy.kt +++ b/vector/src/gplay/java/im/vector/app/nightly/FirebaseNightlyProxy.kt @@ -20,8 +20,8 @@ import android.content.SharedPreferences import androidx.core.content.edit import com.google.firebase.appdistribution.FirebaseAppDistribution import com.google.firebase.appdistribution.FirebaseAppDistributionException -import im.vector.app.BuildConfig import im.vector.app.core.di.DefaultPreferences +import im.vector.app.core.resources.BuildMeta import im.vector.app.core.time.Clock import im.vector.app.features.home.NightlyProxy import timber.log.Timber @@ -31,6 +31,7 @@ class FirebaseNightlyProxy @Inject constructor( private val clock: Clock, @DefaultPreferences private val sharedPreferences: SharedPreferences, + private val buildMeta: BuildMeta, ) : NightlyProxy { override fun onHomeResumed() { @@ -58,7 +59,7 @@ class FirebaseNightlyProxy @Inject constructor( } private fun canDisplayPopup(): Boolean { - if (BuildConfig.APPLICATION_ID != "im.vector.app.nightly") return false + if (buildMeta.applicationId != "im.vector.app.nightly") return false val today = clock.epochMillis() / A_DAY_IN_MILLIS val lastDisplayPopupDay = sharedPreferences.getLong(SHARED_PREF_KEY, 0) return (today > lastDisplayPopupDay) diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index ea62aa1b58..e87bbad77a 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -15,6 +15,7 @@ + @@ -74,20 +75,7 @@ - + - - - - - - - - - - - - - - - - - diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt index 58d267fb0e..86aada82ac 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt @@ -246,7 +246,7 @@ abstract class CallTileTimelineItem : AbsBaseMessageItem(R.layout.item_tim ) companion object { - private const val STUB_ID = R.id.messageContentDefaultStub + private val STUB_ID = R.id.messageContentDefaultStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt index 47401c34e7..a5e2b0d064 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MergedRoomCreationItem.kt @@ -271,7 +271,7 @@ abstract class MergedRoomCreationItem : BasedMergedItem() { } companion object { - private const val STUB_ID = R.id.messageContentAudioStub + private val STUB_ID = R.id.messageContentAudioStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageFileItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageFileItem.kt index 2224d9ac3b..b11d8fbb52 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageFileItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageFileItem.kt @@ -118,6 +118,6 @@ abstract class MessageFileItem : AbsMessageItem() { } companion object { - private const val STUB_ID = R.id.messageContentFileStub + private val STUB_ID = R.id.messageContentFileStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageImageVideoItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageImageVideoItem.kt index 910776f5d7..2c29113ce8 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageImageVideoItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageImageVideoItem.kt @@ -113,6 +113,6 @@ abstract class MessageImageVideoItem : AbsMessageItem() { } companion object { - private const val STUB_ID = R.id.messageContentTextStub + private val STUB_ID = R.id.messageContentTextStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt index 72a00d704b..93e95dd4a5 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/MessageVoiceItem.kt @@ -179,6 +179,6 @@ abstract class MessageVoiceItem : AbsMessageItem() { } companion object { - private const val STUB_ID = R.id.messageContentVoiceStub + private val STUB_ID = R.id.messageContentVoiceStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/NoticeItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/NoticeItem.kt index ad62249459..467e569756 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/NoticeItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/NoticeItem.kt @@ -83,6 +83,6 @@ abstract class NoticeItem : BaseEventItem(R.layout.item_timel ) companion object { - private const val STUB_ID = R.id.messageContentNoticeStub + private val STUB_ID = R.id.messageContentNoticeStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/PollItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/PollItem.kt index 5dd721b007..54be4092ed 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/PollItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/PollItem.kt @@ -92,6 +92,6 @@ abstract class PollItem : AbsMessageItem() { } companion object { - private const val STUB_ID = R.id.messageContentPollStub + private val STUB_ID = R.id.messageContentPollStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/RedactedMessageItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/RedactedMessageItem.kt index 057a9bad0e..f04d681862 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/RedactedMessageItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/RedactedMessageItem.kt @@ -29,6 +29,6 @@ abstract class RedactedMessageItem : AbsMessageItem( class Holder : AbsMessageItem.Holder(STUB_ID) companion object { - private const val STUB_ID = R.id.messageContentRedactedStub + private val STUB_ID = R.id.messageContentRedactedStub } } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/StatusTileTimelineItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/StatusTileTimelineItem.kt index c4dd4bedeb..1e5bb0521d 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/StatusTileTimelineItem.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/StatusTileTimelineItem.kt @@ -76,7 +76,7 @@ abstract class StatusTileTimelineItem : AbsBaseMessageItem