Compare commits
1 Commits
develop
...
feature/ad
Author | SHA1 | Date | |
---|---|---|---|
|
530ce9f906 |
@ -31,6 +31,7 @@ buildscript {
|
||||
classpath 'org.owasp:dependency-check-gradle:7.1.0.1'
|
||||
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.6.21"
|
||||
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
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
include ':vector'
|
||||
include ':vector-app'
|
||||
include ':vector-config'
|
||||
include ':matrix-sdk-android'
|
||||
include ':library:core-utils'
|
||||
|
554
vector-app/build.gradle
Normal file
554
vector-app/build.gradle
Normal file
@ -0,0 +1,554 @@
|
||||
import com.android.build.OutputFile
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
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'
|
||||
|
||||
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 = 26
|
||||
|
||||
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}\""
|
||||
|
||||
buildConfigField "im.vector.app.features.VectorFeatures.OnboardingVariant", "ONBOARDING_VARIANT", "im.vector.app.features.VectorFeatures.OnboardingVariant.FTUE_AUTH"
|
||||
|
||||
buildConfigField "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy", "outboundSessionKeySharingStrategy", "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy.WhenTyping"
|
||||
|
||||
buildConfigField "Long", "VOICE_MESSAGE_DURATION_LIMIT_MS", "120_000L"
|
||||
|
||||
// If set, MSC3086 asserted identity messages sent on VoIP calls will cause the call to appear in the room corresponding to the asserted identity.
|
||||
// This *must* only be set in trusted environments.
|
||||
buildConfigField "Boolean", "handleCallAssertedIdentityEvents", "false"
|
||||
|
||||
buildConfigField "Boolean", "enableLocationSharing", "true"
|
||||
buildConfigField "String", "mapTilerKey", "\"fU3vlMsMn4Jb6dnEIFsx\""
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
// 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'
|
||||
}
|
||||
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"
|
||||
|
||||
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
||||
// Set to true if you want to enable strict mode in debug
|
||||
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
||||
|
||||
signingConfig signingConfigs.debug
|
||||
|
||||
if (project.hasProperty("coverage")) {
|
||||
testCoverageEnabled = coverage.enableTestCoverage
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
resValue "string", "app_name", "Element"
|
||||
|
||||
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
||||
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
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()}"
|
||||
}
|
||||
|
||||
fdroid {
|
||||
dimension "store"
|
||||
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}"
|
||||
}
|
||||
}
|
||||
|
||||
lintOptions {
|
||||
lintConfig file("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 libs.dagger.hilt
|
||||
kapt libs.dagger.hiltCompiler
|
||||
|
||||
implementation project(':library:opusencoder')
|
||||
|
||||
implementation project(":vector-config")
|
||||
implementation project(":matrix-sdk-android")
|
||||
implementation project(":matrix-sdk-android-flow")
|
||||
implementation project(":library:jsonviewer")
|
||||
implementation project(":library:ui-styles")
|
||||
implementation project(":library:core-utils")
|
||||
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
|
||||
|
||||
implementation libs.androidx.recyclerview
|
||||
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.10.0"
|
||||
|
||||
implementation libs.squareup.moshi
|
||||
implementation libs.squareup.moshiKt
|
||||
kapt libs.squareup.moshiKotlin
|
||||
|
||||
// Lifecycle
|
||||
implementation libs.androidx.lifecycleLivedata
|
||||
implementation libs.androidx.lifecycleProcess
|
||||
implementation libs.androidx.lifecycleRuntimeKtx
|
||||
|
||||
implementation libs.androidx.datastorepreferences
|
||||
|
||||
|
||||
// Log
|
||||
implementation libs.jakewharton.timber
|
||||
|
||||
// Debug
|
||||
implementation 'com.facebook.stetho:stetho:1.6.0'
|
||||
|
||||
// Phone number https://github.com/google/libphonenumber
|
||||
implementation 'com.googlecode.libphonenumber:libphonenumber:8.12.50'
|
||||
|
||||
// FlowBinding
|
||||
implementation libs.github.flowBinding
|
||||
implementation libs.github.flowBindingAppcompat
|
||||
|
||||
implementation libs.airbnb.epoxy
|
||||
implementation libs.airbnb.epoxyGlide
|
||||
kapt libs.airbnb.epoxyProcessor
|
||||
implementation libs.airbnb.epoxyPaging
|
||||
implementation libs.airbnb.mavericks
|
||||
|
||||
// Work
|
||||
implementation libs.androidx.work
|
||||
|
||||
// Paging
|
||||
implementation libs.androidx.pagingRuntimeKtx
|
||||
|
||||
// Functional Programming
|
||||
implementation libs.arrow.core
|
||||
|
||||
// Pref
|
||||
implementation libs.androidx.preferenceKtx
|
||||
|
||||
// UI
|
||||
implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
|
||||
implementation libs.google.material
|
||||
implementation 'me.gujun.android:span:1.7'
|
||||
implementation libs.markwon.core
|
||||
implementation libs.markwon.extLatex
|
||||
implementation libs.markwon.inlineParser
|
||||
implementation libs.markwon.html
|
||||
implementation 'com.googlecode.htmlcompressor:htmlcompressor:1.5.2'
|
||||
implementation 'me.saket:better-link-movement-method:2.2.0'
|
||||
implementation 'com.google.android.flexbox:flexbox:3.0.0'
|
||||
implementation libs.androidx.autoFill
|
||||
implementation 'jp.wasabeef:glide-transformations:4.3.0'
|
||||
implementation 'com.github.hyuwah:DraggableView:1.0.0'
|
||||
|
||||
// Custom Tab
|
||||
implementation 'androidx.browser:browser:1.4.0'
|
||||
|
||||
// Passphrase strength helper
|
||||
implementation 'com.nulab-inc:zxcvbn:1.7.0'
|
||||
|
||||
// Alerter
|
||||
implementation 'com.github.tapadoo:alerter:7.2.4'
|
||||
|
||||
implementation 'com.otaliastudios:autocomplete:1.1.0'
|
||||
|
||||
// Shake detection
|
||||
implementation 'com.squareup:seismic:1.0.3'
|
||||
|
||||
// Image Loading
|
||||
implementation libs.github.bigImageViewer
|
||||
implementation libs.github.glideImageLoader
|
||||
implementation libs.github.progressPieIndicator
|
||||
implementation libs.github.glideImageViewFactory
|
||||
|
||||
// implementation 'com.github.MikeOrtiz:TouchImageView:3.0.2'
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||
|
||||
implementation libs.github.glide
|
||||
kapt libs.github.glideCompiler
|
||||
implementation 'com.github.yalantis:ucrop:2.2.8'
|
||||
|
||||
// Chat effects
|
||||
implementation 'nl.dionsegijn:konfetti-xml:2.0.2'
|
||||
|
||||
implementation 'com.github.jetradarmobile:android-snowfall:1.2.1'
|
||||
// DI
|
||||
implementation libs.dagger.hilt
|
||||
kapt libs.dagger.hiltCompiler
|
||||
|
||||
// Analytics
|
||||
implementation 'com.posthog.android:posthog:1.1.2'
|
||||
|
||||
// UnifiedPush
|
||||
implementation 'com.github.UnifiedPush:android-connector:2.0.0'
|
||||
// UnifiedPush gplay flavor only
|
||||
gplayImplementation('com.github.UnifiedPush:android-embedded_fcm_distributor:2.0.0') {
|
||||
exclude group: 'com.google.firebase', module: 'firebase-core'
|
||||
exclude group: 'com.google.firebase', module: 'firebase-analytics'
|
||||
exclude group: 'com.google.firebase', module: 'firebase-measurement-connector'
|
||||
}
|
||||
|
||||
// OSS License, gplay flavor only
|
||||
gplayImplementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'
|
||||
|
||||
implementation "androidx.emoji2:emoji2:1.1.0"
|
||||
|
||||
// WebRTC
|
||||
// org.webrtc:google-webrtc is for development purposes only
|
||||
// implementation 'org.webrtc:google-webrtc:1.0.+'
|
||||
implementation('com.facebook.react:react-native-webrtc:1.94.2-jitsi-10227332@aar')
|
||||
|
||||
// Jitsi
|
||||
implementation('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'
|
||||
}
|
||||
|
||||
// QR-code
|
||||
// Stick to 3.3.3 because of https://github.com/zxing/zxing/issues/1170
|
||||
implementation 'com.google.zxing:core:3.3.3'
|
||||
implementation 'me.dm7.barcodescanner:zxing:1.9.13'
|
||||
|
||||
// Emoji Keyboard
|
||||
implementation libs.vanniktech.emojiMaterial
|
||||
implementation libs.vanniktech.emojiGoogle
|
||||
|
||||
implementation 'im.dlg:android-dialer:1.2.5'
|
||||
|
||||
// JWT
|
||||
api libs.jsonwebtoken.jjwtApi
|
||||
runtimeOnly libs.jsonwebtoken.jjwtImpl
|
||||
runtimeOnly(libs.jsonwebtoken.jjwtOrgjson) {
|
||||
exclude group: 'org.json', module: 'json' //provided by Android natively
|
||||
}
|
||||
implementation 'commons-codec:commons-codec:1.15'
|
||||
|
||||
// MapTiler
|
||||
fdroidImplementation(libs.maplibre.androidSdk) {
|
||||
exclude group: 'com.google.android.gms', module: 'play-services-location'
|
||||
}
|
||||
fdroidImplementation(libs.maplibre.pluginAnnotation) {
|
||||
exclude group: 'com.google.android.gms', module: 'play-services-location'
|
||||
}
|
||||
gplayImplementation libs.maplibre.androidSdk
|
||||
gplayImplementation libs.maplibre.pluginAnnotation
|
||||
|
||||
// TESTS
|
||||
testImplementation libs.tests.junit
|
||||
testImplementation libs.tests.kluent
|
||||
testImplementation libs.mockk.mockk
|
||||
// Plant Timber tree for test
|
||||
testImplementation libs.tests.timberJunitRule
|
||||
testImplementation libs.airbnb.mavericksTesting
|
||||
testImplementation(libs.jetbrains.coroutinesTest) {
|
||||
exclude group: "org.jetbrains.kotlinx", module: "kotlinx-coroutines-debug"
|
||||
}
|
||||
|
||||
// Flipper, debug builds only
|
||||
debugImplementation('com.facebook.flipper:flipper:0.149.0') {
|
||||
exclude group: 'com.facebook.fbjni', module: 'fbjni'
|
||||
}
|
||||
debugImplementation('com.facebook.flipper:flipper-network-plugin:0.149.0') {
|
||||
exclude group: 'com.facebook.fbjni', module: 'fbjni'
|
||||
}
|
||||
debugImplementation 'com.facebook.soloader:soloader:0.10.3'
|
||||
debugImplementation "com.kgurgul.flipper:flipper-realm-android:2.2.0"
|
||||
|
||||
// Activate when you want to check for leaks, from time to time.
|
||||
//debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3'
|
||||
|
||||
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
|
||||
debugImplementation libs.androidx.fragmentTesting
|
||||
}
|
78
vector-app/proguard-rules.pro
vendored
Normal file
78
vector-app/proguard-rules.pro
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
# Add project specific ProGuard rules here.
|
||||
# You can control the set of applied configuration files using the
|
||||
# proguardFiles setting in build.gradle.
|
||||
#
|
||||
# For more details, see
|
||||
# http://developer.android.com/guide/developing/tools/proguard.html
|
||||
|
||||
# If your project uses WebView with JS, uncomment the following
|
||||
# and specify the fully qualified class name to the JavaScript interface
|
||||
# class:
|
||||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
|
||||
# public *;
|
||||
#}
|
||||
|
||||
# Uncomment this to preserve the line number information for
|
||||
# debugging stack traces.
|
||||
#-keepattributes SourceFile,LineNumberTable
|
||||
|
||||
# If you keep the line number information, uncomment this to
|
||||
# hide the original source file name.
|
||||
#-renamesourcefileattribute SourceFile
|
||||
|
||||
-keep class im.vector.app.features.** { *; }
|
||||
|
||||
## print all the rules in a file
|
||||
# -printconfiguration ../proguard_files/full-r8-config.txt
|
||||
|
||||
# WebRTC
|
||||
|
||||
-keep class org.webrtc.** { *; }
|
||||
-dontwarn org.chromium.build.BuildHooksAndroid
|
||||
|
||||
# Jitsi (else callbacks are not called)
|
||||
|
||||
-keep class org.jitsi.meet.** { *; }
|
||||
-keep class org.jitsi.meet.sdk.** { *; }
|
||||
|
||||
# React Native
|
||||
|
||||
# Keep our interfaces so they can be used by other ProGuard rules.
|
||||
# See http://sourceforge.net/p/proguard/bugs/466/
|
||||
-keep,allowobfuscation @interface com.facebook.proguard.annotations.DoNotStrip
|
||||
-keep,allowobfuscation @interface com.facebook.proguard.annotations.KeepGettersAndSetters
|
||||
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
|
||||
|
||||
# Do not strip any method/class that is annotated with @DoNotStrip
|
||||
-keep @com.facebook.proguard.annotations.DoNotStrip class *
|
||||
-keep @com.facebook.common.internal.DoNotStrip class *
|
||||
-keepclassmembers class * {
|
||||
@com.facebook.proguard.annotations.DoNotStrip *;
|
||||
@com.facebook.common.internal.DoNotStrip *;
|
||||
}
|
||||
|
||||
-keepclassmembers @com.facebook.proguard.annotations.KeepGettersAndSetters class * {
|
||||
void set*(***);
|
||||
*** get*();
|
||||
}
|
||||
|
||||
-keep class * extends com.facebook.react.bridge.JavaScriptModule { *; }
|
||||
-keep class * extends com.facebook.react.bridge.NativeModule { *; }
|
||||
-keepclassmembers,includedescriptorclasses class * { native <methods>; }
|
||||
-keepclassmembers class * { @com.facebook.react.uimanager.UIProp <fields>; }
|
||||
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactProp <methods>; }
|
||||
-keepclassmembers class * { @com.facebook.react.uimanager.annotations.ReactPropGroup <methods>; }
|
||||
|
||||
-dontwarn com.facebook.react.**
|
||||
-keep,includedescriptorclasses class com.facebook.react.bridge.** { *; }
|
||||
|
||||
-keepattributes InnerClasses
|
||||
|
||||
# JWT dependencies
|
||||
-keep class io.jsonwebtoken.** { *; }
|
||||
-keepnames class io.jsonwebtoken.* { *; }
|
||||
-keepnames interface io.jsonwebtoken.* { *; }
|
||||
|
||||
-keep class org.bouncycastle.** { *; }
|
||||
-keepnames class org.bouncycastle.** { *; }
|
||||
-dontwarn org.bouncycastle.**
|
2
vector-app/src/main/AndroidManifest.xml
Normal file
2
vector-app/src/main/AndroidManifest.xml
Normal file
@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest package="im.vector.app"></manifest>
|
@ -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,
|
@ -1,13 +1,9 @@
|
||||
import com.android.build.OutputFile
|
||||
|
||||
apply plugin: 'com.android.application'
|
||||
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.jakewharton.butterknife'
|
||||
|
||||
if (project.hasProperty("coverage")) {
|
||||
apply plugin: 'jacoco'
|
||||
@ -17,111 +13,6 @@ 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 = 26
|
||||
|
||||
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
|
||||
@ -130,87 +21,28 @@ 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}\""
|
||||
|
||||
buildConfigField "im.vector.app.features.VectorFeatures.OnboardingVariant", "ONBOARDING_VARIANT", "im.vector.app.features.VectorFeatures.OnboardingVariant.FTUE_AUTH"
|
||||
|
||||
buildConfigField "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy", "outboundSessionKeySharingStrategy", "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy.WhenTyping"
|
||||
|
||||
buildConfigField "Long", "VOICE_MESSAGE_DURATION_LIMIT_MS", "120_000L"
|
||||
|
||||
// If set, MSC3086 asserted identity messages sent on VoIP calls will cause the call to appear in the room corresponding to the asserted identity.
|
||||
// This *must* only be set in trusted environments.
|
||||
buildConfigField "Boolean", "handleCallAssertedIdentityEvents", "false"
|
||||
|
||||
buildConfigField "Boolean", "enableLocationSharing", "true"
|
||||
buildConfigField "String", "mapTilerKey", "\"fU3vlMsMn4Jb6dnEIFsx\""
|
||||
|
||||
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"
|
||||
}
|
||||
}
|
||||
|
||||
// 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'
|
||||
buildConfigField "String", "APPLICATION_ID", "\"im.vector.app\""
|
||||
buildConfigField "im.vector.app.features.VectorFeatures.OnboardingVariant", "ONBOARDING_VARIANT", "im.vector.app.features.VectorFeatures.OnboardingVariant.FTUE_AUTH"
|
||||
buildConfigField "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy", "outboundSessionKeySharingStrategy", "im.vector.app.features.crypto.keysrequest.OutboundSessionKeySharingStrategy.WhenTyping"
|
||||
buildConfigField "Long", "VOICE_MESSAGE_DURATION_LIMIT_MS", "120_000L"
|
||||
// If set, MSC3086 asserted identity messages sent on VoIP calls will cause the call to appear in the room corresponding to the asserted identity.
|
||||
// This *must* only be set in trusted environments.
|
||||
buildConfigField "Boolean", "handleCallAssertedIdentityEvents", "false"
|
||||
buildConfigField "Boolean", "enableLocationSharing", "true"
|
||||
buildConfigField "String", "mapTilerKey", "\"fU3vlMsMn4Jb6dnEIFsx\""
|
||||
|
||||
buildConfigField "String", "GIT_REVISION", "\"1\""
|
||||
buildConfigField "String", "GIT_REVISION_DATE", "\"2\""
|
||||
buildConfigField "String", "GIT_BRANCH_NAME", "\"3\""
|
||||
buildConfigField "String", "BUILD_NUMBER", "\"4\""
|
||||
buildConfigField "String", "VERSION_NAME", "\"5\""
|
||||
}
|
||||
|
||||
testOptions {
|
||||
@ -221,67 +53,36 @@ android {
|
||||
// Comment to run on Android 12
|
||||
// execution 'ANDROIDX_TEST_ORCHESTRATOR'
|
||||
}
|
||||
signingConfigs {
|
||||
debug {
|
||||
keyAlias 'androiddebugkey'
|
||||
keyPassword 'android'
|
||||
storeFile file('./signature/debug.keystore')
|
||||
storePassword 'android'
|
||||
}
|
||||
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"
|
||||
|
||||
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
||||
// Set to true if you want to enable strict mode in debug
|
||||
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
||||
|
||||
signingConfig signingConfigs.debug
|
||||
|
||||
if (project.hasProperty("coverage")) {
|
||||
testCoverageEnabled = coverage.enableTestCoverage
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
resValue "string", "app_name", "Element"
|
||||
|
||||
buildConfigField "boolean", "LOW_PRIVACY_LOG_ENABLE", "false"
|
||||
buildConfigField "boolean", "ENABLE_STRICT_MODE_LOGS", "false"
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
buildTypes.all { buildType ->
|
||||
buildType.javaCompileOptions.annotationProcessorOptions.arguments =
|
||||
[
|
||||
validateEpoxyModelUsage: String.valueOf(buildType.name == 'debug')
|
||||
]
|
||||
}
|
||||
|
||||
|
||||
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()}"
|
||||
|
||||
resValue "bool", "isGplay", "true"
|
||||
buildConfigField "boolean", "ALLOW_FCM_USE", "true"
|
||||
@ -292,8 +93,6 @@ android {
|
||||
fdroid {
|
||||
dimension "store"
|
||||
|
||||
versionName "${versionMajor}.${versionMinor}.${versionPatch}${getFdroidVersionSuffix()}"
|
||||
|
||||
resValue "bool", "isGplay", "false"
|
||||
buildConfigField "boolean", "ALLOW_FCM_USE", "false"
|
||||
buildConfigField "String", "SHORT_FLAVOR_DESCRIPTION", "\"F\""
|
||||
|
@ -23,10 +23,12 @@ import android.widget.Spinner
|
||||
import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = im.vector.app.R.layout.item_feature)
|
||||
@EpoxyModelClass(layout = R2.layout.item_feature)
|
||||
abstract class BooleanFeatureItem : VectorEpoxyModel<BooleanFeatureItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,10 +23,12 @@ import android.widget.Spinner
|
||||
import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = im.vector.app.R.layout.item_feature)
|
||||
@EpoxyModelClass(layout = R2.layout.item_feature)
|
||||
abstract class EnumFeatureItem : VectorEpoxyModel<EnumFeatureItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,13 +21,15 @@ import android.widget.TextView
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import me.gujun.android.span.image
|
||||
import me.gujun.android.span.span
|
||||
import org.matrix.android.sdk.api.session.crypto.verification.EmojiRepresentation
|
||||
|
||||
@EpoxyModelClass(layout = im.vector.app.R.layout.item_sas_emoji)
|
||||
@EpoxyModelClass(layout = R2.layout.item_sas_emoji)
|
||||
abstract class SasEmojiItem : VectorEpoxyModel<SasEmojiItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
@ -51,9 +53,9 @@ abstract class SasEmojiItem : VectorEpoxyModel<SasEmojiItem.Holder>() {
|
||||
}
|
||||
|
||||
class Holder : VectorEpoxyHolder() {
|
||||
val indexView by bind<TextView>(im.vector.app.R.id.sas_emoji_index)
|
||||
val emojiView by bind<TextView>(im.vector.app.R.id.sas_emoji)
|
||||
val textView by bind<TextView>(im.vector.app.R.id.sas_emoji_text)
|
||||
val idView by bind<TextView>(im.vector.app.R.id.sas_emoji_text_id)
|
||||
val indexView by bind<TextView>(R.id.sas_emoji_index)
|
||||
val emojiView by bind<TextView>(R.id.sas_emoji)
|
||||
val textView by bind<TextView>(R.id.sas_emoji_text)
|
||||
val idView by bind<TextView>(R.id.sas_emoji_text_id)
|
||||
}
|
||||
}
|
||||
|
@ -17,8 +17,9 @@ package im.vector.app.core.epoxy
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_divider_on_surface)
|
||||
@EpoxyModelClass(layout = R2.layout.item_divider_on_surface)
|
||||
abstract class BottomSheetDividerItem : VectorEpoxyModel<BottomSheetDividerItem.Holder>() {
|
||||
class Holder : VectorEpoxyHolder()
|
||||
}
|
||||
|
@ -21,8 +21,9 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.checkbox.MaterialCheckBox
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_checkbox)
|
||||
@EpoxyModelClass(layout = R2.layout.item_checkbox)
|
||||
abstract class CheckBoxItem : VectorEpoxyModel<CheckBoxItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -17,8 +17,9 @@ package im.vector.app.core.epoxy
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_divider)
|
||||
@EpoxyModelClass(layout = R2.layout.item_divider)
|
||||
abstract class DividerItem : VectorEpoxyModel<DividerItem.Holder>() {
|
||||
class Holder : VectorEpoxyHolder()
|
||||
}
|
||||
|
@ -22,8 +22,9 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_error_retry)
|
||||
@EpoxyModelClass(layout = R2.layout.item_error_retry)
|
||||
abstract class ErrorWithRetryItem : VectorEpoxyModel<ErrorWithRetryItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -26,9 +26,10 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.extensions.copyOnLongClick
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_expandable_textview)
|
||||
@EpoxyModelClass(layout = R2.layout.item_expandable_textview)
|
||||
abstract class ExpandableTextItem : VectorEpoxyModel<ExpandableTextItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,8 +20,9 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_help_footer)
|
||||
@EpoxyModelClass(layout = R2.layout.item_help_footer)
|
||||
abstract class HelpFooterItem : VectorEpoxyModel<HelpFooterItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -22,9 +22,10 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_loading)
|
||||
@EpoxyModelClass(layout = R2.layout.item_loading)
|
||||
abstract class LoadingItem : VectorEpoxyModel<LoadingItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute var loadingText: String? = null
|
||||
|
@ -20,8 +20,9 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_no_result)
|
||||
@EpoxyModelClass(layout = R2.layout.item_no_result)
|
||||
abstract class NoResultItem : VectorEpoxyModel<NoResultItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -18,8 +18,9 @@ package im.vector.app.core.epoxy
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_loading_square)
|
||||
@EpoxyModelClass(layout = R2.layout.item_loading_square)
|
||||
abstract class SquareLoadingItem : VectorEpoxyModel<SquareLoadingItem.Holder>() {
|
||||
|
||||
class Holder : VectorEpoxyHolder()
|
||||
|
@ -20,9 +20,10 @@ import androidx.core.view.updateLayoutParams
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.features.home.room.detail.timeline.item.ItemWithEvents
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_timeline_empty)
|
||||
@EpoxyModelClass(layout = R2.layout.item_timeline_empty)
|
||||
abstract class TimelineEmptyItem : VectorEpoxyModel<TimelineEmptyItem.Holder>(), ItemWithEvents {
|
||||
|
||||
@EpoxyAttribute lateinit var eventId: String
|
||||
|
@ -18,12 +18,13 @@ package im.vector.app.core.epoxy
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
/**
|
||||
* Item of size (0, 0).
|
||||
* It can be useful to avoid automatic scroll of RecyclerView with Epoxy controller, when the first valuable item changes.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_zero)
|
||||
@EpoxyModelClass(layout = R2.layout.item_zero)
|
||||
abstract class ZeroItem : VectorEpoxyModel<ZeroItem.Holder>() {
|
||||
|
||||
class Holder : VectorEpoxyHolder()
|
||||
|
@ -30,6 +30,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -39,7 +40,7 @@ import im.vector.app.features.themes.ThemeUtils
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_action)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_action)
|
||||
abstract class BottomSheetActionItem : VectorEpoxyModel<BottomSheetActionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -25,6 +25,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -43,7 +44,7 @@ import org.matrix.android.sdk.api.util.MatrixItem
|
||||
/**
|
||||
* A message preview for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_message_preview)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_message_preview)
|
||||
abstract class BottomSheetMessagePreviewItem : VectorEpoxyModel<BottomSheetMessagePreviewItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -22,6 +22,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.EmojiCompatFontProvider
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
@ -29,7 +30,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
/**
|
||||
* A quick reaction list for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_quick_reaction)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_quick_reaction)
|
||||
abstract class BottomSheetQuickReactionsItem : VectorEpoxyModel<BottomSheetQuickReactionsItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,6 +23,7 @@ import androidx.core.content.ContextCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -33,7 +34,7 @@ import im.vector.app.core.extensions.setTextOrHide
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_radio)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_radio)
|
||||
abstract class BottomSheetRadioActionItem : VectorEpoxyModel<BottomSheetRadioActionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -25,6 +25,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -39,7 +40,7 @@ import org.matrix.android.sdk.api.util.MatrixItem
|
||||
/**
|
||||
* A room preview for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_room_preview)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_room_preview)
|
||||
abstract class BottomSheetRoomPreviewItem : VectorEpoxyModel<BottomSheetRoomPreviewItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer
|
||||
|
@ -23,13 +23,14 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A send state for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_message_status)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_message_status)
|
||||
abstract class BottomSheetSendStateItem : VectorEpoxyModel<BottomSheetSendStateItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -24,6 +24,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -33,7 +34,7 @@ import im.vector.app.features.home.AvatarRenderer
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_action)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_action)
|
||||
abstract class ProfileActionItem : VectorEpoxyModel<ProfileActionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -22,11 +22,12 @@ import android.widget.ImageView
|
||||
import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.ui.views.PresenceStateImageView
|
||||
import im.vector.app.core.ui.views.ShieldImageView
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_matrix_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_matrix_item)
|
||||
abstract class ProfileMatrixItem : BaseProfileMatrixItem<ProfileMatrixItem.Holder>() {
|
||||
|
||||
open class Holder : VectorEpoxyHolder() {
|
||||
|
@ -20,10 +20,10 @@ package im.vector.app.core.epoxy.profiles
|
||||
import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_matrix_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_matrix_item)
|
||||
abstract class ProfileMatrixItemWithPowerLevel : ProfileMatrixItem() {
|
||||
|
||||
@EpoxyAttribute var ignoredUser: Boolean = false
|
||||
|
@ -19,10 +19,10 @@ package im.vector.app.core.epoxy.profiles
|
||||
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import org.matrix.android.sdk.api.session.presence.model.UserPresence
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_matrix_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_matrix_item)
|
||||
abstract class ProfileMatrixItemWithPowerLevelWithPresence : ProfileMatrixItemWithPowerLevel() {
|
||||
|
||||
@EpoxyAttribute var showPresence: Boolean = true
|
||||
|
@ -21,9 +21,9 @@ import android.widget.ProgressBar
|
||||
import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_matrix_item_progress)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_matrix_item_progress)
|
||||
abstract class ProfileMatrixItemWithProgress : BaseProfileMatrixItem<ProfileMatrixItemWithProgress.Holder>() {
|
||||
|
||||
@EpoxyAttribute var inProgress: Boolean = true
|
||||
@ -34,6 +34,6 @@ abstract class ProfileMatrixItemWithProgress : BaseProfileMatrixItem<ProfileMatr
|
||||
}
|
||||
|
||||
class Holder : ProfileMatrixItem.Holder() {
|
||||
val progress by bind<ProgressBar>(R.id.matrixItemProgress)
|
||||
val progress by bind<ProgressBar>(R2.id.matrixItemProgress)
|
||||
}
|
||||
}
|
||||
|
@ -20,10 +20,11 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_profile_section)
|
||||
@EpoxyModelClass(layout = R2.layout.item_profile_section)
|
||||
abstract class ProfileSectionItem : VectorEpoxyModel<ProfileSectionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,12 +20,13 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.extensions.setTextWithColoredPart
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_notifications_footer)
|
||||
@EpoxyModelClass(layout = R2.layout.item_notifications_footer)
|
||||
abstract class NotificationSettingsFooterItem : VectorEpoxyModel<NotificationSettingsFooterItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,13 +23,14 @@ import androidx.core.content.ContextCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setAttributeTintedImageResource
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_radio)
|
||||
@EpoxyModelClass(layout = R2.layout.item_radio)
|
||||
abstract class RadioButtonItem : VectorEpoxyModel<RadioButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,10 +21,11 @@ import androidx.annotation.StringRes
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_text_header)
|
||||
@EpoxyModelClass(layout = R2.layout.item_text_header)
|
||||
abstract class TextHeaderItem : VectorEpoxyModel<TextHeaderItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -24,6 +24,7 @@ import android.widget.FrameLayout
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.view.isVisible
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.databinding.ViewButtonStateBinding
|
||||
@ -48,7 +49,7 @@ class ButtonStateView @JvmOverloads constructor(context: Context, attrs: Attribu
|
||||
private val views: ViewButtonStateBinding
|
||||
|
||||
init {
|
||||
inflate(context, R.layout.view_button_state, this)
|
||||
inflate(context, R2.layout.view_button_state, this)
|
||||
views = ViewButtonStateBinding.bind(this)
|
||||
|
||||
layoutParams = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
|
||||
@ -66,7 +67,7 @@ class ButtonStateView @JvmOverloads constructor(context: Context, attrs: Attribu
|
||||
)
|
||||
.apply {
|
||||
try {
|
||||
if (getBoolean(R.styleable.ButtonStateView_bsv_use_flat_button, true)) {
|
||||
if (getBoolean(R2.styleable.ButtonStateView_bsv_use_flat_button, true)) {
|
||||
button = views.buttonStateButtonFlat
|
||||
views.buttonStateButtonBig.isVisible = false
|
||||
} else {
|
||||
@ -74,8 +75,8 @@ class ButtonStateView @JvmOverloads constructor(context: Context, attrs: Attribu
|
||||
views.buttonStateButtonFlat.isVisible = false
|
||||
}
|
||||
|
||||
button.text = getString(R.styleable.ButtonStateView_bsv_button_text)
|
||||
views.buttonStateLoaded.setImageDrawable(getDrawable(R.styleable.ButtonStateView_bsv_loaded_image_src))
|
||||
button.text = getString(R2.styleable.ButtonStateView_bsv_button_text)
|
||||
views.buttonStateLoaded.setImageDrawable(getDrawable(R2.styleable.ButtonStateView_bsv_loaded_image_src))
|
||||
} finally {
|
||||
recycle()
|
||||
}
|
||||
|
@ -20,6 +20,7 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
@ -27,7 +28,7 @@ import im.vector.app.core.extensions.setTextOrHide
|
||||
/**
|
||||
* A title for bottom sheet, with an optional subtitle. It does not include the bottom separator.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_bottom_sheet_title)
|
||||
@EpoxyModelClass(layout = R2.layout.item_bottom_sheet_title)
|
||||
abstract class BottomSheetTitleItem : VectorEpoxyModel<BottomSheetTitleItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -24,6 +24,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -33,7 +34,7 @@ import im.vector.app.features.themes.ThemeUtils
|
||||
/**
|
||||
* A generic button list item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_button)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_button)
|
||||
abstract class GenericButtonItem : VectorEpoxyModel<GenericButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -27,6 +27,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
@ -35,7 +36,7 @@ import im.vector.app.core.extensions.setTextOrHide
|
||||
/**
|
||||
* A generic list item to display when there is no results, with an optional CTA.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_empty_state)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_empty_state)
|
||||
abstract class GenericEmptyWithActionItem : VectorEpoxyModel<GenericEmptyWithActionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,6 +21,7 @@ import androidx.annotation.ColorInt
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -35,7 +36,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
* Can display an accessory on the right, that can be an image or an indeterminate progress.
|
||||
* If provided with an action, will display a button at the bottom of the list item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_footer)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_footer)
|
||||
abstract class GenericFooterItem : VectorEpoxyModel<GenericFooterItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,6 +20,7 @@ import androidx.annotation.ColorInt
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
@ -28,7 +29,7 @@ import im.vector.app.features.themes.ThemeUtils
|
||||
/**
|
||||
* A generic list item header left aligned with notice color.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_header)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_header)
|
||||
abstract class GenericHeaderItem : VectorEpoxyModel<GenericHeaderItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -25,6 +25,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -38,7 +39,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
* Can display an accessory on the right, that can be an image or an indeterminate progress.
|
||||
* If provided with an action, will display a button at the bottom of the list item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_list)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_list)
|
||||
abstract class GenericItem : VectorEpoxyModel<GenericItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -18,13 +18,14 @@ package im.vector.app.core.ui.list
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A generic list item header left aligned with notice color.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_loader)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_loader)
|
||||
abstract class GenericLoaderItem : VectorEpoxyModel<GenericLoaderItem.Holder>() {
|
||||
|
||||
// Maybe/Later add some style configuration, SMALL/BIG ?
|
||||
|
@ -25,6 +25,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -36,7 +37,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
/**
|
||||
* A generic list item with a rounded corner background and an optional icon.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_pill_footer)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_pill_footer)
|
||||
abstract class GenericPillItem : VectorEpoxyModel<GenericPillItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,6 +21,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.button.MaterialButton
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -29,7 +30,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
/**
|
||||
* A generic button list item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_positive_button)
|
||||
@EpoxyModelClass(layout = R2.layout.item_positive_button)
|
||||
abstract class GenericPositiveButtonItem : VectorEpoxyModel<GenericPositiveButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -19,13 +19,14 @@ import android.widget.ProgressBar
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A generic progress bar item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_progress)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_progress)
|
||||
abstract class GenericProgressBarItem : VectorEpoxyModel<GenericProgressBarItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -24,6 +24,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -38,7 +39,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
* Can display an accessory on the right, that can be an image or an indeterminate progress.
|
||||
* If provided with an action, will display a button at the bottom of the list item.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_generic_with_value)
|
||||
@EpoxyModelClass(layout = R2.layout.item_generic_with_value)
|
||||
abstract class GenericWithValueItem : VectorEpoxyModel<GenericWithValueItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,13 +20,14 @@ import androidx.core.view.updateLayoutParams
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A generic item with empty space.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_vertical_margin)
|
||||
@EpoxyModelClass(layout = R2.layout.item_vertical_margin)
|
||||
abstract class VerticalMarginItem : VectorEpoxyModel<VerticalMarginItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,7 +23,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.platform.CheckableImageView
|
||||
@ -42,7 +42,7 @@ abstract class AttachmentPreviewItem<H : AttachmentPreviewItem.Holder> : VectorE
|
||||
.apply(RequestOptions().frame(0))
|
||||
.into(holder.imageView)
|
||||
} else {
|
||||
holder.imageView.setImageResource(R.drawable.filetype_attachment)
|
||||
holder.imageView.setImageResource(R2.drawable.filetype_attachment)
|
||||
holder.imageView.scaleType = ImageView.ScaleType.FIT_CENTER
|
||||
}
|
||||
}
|
||||
@ -52,7 +52,7 @@ abstract class AttachmentPreviewItem<H : AttachmentPreviewItem.Holder> : VectorE
|
||||
}
|
||||
}
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_attachment_miniature_preview)
|
||||
@EpoxyModelClass(layout = R2.layout.item_attachment_miniature_preview)
|
||||
abstract class AttachmentMiniaturePreviewItem : AttachmentPreviewItem<AttachmentMiniaturePreviewItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute override lateinit var attachment: ContentAttachmentData
|
||||
@ -73,12 +73,12 @@ abstract class AttachmentMiniaturePreviewItem : AttachmentPreviewItem<Attachment
|
||||
class Holder : AttachmentPreviewItem.Holder() {
|
||||
override val imageView: CheckableImageView
|
||||
get() = miniatureImageView
|
||||
private val miniatureImageView by bind<CheckableImageView>(R.id.attachmentMiniatureImageView)
|
||||
val miniatureVideoIndicator by bind<ImageView>(R.id.attachmentMiniatureVideoIndicator)
|
||||
private val miniatureImageView by bind<CheckableImageView>(R2.id.attachmentMiniatureImageView)
|
||||
val miniatureVideoIndicator by bind<ImageView>(R2.id.attachmentMiniatureVideoIndicator)
|
||||
}
|
||||
}
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_attachment_big_preview)
|
||||
@EpoxyModelClass(layout = R2.layout.item_attachment_big_preview)
|
||||
abstract class AttachmentBigPreviewItem : AttachmentPreviewItem<AttachmentBigPreviewItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute override lateinit var attachment: ContentAttachmentData
|
||||
@ -86,6 +86,6 @@ abstract class AttachmentBigPreviewItem : AttachmentPreviewItem<AttachmentBigPre
|
||||
class Holder : AttachmentPreviewItem.Holder() {
|
||||
override val imageView: ImageView
|
||||
get() = bigImageView
|
||||
private val bigImageView by bind<ImageView>(R.id.attachmentBigImageView)
|
||||
private val bigImageView by bind<ImageView>(R2.id.attachmentBigImageView)
|
||||
}
|
||||
}
|
||||
|
@ -20,10 +20,11 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_autocomplete_header_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_autocomplete_header_item)
|
||||
abstract class AutocompleteHeaderItem : VectorEpoxyModel<AutocompleteHeaderItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute var title: String? = null
|
||||
|
@ -21,6 +21,7 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -30,7 +31,7 @@ import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_autocomplete_matrix_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_autocomplete_matrix_item)
|
||||
abstract class AutocompleteMatrixItem : VectorEpoxyModel<AutocompleteMatrixItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer
|
||||
|
@ -20,12 +20,13 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_autocomplete_command)
|
||||
@EpoxyModelClass(layout = R2.layout.item_autocomplete_command)
|
||||
abstract class AutocompleteCommandItem : VectorEpoxyModel<AutocompleteCommandItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,6 +21,7 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -28,7 +29,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
import im.vector.app.features.reactions.data.EmojiItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_autocomplete_emoji)
|
||||
@EpoxyModelClass(layout = R2.layout.item_autocomplete_emoji)
|
||||
abstract class AutocompleteEmojiItem : VectorEpoxyModel<AutocompleteEmojiItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -18,10 +18,11 @@ package im.vector.app.features.autocomplete.emoji
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_autocomplete_more_result)
|
||||
@EpoxyModelClass(layout = R2.layout.item_autocomplete_more_result)
|
||||
abstract class AutocompleteMoreResultItem : VectorEpoxyModel<AutocompleteMoreResultItem.Holder>() {
|
||||
|
||||
class Holder : VectorEpoxyHolder()
|
||||
|
@ -20,13 +20,14 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_contact_detail)
|
||||
@EpoxyModelClass(layout = R2.layout.item_contact_detail)
|
||||
abstract class ContactDetailItem : VectorEpoxyModel<ContactDetailItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var threePid: String
|
||||
|
@ -21,12 +21,13 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.contacts.MappedContact
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_contact_main)
|
||||
@EpoxyModelClass(layout = R2.layout.item_contact_main)
|
||||
abstract class ContactItem : VectorEpoxyModel<ContactItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer
|
||||
|
@ -21,13 +21,14 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_keys_backup_settings_button_footer)
|
||||
@EpoxyModelClass(layout = R2.layout.item_keys_backup_settings_button_footer)
|
||||
abstract class KeysBackupSettingFooterItem : VectorEpoxyModel<KeysBackupSettingFooterItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -18,13 +18,14 @@ package im.vector.app.features.crypto.verification.epoxy
|
||||
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_wait)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_wait)
|
||||
abstract class BottomSheetSelfWaitItem : VectorEpoxyModel<BottomSheetSelfWaitItem.Holder>() {
|
||||
class Holder : VectorEpoxyHolder()
|
||||
}
|
||||
|
@ -25,6 +25,7 @@ import androidx.core.widget.ImageViewCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -34,7 +35,7 @@ import im.vector.app.core.extensions.setTextOrHide
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_action)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_action)
|
||||
abstract class BottomSheetVerificationActionItem : VectorEpoxyModel<BottomSheetVerificationActionItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -19,6 +19,7 @@ package im.vector.app.features.crypto.verification.epoxy
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.ui.views.ShieldImageView
|
||||
@ -27,7 +28,7 @@ import org.matrix.android.sdk.api.session.crypto.model.RoomEncryptionTrustLevel
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_big_image)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_big_image)
|
||||
abstract class BottomSheetVerificationBigImageItem : VectorEpoxyModel<BottomSheetVerificationBigImageItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,13 +20,14 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_decimal_code)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_decimal_code)
|
||||
abstract class BottomSheetVerificationDecimalCodeItem : VectorEpoxyModel<BottomSheetVerificationDecimalCodeItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,6 +23,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.databinding.ItemEmojiVerifBinding
|
||||
@ -34,7 +35,7 @@ import org.matrix.android.sdk.api.session.crypto.verification.EmojiRepresentatio
|
||||
/**
|
||||
* A emoji list for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_emojis)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_emojis)
|
||||
abstract class BottomSheetVerificationEmojisItem : VectorEpoxyModel<BottomSheetVerificationEmojisItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var emojiRepresentation0: EmojiRepresentation
|
||||
|
@ -20,6 +20,7 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
@ -27,7 +28,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_notice)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_notice)
|
||||
abstract class BottomSheetVerificationNoticeItem : VectorEpoxyModel<BottomSheetVerificationNoticeItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -19,6 +19,7 @@ package im.vector.app.features.crypto.verification.epoxy
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.ui.views.QrCodeImageView
|
||||
@ -26,7 +27,7 @@ import im.vector.app.core.ui.views.QrCodeImageView
|
||||
/**
|
||||
* An Epoxy item displaying a QR code.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_qr_code)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_qr_code)
|
||||
abstract class BottomSheetVerificationQrCodeItem : VectorEpoxyModel<BottomSheetVerificationQrCodeItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,13 +20,14 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
|
||||
/**
|
||||
* A action for bottom sheet.
|
||||
*/
|
||||
@EpoxyModelClass(layout = R.layout.item_verification_waiting)
|
||||
@EpoxyModelClass(layout = R2.layout.item_verification_waiting)
|
||||
abstract class BottomSheetVerificationWaitingItem : VectorEpoxyModel<BottomSheetVerificationWaitingItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,12 +21,13 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_discovery_policy)
|
||||
@EpoxyModelClass(layout = R2.layout.item_discovery_policy)
|
||||
abstract class DiscoveryPolicyItem : EpoxyModelWithHolder<DiscoveryPolicyItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,6 +21,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.attributes.ButtonStyle
|
||||
@ -28,7 +29,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
import im.vector.app.core.resources.ColorProvider
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_button)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_button)
|
||||
abstract class SettingsButtonItem : EpoxyModelWithHolder<SettingsButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,9 +21,10 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_centered_image)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_centered_image)
|
||||
abstract class SettingsCenteredImageItem : EpoxyModelWithHolder<SettingsCenteredImageItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -20,11 +20,12 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_continue_cancel)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_continue_cancel)
|
||||
abstract class SettingsContinueCancelItem : EpoxyModelWithHolder<SettingsContinueCancelItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -25,11 +25,12 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
import im.vector.app.core.extensions.showKeyboard
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_edit_text)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_edit_text)
|
||||
abstract class SettingsEditTextItem : EpoxyModelWithHolder<SettingsEditTextItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute var hint: String? = null
|
||||
|
@ -22,12 +22,13 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_helper_info)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_helper_info)
|
||||
abstract class SettingsInfoItem : EpoxyModelWithHolder<SettingsInfoItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,9 +21,10 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_information)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_information)
|
||||
abstract class SettingsInformationItem : EpoxyModelWithHolder<SettingsInformationItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,12 +23,13 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_simple_item)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_simple_item)
|
||||
abstract class SettingsItem : EpoxyModelWithHolder<SettingsItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -18,9 +18,10 @@ package im.vector.app.features.discovery
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_progress)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_progress)
|
||||
abstract class SettingsProgressItem : EpoxyModelWithHolder<SettingsProgressItem.Holder>() {
|
||||
|
||||
class Holder : VectorEpoxyHolder()
|
||||
|
@ -21,10 +21,11 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_section_title)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_section_title)
|
||||
abstract class SettingsSectionTitleItem : EpoxyModelWithHolder<SettingsSectionTitleItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -28,6 +28,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.attributes.ButtonStyle
|
||||
@ -39,7 +40,7 @@ import im.vector.app.core.resources.ColorProvider
|
||||
import im.vector.app.core.resources.StringProvider
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_settings_button_single_line)
|
||||
@EpoxyModelClass(layout = R2.layout.item_settings_button_single_line)
|
||||
abstract class SettingsTextButtonSingleLineItem : EpoxyModelWithHolder<SettingsTextButtonSingleLineItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -22,13 +22,14 @@ import androidx.core.graphics.drawable.DrawableCompat
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_advanced_toggle)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_advanced_toggle)
|
||||
abstract class FormAdvancedToggleItem : VectorEpoxyModel<FormAdvancedToggleItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var title: String
|
||||
|
@ -27,6 +27,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.TextListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -34,7 +35,7 @@ import im.vector.app.core.epoxy.addTextChangedListenerOnce
|
||||
import im.vector.app.core.epoxy.setValueOnce
|
||||
import im.vector.app.core.platform.SimpleTextWatcher
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_text_input)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_text_input)
|
||||
abstract class FormEditTextItem : VectorEpoxyModel<FormEditTextItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,6 +23,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.TextListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
@ -32,7 +33,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.epoxy.setValueOnce
|
||||
import im.vector.app.core.platform.SimpleTextWatcher
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_text_input_with_button)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_text_input_with_button)
|
||||
abstract class FormEditTextWithButtonItem : VectorEpoxyModel<FormEditTextWithButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -25,6 +25,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.TextListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
@ -34,7 +35,7 @@ import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextIfDifferent
|
||||
import im.vector.app.core.platform.SimpleTextWatcher
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_text_input_with_delete)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_text_input_with_delete)
|
||||
abstract class FormEditTextWithDeleteItem : VectorEpoxyModel<FormEditTextWithDeleteItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -24,6 +24,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
@ -31,7 +32,7 @@ import im.vector.app.core.glide.GlideApp
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_editable_avatar)
|
||||
@EpoxyModelClass(layout = R2.layout.item_editable_avatar)
|
||||
abstract class FormEditableAvatarItem : EpoxyModelWithHolder<FormEditableAvatarItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -27,6 +27,7 @@ import com.bumptech.glide.load.MultiTransformation
|
||||
import com.bumptech.glide.load.resource.bitmap.CenterCrop
|
||||
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
@ -34,7 +35,7 @@ import im.vector.app.core.glide.GlideApp
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_editable_square_avatar)
|
||||
@EpoxyModelClass(layout = R2.layout.item_editable_square_avatar)
|
||||
abstract class FormEditableSquareAvatarItem : EpoxyModelWithHolder<FormEditableSquareAvatarItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -23,6 +23,7 @@ import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.textfield.TextInputEditText
|
||||
import com.google.android.material.textfield.TextInputLayout
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.TextListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -30,7 +31,7 @@ import im.vector.app.core.epoxy.addTextChangedListenerOnce
|
||||
import im.vector.app.core.epoxy.setValueOnce
|
||||
import im.vector.app.core.platform.SimpleTextWatcher
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_multiline_text_input)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_multiline_text_input)
|
||||
abstract class FormMultiLineEditTextItem : VectorEpoxyModel<FormMultiLineEditTextItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,12 +21,13 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_submit_button)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_submit_button)
|
||||
abstract class FormSubmitButtonItem : EpoxyModelWithHolder<FormSubmitButtonItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -21,12 +21,13 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.google.android.material.switchmaterial.SwitchMaterial
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.epoxy.setValueOnce
|
||||
import im.vector.app.core.extensions.setTextOrHide
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_form_switch)
|
||||
@EpoxyModelClass(layout = R2.layout.item_form_switch)
|
||||
abstract class FormSwitchItem : VectorEpoxyModel<FormSwitchItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute
|
||||
|
@ -22,6 +22,7 @@ import android.widget.TextView
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -30,7 +31,7 @@ import im.vector.app.core.platform.CheckableConstraintLayout
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_group)
|
||||
@EpoxyModelClass(layout = R2.layout.item_group)
|
||||
abstract class GroupSummaryItem : VectorEpoxyModel<GroupSummaryItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer
|
||||
|
@ -26,6 +26,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -34,7 +35,7 @@ import im.vector.app.core.platform.CheckableConstraintLayout
|
||||
import im.vector.app.features.home.room.list.UnreadCounterBadgeView
|
||||
import im.vector.app.features.themes.ThemeUtils
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_space)
|
||||
@EpoxyModelClass(layout = R2.layout.item_space)
|
||||
abstract class HomeSpaceSummaryItem : VectorEpoxyModel<HomeSpaceSummaryItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute var selected: Boolean = false
|
||||
|
@ -35,7 +35,7 @@ import javax.inject.Inject
|
||||
private val useAdaptiveIcon = Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
|
||||
private const val adaptiveIconSizeDp = 108
|
||||
private const val adaptiveIconOuterSidesDp = 18
|
||||
private const val directShareCategory = BuildConfig.APPLICATION_ID + ".SHORTCUT_SHARE"
|
||||
private val directShareCategory = BuildConfig.APPLICATION_ID + ".SHORTCUT_SHARE"
|
||||
|
||||
class ShortcutCreator @Inject constructor(
|
||||
private val context: Context,
|
||||
|
@ -23,6 +23,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -32,7 +33,7 @@ import im.vector.app.features.home.AvatarRenderer
|
||||
import im.vector.app.features.home.room.list.UnreadCounterBadgeView
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_breadcrumbs)
|
||||
@EpoxyModelClass(layout = R2.layout.item_breadcrumbs)
|
||||
abstract class BreadcrumbsItem : VectorEpoxyModel<BreadcrumbsItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute var hasTypingUsers: Boolean = false
|
||||
|
@ -26,7 +26,7 @@ import com.airbnb.mvrx.Success
|
||||
import com.airbnb.mvrx.Uninitialized
|
||||
import com.airbnb.mvrx.parentFragmentViewModel
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.error.ErrorFormatter
|
||||
import im.vector.app.core.platform.ButtonStateView
|
||||
@ -64,7 +64,7 @@ class JoinReplacementRoomBottomSheet :
|
||||
Uninitialized,
|
||||
is Loading -> {
|
||||
views.roomUpgradeButton.render(ButtonStateView.State.Loading)
|
||||
views.descriptionText.setText(R.string.it_may_take_some_time)
|
||||
views.descriptionText.setText(R2.string.it_may_take_some_time)
|
||||
}
|
||||
is Success -> {
|
||||
views.roomUpgradeButton.render(ButtonStateView.State.Loaded)
|
||||
|
@ -23,6 +23,7 @@ import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import com.airbnb.epoxy.EpoxyModelWithHolder
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
@ -30,7 +31,7 @@ import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_display_read_receipt)
|
||||
@EpoxyModelClass(layout = R2.layout.item_display_read_receipt)
|
||||
abstract class DisplayReadReceiptItem : EpoxyModelWithHolder<DisplayReadReceiptItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var matrixItem: MatrixItem
|
||||
|
@ -23,6 +23,7 @@ import androidx.core.view.isVisible
|
||||
import com.airbnb.epoxy.EpoxyAttribute
|
||||
import com.airbnb.epoxy.EpoxyModelClass
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyHolder
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
@ -34,7 +35,7 @@ import im.vector.lib.core.utils.epoxy.charsequence.EpoxyCharSequence
|
||||
import org.matrix.android.sdk.api.session.threads.ThreadDetails
|
||||
import org.matrix.android.sdk.api.util.MatrixItem
|
||||
|
||||
@EpoxyModelClass(layout = R.layout.item_search_result)
|
||||
@EpoxyModelClass(layout = R2.layout.item_search_result)
|
||||
abstract class SearchResultItem : VectorEpoxyModel<SearchResultItem.Holder>() {
|
||||
|
||||
@EpoxyAttribute lateinit var avatarRenderer: AvatarRenderer
|
||||
|
@ -25,7 +25,7 @@ import android.text.style.ClickableSpan
|
||||
import android.text.style.ForegroundColorSpan
|
||||
import android.view.View
|
||||
import dagger.Lazy
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.VectorEpoxyModel
|
||||
import im.vector.app.core.files.LocalFilesHelper
|
||||
@ -179,7 +179,7 @@ class MessageItemFactory @Inject constructor(
|
||||
|
||||
val messageContent = event.getLastMessageContent()
|
||||
if (messageContent == null) {
|
||||
val malformedText = stringProvider.getString(R.string.malformed_message)
|
||||
val malformedText = stringProvider.getString(R2.string.malformed_message)
|
||||
return defaultItemFactory.create(malformedText, informationData, highlight, callback)
|
||||
}
|
||||
if (messageContent.relatesTo?.type == RelationType.REPLACE ||
|
||||
@ -323,11 +323,11 @@ class MessageItemFactory @Inject constructor(
|
||||
): String {
|
||||
val votes = pollResponseSummary?.totalVotes ?: 0
|
||||
return when {
|
||||
pollState is Ended -> stringProvider.getQuantityString(R.plurals.poll_total_vote_count_after_ended, votes, votes)
|
||||
pollState is Ended -> stringProvider.getQuantityString(R2.plurals.poll_total_vote_count_after_ended, votes, votes)
|
||||
pollState is Undisclosed -> ""
|
||||
pollState is Voted -> stringProvider.getQuantityString(R.plurals.poll_total_vote_count_before_ended_and_voted, votes, votes)
|
||||
votes == 0 -> stringProvider.getString(R.string.poll_no_votes_cast)
|
||||
else -> stringProvider.getQuantityString(R.plurals.poll_total_vote_count_before_ended_and_not_voted, votes, votes)
|
||||
pollState is Voted -> stringProvider.getQuantityString(R2.plurals.poll_total_vote_count_before_ended_and_voted, votes, votes)
|
||||
votes == 0 -> stringProvider.getString(R2.string.poll_no_votes_cast)
|
||||
else -> stringProvider.getQuantityString(R2.plurals.poll_total_vote_count_before_ended_and_not_voted, votes, votes)
|
||||
}
|
||||
}
|
||||
|
||||
@ -475,7 +475,7 @@ class MessageItemFactory @Inject constructor(
|
||||
.contentDownloadStateTrackerBinder(contentDownloadStateTrackerBinder)
|
||||
.highlighted(highlight)
|
||||
.filename(messageContent.body)
|
||||
.iconRes(R.drawable.ic_paperclip)
|
||||
.iconRes(R2.drawable.ic_paperclip)
|
||||
}
|
||||
|
||||
private fun buildAudioContent(
|
||||
@ -582,7 +582,7 @@ class MessageItemFactory @Inject constructor(
|
||||
.playable(true)
|
||||
.highlighted(highlight)
|
||||
.mediaData(thumbnailData)
|
||||
.clickListener { view -> callback?.onVideoMessageClicked(messageContent, videoData, view.findViewById(R.id.messageThumbnailView)) }
|
||||
.clickListener { view -> callback?.onVideoMessageClicked(messageContent, videoData, view.findViewById(R2.id.messageThumbnailView)) }
|
||||
}
|
||||
|
||||
private fun buildItemForTextContent(
|
||||
@ -652,9 +652,9 @@ class MessageItemFactory @Inject constructor(
|
||||
): Spannable {
|
||||
val spannable = SpannableStringBuilder()
|
||||
spannable.append(linkifiedBody)
|
||||
val editedSuffix = stringProvider.getString(R.string.edited_suffix)
|
||||
val editedSuffix = stringProvider.getString(R2.string.edited_suffix)
|
||||
spannable.append(" ").append(editedSuffix)
|
||||
val color = colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary)
|
||||
val color = colorProvider.getColorFromAttribute(R2.attr.vctr_content_secondary)
|
||||
val editStart = spannable.lastIndexOf(editedSuffix)
|
||||
val editEnd = editStart + editedSuffix.length
|
||||
spannable.setSpan(
|
||||
@ -700,7 +700,7 @@ class MessageItemFactory @Inject constructor(
|
||||
val htmlBody = messageContent.getHtmlBody()
|
||||
val formattedBody = span {
|
||||
text = htmlBody
|
||||
textColor = colorProvider.getColorFromAttribute(R.attr.vctr_content_secondary)
|
||||
textColor = colorProvider.getColorFromAttribute(R2.attr.vctr_content_secondary)
|
||||
textStyle = "italic"
|
||||
}
|
||||
|
||||
|
@ -28,6 +28,7 @@ import androidx.core.content.ContextCompat.getDrawable
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import im.vector.app.R
|
||||
import im.vector.app.R2
|
||||
import im.vector.app.core.epoxy.ClickListener
|
||||
import im.vector.app.core.epoxy.onClick
|
||||
import im.vector.app.core.extensions.getDrawableAsSpannable
|
||||
@ -145,9 +146,9 @@ abstract class AbsBaseMessageItem<H : AbsBaseMessageItem.Holder> : BaseEventItem
|
||||
}
|
||||
|
||||
private fun createReactionTextView(holder: H): TextView {
|
||||
return TextView(ContextThemeWrapper(holder.view.context, R.style.TimelineReactionView)).apply {
|
||||
return TextView(ContextThemeWrapper(holder.view.context, R2.style.TimelineReactionView)).apply {
|
||||
background = getDrawable(context, R.drawable.reaction_rounded_rect_shape_off)
|
||||
TextViewCompat.setTextAppearance(this, R.style.TextAppearance_Vector_Micro)
|
||||
TextViewCompat.setTextAppearance(this, R2.style.TextAppearance_Vector_Micro)
|
||||
setTypeface(typeface, Typeface.BOLD)
|
||||
setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_secondary))
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user