feat: fill out the contact info properly, add in re-send colors

This commit is contained in:
0x330a 2023-11-22 15:53:45 +11:00
parent 896907dadb
commit 5ed8f70fa6
4 changed files with 36 additions and 17 deletions

View File

@ -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)

View File

@ -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
)
}
}
}
}
}
}
}

View File

@ -114,7 +114,7 @@ fun CellWithPaddingAndMargin(
}
}
private val Colors.cellColor: Color
val Colors.cellColor: Color
@Composable
get() = LocalExtraColors.current.settingsBackground

View File

@ -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()