closed_groups
SessionHero01 5 months ago
parent 905acab3f4
commit 7520571a7d
No known key found for this signature in database

@ -1,13 +1,9 @@
package org.thoughtcrime.securesms.groups.compose package org.thoughtcrime.securesms.groups.compose
import androidx.compose.foundation.Image
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
@ -15,34 +11,16 @@ 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.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material3.Checkbox
import androidx.compose.material3.CheckboxDefaults
import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
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.ColorFilter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalInspectionMode
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.Role
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import network.loki.messenger.R import network.loki.messenger.R
import network.loki.messenger.libsession_util.util.Contact
import org.session.libsession.utilities.Address import org.session.libsession.utilities.Address
import org.session.libsession.utilities.recipients.Recipient
import org.session.libsignal.utilities.AccountId import org.session.libsignal.utilities.AccountId
import org.thoughtcrime.securesms.groups.ContactItem import org.thoughtcrime.securesms.groups.ContactItem
import org.thoughtcrime.securesms.ui.Avatar import org.thoughtcrime.securesms.ui.Avatar
@ -123,25 +101,8 @@ fun RowScope.MemberName(
@Composable @Composable
fun ContactPhoto(sessionId: AccountId) { fun ContactPhoto(sessionId: AccountId) {
return if (LocalInspectionMode.current) { Avatar(Address.fromSerialized(sessionId.hexString),
Image( modifier = Modifier.size(LocalDimensions.current.iconLarge))
painterResource(id = R.drawable.ic_profile_default),
colorFilter = ColorFilter.tint(LocalColors.current.textSecondary),
contentScale = ContentScale.Inside,
contentDescription = null,
modifier = Modifier
.size(48.dp)
.clip(CircleShape)
.border(1.dp, LocalColors.current.borders, CircleShape)
)
} else {
val context = LocalContext.current
// Ideally we migrate to something that doesn't require recipient, or get contact photo another way
val recipient = remember(sessionId) {
Recipient.from(context, Address.fromSerialized(sessionId.hexString), false)
}
Avatar(recipient, modifier = Modifier.size(48.dp))
}
} }

@ -8,6 +8,7 @@ import androidx.compose.foundation.Canvas
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.ScrollState import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.background import androidx.compose.foundation.background
import androidx.compose.foundation.border
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxScope import androidx.compose.foundation.layout.BoxScope
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@ -28,6 +29,7 @@ import androidx.compose.foundation.layout.wrapContentHeight
import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.foundation.lazy.itemsIndexed
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.BasicTextField
import androidx.compose.material3.ButtonColors import androidx.compose.material3.ButtonColors
@ -43,6 +45,7 @@ import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.draw.drawWithContent
import androidx.compose.ui.geometry.Size import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.BlendMode import androidx.compose.ui.graphics.BlendMode
@ -55,7 +58,9 @@ import androidx.compose.ui.graphics.StrokeCap
import androidx.compose.ui.graphics.drawscope.Stroke import androidx.compose.ui.graphics.drawscope.Stroke
import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.graphicsLayer
import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalInspectionMode
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.contentDescription
@ -432,12 +437,25 @@ fun Avatar(
userAddress: Address, userAddress: Address,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
AndroidView( if (LocalInspectionMode.current) {
factory = { Image(
ProfilePictureView(it).apply { update(userAddress) } painterResource(id = R.drawable.ic_profile_default),
}, colorFilter = ColorFilter.tint(LocalColors.current.textSecondary),
modifier = modifier contentScale = ContentScale.Inside,
) contentDescription = null,
modifier = Modifier
.size(LocalDimensions.current.iconLarge)
.clip(CircleShape)
.border(1.dp, LocalColors.current.borders, CircleShape)
)
} else {
AndroidView(
factory = {
ProfilePictureView(it).apply { update(userAddress) }
},
modifier = modifier
)
}
} }
@Composable @Composable

