From 5b641f441584cc7a5d6837aeae0eac6b48e0e8fa Mon Sep 17 00:00:00 2001 From: nielsandriesse Date: Tue, 18 Aug 2020 08:55:17 +1000 Subject: [PATCH] Minor refactoring --- res/layout/activity_edit_closed_group.xml | 13 ------- .../fragment_group_edit_bottom_sheet.xml | 8 ---- res/layout/view_user.xml | 2 +- res/values/strings.xml | 37 +++++++++---------- .../activities/CreateClosedGroupActivity.kt | 37 +++++++++++-------- .../EditClosedGroupMembersAdapter.kt | 2 +- .../securesms/loki/activities/HomeActivity.kt | 2 +- .../loki/activities/MemberClickListener.kt | 6 --- .../loki/activities/SelectContactsAdapter.kt | 2 +- .../fragments/ContactSelectionListAdapter.kt | 2 +- .../securesms/loki/views/UserView.kt | 35 ++++++++---------- 11 files changed, 60 insertions(+), 86 deletions(-) delete mode 100644 src/org/thoughtcrime/securesms/loki/activities/MemberClickListener.kt diff --git a/res/layout/activity_edit_closed_group.xml b/res/layout/activity_edit_closed_group.xml index 4d218791f1..9bcbfac4c3 100644 --- a/res/layout/activity_edit_closed_group.xml +++ b/res/layout/activity_edit_closed_group.xml @@ -89,19 +89,6 @@ - - - - - - - - - - diff --git a/res/layout/view_user.xml b/res/layout/view_user.xml index 8df24dc6a5..34ffd6947a 100644 --- a/res/layout/view_user.xml +++ b/res/layout/view_user.xml @@ -37,7 +37,7 @@ android:layout_weight="1" /> A closed group cannot have more than 10 members One of the members of your group has an invalid Session ID - Edit Closed Group - Enter a new group name - Closed groups support up to 10 members and provide the same privacy protections as one-on-one sessions. - Edit members - Add members - Group name can\'t be empty - Please enter a shorter group name - Groups must have at least 2 group members - A closed group cannot have more than 10 members - One of the members of your group has an invalid Session ID - Are you sure you want to remove this user? - User removed from group - - - Remove user from group - Make this user a group admin - - Select Contacts - Join Open Group Couldn\'t join group Open Group URL @@ -1852,4 +1833,22 @@ Apply Done + + + Edit Closed Group + Enter a new group name + Edit members + Add members + Group name can\'t be empty + Please enter a shorter group name + Groups must have at least 2 group members + A closed group cannot have more than 10 members + One of the members of your group has an invalid Session ID + Are you sure you want to remove this user? + User removed from group + + Remove user from group + + Select Contacts + diff --git a/src/org/thoughtcrime/securesms/loki/activities/CreateClosedGroupActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/CreateClosedGroupActivity.kt index 2282860b69..3108f5f699 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/CreateClosedGroupActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/CreateClosedGroupActivity.kt @@ -28,25 +28,28 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences import org.whispersystems.libsignal.util.guava.Optional import java.lang.ref.WeakReference -const val RESULT_CODE_CREATE_CLOSED_GROUP = 100 - class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderManager.LoaderCallbacks> { - - private lateinit var selectContactsAdapter: SelectContactsAdapter - private var members = listOf() set(value) { field = value selectContactsAdapter.members = value } + private val selectContactsAdapter by lazy { + SelectContactsAdapter(this, GlideApp.with(this)) + } + + companion object { + val closedGroupCreatedResultCode = 100 + } + // region Lifecycle override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) { super.onCreate(savedInstanceState, isReady) + setContentView(R.layout.activity_create_closed_group) supportActionBar!!.title = resources.getString(R.string.activity_create_closed_group_title) - this.selectContactsAdapter = SelectContactsAdapter(this, GlideApp.with(this)) recyclerView.adapter = this.selectContactsAdapter recyclerView.layoutManager = LinearLayoutManager(this) @@ -91,7 +94,7 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderM } private fun createNewPrivateChat() { - setResult(RESULT_CODE_CREATE_CLOSED_GROUP) + setResult(Companion.closedGroupCreatedResultCode) finish() } @@ -145,17 +148,17 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderM val masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(this) ?: TextSecurePreferences.getLocalNumber(this) val admin = Recipient.from(this, Address.fromSerialized(masterHexEncodedPublicKey), false) CreateClosedGroupTask(WeakReference(this), null, name.toString(), recipients, setOf( admin )) - .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) + .executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) } // endregion - // region Tasks + // region Group Creation Task (Legacy) internal class CreateClosedGroupTask( - private val activity: WeakReference, - private val profilePicture: Bitmap?, - private val name: String?, - private val members: Set, - private val admins: Set + private val activity: WeakReference, + private val profilePicture: Bitmap?, + private val name: String?, + private val members: Set, + private val admins: Set ) : AsyncTask>() { override fun doInBackground(vararg params: Void?): Optional { @@ -176,13 +179,15 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderM } } } - // endregion } +// endregion +// region Convenience private fun openConversationActivity(context: Context, threadId: Long, recipient: Recipient) { val intent = Intent(context, ConversationActivity::class.java) intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId) intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT) intent.putExtra(ConversationActivity.ADDRESS_EXTRA, recipient.address) context.startActivity(intent) -} \ No newline at end of file +} +// endregion \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/loki/activities/EditClosedGroupMembersAdapter.kt b/src/org/thoughtcrime/securesms/loki/activities/EditClosedGroupMembersAdapter.kt index f394a7aa3a..c0b1840262 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/EditClosedGroupMembersAdapter.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/EditClosedGroupMembersAdapter.kt @@ -45,7 +45,7 @@ class EditClosedGroupMembersAdapter( context, Address.fromSerialized(member), false), glide, - (if (lockedMember) UserView.ActionIndicator.NONE else UserView.ActionIndicator.MENU)) + (if (lockedMember) UserView.ActionIndicator.None else UserView.ActionIndicator.Menu)) if (!lockedMember) { viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) } diff --git a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt index b670bf14d5..1c799248d9 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/HomeActivity.kt @@ -223,7 +223,7 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) - if (resultCode == RESULT_CODE_CREATE_CLOSED_GROUP) { + if (resultCode == CreateClosedGroupActivity.closedGroupCreatedResultCode) { createNewPrivateChat() } } diff --git a/src/org/thoughtcrime/securesms/loki/activities/MemberClickListener.kt b/src/org/thoughtcrime/securesms/loki/activities/MemberClickListener.kt deleted file mode 100644 index b5b0eeaa1e..0000000000 --- a/src/org/thoughtcrime/securesms/loki/activities/MemberClickListener.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.thoughtcrime.securesms.loki.activities - -@FunctionalInterface -interface MemberClickListener { - fun onMemberClick(member: String) -} \ No newline at end of file diff --git a/src/org/thoughtcrime/securesms/loki/activities/SelectContactsAdapter.kt b/src/org/thoughtcrime/securesms/loki/activities/SelectContactsAdapter.kt index aa908154ac..10e13f23c9 100644 --- a/src/org/thoughtcrime/securesms/loki/activities/SelectContactsAdapter.kt +++ b/src/org/thoughtcrime/securesms/loki/activities/SelectContactsAdapter.kt @@ -37,7 +37,7 @@ class SelectContactsAdapter( context, Address.fromSerialized(member), false), glide, - UserView.ActionIndicator.CHECK_BOX, + UserView.ActionIndicator.Tick, isSelected) } diff --git a/src/org/thoughtcrime/securesms/loki/fragments/ContactSelectionListAdapter.kt b/src/org/thoughtcrime/securesms/loki/fragments/ContactSelectionListAdapter.kt index fb1e5c54d3..1180305d5d 100644 --- a/src/org/thoughtcrime/securesms/loki/fragments/ContactSelectionListAdapter.kt +++ b/src/org/thoughtcrime/securesms/loki/fragments/ContactSelectionListAdapter.kt @@ -55,7 +55,7 @@ class ContactSelectionListAdapter(private val context: Context, private val mult viewHolder.view.bind( item.recipient, glide, - if (multiSelect) UserView.ActionIndicator.CHECK_BOX else UserView.ActionIndicator.NONE, + if (multiSelect) UserView.ActionIndicator.Tick else UserView.ActionIndicator.None, isSelected) } else if (viewHolder is DividerViewHolder) { item as ContactSelectionListItem.Header diff --git a/src/org/thoughtcrime/securesms/loki/views/UserView.kt b/src/org/thoughtcrime/securesms/loki/views/UserView.kt index da549f654b..3305294a34 100644 --- a/src/org/thoughtcrime/securesms/loki/views/UserView.kt +++ b/src/org/thoughtcrime/securesms/loki/views/UserView.kt @@ -15,6 +15,12 @@ import org.whispersystems.signalservice.loki.protocol.mentions.MentionsManager class UserView : LinearLayout { + enum class ActionIndicator { + None, + Menu, + Tick + } + // region Lifecycle constructor(context: Context) : super(context) { setUpViewHierarchy() @@ -40,12 +46,6 @@ class UserView : LinearLayout { // endregion // region Updating - enum class ActionIndicator { - NONE, - MENU, - CHECK_BOX, - } - fun bind(user: Recipient, glide: GlideRequests, actionIndicator: ActionIndicator, isSelected: Boolean = false) { val address = user.address.serialize() if (user.isGroupRecipient) { @@ -55,35 +55,32 @@ class UserView : LinearLayout { profilePictureView.isRSSFeed = true } else { val threadID = GroupManager.getThreadIDFromGroupID(address, context) - val users = MentionsManager.shared.userPublicKeyCache[threadID]?.toList() - ?: listOf() + val users = MentionsManager.shared.userPublicKeyCache[threadID]?.toList() ?: listOf() val randomUsers = users.sorted() // Sort to provide a level of stability profilePictureView.publicKey = randomUsers.getOrNull(0) ?: "" profilePictureView.additionalPublicKey = randomUsers.getOrNull(1) ?: "" profilePictureView.isRSSFeed = false - } } else { profilePictureView.publicKey = address profilePictureView.additionalPublicKey = null profilePictureView.isRSSFeed = false } - tickImageView.setImageResource(R.drawable.ic_edit_white_24dp) + actionIndicatorImageView.setImageResource(R.drawable.ic_edit_white_24dp) profilePictureView.glide = glide profilePictureView.update() nameTextView.text = user.name ?: "Unknown Contact" - when (actionIndicator) { - ActionIndicator.NONE -> { - tickImageView.visibility = View.GONE + ActionIndicator.None -> { + actionIndicatorImageView.visibility = View.GONE } - ActionIndicator.MENU -> { - tickImageView.visibility = View.VISIBLE - tickImageView.setImageResource(R.drawable.ic_more_horiz_white) + ActionIndicator.Menu -> { + actionIndicatorImageView.visibility = View.VISIBLE + actionIndicatorImageView.setImageResource(R.drawable.ic_more_horiz_white) } - ActionIndicator.CHECK_BOX -> { - tickImageView.visibility = View.VISIBLE - tickImageView.setImageResource(if (isSelected) R.drawable.ic_circle_check else R.drawable.ic_circle) + ActionIndicator.Tick -> { + actionIndicatorImageView.visibility = View.VISIBLE + actionIndicatorImageView.setImageResource(if (isSelected) R.drawable.ic_circle_check else R.drawable.ic_circle) } } }