From a69049645aec95c41c0ab1cf8ac2840e89dd9604 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 26 Feb 2020 11:11:10 +0100 Subject: [PATCH 01/12] FTUE: do not display a different color when encrypting message when not in developer mode. --- CHANGES.md | 1 + .../detail/timeline/MessageColorProvider.kt | 58 +++++++++++++++++++ .../timeline/factory/MessageItemFactory.kt | 2 +- .../factory/VerificationItemFactory.kt | 8 +-- .../helper/ContentUploadStateTrackerBinder.kt | 17 +++--- .../helper/MessageItemAttributesFactory.kt | 6 +- .../timeline/item/AbsBaseMessageItem.kt | 7 +-- .../detail/timeline/item/AbsMessageItem.kt | 4 +- .../item/VerificationRequestConclusionItem.kt | 4 +- .../timeline/item/VerificationRequestItem.kt | 4 +- .../riotx/features/ui/ColorProviderExt.kt | 37 ------------ 11 files changed, 84 insertions(+), 64 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/MessageColorProvider.kt delete mode 100644 vector/src/main/java/im/vector/riotx/features/ui/ColorProviderExt.kt diff --git a/CHANGES.md b/CHANGES.md index 37b6c63393..abf318ef50 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -11,6 +11,7 @@ Features ✨: Improvements 🙌: - Migrate to binary QR code verification (#994) - Share action is added to room profile and room member profile (#858) + - FTUE: do not display a different color when encrypting message when not in developer mode. Bugfix 🐛: - Account creation: wrongly hints that an email can be used to create an account (#941) diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/MessageColorProvider.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/MessageColorProvider.kt new file mode 100644 index 0000000000..c6ab5b024f --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/MessageColorProvider.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2019 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.home.room.detail.timeline + +import androidx.annotation.ColorInt +import im.vector.matrix.android.api.session.room.send.SendState +import im.vector.riotx.R +import im.vector.riotx.core.resources.ColorProvider +import im.vector.riotx.features.settings.VectorPreferences +import javax.inject.Inject + +class MessageColorProvider @Inject constructor( + private val colorProvider: ColorProvider, + private val vectorPreferences: VectorPreferences) { + + @ColorInt + fun getMessageTextColor(sendState: SendState): Int { + return if (vectorPreferences.developerMode()) { + when (sendState) { + // SendStates, in the classical order they will occur + SendState.UNKNOWN, + SendState.UNSENT -> colorProvider.getColorFromAttribute(R.attr.vctr_sending_message_text_color) + SendState.ENCRYPTING -> colorProvider.getColorFromAttribute(R.attr.vctr_encrypting_message_text_color) + SendState.SENDING -> colorProvider.getColorFromAttribute(R.attr.vctr_sending_message_text_color) + SendState.SENT, + SendState.SYNCED -> colorProvider.getColorFromAttribute(R.attr.vctr_message_text_color) + SendState.UNDELIVERED, + SendState.FAILED_UNKNOWN_DEVICES -> colorProvider.getColorFromAttribute(R.attr.vctr_unsent_message_text_color) + } + } else { + // When not in developer mode, we do not use special color for the encrypting state + when (sendState) { + SendState.UNKNOWN, + SendState.UNSENT, + SendState.ENCRYPTING, + SendState.SENDING -> colorProvider.getColorFromAttribute(R.attr.vctr_sending_message_text_color) + SendState.SENT, + SendState.SYNCED -> colorProvider.getColorFromAttribute(R.attr.vctr_message_text_color) + SendState.UNDELIVERED, + SendState.FAILED_UNKNOWN_DEVICES -> colorProvider.getColorFromAttribute(R.attr.vctr_unsent_message_text_color) + } + } + } +} diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt index 83f0c63147..2b221b9fef 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/MessageItemFactory.kt @@ -222,7 +222,7 @@ class MessageItemFactory @Inject constructor( referenceId = informationData.eventId, informationData = informationData, avatarRenderer = attributes.avatarRenderer, - colorProvider = attributes.colorProvider, + messageColorProvider = attributes.messageColorProvider, itemLongClickListener = attributes.itemLongClickListener, itemClickListener = attributes.itemClickListener, reactionPillCallback = attributes.reactionPillCallback, diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/VerificationItemFactory.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/VerificationItemFactory.kt index dc5bd740dd..12bc10ebdb 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/VerificationItemFactory.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/factory/VerificationItemFactory.kt @@ -27,8 +27,8 @@ import im.vector.matrix.android.api.session.room.model.message.MessageVerificati import im.vector.matrix.android.api.session.room.timeline.TimelineEvent import im.vector.matrix.android.internal.session.room.VerificationState import im.vector.riotx.core.epoxy.VectorEpoxyModel -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.resources.UserPreferencesProvider +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.home.room.detail.timeline.helper.AvatarSizeProvider import im.vector.riotx.features.home.room.detail.timeline.helper.MessageInformationDataFactory @@ -43,7 +43,7 @@ import javax.inject.Inject * several checks are made to see if this conclusion is attached to a known request */ class VerificationItemFactory @Inject constructor( - private val colorProvider: ColorProvider, + private val messageColorProvider: MessageColorProvider, private val messageInformationDataFactory: MessageInformationDataFactory, private val messageItemAttributesFactory: MessageItemAttributesFactory, private val avatarSizeProvider: AvatarSizeProvider, @@ -97,7 +97,7 @@ class VerificationItemFactory @Inject constructor( isPositive = false, informationData = informationData, avatarRenderer = attributes.avatarRenderer, - colorProvider = colorProvider, + messageColorProvider = messageColorProvider, emojiTypeFace = attributes.emojiTypeFace, itemClickListener = attributes.itemClickListener, itemLongClickListener = attributes.itemLongClickListener, @@ -130,7 +130,7 @@ class VerificationItemFactory @Inject constructor( isPositive = true, informationData = informationData, avatarRenderer = attributes.avatarRenderer, - colorProvider = colorProvider, + messageColorProvider = messageColorProvider, emojiTypeFace = attributes.emojiTypeFace, itemClickListener = attributes.itemClickListener, itemLongClickListener = attributes.itemLongClickListener, diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/ContentUploadStateTrackerBinder.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/ContentUploadStateTrackerBinder.kt index d80c625e8f..4cf14fa83b 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/ContentUploadStateTrackerBinder.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/ContentUploadStateTrackerBinder.kt @@ -27,14 +27,13 @@ import im.vector.riotx.R import im.vector.riotx.core.di.ActiveSessionHolder import im.vector.riotx.core.di.ScreenScope import im.vector.riotx.core.error.ErrorFormatter -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.utils.TextUtils -import im.vector.riotx.features.ui.getMessageTextColor +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import javax.inject.Inject @ScreenScope class ContentUploadStateTrackerBinder @Inject constructor(private val activeSessionHolder: ActiveSessionHolder, - private val colorProvider: ColorProvider, + private val messageColorProvider: MessageColorProvider, private val errorFormatter: ErrorFormatter) { private val updateListeners = mutableMapOf() @@ -44,7 +43,7 @@ class ContentUploadStateTrackerBinder @Inject constructor(private val activeSess progressLayout: ViewGroup) { activeSessionHolder.getSafeActiveSession()?.also { session -> val uploadStateTracker = session.contentUploadProgressTracker() - val updateListener = ContentMediaProgressUpdater(progressLayout, isLocalFile, colorProvider, errorFormatter) + val updateListener = ContentMediaProgressUpdater(progressLayout, isLocalFile, messageColorProvider, errorFormatter) updateListeners[eventId] = updateListener uploadStateTracker.track(eventId, updateListener) } @@ -68,7 +67,7 @@ class ContentUploadStateTrackerBinder @Inject constructor(private val activeSess private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup, private val isLocalFile: Boolean, - private val colorProvider: ColorProvider, + private val messageColorProvider: MessageColorProvider, private val errorFormatter: ErrorFormatter) : ContentUploadStateTracker.UpdateListener { override fun onUpdate(state: ContentUploadStateTracker.State) { @@ -92,7 +91,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup, progressBar?.isIndeterminate = true progressBar?.progress = 0 progressTextView?.text = progressLayout.context.getString(R.string.send_file_step_idle) - progressTextView?.setTextColor(colorProvider.getMessageTextColor(SendState.UNSENT)) + progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.UNSENT)) } else { progressLayout.isVisible = false } @@ -120,7 +119,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup, val progressTextView = progressLayout.findViewById(R.id.mediaProgressTextView) progressBar?.isIndeterminate = true progressTextView?.text = progressLayout.context.getString(resId) - progressTextView?.setTextColor(colorProvider.getMessageTextColor(SendState.ENCRYPTING)) + progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.ENCRYPTING)) } private fun doHandleProgress(resId: Int, current: Long, total: Long) { @@ -134,7 +133,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup, progressTextView?.text = progressLayout.context.getString(resId, TextUtils.formatFileSize(progressLayout.context, current, true), TextUtils.formatFileSize(progressLayout.context, total, true)) - progressTextView?.setTextColor(colorProvider.getMessageTextColor(SendState.SENDING)) + progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.SENDING)) } private fun handleFailure(state: ContentUploadStateTracker.State.Failure) { @@ -143,7 +142,7 @@ private class ContentMediaProgressUpdater(private val progressLayout: ViewGroup, val progressTextView = progressLayout.findViewById(R.id.mediaProgressTextView) progressBar?.isVisible = false progressTextView?.text = errorFormatter.toHumanReadable(state.throwable) - progressTextView?.setTextColor(colorProvider.getMessageTextColor(SendState.UNDELIVERED)) + progressTextView?.setTextColor(messageColorProvider.getMessageTextColor(SendState.UNDELIVERED)) } private fun handleSuccess() { diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/MessageItemAttributesFactory.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/MessageItemAttributesFactory.kt index 0e1229eeca..7433b03408 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/MessageItemAttributesFactory.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/helper/MessageItemAttributesFactory.kt @@ -20,9 +20,9 @@ package im.vector.riotx.features.home.room.detail.timeline.helper import android.view.View import im.vector.matrix.android.api.session.room.model.message.MessageContent import im.vector.riotx.EmojiCompatFontProvider -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.utils.DebouncedClickListener import im.vector.riotx.features.home.AvatarRenderer +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.home.room.detail.timeline.item.AbsMessageItem import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData @@ -30,7 +30,7 @@ import javax.inject.Inject class MessageItemAttributesFactory @Inject constructor( private val avatarRenderer: AvatarRenderer, - private val colorProvider: ColorProvider, + private val messageColorProvider: MessageColorProvider, private val avatarSizeProvider: AvatarSizeProvider, private val emojiCompatFontProvider: EmojiCompatFontProvider) { @@ -41,7 +41,7 @@ class MessageItemAttributesFactory @Inject constructor( avatarSize = avatarSizeProvider.avatarSize, informationData = informationData, avatarRenderer = avatarRenderer, - colorProvider = colorProvider, + messageColorProvider = messageColorProvider, itemLongClickListener = View.OnLongClickListener { view -> callback?.onEventLongClicked(informationData, messageContent, view) ?: false }, diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsBaseMessageItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsBaseMessageItem.kt index 6d99bb2650..149b5e74ad 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsBaseMessageItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsBaseMessageItem.kt @@ -24,12 +24,11 @@ import androidx.annotation.IdRes import androidx.core.view.isVisible import im.vector.matrix.android.api.session.room.send.SendState import im.vector.riotx.R -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.utils.DebouncedClickListener import im.vector.riotx.features.home.AvatarRenderer +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController import im.vector.riotx.features.reactions.widget.ReactionButton -import im.vector.riotx.features.ui.getMessageTextColor /** * Base timeline item with reactions and read receipts. @@ -105,7 +104,7 @@ abstract class AbsBaseMessageItem : BaseEventItem protected open fun renderSendState(root: View, textView: TextView?, failureIndicator: ImageView? = null) { root.isClickable = baseAttributes.informationData.sendState.isSent() val state = if (baseAttributes.informationData.hasPendingEdits) SendState.UNSENT else baseAttributes.informationData.sendState - textView?.setTextColor(baseAttributes.colorProvider.getMessageTextColor(state)) + textView?.setTextColor(baseAttributes.messageColorProvider.getMessageTextColor(state)) failureIndicator?.isVisible = baseAttributes.informationData.sendState.hasFailed() } @@ -120,7 +119,7 @@ abstract class AbsBaseMessageItem : BaseEventItem // val avatarSize: Int, val informationData: MessageInformationData val avatarRenderer: AvatarRenderer - val colorProvider: ColorProvider + val messageColorProvider: MessageColorProvider val itemLongClickListener: View.OnLongClickListener? val itemClickListener: View.OnClickListener? // val memberClickListener: View.OnClickListener? diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt index ae69164951..2b01e915df 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/AbsMessageItem.kt @@ -23,9 +23,9 @@ import android.widget.TextView import androidx.annotation.IdRes import com.airbnb.epoxy.EpoxyAttribute import im.vector.riotx.R -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.core.utils.DebouncedClickListener import im.vector.riotx.features.home.AvatarRenderer +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController /** @@ -88,7 +88,7 @@ abstract class AbsMessageItem : AbsBaseMessageItem val avatarSize: Int, override val informationData: MessageInformationData, override val avatarRenderer: AvatarRenderer, - override val colorProvider: ColorProvider, + override val messageColorProvider: MessageColorProvider, override val itemLongClickListener: View.OnLongClickListener? = null, override val itemClickListener: View.OnClickListener? = null, val memberClickListener: View.OnClickListener? = null, diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/VerificationRequestConclusionItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/VerificationRequestConclusionItem.kt index 036bf2b036..2b28e15cab 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/VerificationRequestConclusionItem.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/timeline/item/VerificationRequestConclusionItem.kt @@ -26,8 +26,8 @@ import androidx.core.view.updateLayoutParams import com.airbnb.epoxy.EpoxyAttribute import com.airbnb.epoxy.EpoxyModelClass import im.vector.riotx.R -import im.vector.riotx.core.resources.ColorProvider import im.vector.riotx.features.home.AvatarRenderer +import im.vector.riotx.features.home.room.detail.timeline.MessageColorProvider import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController @EpoxyModelClass(layout = R.layout.item_timeline_event_base_state) @@ -80,7 +80,7 @@ abstract class VerificationRequestConclusionItem : AbsBaseMessageItem getColorFromAttribute(R.attr.vctr_sending_message_text_color) - SendState.ENCRYPTING -> getColorFromAttribute(R.attr.vctr_encrypting_message_text_color) - SendState.SENDING -> getColorFromAttribute(R.attr.vctr_sending_message_text_color) - SendState.SENT, - SendState.SYNCED -> getColorFromAttribute(R.attr.vctr_message_text_color) - SendState.UNDELIVERED, - SendState.FAILED_UNKNOWN_DEVICES -> getColorFromAttribute(R.attr.vctr_unsent_message_text_color) - } -} From bc9493d5b947bed8694c785843f9dd0c929e1f36 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 12:47:11 +0100 Subject: [PATCH 02/12] Upgrade ktlint to version 0.36.0 --- .buildkite/pipeline.yml | 2 +- CHANGES.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) 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 65f6e96f69..ea6aee07c4 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -17,7 +17,7 @@ SDK API changes ⚠️: - Build 🧱: - - + - Upgrade ktlint to version 0.36.0 Other changes: - From a1466e299bd994d33ca6e59eb33ee999cae9d7bf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 14:30:49 +0100 Subject: [PATCH 03/12] Fix missing recycle call and ensure this mistake will not happen again --- vector/lint.xml | 1 + .../vector/riotx/core/platform/BadgeFloatingActionButton.kt | 2 +- .../home/room/detail/timeline/item/PollResultLineView.kt | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/vector/lint.xml b/vector/lint.xml index 6a9b0634a7..c39f1dcd8d 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -30,6 +30,7 @@ + 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/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() } } From c0d6b9d13034d13745e7b684c929c4120657c26c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 14:35:57 +0100 Subject: [PATCH 04/12] Lint fix IconXmlAndPng error --- vector/lint.xml | 1 + .../res/drawable-xxhdpi/ic_material_share.png | Bin 1052 -> 0 bytes 2 files changed, 1 insertion(+) delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_material_share.png diff --git a/vector/lint.xml b/vector/lint.xml index c39f1dcd8d..21ff01a99b 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -6,6 +6,7 @@ + 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 0fe15fc056771d76cc8b830697d18ab4f6ce804e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmV+%1mpXOP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00WdsL_t(|+U=W5NK{c6$A1|Tgykd1%rsy0phcV9)G8^G z7Ue=}Q7VB(i$b!(RDyKVLqcrRCKIF7P{cALQv_#`n_2~xmV}{JhL)-MYUZ{`%g3BM zbB5@CH}3yi&RzU}!#V$RzHjb;BS(%LIr@(jM36m=Z>AU*Ll_tg;o>5j>|;KOMm!jc z%0mMQcCdep?@P?j)i{~b?H4G`&sDx;`&mBi8yFmsYCnN-zW~PAC=;OGFZ%`twKBhd zkKX`p;^YAo`EB38;JiG5HZ6b_c>n`i0DbZRrnLa38t$RJOS`7p|v(X>B9w3L49IG;7m8yHl|u)mAv0hl-V!aD2CM^hb;c>@n=R-0cz z5n~E_AAMZu+?=r5ei}Ura}yM^k~D^u_J=uWt@*7yQJSm&-KIoQ;U$-*xk;pz=0hn{ z#^nokFM2wPTprNFC?mX~kyF-g+#s?UR4$8?ESEiL*vT{Hmb}3l+2+@CN4e@d*e=21 zGLyJ0U{raVJZ!D)L@vwYLIrDOAmsW$@F>USU&$j_ z0zx_?rnAcsE;FV0{1vGZ5Td#5C6Q*hMbzvQNi-=Tn@ExYk;g;cG0p_NG;?~%k3Olq zR$eo%$ck5$f;ppHZUbb>iB~g4QlZ@Tog`xmCDWy3=y)qPA%1xlS8}=2(x%?p7(0&K020s?vinan8)i?RuM*>60(5^>GAqOIh6lZ z-Ned|SM%y3Tz)?8o6y}1l>OEza&(0 z=NwCy5BnRWH~--#EoF`DZ~u?>(!Qu)^Ux-D>v~rVS(H*m6{Td#%za0W9653%Pd@>k W_~uS4Xs)3E0000 Date: Thu, 27 Feb 2020 14:43:07 +0100 Subject: [PATCH 05/12] Lint: fix IconDipSize and IconDuplicatesConfig error (by removing unused resource) --- vector/lint.xml | 2 ++ .../res/drawable-mdpi/ic_material_camera.png | Bin 539 -> 0 bytes .../res/drawable-mdpi/ic_material_file.png | Bin 545 -> 0 bytes .../drawable-mdpi/ic_material_videocam.png | Bin 3120 -> 0 bytes .../res/drawable-mdpi/ic_send_sticker.png | Bin 7243 -> 0 bytes .../vector_cancel_upload_download.png | Bin 309 -> 0 bytes .../res/drawable-mdpi/vector_micro_green.png | Bin 399 -> 0 bytes .../res/drawable-mdpi/video_call_black.png | Bin 224 -> 0 bytes .../res/drawable-mdpi/video_call_green.png | Bin 298 -> 0 bytes .../res/drawable-mdpi/voice_call_black.png | Bin 574 -> 0 bytes .../drawable-mdpi/voice_call_end_fushia.png | Bin 331 -> 0 bytes .../res/drawable-mdpi/voice_call_green.png | Bin 432 -> 0 bytes .../drawable-mdpi/voice_call_start_green.png | Bin 684 -> 0 bytes .../res/drawable-xhdpi/ic_send_sticker.png | Bin 4586 -> 0 bytes .../drawable-xxhdpi/ic_material_camera.png | Bin 539 -> 0 bytes .../res/drawable-xxhdpi/ic_material_file.png | Bin 545 -> 0 bytes .../drawable-xxhdpi/ic_material_videocam.png | Bin 3120 -> 0 bytes .../res/drawable-xxhdpi/ic_send_sticker.png | Bin 7243 -> 0 bytes .../vector_cancel_upload_download.png | Bin 309 -> 0 bytes .../drawable-xxhdpi/vector_micro_green.png | Bin 399 -> 0 bytes .../res/drawable-xxhdpi/video_call_black.png | Bin 224 -> 0 bytes .../res/drawable-xxhdpi/video_call_green.png | Bin 298 -> 0 bytes .../res/drawable-xxhdpi/voice_call_black.png | Bin 574 -> 0 bytes .../drawable-xxhdpi/voice_call_end_fushia.png | Bin 331 -> 0 bytes .../res/drawable-xxhdpi/voice_call_green.png | Bin 432 -> 0 bytes .../voice_call_start_green.png | Bin 684 -> 0 bytes vector/src/main/res/menu/vector_searches.xml | 18 ------------------ 27 files changed, 2 insertions(+), 18 deletions(-) delete mode 100755 vector/src/main/res/drawable-mdpi/ic_material_camera.png delete mode 100755 vector/src/main/res/drawable-mdpi/ic_material_file.png delete mode 100755 vector/src/main/res/drawable-mdpi/ic_material_videocam.png delete mode 100644 vector/src/main/res/drawable-mdpi/ic_send_sticker.png delete mode 100755 vector/src/main/res/drawable-mdpi/vector_cancel_upload_download.png delete mode 100755 vector/src/main/res/drawable-mdpi/vector_micro_green.png delete mode 100755 vector/src/main/res/drawable-mdpi/video_call_black.png delete mode 100755 vector/src/main/res/drawable-mdpi/video_call_green.png delete mode 100755 vector/src/main/res/drawable-mdpi/voice_call_black.png delete mode 100755 vector/src/main/res/drawable-mdpi/voice_call_end_fushia.png delete mode 100755 vector/src/main/res/drawable-mdpi/voice_call_green.png delete mode 100755 vector/src/main/res/drawable-mdpi/voice_call_start_green.png delete mode 100644 vector/src/main/res/drawable-xhdpi/ic_send_sticker.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_material_camera.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_material_file.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_material_videocam.png delete mode 100644 vector/src/main/res/drawable-xxhdpi/ic_send_sticker.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_cancel_upload_download.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_micro_green.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/video_call_black.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/video_call_green.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/voice_call_black.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/voice_call_end_fushia.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/voice_call_green.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/voice_call_start_green.png delete mode 100755 vector/src/main/res/menu/vector_searches.xml diff --git a/vector/lint.xml b/vector/lint.xml index 21ff01a99b..6d4c4125ef 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -7,6 +7,8 @@ + + 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 78e5bb23ffb7086c06c271d3775167fbb46799af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPNlMoLt&wHnBAq)(RD?D8sLn>~)opV<5kb(efteupX zwWf;ek_lTTPkMB+oBb^R2L7^Vc}@9cflWWE7=eZ`IGFfk8l2uItNU)V-)6-Fnl+}J zVum%UoMNUmqMTxuHLRRswl(>jZa?-3^?ayRy^+EAP3;25z3>*ned}9Xd>(NduG*g` zeu43v0s|ul1B(KKKm$X8LjRUE?+Y1cx^w^gUHVGtQ^vvXYD)c5HTp_HEgz!qFZO2C zZ4R6?p_=Ren=ggWs$QGSK2-8#pL~JZn%&7OD&GbrPl)T#{at3mxuSh*!|I0ktASd3 z>V@{&^H0ip>Ru@_QDpW0ts&?2JSMJ+-?%xbXGoCD4FiUjR4*>(su$bNjQE&ErRJ^13X}?rO)&E=9>#OR2@>Lkg zYM%R9BwL`mVv_xtpvrtB_N`ORUOM|Z>hABnfVmx6`ZP3E{1xSaH4 zY5&4De|M!wBZC726Epzc9kPEO)>3~?b}93VCabIUo(xK-*!V$V4F!c2%um^0rEq0C Q%7R2ZUHx3vIVCg!0B-!qZvX%Q 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 64561dd4a46c142420570672762bddfe6787f914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 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 B>+Jvl 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 a369cbee494db6f376916acfa2e9a41125454a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7243 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 Z{~v}UpUcfOD|G+>002ovPDHLkV1hrJ(nJ6N 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 51b4401ca053ca8cad6e9903646709a2f44444df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw{&>1LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z 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 15114b7e71ac34437adbe2a98e55aff5231a17a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPN6Azb)h28H)5e5cE8BZ6-kcwMxZ(kHWq#)pOF{h9B zW?ySWOY4n3)l62;kQtHF_WU$snr_ZiHcVT5@5pZA-Y+zvGP=F8$3=r0W$l}bM6|Y+qUyFoX zl-B|ZK4W}Um_O@Lj@@IPxU0`z%{x1dt6;nO-_EyZGu}69X`5YHTH7+QcCU;_psw;( z-T0$Zp1zOZIdt=8+|?&J+INg^-75UP`tZciZ~OV2zV0nsQ2&lMx>@RBY}QS#$91#9 z)=taxE?||hoWSh)cTVbU$?t7NZ(se?K9u3`Zf{8C0^21yGNFVdQ&MBb@0KGVuZ2$lO 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 0039e804eb1684ea4ebc31799709a087f572e5f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawmV3H5hEy=Vy|MA+VFv-1hn?^8 z4~ug1g)FcZ2tQ~w=Lplx+X;0Q`O-fM6yDE!@w@{FUidGcwkmVlvbJqjp=XW1?wu~T z^_Jsx-sfxGL;v3?&|*&U<2W%#V1lKfLa~y=Gna-loeVRD8I9DLAQAzLOe`D%^2a{x z=bL%t*T#(tHXb^qa&Ey|=ZV3$mi+%IV|?53_`T+<7p`3W@mfYIs|#!;^C!uxN8C@h R>H?k2;OXk;vd$@?2>^U;U)TTu 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 028ec1e3e302dde605f2d1a8862de2217926fd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt2L~Uwq9gZHGoa9RPZ!6Kid%1QUgT{u5NQkCA-%J& z*`lR+N1yUbuGYAuH}&U?4IeV!y1gS8sG5Oc@wbWHa__G{m(P1vx%>Uy{gEs4kG*i# zFJze&rROEnxXf&pkh;xS->P)!2PJ-H@rHV$L$%!{Psm^&nbmf4NDs!00GCXBW5P9(i&9mcltT_n9>4aSD3%Ow3uICgQ2 zjr=FWc(D&`CQobQ>*Xz@9Ht9Lp&X-lu|@Xg_43>xNU@I>XQUCw| 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 814aa0017ec07a455055bb0eb22c95204a72cbb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPN2Pd15<(4UiKoN!;o-U3d6}R5rI4#(0z~kW9z3|Eu z*Y!_kIk(kp=;Hls6HD+YPol zAC+BvrAO4b#Zp)+t^0HKk_^dZ*Z9*<8@oPpjM}q2Wq$G8hlRh)KI{%S{ie|F?7og- znM~1VKPE;WvEkyHSs5(cxv~HO3k;4oxOt7FTe3vU+l70 z`ip>ia-T)@$9spa%u_uVv*WvkY1+@<%{Mg)&z<{pUH$sSM|TRvzz$_t@se|+bC%Ul RZ`TlzfTydU%Q~loCIBCygU0{> 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 7afa5cd1188503686266a4b66f6d4e10cd070e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt2L~Sy-_qHBD;O9UZ9QEaLn>~)opqb{kO7aYr+Jbr zTOtQrqO4m}eM`&b8y{ca$yc#ne!YK7j2?$#i+~fy-wPA|y!cnOFTBZS-S&y17d9%N z(0cHx!HC;|fk~i&fn~v-#d7S791aXw%o@py#TZZ3NH0IaaD^k_SkPRrilryh-X^o3 zD`cBe%jBnSADkw7t(p0`hPB6|MPA*i)f3nkoVkB6grRiT?3q&|M8$ctIo^I-kT+pQ z(lx$S@07MKS?%;_?iW4wvkWJmEP42JQmDuM!Zi!{&j(pmubAss%3AVFAgb0!>iQb- zGjcAIHk3`CeuU@qp*Qy*?p0gxa>n(hCp+bGq_?MgpA+hP!kBm0eUWb0I@^xbZo(ex zPF78i*&%fL#WDlVsvVklM7r6uYC2Ojc7L#4aCMOcZ-}OY*oIR~mzb{oe18@k5*dN= Y{8H1JWj_jB0ER7tr>mdKI;Vst0QrxrMgRZ+ 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 b11532ef5a34edaf915afa9f64be727aa763d796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cu_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv`A9L$_1f@*Sm+Zh;`EInNuLn>~)y>l?|u!DfB<4MVh ze2oGujT873Z@TME(G*{N_pkL`#sCi6^B$W%76J`{f|w(s)GsQw<=ByArcQTKst0xI`x+`cV*&Wu+R z!s^&UOV@1V7g|38p00i_>zopr0B$`3wEzGB 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 c17d04e498f80249f128587a9e76e3501504ee64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4586 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 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 78e5bb23ffb7086c06c271d3775167fbb46799af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPNlMoLt&wHnBAq)(RD?D8sLn>~)opV<5kb(efteupX zwWf;ek_lTTPkMB+oBb^R2L7^Vc}@9cflWWE7=eZ`IGFfk8l2uItNU)V-)6-Fnl+}J zVum%UoMNUmqMTxuHLRRswl(>jZa?-3^?ayRy^+EAP3;25z3>*ned}9Xd>(NduG*g` zeu43v0s|ul1B(KKKm$X8LjRUE?+Y1cx^w^gUHVGtQ^vvXYD)c5HTp_HEgz!qFZO2C zZ4R6?p_=Ren=ggWs$QGSK2-8#pL~JZn%&7OD&GbrPl)T#{at3mxuSh*!|I0ktASd3 z>V@{&^H0ip>Ru@_QDpW0ts&?2JSMJ+-?%xbXGoCD4FiUjR4*>(su$bNjQE&ErRJ^13X}?rO)&E=9>#OR2@>Lkg zYM%R9BwL`mVv_xtpvrtB_N`ORUOM|Z>hABnfVmx6`ZP3E{1xSaH4 zY5&4De|M!wBZC726Epzc9kPEO)>3~?b}93VCabIUo(xK-*!V$V4F!c2%um^0rEq0C Q%7R2ZUHx3vIVCg!0B-!qZvX%Q 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 64561dd4a46c142420570672762bddfe6787f914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 545 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 B>+Jvl 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 a369cbee494db6f376916acfa2e9a41125454a71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7243 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 Z{~v}UpUcfOD|G+>002ovPDHLkV1hrJ(nJ6N 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 51b4401ca053ca8cad6e9903646709a2f44444df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw{&>1LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z 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 15114b7e71ac34437adbe2a98e55aff5231a17a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPN6Azb)h28H)5e5cE8BZ6-kcwMxZ(kHWq#)pOF{h9B zW?ySWOY4n3)l62;kQtHF_WU$snr_ZiHcVT5@5pZA-Y+zvGP=F8$3=r0W$l}bM6|Y+qUyFoX zl-B|ZK4W}Um_O@Lj@@IPxU0`z%{x1dt6;nO-_EyZGu}69X`5YHTH7+QcCU;_psw;( z-T0$Zp1zOZIdt=8+|?&J+INg^-75UP`tZciZ~OV2zV0nsQ2&lMx>@RBY}QS#$91#9 z)=taxE?||hoWSh)cTVbU$?t7NZ(se?K9u3`Zf{8C0^21yGNFVdQ&MBb@0KGVuZ2$lO 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 0039e804eb1684ea4ebc31799709a087f572e5f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawmV3H5hEy=Vy|MA+VFv-1hn?^8 z4~ug1g)FcZ2tQ~w=Lplx+X;0Q`O-fM6yDE!@w@{FUidGcwkmVlvbJqjp=XW1?wu~T z^_Jsx-sfxGL;v3?&|*&U<2W%#V1lKfLa~y=Gna-loeVRD8I9DLAQAzLOe`D%^2a{x z=bL%t*T#(tHXb^qa&Ey|=ZV3$mi+%IV|?53_`T+<7p`3W@mfYIs|#!;^C!uxN8C@h R>H?k2;OXk;vd$@?2>^U;U)TTu 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 028ec1e3e302dde605f2d1a8862de2217926fd24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt2L~Uwq9gZHGoa9RPZ!6Kid%1QUgT{u5NQkCA-%J& z*`lR+N1yUbuGYAuH}&U?4IeV!y1gS8sG5Oc@wbWHa__G{m(P1vx%>Uy{gEs4kG*i# zFJze&rROEnxXf&pkh;xS->P)!2PJ-H@rHV$L$%!{Psm^&nbmf4NDs!00GCXBW5P9(i&9mcltT_n9>4aSD3%Ow3uICgQ2 zjr=FWc(D&`CQobQ>*Xz@9Ht9Lp&X-lu|@Xg_43>xNU@I>XQUCw| 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 814aa0017ec07a455055bb0eb22c95204a72cbb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPN2Pd15<(4UiKoN!;o-U3d6}R5rI4#(0z~kW9z3|Eu z*Y!_kIk(kp=;Hls6HD+YPol zAC+BvrAO4b#Zp)+t^0HKk_^dZ*Z9*<8@oPpjM}q2Wq$G8hlRh)KI{%S{ie|F?7og- znM~1VKPE;WvEkyHSs5(cxv~HO3k;4oxOt7FTe3vU+l70 z`ip>ia-T)@$9spa%u_uVv*WvkY1+@<%{Mg)&z<{pUH$sSM|TRvzz$_t@se|+bC%Ul RZ`TlzfTydU%Q~loCIBCygU0{> 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 7afa5cd1188503686266a4b66f6d4e10cd070e9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt2L~Sy-_qHBD;O9UZ9QEaLn>~)opqb{kO7aYr+Jbr zTOtQrqO4m}eM`&b8y{ca$yc#ne!YK7j2?$#i+~fy-wPA|y!cnOFTBZS-S&y17d9%N z(0cHx!HC;|fk~i&fn~v-#d7S791aXw%o@py#TZZ3NH0IaaD^k_SkPRrilryh-X^o3 zD`cBe%jBnSADkw7t(p0`hPB6|MPA*i)f3nkoVkB6grRiT?3q&|M8$ctIo^I-kT+pQ z(lx$S@07MKS?%;_?iW4wvkWJmEP42JQmDuM!Zi!{&j(pmubAss%3AVFAgb0!>iQb- zGjcAIHk3`CeuU@qp*Qy*?p0gxa>n(hCp+bGq_?MgpA+hP!kBm0eUWb0I@^xbZo(ex zPF78i*&%fL#WDlVsvVklM7r6uYC2Ojc7L#4aCMOcZ-}OY*oIR~mzb{oe18@k5*dN= Y{8H1JWj_jB0ER7tr>mdKI;Vst0QrxrMgRZ+ 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 b11532ef5a34edaf915afa9f64be727aa763d796..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 684 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$a>cu_bxCyDx`7I;J! zGca%qgD@k*tT_@uLG}_)Usv`A9L$_1f@*Sm+Zh;`EInNuLn>~)y>l?|u!DfB<4MVh ze2oGujT873Z@TME(G*{N_pkL`#sCi6^B$W%76J`{f|w(s)GsQw<=ByArcQTKst0xI`x+`cV*&Wu+R z!s^&UOV@1V7g|38p00i_>zopr0B$`3wEzGB 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 @@ - - - - - - - From d85776297d18a6e5e832f77cf854d76f321ae09f Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 14:56:18 +0100 Subject: [PATCH 06/12] Lint: fix IconDuplicates by remove unused resources --- vector/lint.xml | 1 + .../drawable-hdpi/ic_person_black_24dp.png | Bin 269 -> 0 bytes .../drawable-mdpi/ic_person_black_24dp.png | Bin 189 -> 0 bytes .../drawable-xhdpi/ic_person_black_24dp.png | Bin 307 -> 0 bytes .../res/drawable-xxhdpi/ic_devices_info.png | Bin 240 -> 0 bytes .../ic_material_message_black.png | Bin 318 -> 0 bytes .../ic_material_message_grey.png | Bin 712 -> 0 bytes .../ic_perm_device_information_black.png | Bin 240 -> 0 bytes .../res/drawable-xxhdpi/ic_person_black.png | Bin 428 -> 0 bytes .../drawable-xxhdpi/ic_person_black_24dp.png | Bin 428 -> 0 bytes .../drawable-xxhdpi/vector_close_widget.png | Bin 309 -> 0 bytes .../vector_create_direct_room.png | Bin 1787 -> 0 bytes .../vector_creation_remove_user.png | Bin 309 -> 0 bytes .../vector_leave_room_black.png | Bin 309 -> 0 bytes .../drawable-xxxhdpi/ic_person_black_24dp.png | Bin 565 -> 0 bytes .../res/menu/vector_home_group_settings.xml | 7 --- vector/src/main/res/menu/vector_room.xml | 43 ------------------ 17 files changed, 1 insertion(+), 50 deletions(-) delete mode 100644 vector/src/main/res/drawable-hdpi/ic_person_black_24dp.png delete mode 100644 vector/src/main/res/drawable-mdpi/ic_person_black_24dp.png delete mode 100644 vector/src/main/res/drawable-xhdpi/ic_person_black_24dp.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_devices_info.png delete mode 100644 vector/src/main/res/drawable-xxhdpi/ic_material_message_black.png delete mode 100644 vector/src/main/res/drawable-xxhdpi/ic_material_message_grey.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_perm_device_information_black.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/ic_person_black.png delete mode 100644 vector/src/main/res/drawable-xxhdpi/ic_person_black_24dp.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_close_widget.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_create_direct_room.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_creation_remove_user.png delete mode 100755 vector/src/main/res/drawable-xxhdpi/vector_leave_room_black.png delete mode 100644 vector/src/main/res/drawable-xxxhdpi/ic_person_black_24dp.png delete mode 100755 vector/src/main/res/menu/vector_home_group_settings.xml delete mode 100755 vector/src/main/res/menu/vector_room.xml diff --git a/vector/lint.xml b/vector/lint.xml index 6d4c4125ef..2a7197e534 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -9,6 +9,7 @@ + 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 6fbcc6d4258cf676f816ee8970ad77e06bf74f9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmV+o0rLKdP)I`H9;{R%N3%Udmjd26I6u~}~xB@LCArhk-&_cUGBxnlZYAM5q%#4W5 zoTq=`!qxhvT+hJN%*c^kLu)4DTN5i9$W274u}p0}k!VkC1Ci)TZBvn`_{X92X_sp2 zibT6=%iW4nHx@LoYFzrFWesHxTzmCq=uoEhCpxyA=(|_=_^NQH@7Sh}iZVMc%!G9B z&TY&5XkOQ|sL+#rbEIt;i5d;9OIY$KYW84}vNO@3Q_5aMg9^%`S?y4TDruBU-cV>nBw2MvWwby8c0^P&l>FVdQ&MBb@07o52e*gdg 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 360a32f27cd837c6e2036bf8087f3fbd440d26af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmV-30nGl1P)8`r`AL0Dh?&)4uZS5=#i{jTauwS5FB-rB8cb#+9sDUC`vn+$E-^GHOc!q zDBthD=Sjj#5Cjdxq~xrsG7=)Z+F^peRg%*4_xO9Xrm3%q3EEJC2Qk`MNrYL79E~x{ zk)t_gE97YT2L>|aXogvW91SsxC>>|ohu=KZ5nl9|qBY&o1z!^><&U2;qKj7%W9BTY zW(?^Q{40B$bIC0W3O=g}7Thr4j9rXk2IR<5#s!D8(BYJ4RI?{e=+M9ckEme}>{HV* zZ>UAD9MyaK57e^vI$v>(3|+BRfegK{m5enX2m?V7d;xL&3kk*tXR!bP002ovPDHLk FV1itgfiM67 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 0ac10c8f3317acfb8ba5102d361f1133465a72aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawwtKobhEy=Vy?M~9-9g0d<7TP* zj`IsQTn}kp7WY*C(xP2!wX=%z1&YpX7yYTr=6YmZ#Ny3`%5^t?Pv2X6OZ$9Ii4?0Y z&!UXxnJK-FB6$})u690JyX02KBiSXp1dm#KihdRTa+!tm*X!RLLMj@iy$X&^HGG^x zPj>rE05VxPg;YEy+)o8EPWb}`?pOcJ-+%Ib=cBhvb}4sV_cZQtU6xC`h722WQ%mvv4FO#pytV%Gow 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 0d989b2bcd7dc84e35e5da655d154f9b4fd4c857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD0wg^q?%&M7z{u+9;uuoF`1Z;{-@^_PtPgii zj0<2g8&Z+DtJXuTQd&Fq#Y z{c>skHqQgI)Eyca7_-$MtYrW(n7CrJ91dv8P59iw$|0bT(8{vsGWVPYCUu3+g4_ZM z51bnsL>XEAfGYpXUSQ$)@$6X10Y%vjr`b%l-E6Q`VV1Kv&1&-P^t0d(k8L(2bAOO- z&^{$@H~-7eCFj*^?OuNNobUgu=F;=Ys6v-&jEy(@|2I0eLH&|)8!%iLJYD@<);T3K F0RYTwgvtN_ 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 92a1da89f601ed2fb474d9ac5c4d78a796a3a054..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 712 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q4M;wBd$farfvMlq#WAGf*4sOVe$tL24T@xciGJSKPuY*00ZLEDZ)s+`Li7+C}y zV8n$D44OX^wSat;hASEis-4+56qd54te#gR&5uw8W(D{<{6{fvK_X+&r^6vY<2@Kw z20C!#*Xxb!45o~ThADpxM1gJ-a>x?7aB2c0&=9Z>fC3=%UW%DA*h-Y#dd9HQ-?-t* za!rS>ZE@EH9lFY7DxHKB*6!A43Wg^31;2o7punsD_PjO> z2N#358azOOLnJZ+B?N4^n48@9GI&D#!7_mblxCPbK)z|6#~`q1;l+YYn{P7!fv2mV J%Q~loCIGMN`2PR^ 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 0ac10c8f3317acfb8ba5102d361f1133465a72aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhawwtKobhEy=Vy?M~9-9g0d<7TP* zj`IsQTn}kp7WY*C(xP2!wX=%z1&YpX7yYTr=6YmZ#Ny3`%5^t?Pv2X6OZ$9Ii4?0Y z&!UXxnJK-FB6$})u690JyX02KBiSXp1dm#KihdRTa+!tm*X!RLLMj@iy$X&^HGG^x zPj>rE05VxPg;YEy+)o8EPWb}`?pOcJ-+%Ib=cBhvb}4sV_cZQtU6xC`h722WQ%mvv4FO#pytV%Gow 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 f1e148490b9b0ab76648553a96da8ee27ba0b8be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmV;d0aN~oP)IS7U|zrX^K8 zYaj=Djz=}bpbDN8SRn=_1bER!3~S>-krXj3CB(TVVo?Lhed z{|IQ4B71FVagCD+X)s{Mde@9Tbpn)9|D_zac+4w$Oo&O??n;Q6(B&mnZj!^3dqfOL z48GPO5qELu4sZB^SQhh|5*fR|BR(KUH0B{WGV*{=NCr*0&(W^%4#}{$T;>QRVkF}} zbDO_(gKvm~zH%LVTw;ni>LVAi_7rj06ReF9hrP$z55!^Lu_kWQK{`kW{Uel8N~vG5 Wub7svB(2u~0000IS7U|zrX^K8 zYaj=Djz=}bpbDN8SRn=_1bER!3~S>-krXj3CB(TVVo?Lhed z{|IQ4B71FVagCD+X)s{Mde@9Tbpn)9|D_zac+4w$Oo&O??n;Q6(B&mnZj!^3dqfOL z48GPO5qELu4sZB^SQhh|5*fR|BR(KUH0B{WGV*{=NCr*0&(W^%4#}{$T;>QRVkF}} zbDO_(gKvm~zH%LVTw;ni>LVAi_7rj06ReF9hrP$z55!^Lu_kWQK{`kW{Uel8N~vG5 Wub7svB(2u~00001LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z 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 a5b2b57497d496ad8e3807e35dfb29992eabb93f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 zcmV469L4=^lShC28c;S zK~#9!?VMX|6jd0<|KIHF(%J%YjT%~#-4;q35(NdC5VOGSY&PK%*&r?uH2Q=ZQ)i4{z^1o1(5X}~lj^03*R>Cz}|HKsu&)wGr|6fp*92vBs{**V7tD(QvUPCM;% zZ{OQ)&iVG7-+q_#ojG%Wq7=oB&~y(V6bj8S3}ZGC&ElNT1^^g4C7Tn5Vms8 zeUqfN7eF&(>~u>@%da^H$nW=yZnrxE;2i+ZPw{{7BN2U`N~O-Uwzj6T8j#=b7d;-& z>zwoV0eBsa6+~A6989HBrzR8Bqyds7DM&;|2II@=uVGj{)_jZnX>C&mNS5XI0DPRorIqCK`35vi>zH&vk|gZ_a4g3x#|+YMnx>KD-n@CHZ9wUC`jaeJ9Z!W+CzHvK zY`K^uNq!RwQJX$ zf^=Ee^%Z6Xu4vY4-n@CcIp>bRsi~EKFpPDkfCis<7B-;~41^IrxC}*EmdS!@ihNM> zSU`TiznpXaRFMy!sjI6i9aXHBmX2&&@%jL4AxUa7d_4W0L zL?S3FE3@2h$&w`~FCXsV0|Nu->FKeo_^;4&UAF>gvMYy?dv_5Sgy)Wv#8P$zd)wc#h_JaT$bb|HFA)knS$>8O~s2 zEmrV=h^RYLEq1Zc0WrodW&+d#fEO?y?smH`m;#E&<2N|xJp~M?D;ka7GzBzhMP~{a z&{@-!^bkN_6{wpr!!S;d2`C1S0|LN_=rgBA*WBC;UDqFd)^#1t&CO1_*QaK2*R(J_ zaNvN@*4EYrV2u-loW=uG?TVtT9XB8VkY#x#=llmu@I-zNNSbrLLRHnvW(_j#D8}RQ zP5>wKxb8Zh3C@^+06-MQdH|hy2&bdJzyIB_+KmY)8jU_M3}ZWhJ9)&XpE34IXJ@Bw z8xQ~_5{WASb^|c-A?^U!t*UCDmByBXucm3;Uaz;8h_)hk&rLHT+NCJUIjbGUm7O$A zyX^D%bO0N26wn8XqMR5{hjFKGP1C;f`Ft9HjX9M5bpWp^igJ9s9VawFP1Anydc9pl zv=Q0=*5Lr>Jff=V*AvQic7A#N`t^%lF4tKAtFjc%_nhSO=_002ovPDHLkV1i;qL;C;# 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 51b4401ca053ca8cad6e9903646709a2f44444df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw{&>1LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z 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 51b4401ca053ca8cad6e9903646709a2f44444df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 309 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY0wn)GsXhaw{&>1LhEy=VysgJ$~x+g}6OvsxLimbaeN-!xQItoH=3nd`|H@dF!kYp_dChV`b9AudQLRn7yg2 zv~UiON9*MGOYAy6D=_*g@;c3(5`S(Hi^X;wk8Ms*3SMP^!WTf z-E_DAd$kLMWY`Z`);MuKF9=d$?_mzLoFj7Xp~|_3ODg!(3;AT&wLoS^O+0tsvcZJ& zD(m_$dNm(!9@n+CTyDa$w$*a^-$!>qK3P{4end8+qbAwoFEAV!JYD@<);T3K0RXh> Be)#|Z 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 1ebc37be1701e3932b1d8c4de99edb246c7ae1c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 565 zcmV-50?Pe~P)}mEdFOO0kk66l|j-6?~9x1EYin+HvWh zjh(a$!K9k0^!NfrGjnHhZ{U2sFEBs2bI6raN-3q3Qc9IsCm`g6goI;40&0{Q3ybV> zid;~ix6I?TD>OJm{!zjUJRG&a0Ww4#d>ph)7a6jcDvnv8i=-&V$01iaKvLGh!x;@E zLmN0^kuxMi2|iBPMKTuPfNPv08S7EPx^={$HLME|gPK?uA_ldv?gTL?#<~PCXrKd( z9b0}v`V+qy_cK~U3|hsy5`83NKbgS+f!PDHZ=NLM37y3e8%Tzp;tY=tlCn0_IK(GL zQuLjhIHt-`iqBudL38X6`FLh=l*ez zvdRofDW#OtrdXoJW8SgHAu)aaApEAwC-!*H6Yf)G3g=v>&Nd%OkReKFvqPN<)=hAi z1`(36h)q_wgcZxYBt|grh%N3gLX*@9k(~R$112fl1P}R!6x3H9ahU?G5FrH@agRcH z>~M~Zq-{KMRv|=2Septts_+>ZabLJWPRbl27K$j7i&u!H0x)-rbHq~T+{V}@VzDiZ z?IRY8F!lqn*e{HU<#d1!&;dH2h;)EbN-3q3QcC>=IV&s}(aLsG00000NkvXXu0mjf D>pAVy 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 @@ - - - - - - - - - - - - - - - - From 12861aacdae6f93f5870fa3ab45412aa43e48618 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 15:11:43 +0100 Subject: [PATCH 07/12] lint: check negative margin --- vector/lint.xml | 2 ++ .../src/main/res/layout/vector_message_merge_avatar_list.xml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/vector/lint.xml b/vector/lint.xml index 2a7197e534..c74fcef250 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -10,6 +10,7 @@ + @@ -23,6 +24,7 @@ + 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 From 36a848471f84db9482a09a707f308b9471fbe9d4 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 15:27:46 +0100 Subject: [PATCH 08/12] Enable other lint check (no change necessary in source) --- vector/lint.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/vector/lint.xml b/vector/lint.xml index c74fcef250..c5fe018fd9 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -37,9 +37,10 @@ + - + From 9f28738fd6095c4592f7419db4e1afd57d1fd4cf Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 15:41:35 +0100 Subject: [PATCH 09/12] Restore availability to Chromebooks (#932) --- CHANGES.md | 2 +- vector/lint.xml | 3 +++ vector/src/main/AndroidManifest.xml | 9 +++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES.md b/CHANGES.md index ea6aee07c4..da27d0a0e1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -20,7 +20,7 @@ Build 🧱: - Upgrade ktlint to version 0.36.0 Other changes: - - + - Restore availability to Chromebooks (#932) Changes in RiotX 0.17.0 (2020-02-27) =================================================== diff --git a/vector/lint.xml b/vector/lint.xml index c5fe018fd9..3d3bb1856f 100644 --- a/vector/lint.xml +++ b/vector/lint.xml @@ -43,4 +43,7 @@ + + + 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 @@ + + + + + Date: Thu, 27 Feb 2020 17:03:48 +0100 Subject: [PATCH 10/12] Verification with QrCode: ensure there is a Camera to scan QrCodes. --- .../riotx/core/hardware/HardwareInfo.kt | 46 ++++++++++++++++++ .../features/crypto/verification/Config.kt | 29 ------------ .../SupportedVerificationMethodsProvider.kt | 47 +++++++++++++++++++ .../VerificationBottomSheetViewModel.kt | 24 ++++++---- .../home/room/detail/RoomDetailViewModel.kt | 22 +++++---- .../features/navigation/DefaultNavigator.kt | 10 ++-- .../settings/devices/DevicesViewModel.kt | 12 +++-- 7 files changed, 134 insertions(+), 56 deletions(-) create mode 100644 vector/src/main/java/im/vector/riotx/core/hardware/HardwareInfo.kt delete mode 100644 vector/src/main/java/im/vector/riotx/features/crypto/verification/Config.kt create mode 100644 vector/src/main/java/im/vector/riotx/features/crypto/verification/SupportedVerificationMethodsProvider.kt diff --git a/vector/src/main/java/im/vector/riotx/core/hardware/HardwareInfo.kt b/vector/src/main/java/im/vector/riotx/core/hardware/HardwareInfo.kt new file mode 100644 index 0000000000..1ce0dda025 --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/core/hardware/HardwareInfo.kt @@ -0,0 +1,46 @@ +/* + * Copyright (c) 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. + */ + +@file:Suppress("DEPRECATION") + +package im.vector.riotx.core.hardware + +import android.content.Context +import android.hardware.Camera +import android.hardware.camera2.CameraCharacteristics +import android.hardware.camera2.CameraManager +import android.os.Build +import javax.inject.Inject + +class HardwareInfo @Inject constructor( + private val context: Context +) { + /** + * Tell if the device has a back (or external) camera + */ + fun hasBackCamera(): Boolean { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + return Camera.getNumberOfCameras() > 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/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 c5fd167f39..29caea9683 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,7 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini session .cryptoService() .verificationService() - .requestKeyVerificationInDMs(supportedVerificationMethods, otherUserId, data, pendingLocalId) + .requestKeyVerificationInDMs(supportedVerificationMethodsProvider.provide(), otherUserId, data, pendingLocalId) ) ) } @@ -191,7 +195,7 @@ class VerificationBottomSheetViewModel @AssistedInject constructor(@Assisted ini pendingRequest = Success(session .cryptoService() .verificationService() - .requestKeyVerificationInDMs(supportedVerificationMethods, otherUserId, roomId) + .requestKeyVerificationInDMs(supportedVerificationMethodsProvider.provide(), otherUserId, roomId) ) ) } @@ -362,9 +366,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 8a231fb25d..f98dd1ae5c 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)!! @@ -421,7 +423,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() } @@ -828,7 +830,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/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 From 77dd911054ad100c6975074fb1dbd607a6c27140 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Thu, 27 Feb 2020 17:42:25 +0100 Subject: [PATCH 11/12] Code quality --- .../verification/VerificationBottomSheetViewModel.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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 29caea9683..bda483d6ef 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 @@ -177,7 +177,12 @@ class VerificationBottomSheetViewModel @AssistedInject constructor( session .cryptoService() .verificationService() - .requestKeyVerificationInDMs(supportedVerificationMethodsProvider.provide(), otherUserId, data, pendingLocalId) + .requestKeyVerificationInDMs( + supportedVerificationMethodsProvider.provide(), + otherUserId, + data, + pendingLocalId + ) ) ) } @@ -298,8 +303,6 @@ class VerificationBottomSheetViewModel @AssistedInject constructor( } catch (failure: Throwable) { _viewEvents.post(VerificationBottomSheetViewEvents.ModalError(failure.localizedMessage)) } - - Unit } }.exhaustive } From 78bc2bbaa5b2cdcc4380b568809952327daeac80 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 4 Mar 2020 12:15:33 +0100 Subject: [PATCH 12/12] AndroidStudio cleanup --- .idea/codeStyles/Project.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 40ee4ee5cf..b3719669fd 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,9 +1,6 @@