diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt index 118536571..01308ac0b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/database/Storage.kt @@ -1290,7 +1290,16 @@ open class Storage( membersConfig.get(it) == null } filteredMembers.forEach { memberSessionId -> + val contact = getContactWithSessionID(memberSessionId) + val name = contact?.name + val url = contact?.profilePictureURL + val key = contact?.profilePictureEncryptionKey + val userPic = if (url != null && key != null) { + UserPic(url, key) + } else UserPic.DEFAULT val member = membersConfig.getOrConstruct(memberSessionId).copy( + name = name, + profilePicture = userPic, invitePending = true, ) membersConfig.set(member) diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/compose/EditGroup.kt b/app/src/main/java/org/thoughtcrime/securesms/groups/compose/EditGroup.kt index 39863c941..e5270a4f6 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/compose/EditGroup.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/compose/EditGroup.kt @@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.groups.compose import android.content.ContentResolver import android.content.Context import android.widget.Toast +import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -13,11 +14,12 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme -import androidx.compose.material.OutlinedButton import androidx.compose.material.Scaffold import androidx.compose.material.Text +import androidx.compose.material.TextButton import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState @@ -26,6 +28,9 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment.Companion.CenterVertically import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource @@ -38,6 +43,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import app.cash.molecule.RecompositionMode.Immediate import app.cash.molecule.launchMolecule +import com.google.android.material.color.MaterialColors import com.ramcosta.composedestinations.annotation.Destination import com.ramcosta.composedestinations.navigation.DestinationsNavigator import com.ramcosta.composedestinations.result.NavResult @@ -314,15 +320,28 @@ fun EditGroupView( } // Resend button if (viewState.admin && member.memberState == MemberState.InviteFailed) { - OutlinedButton(onClick = { - onReinvite(member.memberSessionId) - },) { - Text("Re-send") + TextButton( + onClick = { + onReinvite(member.memberSessionId) + }, + modifier = Modifier + .clip(CircleShape) + .background( + Color( + MaterialColors.getColor(LocalContext.current, + R.attr.colorControlHighlight, + MaterialTheme.colors.onPrimary.toArgb()) + ) + ) + ) { + Text( + "Re-send", + color = MaterialTheme.colors.onPrimary + ) } } } } - } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt index e1d5c1e83..0183b08b2 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/ui/Components.kt @@ -114,7 +114,7 @@ fun CellWithPaddingAndMargin( } } -private val Colors.cellColor: Color +val Colors.cellColor: Color @Composable get() = LocalExtraColors.current.settingsBackground diff --git a/libsession/src/main/java/org/session/libsession/messaging/jobs/InviteContactsJob.kt b/libsession/src/main/java/org/session/libsession/messaging/jobs/InviteContactsJob.kt index d43e28781..22a795e21 100644 --- a/libsession/src/main/java/org/session/libsession/messaging/jobs/InviteContactsJob.kt +++ b/libsession/src/main/java/org/session/libsession/messaging/jobs/InviteContactsJob.kt @@ -14,7 +14,6 @@ import org.session.libsession.messaging.utilities.SodiumUtilities import org.session.libsession.snode.SnodeAPI import org.session.libsignal.protos.SignalServiceProtos.DataMessage.GroupUpdateInviteMessage import org.session.libsignal.protos.SignalServiceProtos.DataMessage.GroupUpdateMessage -import org.session.libsignal.protos.SignalServiceProtos.DataMessage.LokiProfile import org.session.libsignal.utilities.SessionId import org.session.libsignal.utilities.prettifiedDescription @@ -74,20 +73,12 @@ class InviteContactsJob(val groupSessionId: String, val memberSessionIds: Array< val messageToSign = "INVITE$memberSessionId$timestamp" val signature = SodiumUtilities.sign(messageToSign.toByteArray(), adminKey) val userProfile = storage.getUserProfile() - val lokiProfile = LokiProfile.newBuilder() - .setDisplayName(userProfile.displayName) - if (userProfile.profilePictureURL?.isNotEmpty() == true) { - lokiProfile.profilePicture = userProfile.profilePictureURL - } + val groupInvite = GroupUpdateInviteMessage.newBuilder() .setGroupSessionId(groupSessionId) .setMemberAuthData(ByteString.copyFrom(subAccount)) .setAdminSignature(ByteString.copyFrom(signature)) .setName(userProfile.displayName) - .setProfile(lokiProfile.build()) - if (userProfile.profileKey?.isNotEmpty() == true) { - groupInvite.profileKey = ByteString.copyFrom(userProfile.profileKey) - } val message = GroupUpdateMessage.newBuilder() .setInviteMessage(groupInvite) .build()