Skip to content

Commit 37c6673

Browse files
Prepare for release 1.29.1 (#1683)
* Version number bump * Fix search to include groupsV2 and communities * More search fixes * Set long press to null as it otherwise gets recycled into other views * Fix contacts being created incorrectly on group threads (for legacy receiver) * SES-4768 - moderators can "delete for everyone" in a community * Clean up * Remove logs --------- Co-authored-by: ThomasSession <[email protected]>
2 parents 8a4295c + a44aa47 commit 37c6673

File tree

12 files changed

+91
-181
lines changed

12 files changed

+91
-181
lines changed

app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ configurations.configureEach {
2626
exclude(module = "commons-logging")
2727
}
2828

29-
val canonicalVersionCode = 429
30-
val canonicalVersionName = "1.29.0"
29+
val canonicalVersionCode = 430
30+
val canonicalVersionName = "1.29.1"
3131

3232
val postFixSize = 10
3333
val abiPostFix = mapOf(

app/src/main/java/org/session/libsession/messaging/sending_receiving/ReceivedMessageHandler.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,8 +409,10 @@ class ReceivedMessageHandler @Inject constructor(
409409
runThreadUpdate = runThreadUpdate
410410
) ?: return null
411411

412-
// If we have previously "hidden" the sender, we should flip the flag back to visible
413-
if (senderAddress is Address.Standard && senderAddress.address != userPublicKey) {
412+
// If we have previously "hidden" the sender, we should flip the flag back to visible,
413+
// and this should only be done only for 1:1 messages
414+
if (senderAddress is Address.Standard && senderAddress.address != userPublicKey
415+
&& context.threadAddress is Address.Standard) {
414416
val existingContact =
415417
configFactory.withUserConfigs { it.contacts.get(senderAddress.accountId.hexString) }
416418

app/src/main/java/org/session/libsession/utilities/Address.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ sealed interface Address : Parcelable, Comparable<Address> {
175175
/**
176176
* A marker interface for addresses that represent a group-like entity.
177177
*/
178-
sealed interface GroupLike : Address
178+
sealed interface GroupLike : Conversable
179179

180180
sealed interface WithAccountId {
181181
val accountId: AccountId

app/src/main/java/org/thoughtcrime/securesms/contacts/ContactAccessor.java

Lines changed: 0 additions & 137 deletions
This file was deleted.

app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationViewModel.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,10 @@ class ConversationViewModel @AssistedInject constructor(
225225
it.currentUserRole in EnumSet.of(GroupMemberRole.ADMIN, GroupMemberRole.HIDDEN_ADMIN)
226226
}
227227

228+
val canModerate: StateFlow<Boolean> = recipientFlow.mapStateFlow(viewModelScope) {
229+
it.currentUserRole.canModerate
230+
}
231+
228232
private val _searchOpened = MutableStateFlow(false)
229233

230234
val appBarData: StateFlow<ConversationAppBarData> = combine(
@@ -750,7 +754,7 @@ class ConversationViewModel @AssistedInject constructor(
750754
}
751755

752756
// If the user is an admin or is interacting with their own message And are allowed to delete for everyone
753-
(isAdmin.value || allSentByCurrentUser) && canDeleteForEveryone -> {
757+
(canModerate.value || allSentByCurrentUser) && canDeleteForEveryone -> {
754758
_dialogsState.update {
755759
it.copy(
756760
deleteEveryone = DeleteForEveryoneDialogData(

app/src/main/java/org/thoughtcrime/securesms/database/helpers/SQLCipherOpenHelper.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,6 @@ public void postKey(SQLiteConnection connection) {
146146
);
147147

148148
this.jsonProvider = jsonProvider;
149-
150-
Log.d(TAG, "SQLCipherOpenHelper created with database secret: " + databaseSecret.asString());
151149
}
152150

153151
@Override

app/src/main/java/org/thoughtcrime/securesms/home/HomeActivity.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ class HomeActivity : ScreenLockActionBarActivity(),
172172
is GlobalSearchAdapter.Model.GroupConversation -> ConversationActivityV2
173173
.createIntent(
174174
this,
175-
address = Address.fromSerialized(model.groupId) as Address.Conversable
175+
address = model.address
176176
)
177177

178178
else -> {
@@ -466,7 +466,7 @@ class HomeActivity : ScreenLockActionBarActivity(),
466466
.map {
467467
GlobalSearchAdapter.Model.Contact(
468468
contact = it.value,
469-
isSelf = it.value.address.address == publicKey,
469+
isSelf = it.value.isSelf,
470470
showProBadge = it.value.proStatus.shouldShowProBadge()
471471
)
472472
}
@@ -479,8 +479,9 @@ class HomeActivity : ScreenLockActionBarActivity(),
479479
isSelf = it.isSelf,
480480
showProBadge = it.proStatus.shouldShowProBadge()
481481
) } +
482-
threads.map {
483-
GlobalSearchAdapter.Model.GroupConversation(it, showProBadge = recipientRepository.getRecipientSync(it.encodedId.toAddress()).proStatus.shouldShowProBadge())
482+
threads.mapNotNull {
483+
if(it.address is Address.GroupLike) GlobalSearchAdapter.Model.GroupConversation(it)
484+
else null
484485
}
485486

486487
private val GlobalSearchResult.messageResults: List<GlobalSearchAdapter.Model> get() {

app/src/main/java/org/thoughtcrime/securesms/home/search/GlobalSearchAdapter.kt

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,11 @@ import org.session.libsession.messaging.MessagingModuleConfiguration
1414
import org.session.libsession.utilities.Address
1515
import org.session.libsession.utilities.GroupRecord
1616
import org.session.libsession.utilities.recipients.Recipient
17+
import org.session.libsession.utilities.recipients.RecipientData
1718
import org.session.libsession.utilities.recipients.displayName
19+
import org.session.libsession.utilities.recipients.shouldShowProBadge
1820
import org.session.libsignal.utilities.AccountId
21+
import org.session.libsignal.utilities.Log
1922
import org.thoughtcrime.securesms.search.model.MessageResult
2023
import org.thoughtcrime.securesms.ui.GetString
2124
import org.thoughtcrime.securesms.util.DateUtils
@@ -147,6 +150,8 @@ class GlobalSearchAdapter(
147150
onContactLongPressed(model)
148151
true
149152
}
153+
} else {
154+
binding.root.setOnLongClickListener(null)
150155
}
151156
}
152157
}
@@ -167,26 +172,39 @@ class GlobalSearchAdapter(
167172
this(contact.address as Address.Conversable, contact.displayName(false), isSelf, showProBadge)
168173
}
169174
data class GroupConversation(
170-
val isLegacy: Boolean,
171-
val groupId: String,
175+
val address: Address.GroupLike,
172176
val title: String,
173177
val legacyMembersString: String?,
174178
val showProBadge: Boolean
175179
) : Model {
176-
constructor(groupRecord: GroupRecord, showProBadge: Boolean):
180+
constructor(recipient: Recipient):
177181
this(
178-
isLegacy = groupRecord.isLegacyGroup,
179-
groupId = groupRecord.encodedId,
180-
title = groupRecord.title,
181-
legacyMembersString = if (groupRecord.isLegacyGroup) {
182-
val recipients = groupRecord.members.map {
183-
MessagingModuleConfiguration.shared.recipientRepository.getRecipientSync(it)
182+
address = recipient.address as Address.GroupLike,
183+
title = recipient.displayName(),
184+
legacyMembersString = when (recipient.address) {
185+
is Address.LegacyGroup -> {
186+
val data = (recipient.data as? RecipientData.LegacyGroup)
187+
if(data == null) null
188+
else {
189+
if(data.secondMember != null) "${data.firstMember.displayName()}, ${data.secondMember.displayName()}".plus(
190+
if(data.members.size > 2) ", ..." else ""
191+
)
192+
else data.firstMember.displayName().plus(
193+
if(data.members.size > 1) ", ..." else ""
194+
)
195+
}
196+
}
197+
198+
is Address.Group -> {
199+
val data = (recipient.data as? RecipientData.Group)
200+
data?.partial?.members?.joinToString(", ") { it.name }
201+
}
202+
203+
else -> {
204+
null
184205
}
185-
recipients.joinToString(transform = { it.searchName })
186-
} else {
187-
null
188206
},
189-
showProBadge = showProBadge
207+
showProBadge = recipient.proStatus.shouldShowProBadge()
190208
)
191209
}
192210
data class Message(val messageResult: MessageResult, val unread: Int, val isSelf: Boolean, val showProBadge: Boolean) : Model

app/src/main/java/org/thoughtcrime/securesms/home/search/GlobalSearchAdapterUtils.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.DiffUtil
1111
import network.loki.messenger.R
1212
import org.session.libsession.messaging.MessagingModuleConfiguration
1313
import org.session.libsession.utilities.Address
14+
import org.session.libsession.utilities.isLegacyGroup
1415
import org.session.libsession.utilities.recipients.Recipient
1516
import org.session.libsession.utilities.recipients.displayName
1617
import org.session.libsession.utilities.truncateIdForDisplay
@@ -111,10 +112,9 @@ private fun ComposeView.setupTitleWithBadge(title: String, showProBadge: Boolean
111112

112113
fun ContentView.bindModel(query: String?, model: GroupConversation) {
113114
binding.searchResultProfilePicture.isVisible = true
114-
binding.searchResultSubtitle.isVisible = model.isLegacy
115115
binding.searchResultTimestamp.isVisible = false
116116
val threadRecipient = MessagingModuleConfiguration.shared.recipientRepository.getRecipientSync(
117-
Address.fromSerialized(model.groupId)
117+
model.address
118118
)
119119

120120
binding.searchResultProfilePicture.setThemedContent {
@@ -130,7 +130,10 @@ fun ContentView.bindModel(query: String?, model: GroupConversation) {
130130
)
131131

132132
if (model.legacyMembersString != null) {
133+
binding.searchResultSubtitle.isVisible = true
133134
binding.searchResultSubtitle.text = getHighlight(query, model.legacyMembersString)
135+
} else {
136+
binding.searchResultSubtitle.isVisible = false
134137
}
135138
}
136139

app/src/main/java/org/thoughtcrime/securesms/home/search/GlobalSearchResult.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.thoughtcrime.securesms.search.model.SearchResult
88
data class GlobalSearchResult(
99
val query: String,
1010
val contacts: List<Recipient> = emptyList(),
11-
val threads: List<GroupRecord> = emptyList(),
11+
val threads: List<Recipient> = emptyList(),
1212
val messages: List<MessageResult> = emptyList(),
1313
val showNoteToSelf: Boolean = false
1414
) {

0 commit comments

Comments
 (0)