Merge pull request #6929 from element-hq/feature/bma/reorderRoomDetailItems
Reorder room detail items
This commit is contained in:
+8
-7
@@ -38,6 +38,7 @@ import io.element.android.libraries.designsystem.utils.snackbar.LocalSnackbarDis
|
||||
import io.element.android.libraries.designsystem.utils.snackbar.SnackbarMessage
|
||||
import io.element.android.libraries.designsystem.utils.snackbar.collectSnackbarMessageAsState
|
||||
import io.element.android.libraries.matrix.api.MatrixClient
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.encryption.identity.IdentityState
|
||||
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
@@ -117,7 +118,7 @@ class RoomDetailsPresenter(
|
||||
val canonicalAlias by remember { derivedStateOf { roomInfo.canonicalAlias } }
|
||||
val isEncrypted by remember { derivedStateOf { roomInfo.isEncrypted == true } }
|
||||
val dmMember by room.getDirectRoomMember(membersState)
|
||||
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember)
|
||||
val roomMemberDetailsPresenter = roomMemberDetailsPresenter(dmMember?.userId)
|
||||
val roomType = getRoomType(dmMember)
|
||||
val roomCallState = roomCallStatePresenter.present()
|
||||
val joinedMemberCount by remember { derivedStateOf { roomInfo.joinedMembersCount } }
|
||||
@@ -174,7 +175,7 @@ class RoomDetailsPresenter(
|
||||
}
|
||||
}
|
||||
|
||||
val roomMemberDetailsState = roomMemberDetailsPresenter?.present()
|
||||
val dmOtherMemberDetailsState = roomMemberDetailsPresenter?.present()
|
||||
|
||||
val hasMemberVerificationViolations by produceState(false) {
|
||||
room.roomMemberIdentityStateChange(waitForEncryption = true)
|
||||
@@ -196,7 +197,7 @@ class RoomDetailsPresenter(
|
||||
canEdit = roomType == RoomDetailsType.Room && permissions.editDetailsPermissions.hasAny,
|
||||
roomCallState = roomCallState,
|
||||
roomType = roomType,
|
||||
roomMemberDetailsState = roomMemberDetailsState,
|
||||
dmOtherMemberDetailsState = dmOtherMemberDetailsState,
|
||||
leaveRoomState = leaveRoomState,
|
||||
roomNotificationSettings = roomNotificationSettingsState.roomNotificationSettings(),
|
||||
isFavorite = isFavorite,
|
||||
@@ -209,7 +210,7 @@ class RoomDetailsPresenter(
|
||||
knockRequestsCount = knockRequestsCount,
|
||||
canShowSecurityAndPrivacy = canShowSecurityAndPrivacy,
|
||||
hasMemberVerificationViolations = hasMemberVerificationViolations,
|
||||
canReportRoom = canReportRoom,
|
||||
canReportRoom = !isDm && canReportRoom,
|
||||
isTombstoned = roomInfo.successorRoom != null,
|
||||
showDebugInfo = isDeveloperModeEnabled,
|
||||
roomVersion = roomInfo.roomVersion,
|
||||
@@ -220,9 +221,9 @@ class RoomDetailsPresenter(
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun roomMemberDetailsPresenter(dmMemberState: RoomMember?) = remember(dmMemberState) {
|
||||
dmMemberState?.let { roomMember ->
|
||||
roomMembersDetailsPresenterFactory.create(roomMember.userId)
|
||||
private fun roomMemberDetailsPresenter(userId: UserId?) = remember(userId) {
|
||||
userId?.let { userId ->
|
||||
roomMembersDetailsPresenterFactory.create(userId)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ data class RoomDetailsState(
|
||||
val memberCount: Long,
|
||||
val isEncrypted: Boolean,
|
||||
val roomType: RoomDetailsType,
|
||||
val roomMemberDetailsState: UserProfileState?,
|
||||
val dmOtherMemberDetailsState: UserProfileState?,
|
||||
val canEdit: Boolean,
|
||||
val canInvite: Boolean,
|
||||
val roomCallState: RoomCallState,
|
||||
|
||||
+3
-3
@@ -106,7 +106,7 @@ fun aRoomDetailsState(
|
||||
canEdit: Boolean = false,
|
||||
roomCallState: RoomCallState = aStandByCallState(),
|
||||
roomType: RoomDetailsType = RoomDetailsType.Room,
|
||||
roomMemberDetailsState: UserProfileState? = null,
|
||||
dmOtherMemberDetailsState: UserProfileState? = null,
|
||||
leaveRoomState: LeaveRoomState = aLeaveRoomState(),
|
||||
roomNotificationSettings: RoomNotificationSettings = aRoomNotificationSettings(),
|
||||
isFavorite: Boolean = false,
|
||||
@@ -137,7 +137,7 @@ fun aRoomDetailsState(
|
||||
canEdit = canEdit,
|
||||
roomCallState = roomCallState,
|
||||
roomType = roomType,
|
||||
roomMemberDetailsState = roomMemberDetailsState,
|
||||
dmOtherMemberDetailsState = dmOtherMemberDetailsState,
|
||||
leaveRoomState = leaveRoomState,
|
||||
roomNotificationSettings = roomNotificationSettings,
|
||||
isFavorite = isFavorite,
|
||||
@@ -184,7 +184,7 @@ fun aDmRoomDetailsState(
|
||||
isEncrypted = isEncrypted,
|
||||
canInvite = true,
|
||||
roomType = RoomDetailsType.Dm(otherMember = aDmRoomMember(isIgnored = isDmMemberIgnored)),
|
||||
roomMemberDetailsState = aUserProfileState(
|
||||
dmOtherMemberDetailsState = aUserProfileState(
|
||||
isBlocked = AsyncData.Success(isDmMemberIgnored),
|
||||
verificationState = dmRoomMemberVerificationState,
|
||||
)
|
||||
|
||||
+91
-73
@@ -43,6 +43,7 @@ import im.vector.app.features.analytics.plan.Interaction
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.features.roomcall.api.hasPermissionToJoin
|
||||
import io.element.android.features.userprofile.api.UserProfileState
|
||||
import io.element.android.features.userprofile.api.UserProfileVerificationState
|
||||
import io.element.android.features.userprofile.shared.blockuser.BlockUserDialogs
|
||||
import io.element.android.features.userprofile.shared.blockuser.BlockUserSection
|
||||
@@ -64,7 +65,7 @@ import io.element.android.libraries.designsystem.modifiers.niceClickable
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreviewDark
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreviewLight
|
||||
import io.element.android.libraries.designsystem.preview.PreviewWithLargeHeight
|
||||
import io.element.android.libraries.designsystem.preview.PreviewWithExtraLargeHeight
|
||||
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
|
||||
import io.element.android.libraries.designsystem.theme.components.DropdownMenu
|
||||
import io.element.android.libraries.designsystem.theme.components.DropdownMenuItem
|
||||
@@ -96,6 +97,9 @@ import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.collections.immutable.persistentListOf
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
|
||||
/**
|
||||
* Ref: https://www.figma.com/design/pDlJZGBsri47FNTXMnEdXB/Compound-Android-Templates?node-id=21-120385
|
||||
*/
|
||||
@Composable
|
||||
fun RoomDetailsView(
|
||||
state: RoomDetailsState,
|
||||
@@ -229,66 +233,11 @@ fun RoomDetailsView(
|
||||
)
|
||||
}
|
||||
}
|
||||
// Room content
|
||||
PreferenceCategory {
|
||||
if (state.roomNotificationSettings != null) {
|
||||
NotificationItem(
|
||||
isDefaultMode = state.roomNotificationSettings.isDefault,
|
||||
openRoomNotificationSettings = openRoomNotificationSettings
|
||||
)
|
||||
}
|
||||
|
||||
FavoriteItem(
|
||||
isFavorite = state.isFavorite,
|
||||
onFavoriteChanges = {
|
||||
state.eventSink(RoomDetailsEvent.SetFavorite(it))
|
||||
}
|
||||
MediaGalleryItem(
|
||||
onClick = openMediaGallery
|
||||
)
|
||||
|
||||
if (state.canShowSecurityAndPrivacy) {
|
||||
SecurityAndPrivacyItem(
|
||||
onClick = onSecurityAndPrivacyClick
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
state.roomMemberDetailsState?.let { dmMemberDetails ->
|
||||
if (state.canInvite) {
|
||||
PreferenceCategory {
|
||||
InviteItem(onClick = invitePeople)
|
||||
}
|
||||
}
|
||||
PreferenceCategory {
|
||||
ProfileItem(
|
||||
verificationState = dmMemberDetails.verificationState,
|
||||
onClick = { onProfileClick(dmMemberDetails.userId) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (state.roomType is RoomDetailsType.Room) {
|
||||
PreferenceCategory {
|
||||
MembersItem(
|
||||
memberCount = state.memberCount,
|
||||
hasVerificationViolations = state.hasMemberVerificationViolations,
|
||||
openRoomMemberList = openRoomMemberList,
|
||||
)
|
||||
if (state.canShowKnockRequests) {
|
||||
KnockRequestsItem(
|
||||
knockRequestsCount = state.knockRequestsCount,
|
||||
onKnockRequestsClick = onKnockRequestsClick
|
||||
)
|
||||
}
|
||||
if (state.displayRolesAndPermissionsSettings) {
|
||||
ListItem(
|
||||
headlineContent = { Text(stringResource(R.string.screen_room_details_roles_and_permissions)) },
|
||||
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Admin())),
|
||||
onClick = openAdminSettings,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
PreferenceCategory {
|
||||
PinnedMessagesItem(
|
||||
pinnedMessagesCount = state.pinnedMessagesCount,
|
||||
onPinnedMessagesClick = onPinnedMessagesClick
|
||||
@@ -296,23 +245,87 @@ fun RoomDetailsView(
|
||||
PollsItem(
|
||||
openPollHistory = openPollHistory
|
||||
)
|
||||
MediaGalleryItem(
|
||||
onClick = openMediaGallery
|
||||
}
|
||||
when (state.roomType) {
|
||||
is RoomDetailsType.Room -> {
|
||||
PreferenceCategory {
|
||||
MembersItem(
|
||||
memberCount = state.memberCount,
|
||||
hasVerificationViolations = state.hasMemberVerificationViolations,
|
||||
openRoomMemberList = openRoomMemberList,
|
||||
)
|
||||
if (state.canShowKnockRequests) {
|
||||
KnockRequestsItem(
|
||||
knockRequestsCount = state.knockRequestsCount,
|
||||
onKnockRequestsClick = onKnockRequestsClick
|
||||
)
|
||||
}
|
||||
if (state.displayRolesAndPermissionsSettings) {
|
||||
ListItem(
|
||||
headlineContent = { Text(stringResource(R.string.screen_room_details_roles_and_permissions)) },
|
||||
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Admin())),
|
||||
onClick = openAdminSettings,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
is RoomDetailsType.Dm -> {
|
||||
if (state.canInvite) {
|
||||
// Note: for rooms the invite action is a Main action
|
||||
PreferenceCategory {
|
||||
InviteItem(onClick = invitePeople)
|
||||
}
|
||||
}
|
||||
state.dmOtherMemberDetailsState?.let { dmMemberDetails ->
|
||||
PreferenceCategory {
|
||||
ProfileItem(
|
||||
verificationState = dmMemberDetails.verificationState,
|
||||
onClick = { onProfileClick(dmMemberDetails.userId) }
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
PreferenceCategory {
|
||||
if (state.roomNotificationSettings != null) {
|
||||
NotificationItem(
|
||||
isDefaultMode = state.roomNotificationSettings.isDefault,
|
||||
openRoomNotificationSettings = openRoomNotificationSettings
|
||||
)
|
||||
}
|
||||
FavoriteItem(
|
||||
isFavorite = state.isFavorite,
|
||||
onFavoriteChanges = {
|
||||
state.eventSink(RoomDetailsEvent.SetFavorite(it))
|
||||
}
|
||||
)
|
||||
if (state.canShowSecurityAndPrivacy && state.roomType is RoomDetailsType.Room) {
|
||||
SecurityAndPrivacyItem(
|
||||
onClick = onSecurityAndPrivacyClick
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
if (state.roomType is RoomDetailsType.Dm && state.roomMemberDetailsState != null) {
|
||||
val roomMemberState = state.roomMemberDetailsState
|
||||
BlockUserSection(roomMemberState)
|
||||
BlockUserDialogs(roomMemberState)
|
||||
if (state.isEncrypted) {
|
||||
PreferenceCategory(
|
||||
title = stringResource(R.string.screen_room_details_security_title)
|
||||
) {
|
||||
ListItem(
|
||||
leadingContent = ListItemContent.Icon(IconSource.Vector(CompoundIcons.Lock())),
|
||||
headlineContent = {
|
||||
Text(stringResource(id = R.string.screen_room_details_encryption_enabled_title))
|
||||
},
|
||||
supportingContent = {
|
||||
Text(stringResource(id = R.string.screen_room_details_encryption_enabled_subtitle))
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
OtherActionsSection(
|
||||
dmOtherMemberDetailsState = state.dmOtherMemberDetailsState,
|
||||
canReportRoom = state.canReportRoom,
|
||||
onReportRoomClick = onReportRoomClick,
|
||||
onLeaveRoomClick = { state.eventSink(RoomDetailsEvent.LeaveRoom(needsConfirmation = true)) }
|
||||
)
|
||||
|
||||
if (state.showDebugInfo) {
|
||||
DebugInfoSection(
|
||||
roomId = state.roomId,
|
||||
@@ -803,8 +816,13 @@ private fun OtherActionsSection(
|
||||
canReportRoom: Boolean,
|
||||
onReportRoomClick: () -> Unit,
|
||||
onLeaveRoomClick: () -> Unit,
|
||||
dmOtherMemberDetailsState: UserProfileState?,
|
||||
) {
|
||||
PreferenceCategory(showTopDivider = true) {
|
||||
PreferenceCategory {
|
||||
if (dmOtherMemberDetailsState != null) {
|
||||
BlockUserSection(dmOtherMemberDetailsState)
|
||||
BlockUserDialogs(dmOtherMemberDetailsState)
|
||||
}
|
||||
if (canReportRoom) {
|
||||
ListItem(
|
||||
headlineContent = {
|
||||
@@ -832,7 +850,7 @@ private fun DebugInfoSection(
|
||||
roomVersion: String?,
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
PreferenceCategory(showTopDivider = true) {
|
||||
PreferenceCategory {
|
||||
val toastMessage = stringResource(CommonStrings.common_copied_to_clipboard)
|
||||
ListItem(
|
||||
headlineContent = {
|
||||
@@ -870,17 +888,17 @@ private fun DebugInfoSection(
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewWithLargeHeight
|
||||
@PreviewWithExtraLargeHeight
|
||||
@Composable
|
||||
internal fun RoomDetailsPreview(@PreviewParameter(RoomDetailsStateProvider::class) state: RoomDetailsState) =
|
||||
ElementPreviewLight { ContentToPreview(state) }
|
||||
|
||||
@PreviewWithLargeHeight
|
||||
@PreviewWithExtraLargeHeight
|
||||
@Composable
|
||||
internal fun RoomDetailsDarkPreview(@PreviewParameter(RoomDetailsStateProvider::class) state: RoomDetailsState) =
|
||||
ElementPreviewDark { ContentToPreview(state) }
|
||||
|
||||
@PreviewWithLargeHeight
|
||||
@PreviewWithExtraLargeHeight
|
||||
@Composable
|
||||
internal fun RoomDetailsA11yPreview() = ElementPreview {
|
||||
ContentToPreview(
|
||||
|
||||
+3
-2
@@ -334,7 +334,8 @@ class RoomDetailsViewTest {
|
||||
setRoomDetailView(
|
||||
state = aRoomDetailsState(
|
||||
eventSink = EventsRecorder(expectEvents = false),
|
||||
roomMemberDetailsState = aUserProfileState(userId = A_USER_ID),
|
||||
roomType = RoomDetailsType.Dm(aDmRoomMember(userId = A_USER_ID)),
|
||||
dmOtherMemberDetailsState = aUserProfileState(userId = A_USER_ID),
|
||||
),
|
||||
onProfileClick = callback,
|
||||
)
|
||||
@@ -352,7 +353,7 @@ class RoomDetailsViewTest {
|
||||
roomType = RoomDetailsType.Dm(
|
||||
aDmRoomMember(userId = UserId("@other:local.org")),
|
||||
),
|
||||
roomMemberDetailsState = aUserProfileState(userId = A_USER_ID),
|
||||
dmOtherMemberDetailsState = aUserProfileState(userId = A_USER_ID),
|
||||
canInvite = true,
|
||||
),
|
||||
invitePeople = callback,
|
||||
|
||||
+3
@@ -16,3 +16,6 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||
*/
|
||||
@Preview(heightDp = 1000)
|
||||
annotation class PreviewWithLargeHeight
|
||||
|
||||
@Preview(heightDp = 1600)
|
||||
annotation class PreviewWithExtraLargeHeight
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d7c187e173ae6d02d6c95c03bcc24cce91b0922e6aa5a08677732748aab0fc30
|
||||
size 85320
|
||||
oid sha256:9dc6120d4320dafa66be77e8386a4b636b6b8a77e30ac10d9d6f31932839036a
|
||||
size 67337
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:8979ec6209ad6e0deb6946e00ce227f3db41a565218afe31b72b889bee224daa
|
||||
size 46268
|
||||
oid sha256:6a2dc4ca92e9ab49a29158ef001408ae1ca5d7f8cfed30876c223a4bea31624d
|
||||
size 40091
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:16200632461dcbbf0f6211b7064b61a1e2fa04cd34e14946beb12b9e9f4d7b7f
|
||||
size 43901
|
||||
oid sha256:4c31008e2eff545cee39d267475c1f346fe96c6c3600572d812a903659f79604
|
||||
size 38262
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2279893a284e620cf487f6370982a14278fd57bb278e53932a5fd7c5cab8e95e
|
||||
size 43033
|
||||
oid sha256:a5a22703e5a398443ff2457f5705177648f2ce5172c91294e10860ff16ceb25a
|
||||
size 38258
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5d4da60a94c56b13b65efb797825c54c1e107fe4440f56b1fcac5d47779cbf64
|
||||
size 44502
|
||||
oid sha256:e121018b1e0344c0f07453fa63c99ec382797f82b6828c0291c9724a4e8bdcc9
|
||||
size 38601
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ee2899f7870b09f287b45b327d5d0462b423ba65afa1087dec1be862507378de
|
||||
size 44411
|
||||
oid sha256:bd3f8738d58814fa420f683c7bd80a8f805195b15e4973bed1d33b5aa3062533
|
||||
size 38535
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:78ba2ddfdfc47febc0503daa0985a5fdf04ef15bdc391b4a88c3c630b1946b35
|
||||
size 46004
|
||||
oid sha256:00e744b9f2652c2cd4cc05f798786d2a090843483d616e1f4868e0431f5495d8
|
||||
size 39947
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4a832b0e395498b15e176529ea55c50ed129f6d2330fbec4ff1f8e3dcaeab93f
|
||||
size 46543
|
||||
oid sha256:b7832f9cca5732d13dc8d2f282df245c5b09e908c84b37104f3f9764fb2ca189
|
||||
size 40271
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d8e738bd873339d195b4190f65a18016f2f0eb1bbc9f513a2b25467cb5f5828c
|
||||
size 44745
|
||||
oid sha256:fc2f69b95a34c455534f04a21f9edde12acfbdd4c57c190ad7aa22352c2206ec
|
||||
size 38838
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:892dd301ab08c6a302e8286d3f86878178130a22baf550402f2102ba98f0d21c
|
||||
size 43982
|
||||
oid sha256:096bfadc7faa370132e03822cb9c66eacdc2b7fa07a65ce501fe1fec7c0d8a81
|
||||
size 38236
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:809c597757d6f1385803c1378a494f24309b533168df59c7e06852c1ce34b8d3
|
||||
size 41408
|
||||
oid sha256:2710ef0a99a60eca8b369a6c2b0d45658f7d1b2e44900137a625ade9891986bd
|
||||
size 37199
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3756793e5d92f0fac18e96a49e69ac7ed6901c1195d3e6526088027405e82dbf
|
||||
size 41361
|
||||
oid sha256:3e51350f6799f4b5ed3a0dadfa226d839e4be8e7182bad82ba168381c5a7f7b7
|
||||
size 37223
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:099f571485ce8476d4b8a2313610b6c1d03a7d7420132e06d6258b483d640a08
|
||||
size 39130
|
||||
oid sha256:922caafea1f17073dfe1352762f194694d4dec8facc93cfa901be111fc99832d
|
||||
size 34856
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66fd2cfb9f343c77b8db0a4fbc0d7a1571a4dfe1d70c78823a4ba03bfbc846eb
|
||||
size 44934
|
||||
oid sha256:7764a75469a6e2f585c2b919ebad99e61a627d1adef05a6de85370eeb08a0df1
|
||||
size 38934
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:465ecd337f705262c8f533b3b01daa6a548c6ee88752be405609660ddfaf56b1
|
||||
size 44676
|
||||
oid sha256:fd3546dd3a61245c611fbd94ba510ba96ea0b3c63048aa6537a91479a45542a4
|
||||
size 38696
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3cca233c171b6c6709a94163ca1f0024a42ff66200383fdbcaf57b321251522e
|
||||
size 44390
|
||||
oid sha256:bbbfc332a093a408354d75064d960f20ca761f606741349723c46d8ab68b6f59
|
||||
size 38585
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9e5e8b39197d115c6190b89fd54033b3319b36dfbf5c6f152dd84e6c79147bbb
|
||||
size 37877
|
||||
oid sha256:7ab49c4c721c0b192786afb47c47fe9d205e10734e6c20410a522b0a33624b47
|
||||
size 32001
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4899d2ffcc6da1f414f7fb223440b8463250dc5ac07558cfaee2947f95c93362
|
||||
size 42236
|
||||
oid sha256:1dde565f1a8a2b58c1eb9446b04e4c954dbb6e1c2d2fa843acac9e7ae850bd31
|
||||
size 30785
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:577381a33e7f0a88ceebb7f2be6528c3e99417cf1351b74c134aab948664cc64
|
||||
size 42149
|
||||
oid sha256:bd58ff9f30ac4aadf4c7db8d26f0127e8182f6806febd54bbc2a69a071b9606b
|
||||
size 37445
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b2bc2699d8dcf770103726c571a6966eacf173cbbad05c4fa6188815aa9ae231
|
||||
size 41052
|
||||
oid sha256:3cfc733deef5472fc65f0de1e6318e6bac781be6a399c9b1441fd1e2e4123c26
|
||||
size 36925
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9cba49398954a404def6b37f3cde057cb88d6f59249b943f1689403ccd902326
|
||||
size 42024
|
||||
oid sha256:0e3d91ed010211048d9d1e7d659d5159ec7c771af53672cf61825ce8a719c6fc
|
||||
size 31495
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:405a29c158295616560152c5790f189a8019bd635a53a69b581c8aa595e6e9ea
|
||||
size 45494
|
||||
oid sha256:167eb16cc4197529054fd0522a73db2b36b4369f149bce46c65a7d2deb449559
|
||||
size 39193
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3f948e9cc2eb7bc73b0441fbdea72d582a042895b3404c8302b7e182c3481fae
|
||||
size 44425
|
||||
oid sha256:b49f74cb3db16cb8f4c8c0cfadf08f64a29b147598e420e264bfd9121b485d35
|
||||
size 38615
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b4702b18ad5d203050140e6e1a18553344f52eb5482fcaf6ab497698b9ec59fd
|
||||
size 44432
|
||||
oid sha256:50463dcf8b496677bb8d6c8ac1af92378aca52fde19a421e227337425a22457c
|
||||
size 38765
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4189b58dd1263a81566ea86d9881c02f053ecb2a91ba9442553fbe0f230e6860
|
||||
size 47105
|
||||
oid sha256:3cedec6cfed8804e7ef5814255da7b690051a7f29178094aa558dd151bebec5f
|
||||
size 41410
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3fced9019f81e5804ea57c0b1a2750868626ad35b9a7227009a796d289595556
|
||||
size 44659
|
||||
oid sha256:578c3e724112d29557432e08bc442fe127163dc2c33ec22560e7e9768b14bc79
|
||||
size 39456
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:be9bb839a503d169d67d4332a133ce2b3d76b3ff4c52c063436521f8a74c973e
|
||||
size 43894
|
||||
oid sha256:74daf2e85aaee7e01bfd50446e25d1cfe057ad95adfda6efcc8fd74ee4894cb7
|
||||
size 39318
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:82c2781c37b7cefa198f2061a2c8e900b27bd57653db88733be5ff55dfaf5eee
|
||||
size 45251
|
||||
oid sha256:4c3484c638961188614a9b70c8d9c5fb20c8c5da04fa7907274bc809ee305b2e
|
||||
size 39828
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:36feab599a6a2d4269b68f42149a6f82832ac0f6f0e9f01fb49adc21b3a58d93
|
||||
size 45172
|
||||
oid sha256:5add6a8689ea768e86cd035958f6d06f71bf882a8059e3addaa4efef25e77f91
|
||||
size 39779
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:04bedd62b5ceba766197dd18da9efb0ff086c2c01c9c19446f8a3c42ed43ad87
|
||||
size 46813
|
||||
oid sha256:0c9bf7f1707d5304bd9df44f086ae966ee7ce6aeefd1f3f830ca9ad5aff9e6e6
|
||||
size 41261
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:828b065aaeeccd826e98e9601069819d7a75ffabab9820a834cacb627416edc0
|
||||
size 47409
|
||||
oid sha256:5d7cc787ca66a1d32df5af87ce2b5c17837a8c650622c8a87b133fe63bbdcecf
|
||||
size 41662
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4740bcd118f8583334dd1c03b5011e33c5384ea6810d1c83711f538cf9f1d165
|
||||
size 45521
|
||||
oid sha256:522ac292a26b23b260305de8e7ad03b9603c2fa7490c2f420d226c2821914a18
|
||||
size 40062
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7fab53a63021ddae8384aed8eaf0a3803d06e8c80645ecc13f79a7f5cced6e68
|
||||
size 45024
|
||||
oid sha256:c4d7cc1bc96f2271efd707d2f8e5a8cc0e19a2eab8981bb1e27e822e54cae904
|
||||
size 39615
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:89a2c619412ad9ca43c79cb76ebe72b827da71743dda7044a9b44de2990f160b
|
||||
size 42388
|
||||
oid sha256:e24cb3232d0c59c8ce020def10be0210860de81be50314706fda1c37f928ce51
|
||||
size 38529
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:56ceed440bb51039ffe7e4419477a57a235eed153a0188838e6265c241896a82
|
||||
size 42262
|
||||
oid sha256:22d74ec9cc245f83fdb71fcb67bff0f4ca061ddd410f64fde61a12ccbb2ffa68
|
||||
size 38492
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3b03e9da2d73cc0e3d0485b73470e576d7ebd4b8b5f375f2a478f1c1524772fa
|
||||
size 39948
|
||||
oid sha256:1d91aed4496b28952522a084145819947c0eeb704bfafab638f12fa11876acda
|
||||
size 36068
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a686a2596b9b85b17c6882aa986b12e13a83a47ed217c4eb6de6aa2cb3ec2d50
|
||||
size 45717
|
||||
oid sha256:42a2011218c00319b7511ced2bc0187d5aeebb874e236a71a6fcd59ea2190feb
|
||||
size 40240
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6bda369c1754e2c07216f4bff0285e017f87b550fe0dc6bb5f127845d52c9b6
|
||||
size 45462
|
||||
oid sha256:d87aab87e3d86ede030054a68e905cf793046ff7443233a1418e12b067d8021b
|
||||
size 39942
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:285045769d912e98df0371c829affd925642c8a20cd0b6b09dfa92ab5f143538
|
||||
size 45131
|
||||
oid sha256:8f3719a8515a3e9edeaa0db8e1d02eccb5c4330a7767d99f25051d4dce46f7b2
|
||||
size 39812
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:463548e170b48509d68c0993acb000748b19921e5d4be784b07ce83252c8a5bb
|
||||
size 38613
|
||||
oid sha256:688c59277fd440e8b96c83857084be78a23218151845ef5483175b0b2e322401
|
||||
size 33306
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c1d19c2b8c6b3c80b68214da2bb9f54a6897a279aa70e2d8cab88c291332cece
|
||||
size 42980
|
||||
oid sha256:1c424390f8c4930db36d474806290c525edfd4b2e25689c95516fe74e5bdc77b
|
||||
size 31484
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2057479cad5d3b9a89ec835ee1d06705c6c459f7810c2875bea26b975944bcf7
|
||||
size 42960
|
||||
oid sha256:e76c8967b4cd416dc4a09e94290dba727e1ca6de51186afd7993ed7561ad49e4
|
||||
size 38593
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:073addf26e8d0b638bce93db99d1fe9740abd89613a1eb8ef5bb4324e489d6fa
|
||||
size 41924
|
||||
oid sha256:2edc249c3352db53a478c033ca5ebee16a3bfde7c9110b893315b739792f2409
|
||||
size 38215
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:56d72cab4a9d7af568cc497b68d6ca9055874544cfd462c93da37fe368801fdf
|
||||
size 42984
|
||||
oid sha256:9f8a90a86b7dca19bd6964a2a78c610308915d4c55327601499b03f58b104236
|
||||
size 32498
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9141f5fa4e054dc5cf70126309830bc38d564d467a215eaa1130f3601b15e761
|
||||
size 46350
|
||||
oid sha256:aa079faa553ee5f223cd96c50c89dcd207b226b108da92287f1f70fb83078ee6
|
||||
size 40503
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a062b8cbe4dfbd94a5b068b1f7c4654ed8b697a7e98ae4c2bcb6c3e5bf473b49
|
||||
size 45289
|
||||
oid sha256:d98ec0320a6360b56c01ddd193da24c397ca95b0127b31f56375e0fc970264ac
|
||||
size 39913
|
||||
|
||||
+2
-2
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:46aafd39e1a93f8d357def4c5f3f024ad0ee13931ebdb9f72475dbc911fd7532
|
||||
size 45266
|
||||
oid sha256:037424649684d6559b0a62d7ef1001c63b5a7547bff8398aaa27cc37002d1491
|
||||
size 39939
|
||||
|
||||
Reference in New Issue
Block a user