mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-17 12:58:25 +00:00
Minor refactoring
This commit is contained in:
parent
18870b7e7b
commit
5b641f4415
@ -89,19 +89,6 @@
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="@dimen/large_spacing"
|
||||
android:layout_marginTop="@dimen/medium_spacing"
|
||||
android:layout_marginRight="@dimen/large_spacing"
|
||||
android:layout_marginBottom="@dimen/medium_spacing"
|
||||
android:textSize="@dimen/small_font_size"
|
||||
android:textColor="@color/text"
|
||||
android:alpha="0.6"
|
||||
android:textAlignment="center"
|
||||
android:text="@string/activity_edit_closed_group_explanation" />
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
|
@ -17,12 +17,4 @@
|
||||
android:textColor="@color/text"
|
||||
android:text="@string/fragment_edit_group_bottom_sheet_remove"/>
|
||||
|
||||
<!-- <TextView-->
|
||||
<!-- android:id="@+id/makeAdministrator"-->
|
||||
<!-- style="@style/ActionItem"-->
|
||||
<!-- android:drawableStart="@drawable/ic_edit_white_24dp"-->
|
||||
<!-- android:textSize="@dimen/medium_font_size"-->
|
||||
<!-- android:textColor="@color/text"-->
|
||||
<!-- android:text="@string/fragment_edit_group_bottom_sheet_admin" />-->
|
||||
|
||||
</LinearLayout>
|
||||
|
@ -37,7 +37,7 @@
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/tickImageView"
|
||||
android:id="@+id/actionIndicatorImageView"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="24dp"
|
||||
android:layout_marginLeft="@dimen/medium_spacing"
|
||||
|
@ -1751,25 +1751,6 @@
|
||||
<string name="activity_create_closed_group_too_many_group_members_error">A closed group cannot have more than 10 members</string>
|
||||
<string name="activity_create_closed_group_invalid_session_id_error">One of the members of your group has an invalid Session ID</string>
|
||||
|
||||
<string name="activity_edit_closed_group_title">Edit Closed Group</string>
|
||||
<string name="activity_edit_closed_group_edit_text_hint">Enter a new group name</string>
|
||||
<string name="activity_edit_closed_group_explanation">Closed groups support up to 10 members and provide the same privacy protections as one-on-one sessions.</string>
|
||||
<string name="activity_edit_closed_group_edit_members">Edit members</string>
|
||||
<string name="activity_edit_closed_group_add_members">Add members</string>
|
||||
<string name="activity_edit_closed_group_group_name_missing_error">Group name can\'t be empty</string>
|
||||
<string name="activity_edit_closed_group_group_name_too_long_error">Please enter a shorter group name</string>
|
||||
<string name="activity_edit_closed_group_not_enough_group_members_error">Groups must have at least 2 group members</string>
|
||||
<string name="activity_edit_closed_group_too_many_group_members_error">A closed group cannot have more than 10 members</string>
|
||||
<string name="activity_edit_closed_group_invalid_session_id_error">One of the members of your group has an invalid Session ID</string>
|
||||
<string name="activity_edit_closed_group_confirm_removal">Are you sure you want to remove this user?</string>
|
||||
<string name="activity_edit_closed_group_member_removed">User removed from group</string>
|
||||
|
||||
|
||||
<string name="fragment_edit_group_bottom_sheet_remove">Remove user from group</string>
|
||||
<string name="fragment_edit_group_bottom_sheet_admin">Make this user a group admin</string>
|
||||
|
||||
<string name="activity_select_contacts_title">Select Contacts</string>
|
||||
|
||||
<string name="activity_join_public_chat_title">Join Open Group</string>
|
||||
<string name="activity_join_public_chat_error">Couldn\'t join group</string>
|
||||
<string name="activity_join_public_chat_enter_group_url_tab_title">Open Group URL</string>
|
||||
@ -1852,4 +1833,22 @@
|
||||
<string name="menu_apply_button">Apply</string>
|
||||
<string name="menu_done_button">Done</string>
|
||||
|
||||
<!-- Next round of translation -->
|
||||
|
||||
<string name="activity_edit_closed_group_title">Edit Closed Group</string>
|
||||
<string name="activity_edit_closed_group_edit_text_hint">Enter a new group name</string>
|
||||
<string name="activity_edit_closed_group_edit_members">Edit members</string>
|
||||
<string name="activity_edit_closed_group_add_members">Add members</string>
|
||||
<string name="activity_edit_closed_group_group_name_missing_error">Group name can\'t be empty</string>
|
||||
<string name="activity_edit_closed_group_group_name_too_long_error">Please enter a shorter group name</string>
|
||||
<string name="activity_edit_closed_group_not_enough_group_members_error">Groups must have at least 2 group members</string>
|
||||
<string name="activity_edit_closed_group_too_many_group_members_error">A closed group cannot have more than 10 members</string>
|
||||
<string name="activity_edit_closed_group_invalid_session_id_error">One of the members of your group has an invalid Session ID</string>
|
||||
<string name="activity_edit_closed_group_confirm_removal">Are you sure you want to remove this user?</string>
|
||||
<string name="activity_edit_closed_group_member_removed">User removed from group</string>
|
||||
|
||||
<string name="fragment_edit_group_bottom_sheet_remove">Remove user from group</string>
|
||||
|
||||
<string name="activity_select_contacts_title">Select Contacts</string>
|
||||
|
||||
</resources>
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user