mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-20 07:18:25 +00:00
Minor refactoring
This commit is contained in:
parent
18870b7e7b
commit
5b641f4415
@ -89,19 +89,6 @@
|
|||||||
|
|
||||||
</RelativeLayout>
|
</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
|
<View
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
|
@ -17,12 +17,4 @@
|
|||||||
android:textColor="@color/text"
|
android:textColor="@color/text"
|
||||||
android:text="@string/fragment_edit_group_bottom_sheet_remove"/>
|
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>
|
</LinearLayout>
|
||||||
|
@ -37,7 +37,7 @@
|
|||||||
android:layout_weight="1" />
|
android:layout_weight="1" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/tickImageView"
|
android:id="@+id/actionIndicatorImageView"
|
||||||
android:layout_width="24dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="24dp"
|
android:layout_height="24dp"
|
||||||
android:layout_marginLeft="@dimen/medium_spacing"
|
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_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_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_title">Join Open Group</string>
|
||||||
<string name="activity_join_public_chat_error">Couldn\'t join 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>
|
<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_apply_button">Apply</string>
|
||||||
<string name="menu_done_button">Done</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>
|
</resources>
|
||||||
|
@ -28,25 +28,28 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences
|
|||||||
import org.whispersystems.libsignal.util.guava.Optional
|
import org.whispersystems.libsignal.util.guava.Optional
|
||||||
import java.lang.ref.WeakReference
|
import java.lang.ref.WeakReference
|
||||||
|
|
||||||
const val RESULT_CODE_CREATE_CLOSED_GROUP = 100
|
|
||||||
|
|
||||||
class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderManager.LoaderCallbacks<List<String>> {
|
class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderManager.LoaderCallbacks<List<String>> {
|
||||||
|
|
||||||
private lateinit var selectContactsAdapter: SelectContactsAdapter
|
|
||||||
|
|
||||||
private var members = listOf<String>()
|
private var members = listOf<String>()
|
||||||
set(value) {
|
set(value) {
|
||||||
field = value
|
field = value
|
||||||
selectContactsAdapter.members = value
|
selectContactsAdapter.members = value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val selectContactsAdapter by lazy {
|
||||||
|
SelectContactsAdapter(this, GlideApp.with(this))
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val closedGroupCreatedResultCode = 100
|
||||||
|
}
|
||||||
|
|
||||||
// region Lifecycle
|
// region Lifecycle
|
||||||
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, isReady: Boolean) {
|
||||||
super.onCreate(savedInstanceState, isReady)
|
super.onCreate(savedInstanceState, isReady)
|
||||||
|
|
||||||
setContentView(R.layout.activity_create_closed_group)
|
setContentView(R.layout.activity_create_closed_group)
|
||||||
supportActionBar!!.title = resources.getString(R.string.activity_create_closed_group_title)
|
supportActionBar!!.title = resources.getString(R.string.activity_create_closed_group_title)
|
||||||
|
|
||||||
this.selectContactsAdapter = SelectContactsAdapter(this, GlideApp.with(this))
|
|
||||||
recyclerView.adapter = this.selectContactsAdapter
|
recyclerView.adapter = this.selectContactsAdapter
|
||||||
recyclerView.layoutManager = LinearLayoutManager(this)
|
recyclerView.layoutManager = LinearLayoutManager(this)
|
||||||
|
|
||||||
@ -91,7 +94,7 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderM
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun createNewPrivateChat() {
|
private fun createNewPrivateChat() {
|
||||||
setResult(RESULT_CODE_CREATE_CLOSED_GROUP)
|
setResult(Companion.closedGroupCreatedResultCode)
|
||||||
finish()
|
finish()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,17 +148,17 @@ class CreateClosedGroupActivity : PassphraseRequiredActionBarActivity(), LoaderM
|
|||||||
val masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(this) ?: TextSecurePreferences.getLocalNumber(this)
|
val masterHexEncodedPublicKey = TextSecurePreferences.getMasterHexEncodedPublicKey(this) ?: TextSecurePreferences.getLocalNumber(this)
|
||||||
val admin = Recipient.from(this, Address.fromSerialized(masterHexEncodedPublicKey), false)
|
val admin = Recipient.from(this, Address.fromSerialized(masterHexEncodedPublicKey), false)
|
||||||
CreateClosedGroupTask(WeakReference(this), null, name.toString(), recipients, setOf( admin ))
|
CreateClosedGroupTask(WeakReference(this), null, name.toString(), recipients, setOf( admin ))
|
||||||
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
|
.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)
|
||||||
}
|
}
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Tasks
|
// region Group Creation Task (Legacy)
|
||||||
internal class CreateClosedGroupTask(
|
internal class CreateClosedGroupTask(
|
||||||
private val activity: WeakReference<CreateClosedGroupActivity>,
|
private val activity: WeakReference<CreateClosedGroupActivity>,
|
||||||
private val profilePicture: Bitmap?,
|
private val profilePicture: Bitmap?,
|
||||||
private val name: String?,
|
private val name: String?,
|
||||||
private val members: Set<Recipient>,
|
private val members: Set<Recipient>,
|
||||||
private val admins: Set<Recipient>
|
private val admins: Set<Recipient>
|
||||||
) : AsyncTask<Void, Void, Optional<GroupManager.GroupActionResult>>() {
|
) : AsyncTask<Void, Void, Optional<GroupManager.GroupActionResult>>() {
|
||||||
|
|
||||||
override fun doInBackground(vararg params: 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) {
|
private fun openConversationActivity(context: Context, threadId: Long, recipient: Recipient) {
|
||||||
val intent = Intent(context, ConversationActivity::class.java)
|
val intent = Intent(context, ConversationActivity::class.java)
|
||||||
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId)
|
intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId)
|
||||||
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT)
|
intent.putExtra(ConversationActivity.DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT)
|
||||||
intent.putExtra(ConversationActivity.ADDRESS_EXTRA, recipient.address)
|
intent.putExtra(ConversationActivity.ADDRESS_EXTRA, recipient.address)
|
||||||
context.startActivity(intent)
|
context.startActivity(intent)
|
||||||
}
|
}
|
||||||
|
// endregion
|
@ -45,7 +45,7 @@ class EditClosedGroupMembersAdapter(
|
|||||||
context,
|
context,
|
||||||
Address.fromSerialized(member), false),
|
Address.fromSerialized(member), false),
|
||||||
glide,
|
glide,
|
||||||
(if (lockedMember) UserView.ActionIndicator.NONE else UserView.ActionIndicator.MENU))
|
(if (lockedMember) UserView.ActionIndicator.None else UserView.ActionIndicator.Menu))
|
||||||
|
|
||||||
if (!lockedMember) {
|
if (!lockedMember) {
|
||||||
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
|
viewHolder.view.setOnClickListener { this.memberClickListener?.invoke(member) }
|
||||||
|
@ -223,7 +223,7 @@ class HomeActivity : PassphraseRequiredActionBarActivity, ConversationClickListe
|
|||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
super.onActivityResult(requestCode, resultCode, data)
|
super.onActivityResult(requestCode, resultCode, data)
|
||||||
if (resultCode == RESULT_CODE_CREATE_CLOSED_GROUP) {
|
if (resultCode == CreateClosedGroupActivity.closedGroupCreatedResultCode) {
|
||||||
createNewPrivateChat()
|
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,
|
context,
|
||||||
Address.fromSerialized(member), false),
|
Address.fromSerialized(member), false),
|
||||||
glide,
|
glide,
|
||||||
UserView.ActionIndicator.CHECK_BOX,
|
UserView.ActionIndicator.Tick,
|
||||||
isSelected)
|
isSelected)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ class ContactSelectionListAdapter(private val context: Context, private val mult
|
|||||||
viewHolder.view.bind(
|
viewHolder.view.bind(
|
||||||
item.recipient,
|
item.recipient,
|
||||||
glide,
|
glide,
|
||||||
if (multiSelect) UserView.ActionIndicator.CHECK_BOX else UserView.ActionIndicator.NONE,
|
if (multiSelect) UserView.ActionIndicator.Tick else UserView.ActionIndicator.None,
|
||||||
isSelected)
|
isSelected)
|
||||||
} else if (viewHolder is DividerViewHolder) {
|
} else if (viewHolder is DividerViewHolder) {
|
||||||
item as ContactSelectionListItem.Header
|
item as ContactSelectionListItem.Header
|
||||||
|
@ -15,6 +15,12 @@ import org.whispersystems.signalservice.loki.protocol.mentions.MentionsManager
|
|||||||
|
|
||||||
class UserView : LinearLayout {
|
class UserView : LinearLayout {
|
||||||
|
|
||||||
|
enum class ActionIndicator {
|
||||||
|
None,
|
||||||
|
Menu,
|
||||||
|
Tick
|
||||||
|
}
|
||||||
|
|
||||||
// region Lifecycle
|
// region Lifecycle
|
||||||
constructor(context: Context) : super(context) {
|
constructor(context: Context) : super(context) {
|
||||||
setUpViewHierarchy()
|
setUpViewHierarchy()
|
||||||
@ -40,12 +46,6 @@ class UserView : LinearLayout {
|
|||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
// region Updating
|
// region Updating
|
||||||
enum class ActionIndicator {
|
|
||||||
NONE,
|
|
||||||
MENU,
|
|
||||||
CHECK_BOX,
|
|
||||||
}
|
|
||||||
|
|
||||||
fun bind(user: Recipient, glide: GlideRequests, actionIndicator: ActionIndicator, isSelected: Boolean = false) {
|
fun bind(user: Recipient, glide: GlideRequests, actionIndicator: ActionIndicator, isSelected: Boolean = false) {
|
||||||
val address = user.address.serialize()
|
val address = user.address.serialize()
|
||||||
if (user.isGroupRecipient) {
|
if (user.isGroupRecipient) {
|
||||||
@ -55,35 +55,32 @@ class UserView : LinearLayout {
|
|||||||
profilePictureView.isRSSFeed = true
|
profilePictureView.isRSSFeed = true
|
||||||
} else {
|
} else {
|
||||||
val threadID = GroupManager.getThreadIDFromGroupID(address, context)
|
val threadID = GroupManager.getThreadIDFromGroupID(address, context)
|
||||||
val users = MentionsManager.shared.userPublicKeyCache[threadID]?.toList()
|
val users = MentionsManager.shared.userPublicKeyCache[threadID]?.toList() ?: listOf()
|
||||||
?: listOf()
|
|
||||||
val randomUsers = users.sorted() // Sort to provide a level of stability
|
val randomUsers = users.sorted() // Sort to provide a level of stability
|
||||||
profilePictureView.publicKey = randomUsers.getOrNull(0) ?: ""
|
profilePictureView.publicKey = randomUsers.getOrNull(0) ?: ""
|
||||||
profilePictureView.additionalPublicKey = randomUsers.getOrNull(1) ?: ""
|
profilePictureView.additionalPublicKey = randomUsers.getOrNull(1) ?: ""
|
||||||
profilePictureView.isRSSFeed = false
|
profilePictureView.isRSSFeed = false
|
||||||
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
profilePictureView.publicKey = address
|
profilePictureView.publicKey = address
|
||||||
profilePictureView.additionalPublicKey = null
|
profilePictureView.additionalPublicKey = null
|
||||||
profilePictureView.isRSSFeed = false
|
profilePictureView.isRSSFeed = false
|
||||||
}
|
}
|
||||||
tickImageView.setImageResource(R.drawable.ic_edit_white_24dp)
|
actionIndicatorImageView.setImageResource(R.drawable.ic_edit_white_24dp)
|
||||||
profilePictureView.glide = glide
|
profilePictureView.glide = glide
|
||||||
profilePictureView.update()
|
profilePictureView.update()
|
||||||
nameTextView.text = user.name ?: "Unknown Contact"
|
nameTextView.text = user.name ?: "Unknown Contact"
|
||||||
|
|
||||||
when (actionIndicator) {
|
when (actionIndicator) {
|
||||||
ActionIndicator.NONE -> {
|
ActionIndicator.None -> {
|
||||||
tickImageView.visibility = View.GONE
|
actionIndicatorImageView.visibility = View.GONE
|
||||||
}
|
}
|
||||||
ActionIndicator.MENU -> {
|
ActionIndicator.Menu -> {
|
||||||
tickImageView.visibility = View.VISIBLE
|
actionIndicatorImageView.visibility = View.VISIBLE
|
||||||
tickImageView.setImageResource(R.drawable.ic_more_horiz_white)
|
actionIndicatorImageView.setImageResource(R.drawable.ic_more_horiz_white)
|
||||||
}
|
}
|
||||||
ActionIndicator.CHECK_BOX -> {
|
ActionIndicator.Tick -> {
|
||||||
tickImageView.visibility = View.VISIBLE
|
actionIndicatorImageView.visibility = View.VISIBLE
|
||||||
tickImageView.setImageResource(if (isSelected) R.drawable.ic_circle_check else R.drawable.ic_circle)
|
actionIndicatorImageView.setImageResource(if (isSelected) R.drawable.ic_circle_check else R.drawable.ic_circle)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user