feat: fill out the contact info properly, add in re-send colors
This commit is contained in:
parent
896907dadb
commit
5ed8f70fa6
|
@ -1290,7 +1290,16 @@ open class Storage(
|
||||||
membersConfig.get(it) == null
|
membersConfig.get(it) == null
|
||||||
}
|
}
|
||||||
filteredMembers.forEach { memberSessionId ->
|
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(
|
val member = membersConfig.getOrConstruct(memberSessionId).copy(
|
||||||
|
name = name,
|
||||||
|
profilePicture = userPic,
|
||||||
invitePending = true,
|
invitePending = true,
|
||||||
)
|
)
|
||||||
membersConfig.set(member)
|
membersConfig.set(member)
|
||||||
|
|
|
@ -3,6 +3,7 @@ package org.thoughtcrime.securesms.groups.compose
|
||||||
import android.content.ContentResolver
|
import android.content.ContentResolver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
|
import androidx.compose.foundation.background
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.Row
|
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.layout.size
|
||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.foundation.lazy.items
|
import androidx.compose.foundation.lazy.items
|
||||||
|
import androidx.compose.foundation.shape.CircleShape
|
||||||
import androidx.compose.material.Icon
|
import androidx.compose.material.Icon
|
||||||
import androidx.compose.material.MaterialTheme
|
import androidx.compose.material.MaterialTheme
|
||||||
import androidx.compose.material.OutlinedButton
|
|
||||||
import androidx.compose.material.Scaffold
|
import androidx.compose.material.Scaffold
|
||||||
import androidx.compose.material.Text
|
import androidx.compose.material.Text
|
||||||
|
import androidx.compose.material.TextButton
|
||||||
import androidx.compose.material.rememberScaffoldState
|
import androidx.compose.material.rememberScaffoldState
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
|
@ -26,6 +28,9 @@ import androidx.compose.runtime.remember
|
||||||
import androidx.compose.runtime.saveable.rememberSaveable
|
import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.ui.Alignment.Companion.CenterVertically
|
import androidx.compose.ui.Alignment.Companion.CenterVertically
|
||||||
import androidx.compose.ui.Modifier
|
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.platform.LocalContext
|
||||||
import androidx.compose.ui.res.painterResource
|
import androidx.compose.ui.res.painterResource
|
||||||
import androidx.compose.ui.res.stringResource
|
import androidx.compose.ui.res.stringResource
|
||||||
|
@ -38,6 +43,7 @@ import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import app.cash.molecule.RecompositionMode.Immediate
|
import app.cash.molecule.RecompositionMode.Immediate
|
||||||
import app.cash.molecule.launchMolecule
|
import app.cash.molecule.launchMolecule
|
||||||
|
import com.google.android.material.color.MaterialColors
|
||||||
import com.ramcosta.composedestinations.annotation.Destination
|
import com.ramcosta.composedestinations.annotation.Destination
|
||||||
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
|
||||||
import com.ramcosta.composedestinations.result.NavResult
|
import com.ramcosta.composedestinations.result.NavResult
|
||||||
|
@ -314,15 +320,28 @@ fun EditGroupView(
|
||||||
}
|
}
|
||||||
// Resend button
|
// Resend button
|
||||||
if (viewState.admin && member.memberState == MemberState.InviteFailed) {
|
if (viewState.admin && member.memberState == MemberState.InviteFailed) {
|
||||||
OutlinedButton(onClick = {
|
TextButton(
|
||||||
onReinvite(member.memberSessionId)
|
onClick = {
|
||||||
},) {
|
onReinvite(member.memberSessionId)
|
||||||
Text("Re-send")
|
},
|
||||||
|
modifier = Modifier
|
||||||
|
.clip(CircleShape)
|
||||||
|
.background(
|
||||||
|
Color(
|
||||||
|
MaterialColors.getColor(LocalContext.current,
|
||||||
|
R.attr.colorControlHighlight,
|
||||||
|
MaterialTheme.colors.onPrimary.toArgb())
|
||||||
|
)
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
Text(
|
||||||
|
"Re-send",
|
||||||
|
color = MaterialTheme.colors.onPrimary
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ fun CellWithPaddingAndMargin(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private val Colors.cellColor: Color
|
val Colors.cellColor: Color
|
||||||
@Composable
|
@Composable
|
||||||
get() = LocalExtraColors.current.settingsBackground
|
get() = LocalExtraColors.current.settingsBackground
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,6 @@ import org.session.libsession.messaging.utilities.SodiumUtilities
|
||||||
import org.session.libsession.snode.SnodeAPI
|
import org.session.libsession.snode.SnodeAPI
|
||||||
import org.session.libsignal.protos.SignalServiceProtos.DataMessage.GroupUpdateInviteMessage
|
import org.session.libsignal.protos.SignalServiceProtos.DataMessage.GroupUpdateInviteMessage
|
||||||
import org.session.libsignal.protos.SignalServiceProtos.DataMessage.GroupUpdateMessage
|
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.SessionId
|
||||||
import org.session.libsignal.utilities.prettifiedDescription
|
import org.session.libsignal.utilities.prettifiedDescription
|
||||||
|
|
||||||
|
@ -74,20 +73,12 @@ class InviteContactsJob(val groupSessionId: String, val memberSessionIds: Array<
|
||||||
val messageToSign = "INVITE$memberSessionId$timestamp"
|
val messageToSign = "INVITE$memberSessionId$timestamp"
|
||||||
val signature = SodiumUtilities.sign(messageToSign.toByteArray(), adminKey)
|
val signature = SodiumUtilities.sign(messageToSign.toByteArray(), adminKey)
|
||||||
val userProfile = storage.getUserProfile()
|
val userProfile = storage.getUserProfile()
|
||||||
val lokiProfile = LokiProfile.newBuilder()
|
|
||||||
.setDisplayName(userProfile.displayName)
|
|
||||||
if (userProfile.profilePictureURL?.isNotEmpty() == true) {
|
|
||||||
lokiProfile.profilePicture = userProfile.profilePictureURL
|
|
||||||
}
|
|
||||||
val groupInvite = GroupUpdateInviteMessage.newBuilder()
|
val groupInvite = GroupUpdateInviteMessage.newBuilder()
|
||||||
.setGroupSessionId(groupSessionId)
|
.setGroupSessionId(groupSessionId)
|
||||||
.setMemberAuthData(ByteString.copyFrom(subAccount))
|
.setMemberAuthData(ByteString.copyFrom(subAccount))
|
||||||
.setAdminSignature(ByteString.copyFrom(signature))
|
.setAdminSignature(ByteString.copyFrom(signature))
|
||||||
.setName(userProfile.displayName)
|
.setName(userProfile.displayName)
|
||||||
.setProfile(lokiProfile.build())
|
|
||||||
if (userProfile.profileKey?.isNotEmpty() == true) {
|
|
||||||
groupInvite.profileKey = ByteString.copyFrom(userProfile.profileKey)
|
|
||||||
}
|
|
||||||
val message = GroupUpdateMessage.newBuilder()
|
val message = GroupUpdateMessage.newBuilder()
|
||||||
.setInviteMessage(groupInvite)
|
.setInviteMessage(groupInvite)
|
||||||
.build()
|
.build()
|
||||||
|
|
Loading…
Reference in New Issue