mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-03 08:32:34 +00:00
Minor refactoring
This commit is contained in:
@@ -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<List<String>> {
|
||||
|
||||
private lateinit var selectContactsAdapter: SelectContactsAdapter
|
||||
|
||||
private var members = listOf<String>()
|
||||
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<CreateClosedGroupActivity>,
|
||||
private val profilePicture: Bitmap?,
|
||||
private val name: String?,
|
||||
private val members: Set<Recipient>,
|
||||
private val admins: Set<Recipient>
|
||||
private val activity: WeakReference<CreateClosedGroupActivity>,
|
||||
private val profilePicture: Bitmap?,
|
||||
private val name: String?,
|
||||
private val members: Set<Recipient>,
|
||||
private val admins: Set<Recipient>
|
||||
) : AsyncTask<Void, Void, Optional<GroupManager.GroupActionResult>>() {
|
||||
|
||||
override fun doInBackground(vararg params: Void?): Optional<GroupManager.GroupActionResult> {
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
// endregion
|
||||
@@ -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) }
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
package org.thoughtcrime.securesms.loki.activities
|
||||
|
||||
@FunctionalInterface
|
||||
interface MemberClickListener {
|
||||
fun onMemberClick(member: String)
|
||||
}
|
||||
@@ -37,7 +37,7 @@ class SelectContactsAdapter(
|
||||
context,
|
||||
Address.fromSerialized(member), false),
|
||||
glide,
|
||||
UserView.ActionIndicator.CHECK_BOX,
|
||||
UserView.ActionIndicator.Tick,
|
||||
isSelected)
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user