Restore group profile pictures after restore.
This commit is contained in:
parent
f1782d06a4
commit
2f381863ed
2 changed files with 20 additions and 8 deletions
|
@ -66,6 +66,8 @@ import org.thoughtcrime.securesms.database.SignalDatabase
|
|||
import org.thoughtcrime.securesms.database.model.InAppPaymentSubscriberRecord
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.groups.GroupId
|
||||
import org.thoughtcrime.securesms.jobmanager.Job
|
||||
import org.thoughtcrime.securesms.jobs.AvatarGroupsV2DownloadJob
|
||||
import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob
|
||||
import org.thoughtcrime.securesms.jobs.RestoreAttachmentJob
|
||||
import org.thoughtcrime.securesms.keyvalue.KeyValueStore
|
||||
|
@ -890,16 +892,18 @@ object BackupRepository {
|
|||
AppDependencies.recipientCache.warmUp()
|
||||
|
||||
val groupJobs = SignalDatabase.groups.getGroups().use { groups ->
|
||||
val jobs = mutableListOf<Job>()
|
||||
groups
|
||||
.asSequence()
|
||||
.mapNotNull { group ->
|
||||
if (group.id.isV2) {
|
||||
RequestGroupV2InfoJob(group.id as GroupId.V2)
|
||||
} else {
|
||||
null
|
||||
.filter { it.id.isV2 }
|
||||
.forEach { group ->
|
||||
jobs.add(RequestGroupV2InfoJob(group.id as GroupId.V2))
|
||||
val avatarKey = group.requireV2GroupProperties().avatarKey
|
||||
if (avatarKey.isNotEmpty()) {
|
||||
jobs.add(AvatarGroupsV2DownloadJob(group.id.requireV2(), avatarKey))
|
||||
}
|
||||
}
|
||||
.toList()
|
||||
jobs
|
||||
}
|
||||
AppDependencies.jobManager.addAll(groupJobs)
|
||||
stopwatch.split("group-jobs")
|
||||
|
|
|
@ -78,7 +78,9 @@ import java.util.stream.Collectors
|
|||
import javax.annotation.CheckReturnValue
|
||||
import kotlin.math.abs
|
||||
|
||||
class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseTable(context, databaseHelper), RecipientIdDatabaseReference {
|
||||
class GroupTable(context: Context?, databaseHelper: SignalDatabase?) :
|
||||
DatabaseTable(context, databaseHelper),
|
||||
RecipientIdDatabaseReference {
|
||||
|
||||
companion object {
|
||||
private val TAG = Log.tag(GroupTable::class.java)
|
||||
|
@ -1097,7 +1099,9 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
|
|||
}
|
||||
}
|
||||
|
||||
class Reader(val cursor: Cursor?) : Closeable, ContactSearchIterator<GroupRecord> {
|
||||
class Reader(val cursor: Cursor?) :
|
||||
Closeable,
|
||||
ContactSearchIterator<GroupRecord> {
|
||||
|
||||
fun getNext(): GroupRecord? {
|
||||
return if (cursor == null || !cursor.moveToNext()) {
|
||||
|
@ -1163,6 +1167,10 @@ class GroupTable(context: Context?, databaseHelper: SignalDatabase?) : DatabaseT
|
|||
DecryptedGroupUtil.bannedMembersToServiceIdSet(decryptedGroup.bannedMembers)
|
||||
}
|
||||
|
||||
val avatarKey: String by lazy {
|
||||
decryptedGroup.avatar
|
||||
}
|
||||
|
||||
fun isAdmin(recipient: Recipient): Boolean {
|
||||
val aci = recipient.aci
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue