From 2ac9e0918e150e609e26c8fa20a826567ad51342 Mon Sep 17 00:00:00 2001 From: Nik Clayton Date: Tue, 25 Jun 2024 12:16:24 +0200 Subject: [PATCH] change: Combine variable declaration and assignments (#779) Simplifies `init` blocks. --- .../pachli/adapter/StatusBaseViewHolder.kt | 116 +++++++----------- .../conversation/ConversationViewHolder.kt | 20 ++- .../viewthread/ViewThreadViewModel.kt | 11 +- 3 files changed, 52 insertions(+), 95 deletions(-) diff --git a/app/src/main/java/app/pachli/adapter/StatusBaseViewHolder.kt b/app/src/main/java/app/pachli/adapter/StatusBaseViewHolder.kt index 963dc4749..762c10ba7 100644 --- a/app/src/main/java/app/pachli/adapter/StatusBaseViewHolder.kt +++ b/app/src/main/java/app/pachli/adapter/StatusBaseViewHolder.kt @@ -69,80 +69,52 @@ abstract class StatusBaseViewHolder protected constructor(i const val KEY_CREATED = "created" } - protected val context: Context - private val displayName: TextView - private val username: TextView - private val replyButton: ImageButton - private val replyCountLabel: TextView? - private val reblogButton: SparkButton? - private val favouriteButton: SparkButton - private val bookmarkButton: SparkButton - private val moreButton: ImageButton - private val mediaContainer: ConstraintLayout - protected val mediaPreview: MediaPreviewLayout - private val sensitiveMediaWarning: TextView - private val sensitiveMediaShow: View - protected val mediaLabels: Array - private val mediaDescriptions: Array - private val contentWarningButton: MaterialButton - private val avatarInset: ImageView - val avatar: ImageView - val metaInfo: TextView - val content: TextView - private val contentWarningDescription: TextView - private val pollView: PollView - private val cardView: PreviewCardView? - private val filteredPlaceholder: LinearLayout? - private val filteredPlaceholderLabel: TextView? - private val filteredPlaceholderShowButton: Button? - private val statusContainer: ConstraintLayout? + protected val context: Context = itemView.context + private val displayName: TextView = itemView.findViewById(R.id.status_display_name) + private val username: TextView = itemView.findViewById(R.id.status_username) + private val replyButton: ImageButton = itemView.findViewById(R.id.status_reply) + private val replyCountLabel: TextView? = itemView.findViewById(R.id.status_replies) + private val reblogButton: SparkButton? = itemView.findViewById(R.id.status_inset) + private val favouriteButton: SparkButton = itemView.findViewById(R.id.status_favourite) + private val bookmarkButton: SparkButton = itemView.findViewById(R.id.status_bookmark) + private val moreButton: ImageButton = itemView.findViewById(R.id.status_more) + private val mediaContainer: ConstraintLayout = itemView.findViewById(R.id.status_media_preview_container).apply { + clipToOutline = true + } + protected val mediaPreview: MediaPreviewLayout = itemView.findViewById(R.id.status_media_preview) + private val sensitiveMediaWarning: TextView = itemView.findViewById(R.id.status_sensitive_media_warning) + private val sensitiveMediaShow: View = itemView.findViewById(R.id.status_sensitive_media_button) + protected val mediaLabels: Array = arrayOf( + itemView.findViewById(R.id.status_media_label_0), + itemView.findViewById(R.id.status_media_label_1), + itemView.findViewById(R.id.status_media_label_2), + itemView.findViewById(R.id.status_media_label_3), + ) + private val mediaDescriptions: Array = arrayOfNulls(mediaLabels.size) + private val contentWarningButton: MaterialButton = itemView.findViewById(R.id.status_content_warning_button) + private val avatarInset: ImageView = itemView.findViewById(R.id.status_avatar_inset) + val avatar: ImageView = itemView.findViewById(R.id.status_avatar) + val metaInfo: TextView = itemView.findViewById(R.id.status_meta_info) + val content: TextView = itemView.findViewById(R.id.status_content) + private val contentWarningDescription: TextView = itemView.findViewById(R.id.status_content_warning_description) + private val pollView: PollView = itemView.findViewById(R.id.status_poll) + private val cardView: PreviewCardView? = itemView.findViewById(R.id.status_card_view) + private val filteredPlaceholder: LinearLayout? = itemView.findViewById(R.id.status_filtered_placeholder) + private val filteredPlaceholderLabel: TextView? = itemView.findViewById(R.id.status_filter_label) + private val filteredPlaceholderShowButton: Button? = itemView.findViewById(R.id.status_filter_show_anyway) + private val statusContainer: ConstraintLayout? = itemView.findViewById(R.id.status_container) private val numberFormat = NumberFormat.getNumberInstance() private val absoluteTimeFormatter = AbsoluteTimeFormatter() - protected val avatarRadius48dp: Int - private val avatarRadius36dp: Int - private val avatarRadius24dp: Int - private val mediaPreviewUnloaded: Drawable - private val translationProvider: TextView? + private val translationProvider: TextView? = itemView.findViewById(R.id.translationProvider)?.apply { + val icon = makeIcon(context, GoogleMaterial.Icon.gmd_translate, textSize.toInt()) + setCompoundDrawablesRelativeWithIntrinsicBounds(icon, null, null, null) + } + protected val avatarRadius48dp: Int = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_48dp) + private val avatarRadius36dp: Int = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_36dp) + private val avatarRadius24dp: Int = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_24dp) + private val mediaPreviewUnloaded: Drawable = ColorDrawable(MaterialColors.getColor(itemView, android.R.attr.textColorLink)) init { - context = itemView.context - displayName = itemView.findViewById(R.id.status_display_name) - username = itemView.findViewById(R.id.status_username) - metaInfo = itemView.findViewById(R.id.status_meta_info) - content = itemView.findViewById(R.id.status_content) - avatar = itemView.findViewById(R.id.status_avatar) - replyButton = itemView.findViewById(R.id.status_reply) - replyCountLabel = itemView.findViewById(R.id.status_replies) - reblogButton = itemView.findViewById(R.id.status_inset) - favouriteButton = itemView.findViewById(R.id.status_favourite) - bookmarkButton = itemView.findViewById(R.id.status_bookmark) - moreButton = itemView.findViewById(R.id.status_more) - mediaContainer = itemView.findViewById(R.id.status_media_preview_container) - mediaContainer.clipToOutline = true - mediaPreview = itemView.findViewById(R.id.status_media_preview) - sensitiveMediaWarning = itemView.findViewById(R.id.status_sensitive_media_warning) - sensitiveMediaShow = itemView.findViewById(R.id.status_sensitive_media_button) - mediaLabels = arrayOf( - itemView.findViewById(R.id.status_media_label_0), - itemView.findViewById(R.id.status_media_label_1), - itemView.findViewById(R.id.status_media_label_2), - itemView.findViewById(R.id.status_media_label_3), - ) - mediaDescriptions = arrayOfNulls(mediaLabels.size) - contentWarningDescription = itemView.findViewById(R.id.status_content_warning_description) - contentWarningButton = itemView.findViewById(R.id.status_content_warning_button) - avatarInset = itemView.findViewById(R.id.status_avatar_inset) - pollView = itemView.findViewById(R.id.status_poll) - cardView = itemView.findViewById(R.id.status_card_view) - filteredPlaceholder = itemView.findViewById(R.id.status_filtered_placeholder) - filteredPlaceholderLabel = itemView.findViewById(R.id.status_filter_label) - filteredPlaceholderShowButton = itemView.findViewById(R.id.status_filter_show_anyway) - statusContainer = itemView.findViewById(R.id.status_container) - avatarRadius48dp = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_48dp) - avatarRadius36dp = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_36dp) - avatarRadius24dp = context.resources.getDimensionPixelSize(DR.dimen.avatar_radius_24dp) - mediaPreviewUnloaded = - ColorDrawable(MaterialColors.getColor(itemView, android.R.attr.textColorLink)) (itemView as ViewGroup).expandTouchSizeToFillRow( listOfNotNull( replyButton, @@ -152,10 +124,6 @@ abstract class StatusBaseViewHolder protected constructor(i moreButton, ), ) - translationProvider = itemView.findViewById(R.id.translationProvider)?.apply { - val icon = makeIcon(context, GoogleMaterial.Icon.gmd_translate, textSize.toInt()) - setCompoundDrawablesRelativeWithIntrinsicBounds(icon, null, null, null) - } } protected fun setDisplayName( diff --git a/app/src/main/java/app/pachli/components/conversation/ConversationViewHolder.kt b/app/src/main/java/app/pachli/components/conversation/ConversationViewHolder.kt index a9b71a2e4..9bc5a7f58 100644 --- a/app/src/main/java/app/pachli/components/conversation/ConversationViewHolder.kt +++ b/app/src/main/java/app/pachli/components/conversation/ConversationViewHolder.kt @@ -37,19 +37,13 @@ class ConversationViewHolder internal constructor( private val statusDisplayOptions: StatusDisplayOptions, private val listener: StatusActionListener, ) : StatusBaseViewHolder(itemView) { - private val conversationNameTextView: TextView - private val contentCollapseButton: Button - private val avatars: Array - - init { - conversationNameTextView = itemView.findViewById(R.id.conversation_name) - contentCollapseButton = itemView.findViewById(R.id.button_toggle_content) - avatars = arrayOf( - avatar, - itemView.findViewById(R.id.status_avatar_1), - itemView.findViewById(R.id.status_avatar_2), - ) - } + private val conversationNameTextView: TextView = itemView.findViewById(R.id.conversation_name) + private val contentCollapseButton: Button = itemView.findViewById(R.id.button_toggle_content) + private val avatars: Array = arrayOf( + avatar, + itemView.findViewById(R.id.status_avatar_1), + itemView.findViewById(R.id.status_avatar_2), + ) fun setupWithConversation( viewData: ConversationViewData, diff --git a/app/src/main/java/app/pachli/components/viewthread/ViewThreadViewModel.kt b/app/src/main/java/app/pachli/components/viewthread/ViewThreadViewModel.kt index a1974b42e..35b1ac8ce 100644 --- a/app/src/main/java/app/pachli/components/viewthread/ViewThreadViewModel.kt +++ b/app/src/main/java/app/pachli/components/viewthread/ViewThreadViewModel.kt @@ -88,18 +88,13 @@ class ViewThreadViewModel @Inject constructor( val statusDisplayOptions = statusDisplayOptionsRepository.flow - private val alwaysShowSensitiveMedia: Boolean - private val alwaysOpenSpoiler: Boolean - - val activeAccount: AccountEntity + val activeAccount: AccountEntity = accountManager.activeAccount!! + private val alwaysShowSensitiveMedia: Boolean = activeAccount.alwaysShowSensitiveMedia + private val alwaysOpenSpoiler: Boolean = activeAccount.alwaysOpenSpoiler private var filterModel: FilterModel? = null init { - activeAccount = accountManager.activeAccount!! - alwaysShowSensitiveMedia = activeAccount.alwaysShowSensitiveMedia - alwaysOpenSpoiler = activeAccount.alwaysOpenSpoiler - viewModelScope.launch { eventHub.events .collect { event ->