Fix miscalculation of groups in common.

main
Alex Hart 2023-02-15 14:11:24 -04:00 zatwierdzone przez Greyson Parrelli
rodzic 6759b59507
commit e2c3db3eda
7 zmienionych plików z 141 dodań i 9 usunięć

Wyświetl plik

@ -224,6 +224,24 @@ class GroupTableTest {
assertEquals(g2, gr2.get().id)
}
@Test
fun givenASharedActiveGroupWithoutAThread_whenISearchForRecipientsWithGroupsInCommon_thenIExpectThatGroup() {
val groupInCommon = insertPushGroup()
val expected = Recipient.resolved(harness.others[0])
SignalDatabase.recipients.setProfileSharing(expected.id, false)
SignalDatabase.recipients.queryGroupMemberContacts("Buddy")!!.use {
assertTrue(it.moveToFirst())
assertEquals(1, it.count)
assertEquals(expected.id.toLong(), it.requireLong(RecipientTable.ID))
}
val groups = groupTable.getPushGroupsContainingMember(expected.id)
assertEquals(1, groups.size)
assertEquals(groups[0].id, groupInCommon)
}
private fun insertThread(groupId: GroupId): Long {
val groupRecipient = SignalDatabase.recipients.getByGroupId(groupId).get()
return SignalDatabase.threads.getOrCreateThreadIdFor(Recipient.resolved(groupRecipient))

Wyświetl plik

@ -30,7 +30,7 @@ abstract class MessageContentProcessorTest {
protected fun createNormalContentTestSubject(): MessageContentProcessor {
val context = ApplicationProvider.getApplicationContext<Application>()
return MessageContentProcessor.forNormalContent(context)
return MessageContentProcessor.create(context)
}
/**

Wyświetl plik

@ -100,7 +100,7 @@ class UsernameEditFragmentTest {
InstrumentationApplicationDependencyProvider.addMockWebRequestHandlers(
Put("/v1/accounts/username/reserved") {
MockResponse().success(ReserveUsernameResponse(username, "reservationToken"))
MockResponse().success(ReserveUsernameResponse(username))
},
Put("/v1/accounts/username/confirm") {
MockResponse().success()

Wyświetl plik

@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.contacts.paged
import android.content.Context
import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.R
/**
@ -12,6 +13,10 @@ data class GroupsInCommon(
) {
fun toDisplayText(context: Context): String {
return when (total) {
0 -> {
Log.w(TAG, "Member with no groups in common!")
return ""
}
1 -> context.getString(R.string.MessageRequestProfileView_member_of_one_group, names[0])
2 -> context.getString(R.string.MessageRequestProfileView_member_of_two_groups, names[0], names[1])
else -> context.getString(
@ -22,4 +27,8 @@ data class GroupsInCommon(
)
}
}
companion object {
private val TAG = Log.tag(GroupsInCommon::class.java)
}
}

Wyświetl plik

@ -565,7 +565,7 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
) as $MEMBER_GROUP_CONCAT
FROM ${MembershipTable.TABLE_NAME}
INNER JOIN $TABLE_NAME ON ${MembershipTable.TABLE_NAME}.${MembershipTable.GROUP_ID} = $TABLE_NAME.$GROUP_ID
INNER JOIN ${ThreadTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${ThreadTable.TABLE_NAME}.${ThreadTable.RECIPIENT_ID}
LEFT JOIN ${ThreadTable.TABLE_NAME} ON $TABLE_NAME.$RECIPIENT_ID = ${ThreadTable.TABLE_NAME}.${ThreadTable.RECIPIENT_ID}
""".toSingleLine()
var query = "${MembershipTable.TABLE_NAME}.${MembershipTable.RECIPIENT_ID} = ?"

Wyświetl plik

@ -1533,7 +1533,8 @@ public class MessageTable extends DatabaseTable implements MessageTypes, Recipie
return releaseChannelThreadId;
}
private void deleteGroupStoryReplies(long parentStoryId) {
@VisibleForTesting
public void deleteGroupStoryReplies(long parentStoryId) {
SQLiteDatabase db = databaseHelper.getSignalWritableDatabase();
String[] args = SqlUtil.buildArgs(parentStoryId);

Wyświetl plik

@ -1889,6 +1889,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="cab182760fdd57c575bf058f3e70e82986af7b12e5d655d40d93db99e85b8f29" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.emulator" name="proto" version="30.4.0">
<artifact name="proto-30.4.0.jar">
<sha256 value="ff16f78fa53558de311cd60f097b4b10608fdf142d01e3d4baee4de53ed5187b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.external.com-intellij" name="intellij-core" version="30.2.2">
<artifact name="intellij-core-30.2.2.jar">
<sha256 value="cdec995f5c1a8839b996188fa8e0212b303021a48d4eed9659fcb5a7df92a364" origin="Generated by Gradle"/>
@ -2017,6 +2022,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="a14d8608c7d266067829a8f866d11185e66baa085d9574a560296c7a0c6b835f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-device-provider-ddmlib" version="30.4.0">
<artifact name="android-device-provider-ddmlib-30.4.0.jar">
<sha256 value="be1a6211b816797e9d1bbc92a9a1679c538cbef6bf2b30c2b680730b29561912" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-device-provider-ddmlib-30.4.0.module">
<sha256 value="df79b592df8526f814dfd020cf7b66b6c378b5f6aa90787cbe92629e2cb8327e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-device-provider-ddmlib-proto" version="30.2.2">
<artifact name="android-device-provider-ddmlib-proto-30.2.2.jar">
<sha256 value="22f0c58716f74bc1ab0f09db7017b291225fdacd729ed9c288a3056061936dd2" origin="Generated by Gradle"/>
@ -2043,6 +2056,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="ded794aae84ecd9f0204c8ff2fc0129fe6dbb7e4efefc127c836e54d22472fb9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-device-provider-gradle" version="30.4.0">
<artifact name="android-device-provider-gradle-30.4.0.jar">
<sha256 value="81dfae21e8f354a57b489056608a8c99b9214e779399bdfecdfd24462a0e7d21" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-device-provider-gradle-30.4.0.module">
<sha256 value="6b7559de37068819364e575ada853d20f273389d41038412b520067a25683a99" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-device-provider-gradle-proto" version="30.2.2">
<artifact name="android-device-provider-gradle-proto-30.2.2.jar">
<sha256 value="da82f5ab3917f94e15b1c232c089b80bd3030487d4843d06d1bf25c667169857" origin="Generated by Gradle"/>
@ -2061,12 +2082,12 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="d8e9cdd6075752ed88422a5c37324d9aa6a2a0ea79abcbc61dcc89b8e47f8e98" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output" version="30.2.2">
<artifact name="android-test-plugin-host-additional-test-output-30.2.2.jar">
<sha256 value="f2d8ecd58abad30a65dd05ec6cb5b484d20bcb754e7b9d935f616867b54b9664" origin="Generated by Gradle"/>
<component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output" version="30.4.0">
<artifact name="android-test-plugin-host-additional-test-output-30.4.0.jar">
<sha256 value="dd1143524fd4fe19dc49f86b29adfd95d5b5c6ad96db7a4e78a9d1eb08460607" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-host-additional-test-output-30.2.2.module">
<sha256 value="d27309ab7bbfcb78e3664e9ab606551a507a6c98227b19249ed7659732b12b95" origin="Generated by Gradle"/>
<artifact name="android-test-plugin-host-additional-test-output-30.4.0.module">
<sha256 value="7a58187b0a1673efca69e22e191793bf5d11dc430df60c14833e4b8f4e3b5440" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-additional-test-output-proto" version="30.2.2">
@ -2095,6 +2116,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="2dcdd08a7fecd1b2ab0f66d427222a1ed540e3d3cbcfd74909e6dda62ec8f697" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-coverage" version="30.4.0">
<artifact name="android-test-plugin-host-coverage-30.4.0.jar">
<sha256 value="1f132cf35f11762529352c68e9fe2f261bd9329e17918a2905c735c02b244466" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-host-coverage-30.4.0.module">
<sha256 value="b9724a85b870a1594aceb5b0161f123ceafaea057e1b4b558243debda1bcf3eb" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-coverage-proto" version="30.2.2">
<artifact name="android-test-plugin-host-coverage-proto-30.2.2.jar">
<sha256 value="00dab33f9b1aa13cb654a45bf47363a157f90a43f54ab3e5dd0aa4a21d3120d8" origin="Generated by Gradle"/>
@ -2121,6 +2150,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="43d4b4e3b9d56be8eb814d66012067aaa6d6dc8a6354cf3dfd7aee0d6265528a" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-device-info" version="30.4.0">
<artifact name="android-test-plugin-host-device-info-30.4.0.jar">
<sha256 value="f715bc5e75b5ac9bdd2acc2896c1f82f408c539178c24312b2aa117a44c0efec" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-host-device-info-30.4.0.module">
<sha256 value="3d0811bb6c3741082cedc9b8152d57838ce4c58433512deada3b430a833a1e92" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-device-info-proto" version="30.2.2">
<artifact name="android-test-plugin-host-device-info-proto-30.2.2.jar">
<sha256 value="b7841f4c51d74282281a449460e9effc00afbe1cc474ca0e167f43f22702939e" origin="Generated manually"/>
@ -2129,6 +2166,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="65063895657eeb89addd5565c01663525f603fa1a9ed65340802a9b2ab394ad9" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-device-info-proto" version="30.4.0">
<artifact name="android-test-plugin-host-device-info-proto-30.4.0.jar">
<sha256 value="049716e22d9279aeac8363d479ffac11ad7d8bf1a92f5a885268f6aa388b307b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-logcat" version="30.2.2">
<artifact name="android-test-plugin-host-logcat-30.2.2.jar">
<sha256 value="f4c200202bd728500208ce9828e59bedfbda8d7c5c1bf6e50cb3ca32b5466fb8" origin="Generated manually"/>
@ -2137,6 +2179,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="7d0939b4af3dfbf52c6d8705a6df6c2e0ed32a8c90e43ebfefabf8293b947dee" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-logcat" version="30.4.0">
<artifact name="android-test-plugin-host-logcat-30.4.0.jar">
<sha256 value="3ef9258c7bc4395d391d6b9115afe4119abf1b72fdc8bf1a67a544c643fb857f" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-host-logcat-30.4.0.module">
<sha256 value="393e2541031443e4a696d69bf5052506a7c2d79bac7ae3da7b92f262f781750e" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-retention" version="30.2.2">
<artifact name="android-test-plugin-host-retention-30.2.2.jar">
<sha256 value="0cdc180ccab9c3f29c5b5ab7bcb20647a689b6d59ceea32f7446b2d4e0ed8950" origin="Generated manually"/>
@ -2145,6 +2195,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="63e7e7329ef74deabc47e52dc23075831bea65745482335f62978912b0269e7a" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-retention" version="30.4.0">
<artifact name="android-test-plugin-host-retention-30.4.0.jar">
<sha256 value="d6a081b3f7984100f2b0d6b697ab55ecd0b03e65e5ec075b4822fba8a44e7b7e" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-host-retention-30.4.0.module">
<sha256 value="36e2db8264cfccb35f5f743f10311658a26c24adec107a56ba2b1e9ac4a83e4a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-host-retention-proto" version="30.2.2">
<artifact name="android-test-plugin-host-retention-proto-30.2.2.jar">
<sha256 value="3e0925e984ff3c61d0f5d76fb8dd52e9b7717eaa88080ad0ee93ff3ee38c2246" origin="Generated by Gradle"/>
@ -2171,6 +2229,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="48df7f4a5da5bf8fcff1690ce49fd8a738e549214b9e4d7204468dfab0fb7baa" origin="Generated manually"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle" version="30.4.0">
<artifact name="android-test-plugin-result-listener-gradle-30.4.0.jar">
<sha256 value="3c39443c1be42bd09c5bb7fadfdd18599d4cb426392423ddbfee4d33eea7fa4f" origin="Generated by Gradle"/>
</artifact>
<artifact name="android-test-plugin-result-listener-gradle-30.4.0.module">
<sha256 value="5cd347ee8bacd56af54d6f19033fb1a68281cbc5d34d468fa80b43e1af5fdcc1" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.android.tools.utp" name="android-test-plugin-result-listener-gradle-proto" version="30.2.2">
<artifact name="android-test-plugin-result-listener-gradle-proto-30.2.2.jar">
<sha256 value="8a634705209c5004e14d57b72d79c71a042fe0e9714f0c0b67d28828daf725d8" origin="Generated by Gradle"/>
@ -2903,21 +2969,41 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="e3438a2b4e664434e79d8f4998ca34ceb9cbf9cea9f8b061d9a8b3e7f4ae53af" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="android-device-provider-local" version="0.0.8-alpha08">
<artifact name="android-device-provider-local-0.0.8-alpha08.jar">
<sha256 value="a945c7d044f6dd6fae7e315b02dc5cfa75432df41c624c3fb0baeecb841a95ef" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="android-driver-instrumentation" version="0.0.8-alpha07">
<artifact name="android-driver-instrumentation-0.0.8-alpha07.jar">
<sha256 value="f22f504047649b3629c535c317312ee8838949568f983551636ec65d16bd4e7a" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="android-driver-instrumentation" version="0.0.8-alpha08">
<artifact name="android-driver-instrumentation-0.0.8-alpha08.jar">
<sha256 value="c4436abe8b83e5fc7341b2314fd6b327feb8a7b64c294f8b9d08b8b3be214afc" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="android-test-plugin" version="0.0.8-alpha07">
<artifact name="android-test-plugin-0.0.8-alpha07.jar">
<sha256 value="0da8b65d8bb0c45a8c4c359ce9125ea2f5bf553a64f8c16421c33623461f1f50" origin="Generated manually"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="android-test-plugin" version="0.0.8-alpha08">
<artifact name="android-test-plugin-0.0.8-alpha08.jar">
<sha256 value="27a7ca80d78e568f29e2e59487202d1918e7ba26ff511c756e35e8746baa6e93" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="core" version="0.0.8-alpha07">
<artifact name="core-0.0.8-alpha07.jar">
<sha256 value="67def226f0d56ec093292d250bded3d7728cfa9f433cc6d44a1ccd25a87afd6b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="core" version="0.0.8-alpha08">
<artifact name="core-0.0.8-alpha08.jar">
<sha256 value="88f278028d24b154435dd8563dff4c618bb737b6539d277e46327d898243e722" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="core-proto" version="0.0.8-alpha07">
<artifact name="core-proto-0.0.8-alpha07.jar">
<sha256 value="4645833caf5cf615d5ddb01a48f2188ec988370f103969e2fb931f8319bf3c0c" origin="Generated by Gradle"/>
@ -2933,6 +3019,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="3c590e8d9f2b601a1c2e6ffe83a8cecd2d53286eeced7fec5ce40837d6adfe8f" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.testing.platform" name="launcher" version="0.0.8-alpha08">
<artifact name="launcher-0.0.8-alpha08.jar">
<sha256 value="b12982e7c34c56e480b18d49f1405a8965a9b79823c3805a488c5bc642e579d9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="com.google.truth" name="truth" version="0.44">
<artifact name="truth-0.44.jar">
<sha256 value="a9e6796786c9c77a5fe19b08e72fe0a620d53166df423d8861af9ebef4dc4247" origin="Generated by Gradle"/>
@ -5368,6 +5459,11 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="67c807c236e19c32020fc5ba82b273fda1e76cad50693f0917efe6071f159db9" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.6.3">
<artifact name="kotlinx-coroutines-core-1.6.3.module">
<sha256 value="14039719f2100d91e0ab220f834f7e5f3578a81026137e4ec16a5c83ecd1740b" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core" version="1.6.4">
<artifact name="kotlinx-coroutines-core-1.6.4.module">
<sha256 value="a6eed4a1835588e7c84fcd7b0475fce9a7b3444c870ebc797b88ba64ccf4576b" origin="Generated by Gradle"/>
@ -5408,6 +5504,14 @@ https://docs.gradle.org/current/userguide/dependency_verification.html
<sha256 value="f31b672a11feb0ee49d5d49143067e93c33f5866768ae42b9a324b53cdad36e1" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.3">
<artifact name="kotlinx-coroutines-core-jvm-1.6.3.jar">
<sha256 value="58a497ab595d83bbbf28892a8b34ab57d94309a8742ee0eba43cb86408d235bf" origin="Generated by Gradle"/>
</artifact>
<artifact name="kotlinx-coroutines-core-jvm-1.6.3.module">
<sha256 value="7d123a4dc35526324c57b2bdabfd73870fca623e5f9be4ad6926f403b284a975" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="org.jetbrains.kotlinx" name="kotlinx-coroutines-core-jvm" version="1.6.4">
<artifact name="kotlinx-coroutines-core-jvm-1.6.4.jar">
<sha256 value="c24c8bb27bb320c4a93871501a7e5e0c61607638907b197aef675513d4c820be" origin="Generated by Gradle"/>