@ -17,7 +17,6 @@ import androidx.compose.ui.Alignment.Companion.CenterVertically
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import org.thoughtcrime.securesms.ui.theme.LocalColors import org.thoughtcrime.securesms.ui.theme.LocalColors
import org.thoughtcrime.securesms.ui.theme.LocalDimensions import org.thoughtcrime.securesms.ui.theme.LocalDimensions
import org.thoughtcrime.securesms.ui.theme.LocalType import org.thoughtcrime.securesms.ui.theme.LocalType
@ -53,7 +52,7 @@ fun <T> BottomOptionsDialog(
containerColor = LocalColors.current.backgroundSecondary, containerColor = LocalColors.current.backgroundSecondary,
) { ) {
for (option in options) { for (option in options) {
MemberModalBottomSheetOptionItem( BottomOptionItem(
text = optionTitle(option), text = optionTitle(option),
leadingIcon = optionIconRes(option), leadingIcon = optionIconRes(option),
onClick = { onClick = {
@ -66,7 +65,7 @@ fun <T> BottomOptionsDialog(
} }
@Composable @Composable
private fun MemberModalBottomSheetOptionItem( private fun BottomOptionItem(
leadingIcon: Int, leadingIcon: Int,
text: String, text: String,
onClick: () -> Unit onClick: () -> Unit
@ -81,7 +80,7 @@ private fun MemberModalBottomSheetOptionItem(
) { ) {
Icon( Icon(
painter = painterResource(leadingIcon), painter = painterResource(leadingIcon),
modifier = Modifier.size(24.dp), modifier = Modifier.size(LocalDimensions.current.iconMedium),
tint = LocalColors.current.text, tint = LocalColors.current.text,
contentDescription = null contentDescription = null
) )

@ -49,6 +49,4 @@ val dangerLight = Color(0xFFE12D19)
val disabledDark = Color(0xFFA1A2A1) val disabledDark = Color(0xFFA1A2A1)
val disabledLight = Color(0xFF6D6D6D) val disabledLight = Color(0xFF6D6D6D)
val warningUniversal = Color(0xFFFCB159)
val blackAlpha40 = Color.Black.copy(alpha = 0.4f) val blackAlpha40 = Color.Black.copy(alpha = 0.4f)

@ -20,5 +20,8 @@ data class Dimensions(
val minLargeItemButtonHeight: Dp = 60.dp, val minLargeItemButtonHeight: Dp = 60.dp,
val indicatorHeight: Dp = 4.dp, val indicatorHeight: Dp = 4.dp,
val borderStroke: Dp = 1.dp val borderStroke: Dp = 1.dp,
val iconMedium: Dp = 24.dp,
val iconLarge: Dp = 48.dp,
) )

@ -1,18 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="44dp"
android:height="35dp"
android:viewportWidth="44"
android:viewportHeight="35">
<path
android:pathData="M34.951,23.398L26.63,17.311C26.575,17.267 26.507,17.243 26.438,17.243C26.368,17.243 26.299,17.267 26.245,17.311L18.784,23.488C18.727,23.531 18.657,23.554 18.585,23.554C18.513,23.554 18.444,23.531 18.386,23.488L14.637,20.432C14.583,20.391 14.517,20.369 14.45,20.369C14.383,20.369 14.318,20.391 14.264,20.432L4.107,27.648C4.068,27.679 4.036,27.718 4.014,27.762C3.991,27.807 3.979,27.855 3.978,27.905V30.242C3.982,30.435 4.06,30.619 4.196,30.756C4.333,30.893 4.517,30.971 4.71,30.974H34.348C34.542,30.974 34.728,30.897 34.865,30.76C35.002,30.622 35.08,30.436 35.08,30.242V23.642C35.081,23.594 35.07,23.546 35.047,23.503C35.025,23.46 34.992,23.424 34.951,23.398Z"
android:fillColor="?colorOnSurface"/>
<path
android:pathData="M11.131,18.248C12.726,18.248 14.02,16.955 14.02,15.359C14.02,13.763 12.726,12.47 11.131,12.47C9.535,12.47 8.242,13.763 8.242,15.359C8.242,16.955 9.535,18.248 11.131,18.248Z"
android:fillColor="?colorOnSurface"/>
<path
android:pathData="M40.396,4.123L8.229,0.374C7.807,0.322 7.38,0.354 6.971,0.47C6.563,0.585 6.181,0.78 5.849,1.044C5.517,1.308 5.24,1.636 5.036,2.008C4.832,2.38 4.703,2.789 4.659,3.212L4.505,4.598H7.073L7.201,3.507C7.212,3.424 7.239,3.343 7.281,3.27C7.323,3.198 7.379,3.134 7.445,3.083C7.555,2.995 7.69,2.946 7.831,2.942H7.895L22.187,4.598H35.722C36.512,4.603 37.29,4.789 37.996,5.143C38.702,5.498 39.316,6.01 39.792,6.64H40.1C40.269,6.659 40.423,6.745 40.528,6.877C40.634,7.009 40.683,7.178 40.666,7.346L40.576,8.078C40.755,8.595 40.85,9.137 40.858,9.683V27.995L43.221,7.68C43.315,6.834 43.071,5.986 42.541,5.319C42.012,4.653 41.241,4.223 40.396,4.123Z"
android:fillColor="?colorOnSurface"/>
<path
android:pathData="M35.722,34.801H3.336C2.485,34.801 1.668,34.463 1.066,33.861C0.464,33.258 0.126,32.442 0.126,31.59V9.761C0.126,8.909 0.464,8.093 1.066,7.49C1.668,6.888 2.485,6.55 3.336,6.55H35.722C36.573,6.55 37.39,6.888 37.992,7.49C38.594,8.093 38.932,8.909 38.932,9.761V31.59C38.932,32.442 38.594,33.258 37.992,33.861C37.39,34.463 36.573,34.801 35.722,34.801ZM3.336,9.093C3.166,9.093 3.003,9.16 2.882,9.281C2.762,9.401 2.694,9.565 2.694,9.735V31.565C2.694,31.735 2.762,31.898 2.882,32.019C3.003,32.139 3.166,32.207 3.336,32.207H35.722C35.892,32.207 36.055,32.139 36.176,32.019C36.296,31.898 36.364,31.735 36.364,31.565V9.735C36.364,9.565 36.296,9.401 36.176,9.281C36.055,9.16 35.892,9.093 35.722,9.093H3.336Z"
android:fillColor="?colorOnSurface"/>
</vector>

@ -1,10 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="22dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M17,7l-1.41,1.41L18.17,11H8v2h10.17l-2.58,2.58L17,17l5,-5zM4,5h8V3H4c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h8v-2H4V5z"/>
</vector>

@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="50"
android:viewportHeight="50">
<path
android:pathData="M10.417,9.317C9.864,9.317 9.335,9.536 8.944,9.927C8.553,10.318 8.334,10.847 8.334,11.4V40.567C8.334,41.119 8.553,41.649 8.944,42.04C9.335,42.43 9.864,42.65 10.417,42.65H18.75C19.901,42.65 20.834,43.583 20.834,44.733C20.834,45.884 19.901,46.817 18.75,46.817H10.417C8.759,46.817 7.17,46.158 5.998,44.986C4.825,43.814 4.167,42.224 4.167,40.567V11.4C4.167,9.742 4.825,8.153 5.998,6.98C7.17,5.808 8.759,5.15 10.417,5.15H18.75C19.901,5.15 20.834,6.083 20.834,7.233C20.834,8.384 19.901,9.317 18.75,9.317H10.417Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
<path
android:pathData="M31.86,14.094C32.674,13.28 33.993,13.28 34.806,14.094L45.223,24.51C46.037,25.324 46.037,26.643 45.223,27.456L34.806,37.873C33.993,38.687 32.674,38.687 31.86,37.873C31.047,37.06 31.047,35.741 31.86,34.927L40.804,25.983L31.86,17.04C31.047,16.226 31.047,14.907 31.86,14.094Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
<path
android:pathData="M16.667,25.983C16.667,24.833 17.6,23.9 18.75,23.9H43.75C44.901,23.9 45.834,24.833 45.834,25.983C45.834,27.134 44.901,28.067 43.75,28.067H18.75C17.6,28.067 16.667,27.134 16.667,25.983Z"
android:fillColor="#000000"
android:fillType="evenOdd"/>
</vector>

@ -13,66 +13,66 @@
android:id="@+id/detailsTextView" android:id="@+id/detailsTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:contentDescription="@string/AccessibilityId_contactUserDetails" android:contentDescription="@string/AccessibilityId_contactUserDetails"
android:drawableStart="@drawable/ic_info_outline_white_24dp" android:text="@string/contactUserDetails"
android:drawableTint="?attr/colorControlNormal" app:drawableStartCompat="@drawable/ic_info_outline_white_24dp"
android:text="@string/contactUserDetails" /> app:drawableTint="?attr/colorControlNormal" />
<TextView <TextView
android:id="@+id/copyConversationId" android:id="@+id/copyConversationId"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_copy"
android:drawableTint="?attr/colorControlNormal"
android:visibility="visible" android:visibility="visible"
android:text="@string/accountIDCopy" /> android:text="@string/accountIDCopy"
app:drawableStartCompat="@drawable/ic_copy"
app:drawableTint="?attr/colorControlNormal" />
<TextView <TextView
android:id="@+id/copyCommunityUrl" android:id="@+id/copyCommunityUrl"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_copy"
android:drawableTint="?attr/colorControlNormal"
android:visibility="gone" android:visibility="gone"
android:text="@string/communityUrlCopy" /> android:text="@string/communityUrlCopy"
app:drawableStartCompat="@drawable/ic_copy"
app:drawableTint="?attr/colorControlNormal" />
<TextView <TextView
android:id="@+id/pinTextView" android:id="@+id/pinTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:contentDescription="@string/AccessibilityId_pin" android:contentDescription="@string/AccessibilityId_pin"
android:drawableStart="?attr/menu_pin_icon"
android:text="@string/pin" android:text="@string/pin"
android:visibility="gone" android:visibility="gone"
app:drawableStartCompat="?attr/menu_pin_icon"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/unpinTextView" android:id="@+id/unpinTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="?attr/menu_unpin_icon"
android:text="@string/pinUnpin" android:text="@string/pinUnpin"
android:visibility="gone" android:visibility="gone"
app:drawableStartCompat="?attr/menu_unpin_icon"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/blockTextView" android:id="@+id/blockTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:contentDescription="@string/AccessibilityId_block" android:contentDescription="@string/AccessibilityId_block"
android:drawableStart="?attr/menu_block_icon"
android:text="@string/block" android:text="@string/block"
android:visibility="gone" android:visibility="gone"
app:drawableStartCompat="?attr/menu_block_icon"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/unblockTextView" android:id="@+id/unblockTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="?attr/menu_accept_icon"
android:text="@string/blockUnblock" android:text="@string/blockUnblock"
android:visibility="gone" android:visibility="gone"
app:drawableStartCompat="?attr/menu_accept_icon"
tools:visibility="visible" /> tools:visibility="visible" />
<TextView <TextView
android:id="@+id/muteNotificationsTextView" android:id="@+id/muteNotificationsTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:contentDescription="@string/AccessibilityId_notificationsMute" android:contentDescription="@string/AccessibilityId_notificationsMute"
android:drawableStart="@drawable/ic_outline_notifications_off_24"
android:text="@string/notificationsMute" android:text="@string/notificationsMute"
app:drawableStartCompat="@drawable/ic_outline_notifications_off_24"
tools:visibility="visible" tools:visibility="visible"
android:visibility="gone" android:visibility="gone"
/> />
@ -80,8 +80,8 @@
<TextView <TextView
android:id="@+id/unMuteNotificationsTextView" android:id="@+id/unMuteNotificationsTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_outline_notifications_active_24"
android:text="@string/notificationsMuteUnmute" android:text="@string/notificationsMuteUnmute"
app:drawableStartCompat="@drawable/ic_outline_notifications_active_24"
tools:visibility="visible" tools:visibility="visible"
android:visibility="gone" android:visibility="gone"
/> />
@ -89,8 +89,8 @@
<TextView <TextView
android:id="@+id/notificationsTextView" android:id="@+id/notificationsTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="@drawable/ic_outline_notification_important_24"
android:text="@string/sessionNotifications" android:text="@string/sessionNotifications"
app:drawableStartCompat="@drawable/ic_outline_notification_important_24"
tools:visibility="visible" tools:visibility="visible"
android:visibility="gone" android:visibility="gone"
/> />
@ -98,23 +98,22 @@
<TextView <TextView
android:id="@+id/markAllAsReadTextView" android:id="@+id/markAllAsReadTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:drawableStart="?attr/menu_mark_all_as_read"
android:text="@string/messageMarkRead" android:text="@string/messageMarkRead"
android:visibility="gone" android:visibility="gone"
/> app:drawableStartCompat="?attr/menu_mark_all_as_read" />
<TextView <TextView
android:id="@+id/deleteTextView" android:id="@+id/deleteTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:contentDescription="@string/AccessibilityId_delete" android:contentDescription="@string/AccessibilityId_delete"
android:drawableStart="?attr/menu_trash_icon" android:text="@string/delete"
android:text="@string/delete" /> app:drawableStartCompat="?attr/menu_trash_icon" />
<TextView <TextView
android:id="@+id/leaveTextView" android:id="@+id/leaveTextView"
style="@style/BottomSheetActionItem" style="@style/BottomSheetActionItem"
android:paddingStart="20dp" android:text="@string/leave"
android:drawableStart="@drawable/ic_baseline_logout_24" app:drawableStartCompat="@drawable/ic_log_out"
android:text="@string/leave" /> app:drawableTint="?android:attr/textColorPrimary" />
</LinearLayout> </LinearLayout>

@ -1,47 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.components.ProfilePictureView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/doubleModeImageViewContainer"
android:layout_centerInParent="true"
android:layout_width="@dimen/extra_large_profile_picture_size"
android:layout_height="@dimen/extra_large_profile_picture_size">
<ImageView
android:layout_margin="@dimen/small_spacing"
android:id="@+id/doubleModeImageView1"
android:layout_width="@dimen/large_profile_picture_size"
android:layout_height="@dimen/large_profile_picture_size"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:background="@drawable/profile_picture_view_large_background" />
<ImageView
android:layout_margin="@dimen/small_spacing"
android:id="@+id/doubleModeImageView2"
android:layout_width="@dimen/large_profile_picture_size"
android:layout_height="@dimen/large_profile_picture_size"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:background="@drawable/profile_picture_view_large_background" />
</RelativeLayout>
<ImageView
android:layout_centerInParent="true"
android:id="@+id/singleModeImageView"
android:layout_width="@dimen/large_profile_picture_size"
android:layout_height="@dimen/large_profile_picture_size"
android:background="@drawable/profile_picture_view_large_background" />
<ImageView
android:layout_centerInParent="true"
android:id="@+id/largeSingleModeImageView"
android:layout_width="@dimen/extra_large_profile_picture_size"
android:layout_height="@dimen/extra_large_profile_picture_size"
android:background="@drawable/profile_picture_view_large_background" />
</org.thoughtcrime.securesms.components.ProfilePictureView>

@ -12,8 +12,6 @@ android {
defaultConfig { defaultConfig {
minSdkVersion androidMinimumSdkVersion minSdkVersion androidMinimumSdkVersion
// Build constant for which version should minimally support new groups
buildConfigField("String", "MINIMUM_GROUP_VERSION", '"1.19.0"')
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

@ -73,11 +73,11 @@ public class IncomingMediaMessage {
if (group.isPresent()) { if (group.isPresent()) {
SignalServiceGroup groupObject = group.get(); SignalServiceGroup groupObject = group.get();
if (groupObject.isNewClosedGroup()) { if (groupObject.isGroupV2()) {
// new closed group 03..etc.. // new groupv2 03..etc..
this.groupId = Address.fromSerialized(Hex.toStringCondensed(groupObject.getGroupId())); this.groupId = Address.fromSerialized(Hex.toStringCondensed(groupObject.getGroupId()));
} else { } else {
// old closed group or open group // legacy group or community
this.groupId = Address.fromSerialized(GroupUtil.getEncodedId(group.get())); this.groupId = Address.fromSerialized(GroupUtil.getEncodedId(group.get()));
} }
} else { } else {

@ -82,7 +82,7 @@ public class IncomingTextMessage implements Parcelable {
if (group.isPresent()) { if (group.isPresent()) {
SignalServiceGroup groupObject = group.get(); SignalServiceGroup groupObject = group.get();
if (groupObject.isNewClosedGroup()) { if (groupObject.isGroupV2()) {
// new closed group 03..etc.. // new closed group 03..etc..
this.groupId = Address.fromSerialized(Hex.toStringCondensed(groupObject.getGroupId())); this.groupId = Address.fromSerialized(Hex.toStringCondensed(groupObject.getGroupId()));
} else { } else {

@ -168,9 +168,9 @@ fun MessageReceiver.cancelTypingIndicatorsIfNeeded(senderPublicKey: String) {
private fun MessageReceiver.handleExpirationTimerUpdate(message: ExpirationTimerUpdate) { private fun MessageReceiver.handleExpirationTimerUpdate(message: ExpirationTimerUpdate) {
SSKEnvironment.shared.messageExpirationManager.insertExpirationTimerMessage(message) SSKEnvironment.shared.messageExpirationManager.insertExpirationTimerMessage(message)
val isGroupV1 = message.groupPublicKey != null && message.groupPublicKey?.startsWith(IdPrefix.GROUP.value) == false val isLegacyGroup = message.groupPublicKey != null && message.groupPublicKey?.startsWith(IdPrefix.GROUP.value) == false
if (isNewConfigEnabled && !isGroupV1) return if (isNewConfigEnabled && !isLegacyGroup) return
val module = MessagingModuleConfiguration.shared val module = MessagingModuleConfiguration.shared
try { try {

@ -89,7 +89,7 @@ public class SignalServiceGroup {
return groupId; return groupId;
} }
public boolean isNewClosedGroup() { public boolean isGroupV2() {
return groupId.length == 33 && groupId[0] == 0x03; return groupId.length == 33 && groupId[0] == 0x03;
} }

Loading…
Cancel
Save