diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml
index a410ea0af9..31d2d1f457 100644
--- a/.buildkite/pipeline.yml
+++ b/.buildkite/pipeline.yml
@@ -81,7 +81,7 @@ steps:
- label: "ktlint"
command:
- - "curl -sSLO https://github.com/pinterest/ktlint/releases/download/0.34.2/ktlint && chmod a+x ktlint"
+ - "curl -sSLO https://github.com/pinterest/ktlint/releases/download/0.36.0/ktlint && chmod a+x ktlint"
- "./ktlint --android --experimental -v"
plugins:
- docker#v3.1.0:
diff --git a/CHANGES.md b/CHANGES.md
index 37ff98758b..33258e3b85 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -17,9 +17,10 @@ SDK API changes ⚠️:
-
Build 🧱:
- -
+ - Upgrade ktlint to version 0.36.0
Other changes:
+ - Restore availability to Chromebooks (#932)
- Add a [documentation](./docs/integration_tests.md) to run integration tests
Changes in RiotX 0.17.0 (2020-02-27)
diff --git a/vector/lint.xml b/vector/lint.xml
index 6a9b0634a7..3d3bb1856f 100644
--- a/vector/lint.xml
+++ b/vector/lint.xml
@@ -6,6 +6,11 @@
+
+
+
+
+
@@ -19,6 +24,7 @@
+
@@ -30,9 +36,14 @@
+
+
-
+
+
+
+
diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml
index 488f357c4b..2e56e20ce7 100644
--- a/vector/src/main/AndroidManifest.xml
+++ b/vector/src/main/AndroidManifest.xml
@@ -9,6 +9,15 @@
+
+
+
+
+
0
+ }
+
+ val manager = context.getSystemService(Context.CAMERA_SERVICE) as CameraManager? ?: return Camera.getNumberOfCameras() > 0
+
+ return manager.cameraIdList.any {
+ val lensFacing = manager.getCameraCharacteristics(it).get(CameraCharacteristics.LENS_FACING)
+ lensFacing == CameraCharacteristics.LENS_FACING_BACK || lensFacing == CameraCharacteristics.LENS_FACING_EXTERNAL
+ }
+ }
+}
diff --git a/vector/src/main/java/im/vector/riotx/core/platform/BadgeFloatingActionButton.kt b/vector/src/main/java/im/vector/riotx/core/platform/BadgeFloatingActionButton.kt
index ebf04e7097..49931e2b54 100644
--- a/vector/src/main/java/im/vector/riotx/core/platform/BadgeFloatingActionButton.kt
+++ b/vector/src/main/java/im/vector/riotx/core/platform/BadgeFloatingActionButton.kt
@@ -129,7 +129,7 @@ class BadgeFloatingActionButton @JvmOverloads constructor(
attrs?.let { initAttrs(attrs) }
}
- @SuppressWarnings("ResourceType", "Recycle")
+ @SuppressWarnings("Recycle")
private fun initAttrs(attrs: AttributeSet) {
context.obtainStyledAttributes(attrs, R.styleable.BadgeFloatingActionButton).use {
counterBackgroundColor = it.getColor(R.styleable.BadgeFloatingActionButton_badgeBackgroundColor, 0)
diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/Config.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/Config.kt
deleted file mode 100644
index 80f2b1153a..0000000000
--- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/Config.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2020 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
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package im.vector.riotx.features.crypto.verification
-
-import im.vector.matrix.android.api.session.crypto.verification.VerificationMethod
-
-val supportedVerificationMethods =
- listOf(
- // RiotX supports SAS verification
- VerificationMethod.SAS,
- // RiotX is able to show QR codes
- VerificationMethod.QR_CODE_SHOW,
- // RiotX is able to scan QR codes
- VerificationMethod.QR_CODE_SCAN
- )
diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/SupportedVerificationMethodsProvider.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SupportedVerificationMethodsProvider.kt
new file mode 100644
index 0000000000..e7ed123de6
--- /dev/null
+++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/SupportedVerificationMethodsProvider.kt
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2020 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.riotx.features.crypto.verification
+
+import im.vector.matrix.android.api.session.crypto.verification.VerificationMethod
+import im.vector.riotx.core.hardware.HardwareInfo
+import timber.log.Timber
+import javax.inject.Inject
+
+class SupportedVerificationMethodsProvider @Inject constructor(
+ private val hardwareInfo: HardwareInfo
+) {
+ /**
+ * Provide the list of supported method by RiotX, with or without the QR_CODE_SCAN, depending if a back camera
+ * is available
+ */
+ fun provide(): List {
+ return mutableListOf(
+ // RiotX supports SAS verification
+ VerificationMethod.SAS,
+ // RiotX is able to show QR codes
+ VerificationMethod.QR_CODE_SHOW)
+ .apply {
+ if (hardwareInfo.hasBackCamera()) {
+ // RiotX is able to scan QR codes, and a Camera is available
+ add(VerificationMethod.QR_CODE_SCAN)
+ } else {
+ // This quite uncommon
+ Timber.w("No back Camera detected")
+ }
+ }
+ }
+}
diff --git a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt
index f4670b90e1..d161f6d6fc 100644
--- a/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt
+++ b/vector/src/main/java/im/vector/riotx/features/crypto/verification/VerificationBottomSheetViewModel.kt
@@ -63,9 +63,11 @@ data class VerificationBottomSheetViewState(
val isMe: Boolean = false
) : MvRxState
-class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted initialState: VerificationBottomSheetViewState,
- @Assisted args: VerificationBottomSheet.VerificationArgs,
- private val session: Session)
+class VerificationBottomSheetViewModel @AssistedInject constructor(
+ @Assisted initialState: VerificationBottomSheetViewState,
+ @Assisted args: VerificationBottomSheet.VerificationArgs,
+ private val session: Session,
+ private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider)
: VectorViewModel(initialState),
VerificationService.Listener {
@@ -116,9 +118,11 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
if (autoReady) {
// TODO, can I be here in DM mode? in this case should test if roomID is null?
session.cryptoService().verificationService()
- .readyPendingVerification(supportedVerificationMethods,
+ .readyPendingVerification(
+ supportedVerificationMethodsProvider.provide(),
pr!!.otherUserId,
- pr.transactionId ?: "")
+ pr.transactionId ?: ""
+ )
}
}
@@ -173,7 +177,12 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
session
.cryptoService()
.verificationService()
- .requestKeyVerificationInDMs(supportedVerificationMethods, otherUserId, data, pendingLocalId)
+ .requestKeyVerificationInDMs(
+ supportedVerificationMethodsProvider.provide(),
+ otherUserId,
+ data,
+ pendingLocalId
+ )
)
)
}
@@ -191,7 +200,7 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
pendingRequest = Success(session
.cryptoService()
.verificationService()
- .requestKeyVerificationInDMs(supportedVerificationMethods, otherUserId, roomId)
+ .requestKeyVerificationInDMs(supportedVerificationMethodsProvider.provide(), otherUserId, roomId)
)
)
}
@@ -294,8 +303,6 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
} catch (failure: Throwable) {
_viewEvents.post(VerificationBottomSheetViewEvents.ModalError(failure.localizedMessage))
}
-
- Unit
}
}.exhaustive
}
@@ -362,9 +369,11 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini
// auto ready in this case, as we are waiting
// TODO, can I be here in DM mode? in this case should test if roomID is null?
session.cryptoService().verificationService()
- .readyPendingVerification(supportedVerificationMethods,
+ .readyPendingVerification(
+ supportedVerificationMethodsProvider.provide(),
pr.otherUserId,
- pr.transactionId ?: "")
+ pr.transactionId ?: ""
+ )
}
// Use this one!
diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt
index 1fcae90e95..4ab9125c4f 100644
--- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt
+++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailViewModel.kt
@@ -65,7 +65,7 @@ import im.vector.riotx.core.resources.UserPreferencesProvider
import im.vector.riotx.core.utils.subscribeLogError
import im.vector.riotx.features.command.CommandParser
import im.vector.riotx.features.command.ParsedCommand
-import im.vector.riotx.features.crypto.verification.supportedVerificationMethods
+import im.vector.riotx.features.crypto.verification.SupportedVerificationMethodsProvider
import im.vector.riotx.features.home.room.detail.composer.rainbow.RainbowGenerator
import im.vector.riotx.features.home.room.detail.timeline.helper.TimelineDisplayableEvents
import im.vector.riotx.features.home.room.typing.TypingHelper
@@ -81,13 +81,15 @@ import java.io.File
import java.util.concurrent.TimeUnit
import java.util.concurrent.atomic.AtomicBoolean
-class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: RoomDetailViewState,
- userPreferencesProvider: UserPreferencesProvider,
- private val vectorPreferences: VectorPreferences,
- private val stringProvider: StringProvider,
- private val typingHelper: TypingHelper,
- private val rainbowGenerator: RainbowGenerator,
- private val session: Session
+class RoomDetailViewModel @AssistedInject constructor(
+ @Assisted initialState: RoomDetailViewState,
+ userPreferencesProvider: UserPreferencesProvider,
+ private val vectorPreferences: VectorPreferences,
+ private val stringProvider: StringProvider,
+ private val typingHelper: TypingHelper,
+ private val rainbowGenerator: RainbowGenerator,
+ private val session: Session,
+ private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider
) : VectorViewModel(initialState), Timeline.Listener {
private val room = session.getRoom(initialState.roomId)!!
@@ -427,7 +429,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro
session
.cryptoService()
.verificationService()
- .requestKeyVerificationInDMs(supportedVerificationMethods, slashCommandResult.userId, room.roomId)
+ .requestKeyVerificationInDMs(supportedVerificationMethodsProvider.provide(), slashCommandResult.userId, room.roomId)
_viewEvents.post(RoomDetailViewEvents.SlashCommandHandled())
popDraft()
}
@@ -834,7 +836,7 @@ class RoomDetailViewModel @AssistedInject constructor(@Assisted initialState: Ro
private fun handleAcceptVerification(action: RoomDetailAction.AcceptVerificationRequest) {
Timber.v("## SAS handleAcceptVerification ${action.otherUserId}, roomId:${room.roomId}, txId:${action.transactionId}")
if (session.cryptoService().verificationService().readyPendingVerificationInDMs(
- supportedVerificationMethods,
+ supportedVerificationMethodsProvider.provide(),
action.otherUserId,
room.roomId,
action.transactionId)) {
diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/PollResultLineView.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/PollResultLineView.kt
index f1e1753b17..a0ad3466f7 100644
--- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/PollResultLineView.kt
+++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/PollResultLineView.kt
@@ -73,11 +73,11 @@ class PollResultLineView @JvmOverloads constructor(
orientation = HORIZONTAL
ButterKnife.bind(this)
- val typedArray = context.obtainStyledAttributes(attrs,
- R.styleable.PollResultLineView, 0, 0)
+ val typedArray = context.obtainStyledAttributes(attrs, R.styleable.PollResultLineView, 0, 0)
label = typedArray.getString(R.styleable.PollResultLineView_optionName) ?: ""
percent = typedArray.getString(R.styleable.PollResultLineView_optionCount) ?: ""
optionSelected = typedArray.getBoolean(R.styleable.PollResultLineView_optionSelected, false)
isWinner = typedArray.getBoolean(R.styleable.PollResultLineView_optionIsWinner, false)
+ typedArray.recycle()
}
}
diff --git a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt
index 63fab290be..a080cabf1b 100644
--- a/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt
+++ b/vector/src/main/java/im/vector/riotx/features/navigation/DefaultNavigator.kt
@@ -24,7 +24,6 @@ import androidx.core.app.ActivityOptionsCompat
import androidx.core.app.TaskStackBuilder
import androidx.core.view.ViewCompat
import im.vector.matrix.android.api.session.crypto.verification.IncomingSasVerificationTransaction
-import im.vector.matrix.android.api.session.crypto.verification.VerificationMethod
import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom
import im.vector.matrix.android.api.util.MatrixItem
import im.vector.riotx.R
@@ -35,6 +34,7 @@ import im.vector.riotx.core.utils.toast
import im.vector.riotx.features.createdirect.CreateDirectRoomActivity
import im.vector.riotx.features.crypto.keysbackup.settings.KeysBackupManageActivity
import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupActivity
+import im.vector.riotx.features.crypto.verification.SupportedVerificationMethodsProvider
import im.vector.riotx.features.crypto.verification.VerificationBottomSheet
import im.vector.riotx.features.debug.DebugMenuActivity
import im.vector.riotx.features.home.room.detail.RoomDetailActivity
@@ -56,7 +56,8 @@ import javax.inject.Singleton
@Singleton
class DefaultNavigator @Inject constructor(
private val sessionHolder: ActiveSessionHolder,
- private val vectorPreferences: VectorPreferences
+ private val vectorPreferences: VectorPreferences,
+ private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider
) : Navigator {
override fun openRoom(context: Context, roomId: String, eventId: String?, buildTask: Boolean) {
@@ -85,9 +86,10 @@ class DefaultNavigator @Inject constructor(
override fun requestSessionVerification(context: Context) {
val session = sessionHolder.getSafeActiveSession() ?: return
val pr = session.cryptoService().verificationService().requestKeyVerification(
- listOf(VerificationMethod.SAS, VerificationMethod.QR_CODE_SCAN, VerificationMethod.QR_CODE_SHOW),
+ supportedVerificationMethodsProvider.provide(),
session.myUserId,
- session.cryptoService().getUserDevices(session.myUserId).map { it.deviceId })
+ session.cryptoService().getUserDevices(session.myUserId).map { it.deviceId }
+ )
if (context is VectorBaseActivity) {
VerificationBottomSheet.withArgs(
roomId = null,
diff --git a/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt b/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt
index ce6e388af6..79a5fe84aa 100644
--- a/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt
+++ b/vector/src/main/java/im/vector/riotx/features/settings/devices/DevicesViewModel.kt
@@ -40,7 +40,7 @@ import im.vector.matrix.android.internal.crypto.model.rest.DeviceInfo
import im.vector.matrix.android.internal.crypto.model.rest.DevicesListResponse
import im.vector.matrix.rx.rx
import im.vector.riotx.core.platform.VectorViewModel
-import im.vector.riotx.features.crypto.verification.supportedVerificationMethods
+import im.vector.riotx.features.crypto.verification.SupportedVerificationMethodsProvider
data class DevicesViewState(
val myDeviceId: String = "",
@@ -50,8 +50,10 @@ data class DevicesViewState(
val request: Async = Uninitialized
) : MvRxState
-class DevicesViewModel @AssistedInject constructor(@Assisted initialState: DevicesViewState,
- private val session: Session)
+class DevicesViewModel @AssistedInject constructor(
+ @Assisted initialState: DevicesViewState,
+ private val session: Session,
+ private val supportedVerificationMethodsProvider: SupportedVerificationMethodsProvider)
: VectorViewModel(initialState), VerificationService.Listener {
@AssistedInject.Factory
@@ -172,7 +174,9 @@ class DevicesViewModel @AssistedInject constructor(@Assisted initialState: Devic
}
private fun handleVerify(action: DevicesAction.VerifyMyDevice) {
- val txID = session.cryptoService().verificationService().requestKeyVerification(supportedVerificationMethods, session.myUserId, listOf(action.deviceId))
+ val txID = session.cryptoService()
+ .verificationService()
+ .requestKeyVerification(supportedVerificationMethodsProvider.provide(), session.myUserId, listOf(action.deviceId))
_viewEvents.post(DevicesViewEvents.ShowVerifyDevice(
session.myUserId,
txID.transactionId
diff --git a/vector/src/main/res/drawable-hdpi/ic_person_black_24dp.png b/vector/src/main/res/drawable-hdpi/ic_person_black_24dp.png
deleted file mode 100644
index 6fbcc6d425..0000000000
Binary files a/vector/src/main/res/drawable-hdpi/ic_person_black_24dp.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/ic_material_camera.png b/vector/src/main/res/drawable-mdpi/ic_material_camera.png
deleted file mode 100755
index 78e5bb23ff..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/ic_material_camera.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/ic_material_file.png b/vector/src/main/res/drawable-mdpi/ic_material_file.png
deleted file mode 100755
index 64561dd4a4..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/ic_material_file.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/ic_material_videocam.png b/vector/src/main/res/drawable-mdpi/ic_material_videocam.png
deleted file mode 100755
index 3153a9b6d4..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/ic_material_videocam.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/ic_person_black_24dp.png b/vector/src/main/res/drawable-mdpi/ic_person_black_24dp.png
deleted file mode 100644
index 57da32af18..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/ic_person_black_24dp.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/ic_send_sticker.png b/vector/src/main/res/drawable-mdpi/ic_send_sticker.png
deleted file mode 100644
index a369cbee49..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/ic_send_sticker.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/vector_cancel_upload_download.png b/vector/src/main/res/drawable-mdpi/vector_cancel_upload_download.png
deleted file mode 100755
index 51b4401ca0..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/vector_cancel_upload_download.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/vector_micro_green.png b/vector/src/main/res/drawable-mdpi/vector_micro_green.png
deleted file mode 100755
index 15114b7e71..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/vector_micro_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/video_call_black.png b/vector/src/main/res/drawable-mdpi/video_call_black.png
deleted file mode 100755
index 0039e804eb..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/video_call_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/video_call_green.png b/vector/src/main/res/drawable-mdpi/video_call_green.png
deleted file mode 100755
index 028ec1e3e3..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/video_call_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/voice_call_black.png b/vector/src/main/res/drawable-mdpi/voice_call_black.png
deleted file mode 100755
index 7c9d1b09c5..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/voice_call_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/voice_call_end_fushia.png b/vector/src/main/res/drawable-mdpi/voice_call_end_fushia.png
deleted file mode 100755
index 814aa0017e..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/voice_call_end_fushia.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/voice_call_green.png b/vector/src/main/res/drawable-mdpi/voice_call_green.png
deleted file mode 100755
index 7afa5cd118..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/voice_call_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-mdpi/voice_call_start_green.png b/vector/src/main/res/drawable-mdpi/voice_call_start_green.png
deleted file mode 100755
index b11532ef5a..0000000000
Binary files a/vector/src/main/res/drawable-mdpi/voice_call_start_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xhdpi/ic_person_black_24dp.png b/vector/src/main/res/drawable-xhdpi/ic_person_black_24dp.png
deleted file mode 100644
index 360a32f27c..0000000000
Binary files a/vector/src/main/res/drawable-xhdpi/ic_person_black_24dp.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xhdpi/ic_send_sticker.png b/vector/src/main/res/drawable-xhdpi/ic_send_sticker.png
deleted file mode 100644
index c17d04e498..0000000000
Binary files a/vector/src/main/res/drawable-xhdpi/ic_send_sticker.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_devices_info.png b/vector/src/main/res/drawable-xxhdpi/ic_devices_info.png
deleted file mode 100755
index 0ac10c8f33..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_devices_info.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_camera.png b/vector/src/main/res/drawable-xxhdpi/ic_material_camera.png
deleted file mode 100755
index 78e5bb23ff..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_camera.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_file.png b/vector/src/main/res/drawable-xxhdpi/ic_material_file.png
deleted file mode 100755
index 64561dd4a4..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_file.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_message_black.png b/vector/src/main/res/drawable-xxhdpi/ic_material_message_black.png
deleted file mode 100644
index 0d989b2bcd..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_message_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_message_grey.png b/vector/src/main/res/drawable-xxhdpi/ic_material_message_grey.png
deleted file mode 100644
index 92a1da89f6..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_message_grey.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_share.png b/vector/src/main/res/drawable-xxhdpi/ic_material_share.png
deleted file mode 100755
index 0fe15fc056..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_share.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_material_videocam.png b/vector/src/main/res/drawable-xxhdpi/ic_material_videocam.png
deleted file mode 100755
index 3153a9b6d4..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_material_videocam.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_perm_device_information_black.png b/vector/src/main/res/drawable-xxhdpi/ic_perm_device_information_black.png
deleted file mode 100755
index 0ac10c8f33..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_perm_device_information_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_person_black.png b/vector/src/main/res/drawable-xxhdpi/ic_person_black.png
deleted file mode 100755
index f1e148490b..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_person_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_person_black_24dp.png b/vector/src/main/res/drawable-xxhdpi/ic_person_black_24dp.png
deleted file mode 100644
index f1e148490b..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_person_black_24dp.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/ic_send_sticker.png b/vector/src/main/res/drawable-xxhdpi/ic_send_sticker.png
deleted file mode 100644
index a369cbee49..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/ic_send_sticker.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_cancel_upload_download.png b/vector/src/main/res/drawable-xxhdpi/vector_cancel_upload_download.png
deleted file mode 100755
index 51b4401ca0..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_cancel_upload_download.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_close_widget.png b/vector/src/main/res/drawable-xxhdpi/vector_close_widget.png
deleted file mode 100755
index 51b4401ca0..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_close_widget.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_create_direct_room.png b/vector/src/main/res/drawable-xxhdpi/vector_create_direct_room.png
deleted file mode 100755
index a5b2b57497..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_create_direct_room.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_creation_remove_user.png b/vector/src/main/res/drawable-xxhdpi/vector_creation_remove_user.png
deleted file mode 100755
index 51b4401ca0..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_creation_remove_user.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_leave_room_black.png b/vector/src/main/res/drawable-xxhdpi/vector_leave_room_black.png
deleted file mode 100755
index 51b4401ca0..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_leave_room_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/vector_micro_green.png b/vector/src/main/res/drawable-xxhdpi/vector_micro_green.png
deleted file mode 100755
index 15114b7e71..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/vector_micro_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/video_call_black.png b/vector/src/main/res/drawable-xxhdpi/video_call_black.png
deleted file mode 100755
index 0039e804eb..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/video_call_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/video_call_green.png b/vector/src/main/res/drawable-xxhdpi/video_call_green.png
deleted file mode 100755
index 028ec1e3e3..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/video_call_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/voice_call_black.png b/vector/src/main/res/drawable-xxhdpi/voice_call_black.png
deleted file mode 100755
index 7c9d1b09c5..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/voice_call_black.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/voice_call_end_fushia.png b/vector/src/main/res/drawable-xxhdpi/voice_call_end_fushia.png
deleted file mode 100755
index 814aa0017e..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/voice_call_end_fushia.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/voice_call_green.png b/vector/src/main/res/drawable-xxhdpi/voice_call_green.png
deleted file mode 100755
index 7afa5cd118..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/voice_call_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxhdpi/voice_call_start_green.png b/vector/src/main/res/drawable-xxhdpi/voice_call_start_green.png
deleted file mode 100755
index b11532ef5a..0000000000
Binary files a/vector/src/main/res/drawable-xxhdpi/voice_call_start_green.png and /dev/null differ
diff --git a/vector/src/main/res/drawable-xxxhdpi/ic_person_black_24dp.png b/vector/src/main/res/drawable-xxxhdpi/ic_person_black_24dp.png
deleted file mode 100644
index 1ebc37be17..0000000000
Binary files a/vector/src/main/res/drawable-xxxhdpi/ic_person_black_24dp.png and /dev/null differ
diff --git a/vector/src/main/res/layout/vector_message_merge_avatar_list.xml b/vector/src/main/res/layout/vector_message_merge_avatar_list.xml
index 853dfc80d7..58f38ada0e 100644
--- a/vector/src/main/res/layout/vector_message_merge_avatar_list.xml
+++ b/vector/src/main/res/layout/vector_message_merge_avatar_list.xml
@@ -21,6 +21,7 @@
android:layout_marginLeft="-5dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
+ tools:ignore="NegativeMargin"
tools:src="@tools:sample/avatars" />
\ No newline at end of file
diff --git a/vector/src/main/res/menu/vector_home_group_settings.xml b/vector/src/main/res/menu/vector_home_group_settings.xml
deleted file mode 100755
index e40c4b487f..0000000000
--- a/vector/src/main/res/menu/vector_home_group_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/menu/vector_room.xml b/vector/src/main/res/menu/vector_room.xml
deleted file mode 100755
index bb84a3ff29..0000000000
--- a/vector/src/main/res/menu/vector_room.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
diff --git a/vector/src/main/res/menu/vector_searches.xml b/vector/src/main/res/menu/vector_searches.xml
deleted file mode 100755
index 542c433272..0000000000
--- a/vector/src/main/res/menu/vector_searches.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-