Add 'unencrypted room' badges and labels (#4445)
* Add 'unencrypted room' icon and label to composer * Modify colors for room details screen info labels * Add exception to Konsist's preview check * Update screenshots --------- Co-authored-by: ElementBot <android@element.io>
This commit is contained in:
parent
f969dcf42e
commit
b9e286d9d6
113 changed files with 493 additions and 196 deletions
|
|
@ -73,7 +73,7 @@ class AttachmentsPreviewPresenter @AssistedInject constructor(
|
|||
|
||||
val markdownTextEditorState = rememberMarkdownTextEditorState(initialText = null, initialFocus = false)
|
||||
val textEditorState by rememberUpdatedState(
|
||||
TextEditorState.Markdown(markdownTextEditorState)
|
||||
TextEditorState.Markdown(markdownTextEditorState, isRoomEncrypted = null)
|
||||
)
|
||||
|
||||
val ongoingSendAttachmentJob = remember { mutableStateOf<Job?>(null) }
|
||||
|
|
|
|||
|
|
@ -141,6 +141,8 @@ class MessageComposerPresenter @AssistedInject constructor(
|
|||
override fun present(): MessageComposerState {
|
||||
val localCoroutineScope = rememberCoroutineScope()
|
||||
|
||||
val roomInfo by room.roomInfoFlow.collectAsState()
|
||||
|
||||
val richTextEditorState = richTextEditorStateFactory.remember()
|
||||
if (isTesting) {
|
||||
richTextEditorState.isReadyToProcessActions = true
|
||||
|
|
@ -242,9 +244,9 @@ class MessageComposerPresenter @AssistedInject constructor(
|
|||
|
||||
val textEditorState by rememberUpdatedState(
|
||||
if (showTextFormatting) {
|
||||
TextEditorState.Rich(richTextEditorState)
|
||||
TextEditorState.Rich(richTextEditorState, roomInfo.isEncrypted == true)
|
||||
} else {
|
||||
TextEditorState.Markdown(markdownTextEditorState)
|
||||
TextEditorState.Markdown(markdownTextEditorState, roomInfo.isEncrypted == true)
|
||||
}
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -469,14 +469,14 @@ private fun RoomBadge.toMatrixBadgeData(): MatrixBadgeAtom.MatrixBadgeData {
|
|||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(R.string.screen_room_details_badge_not_encrypted),
|
||||
icon = CompoundIcons.LockOff(),
|
||||
type = MatrixBadgeAtom.Type.Neutral,
|
||||
type = MatrixBadgeAtom.Type.Info,
|
||||
)
|
||||
}
|
||||
RoomBadge.PUBLIC -> {
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = stringResource(R.string.screen_room_details_badge_public),
|
||||
icon = CompoundIcons.Public(),
|
||||
type = MatrixBadgeAtom.Type.Neutral,
|
||||
type = MatrixBadgeAtom.Type.Info,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import io.element.android.compound.tokens.generated.CompoundIcons
|
|||
import io.element.android.libraries.designsystem.components.Badge
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.theme.badgeInfoBackgroundColor
|
||||
import io.element.android.libraries.designsystem.theme.badgeInfoContentColor
|
||||
import io.element.android.libraries.designsystem.theme.badgeNegativeBackgroundColor
|
||||
import io.element.android.libraries.designsystem.theme.badgeNegativeContentColor
|
||||
import io.element.android.libraries.designsystem.theme.badgeNeutralBackgroundColor
|
||||
|
|
@ -31,7 +33,8 @@ object MatrixBadgeAtom {
|
|||
enum class Type {
|
||||
Positive,
|
||||
Neutral,
|
||||
Negative
|
||||
Negative,
|
||||
Info,
|
||||
}
|
||||
|
||||
@Composable
|
||||
|
|
@ -42,16 +45,19 @@ object MatrixBadgeAtom {
|
|||
Type.Positive -> ElementTheme.colors.badgePositiveBackgroundColor
|
||||
Type.Neutral -> ElementTheme.colors.badgeNeutralBackgroundColor
|
||||
Type.Negative -> ElementTheme.colors.badgeNegativeBackgroundColor
|
||||
Type.Info -> ElementTheme.colors.badgeInfoBackgroundColor
|
||||
}
|
||||
val textColor = when (data.type) {
|
||||
Type.Positive -> ElementTheme.colors.badgePositiveContentColor
|
||||
Type.Neutral -> ElementTheme.colors.badgeNeutralContentColor
|
||||
Type.Negative -> ElementTheme.colors.badgeNegativeContentColor
|
||||
Type.Info -> ElementTheme.colors.badgeInfoContentColor
|
||||
}
|
||||
val iconColor = when (data.type) {
|
||||
Type.Positive -> ElementTheme.colors.iconSuccessPrimary
|
||||
Type.Neutral -> ElementTheme.colors.iconSecondary
|
||||
Type.Negative -> ElementTheme.colors.iconCriticalPrimary
|
||||
Type.Info -> ElementTheme.colors.iconInfoPrimary
|
||||
}
|
||||
Badge(
|
||||
text = data.text,
|
||||
|
|
@ -98,3 +104,15 @@ internal fun MatrixBadgeAtomNegativePreview() = ElementPreview {
|
|||
)
|
||||
)
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun MatrixBadgeAtomInfoPreview() = ElementPreview {
|
||||
MatrixBadgeAtom.View(
|
||||
MatrixBadgeAtom.MatrixBadgeData(
|
||||
text = "Not encrypted",
|
||||
icon = CompoundIcons.LockOff(),
|
||||
type = MatrixBadgeAtom.Type.Info,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,6 +165,14 @@ val SemanticColors.badgeNegativeBackgroundColor
|
|||
val SemanticColors.badgeNegativeContentColor
|
||||
get() = if (isLight) LightColorTokens.colorRed1100 else DarkColorTokens.colorRed1100
|
||||
|
||||
@OptIn(CoreColorToken::class)
|
||||
val SemanticColors.badgeInfoBackgroundColor
|
||||
get() = if (isLight) LightColorTokens.colorAlphaBlue300 else DarkColorTokens.colorAlphaBlue300
|
||||
|
||||
@OptIn(CoreColorToken::class)
|
||||
val SemanticColors.badgeInfoContentColor
|
||||
get() = if (isLight) LightColorTokens.colorBlue1100 else DarkColorTokens.colorBlue1100
|
||||
|
||||
@OptIn(CoreColorToken::class)
|
||||
val SemanticColors.pinnedMessageBannerIndicator
|
||||
get() = if (isLight) LightColorTokens.colorAlphaGray600 else DarkColorTokens.colorAlphaGray600
|
||||
|
|
|
|||
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
package io.element.android.libraries.textcomposer
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.BoxScope
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.IntrinsicSize
|
||||
import androidx.compose.foundation.layout.Row
|
||||
|
|
@ -37,14 +37,18 @@ import androidx.compose.ui.Modifier
|
|||
import androidx.compose.ui.draw.clip
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.unit.dp
|
||||
import io.element.android.compound.theme.ElementTheme
|
||||
import io.element.android.compound.tokens.generated.CompoundIcons
|
||||
import io.element.android.libraries.designsystem.components.media.createFakeWaveform
|
||||
import io.element.android.libraries.designsystem.preview.DAY_MODE_NAME
|
||||
import io.element.android.libraries.designsystem.preview.ElementPreview
|
||||
import io.element.android.libraries.designsystem.preview.NIGHT_MODE_NAME
|
||||
import io.element.android.libraries.designsystem.preview.PreviewsDayNight
|
||||
import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator
|
||||
import io.element.android.libraries.designsystem.theme.components.HorizontalDivider
|
||||
import io.element.android.libraries.designsystem.theme.components.Icon
|
||||
import io.element.android.libraries.designsystem.theme.components.IconColorButton
|
||||
import io.element.android.libraries.designsystem.theme.components.Text
|
||||
|
|
@ -281,6 +285,7 @@ fun TextComposer(
|
|||
if (showTextFormatting && textFormattingOptions != null) {
|
||||
TextFormattingLayout(
|
||||
modifier = layoutModifier,
|
||||
isRoomEncrypted = state.isRoomEncrypted,
|
||||
textInput = textInput,
|
||||
dismissTextFormattingButton = {
|
||||
IconColorButton(
|
||||
|
|
@ -295,6 +300,7 @@ fun TextComposer(
|
|||
StandardLayout(
|
||||
voiceMessageState = voiceMessageState,
|
||||
enableVoiceMessages = enableVoiceMessages,
|
||||
isRoomEncrypted = state.isRoomEncrypted,
|
||||
modifier = layoutModifier,
|
||||
composerOptionsButton = composerOptionsButton,
|
||||
textInput = textInput,
|
||||
|
|
@ -330,6 +336,7 @@ fun TextComposer(
|
|||
private fun StandardLayout(
|
||||
voiceMessageState: VoiceMessageState,
|
||||
enableVoiceMessages: Boolean,
|
||||
isRoomEncrypted: Boolean?,
|
||||
textInput: @Composable () -> Unit,
|
||||
composerOptionsButton: @Composable () -> Unit,
|
||||
voiceRecording: @Composable () -> Unit,
|
||||
|
|
@ -337,58 +344,85 @@ private fun StandardLayout(
|
|||
endButton: @Composable () -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
) {
|
||||
Row(
|
||||
modifier = modifier,
|
||||
verticalAlignment = Alignment.Bottom,
|
||||
) {
|
||||
if (enableVoiceMessages && voiceMessageState !is VoiceMessageState.Idle) {
|
||||
if (voiceMessageState is VoiceMessageState.Preview || voiceMessageState is VoiceMessageState.Recording) {
|
||||
Column(modifier = modifier) {
|
||||
if (isRoomEncrypted == false) {
|
||||
Spacer(Modifier.height(16.dp))
|
||||
NotEncryptedBadge()
|
||||
Spacer(Modifier.height(4.dp))
|
||||
}
|
||||
Row(verticalAlignment = Alignment.Bottom) {
|
||||
if (enableVoiceMessages && voiceMessageState !is VoiceMessageState.Idle) {
|
||||
if (voiceMessageState is VoiceMessageState.Preview || voiceMessageState is VoiceMessageState.Recording) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(bottom = 5.dp, top = 5.dp, end = 3.dp, start = 3.dp)
|
||||
.size(48.dp),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
voiceDeleteButton()
|
||||
}
|
||||
} else {
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(bottom = 5.dp, top = 5.dp, end = 3.dp, start = 3.dp)
|
||||
.size(48.dp),
|
||||
contentAlignment = Alignment.Center,
|
||||
.padding(bottom = 8.dp, top = 8.dp)
|
||||
.weight(1f)
|
||||
) {
|
||||
voiceDeleteButton()
|
||||
voiceRecording()
|
||||
}
|
||||
} else {
|
||||
Spacer(modifier = Modifier.width(16.dp))
|
||||
Box(
|
||||
Modifier
|
||||
.padding(bottom = 5.dp, top = 5.dp, start = 3.dp)
|
||||
) {
|
||||
composerOptionsButton()
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(bottom = 8.dp, top = 8.dp)
|
||||
.weight(1f)
|
||||
) {
|
||||
textInput()
|
||||
}
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(bottom = 8.dp, top = 8.dp)
|
||||
.weight(1f)
|
||||
) {
|
||||
voiceRecording()
|
||||
}
|
||||
} else {
|
||||
Box(
|
||||
Modifier
|
||||
.padding(bottom = 5.dp, top = 5.dp, start = 3.dp)
|
||||
.padding(bottom = 5.dp, top = 5.dp, end = 6.dp, start = 6.dp)
|
||||
.size(48.dp),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
composerOptionsButton()
|
||||
endButton()
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.padding(bottom = 8.dp, top = 8.dp)
|
||||
.weight(1f)
|
||||
) {
|
||||
textInput()
|
||||
}
|
||||
}
|
||||
Box(
|
||||
Modifier
|
||||
.padding(bottom = 5.dp, top = 5.dp, end = 6.dp, start = 6.dp)
|
||||
.size(48.dp),
|
||||
contentAlignment = Alignment.Center,
|
||||
) {
|
||||
endButton()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun NotEncryptedBadge() {
|
||||
Row(
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
horizontalArrangement = Arrangement.Center,
|
||||
verticalAlignment = Alignment.CenterVertically,
|
||||
) {
|
||||
Icon(
|
||||
modifier = Modifier.size(16.dp),
|
||||
imageVector = CompoundIcons.LockOff(),
|
||||
contentDescription = null,
|
||||
tint = ElementTheme.colors.iconInfoPrimary,
|
||||
)
|
||||
Spacer(Modifier.width(4.dp))
|
||||
Text(
|
||||
text = stringResource(CommonStrings.common_not_encrypted),
|
||||
style = ElementTheme.typography.fontBodySmRegular,
|
||||
color = ElementTheme.colors.textSecondary,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun TextFormattingLayout(
|
||||
isRoomEncrypted: Boolean?,
|
||||
textInput: @Composable () -> Unit,
|
||||
dismissTextFormattingButton: @Composable () -> Unit,
|
||||
textFormatting: @Composable () -> Unit,
|
||||
|
|
@ -399,6 +433,10 @@ private fun TextFormattingLayout(
|
|||
modifier = modifier.padding(vertical = 4.dp),
|
||||
verticalArrangement = Arrangement.spacedBy(4.dp),
|
||||
) {
|
||||
if (isRoomEncrypted == false) {
|
||||
NotEncryptedBadge()
|
||||
Spacer(Modifier.height(8.dp))
|
||||
}
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.weight(1f)
|
||||
|
|
@ -438,7 +476,7 @@ private fun TextInputBox(
|
|||
placeholder: String,
|
||||
showPlaceholder: Boolean,
|
||||
subcomposing: Boolean,
|
||||
textInput: @Composable BoxScope.() -> Unit,
|
||||
textInput: @Composable () -> Unit,
|
||||
) {
|
||||
val bgColor = ElementTheme.colors.bgSubtleSecondary
|
||||
val borderColor = ElementTheme.colors.borderDisabled
|
||||
|
|
@ -539,24 +577,26 @@ private fun TextInput(
|
|||
}
|
||||
}
|
||||
|
||||
private fun aTextEditorStateMarkdownList() = persistentListOf(
|
||||
aTextEditorStateMarkdown(initialText = "", initialFocus = true),
|
||||
aTextEditorStateMarkdown(initialText = "A message", initialFocus = true),
|
||||
private fun aTextEditorStateMarkdownList(isRoomEncrypted: Boolean? = null) = persistentListOf(
|
||||
aTextEditorStateMarkdown(initialText = "", initialFocus = true, isRoomEncrypted = isRoomEncrypted),
|
||||
aTextEditorStateMarkdown(initialText = "A message", initialFocus = true, isRoomEncrypted = isRoomEncrypted),
|
||||
aTextEditorStateMarkdown(
|
||||
initialText = "A message\nWith several lines\nTo preview larger textfields and long lines with overflow",
|
||||
initialFocus = true,
|
||||
isRoomEncrypted = isRoomEncrypted,
|
||||
),
|
||||
aTextEditorStateMarkdown(initialText = "A message without focus", initialFocus = false),
|
||||
aTextEditorStateMarkdown(initialText = "A message without focus", initialFocus = false, isRoomEncrypted = isRoomEncrypted),
|
||||
)
|
||||
|
||||
private fun aTextEditorStateRichList() = persistentListOf(
|
||||
aTextEditorStateRich(initialFocus = true),
|
||||
aTextEditorStateRich(initialText = "A message", initialFocus = true),
|
||||
private fun aTextEditorStateRichList(isRoomEncrypted: Boolean? = null) = persistentListOf(
|
||||
aTextEditorStateRich(initialFocus = true, isRoomEncrypted = isRoomEncrypted),
|
||||
aTextEditorStateRich(initialText = "A message", initialFocus = true, isRoomEncrypted = isRoomEncrypted),
|
||||
aTextEditorStateRich(
|
||||
initialText = "A message\nWith several lines\nTo preview larger textfields and long lines with overflow",
|
||||
initialFocus = true
|
||||
initialFocus = true,
|
||||
isRoomEncrypted = isRoomEncrypted,
|
||||
),
|
||||
aTextEditorStateRich(initialText = "A message without focus", initialFocus = false),
|
||||
aTextEditorStateRich(initialText = "A message without focus", initialFocus = false, isRoomEncrypted = isRoomEncrypted),
|
||||
)
|
||||
|
||||
@PreviewsDayNight
|
||||
|
|
@ -574,6 +614,21 @@ internal fun TextComposerSimplePreview() = ElementPreview {
|
|||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerSimpleNotEncryptedPreview() = ElementPreview {
|
||||
PreviewColumn(
|
||||
items = aTextEditorStateMarkdownList(isRoomEncrypted = false),
|
||||
) { _, textEditorState ->
|
||||
ATextComposer(
|
||||
state = textEditorState,
|
||||
voiceMessageState = VoiceMessageState.Idle,
|
||||
composerMode = MessageComposerMode.Normal,
|
||||
enableVoiceMessages = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerFormattingPreview() = ElementPreview {
|
||||
|
|
@ -590,6 +645,22 @@ internal fun TextComposerFormattingPreview() = ElementPreview {
|
|||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerFormattingNotEncryptedPreview() = ElementPreview {
|
||||
PreviewColumn(
|
||||
items = aTextEditorStateRichList(isRoomEncrypted = false)
|
||||
) { _, textEditorState ->
|
||||
ATextComposer(
|
||||
state = textEditorState,
|
||||
voiceMessageState = VoiceMessageState.Idle,
|
||||
showTextFormatting = true,
|
||||
composerMode = MessageComposerMode.Normal,
|
||||
enableVoiceMessages = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerEditPreview() = ElementPreview {
|
||||
|
|
@ -605,6 +676,21 @@ internal fun TextComposerEditPreview() = ElementPreview {
|
|||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerEditNotEncryptedPreview() = ElementPreview {
|
||||
PreviewColumn(
|
||||
items = aTextEditorStateRichList(isRoomEncrypted = false)
|
||||
) { _, textEditorState ->
|
||||
ATextComposer(
|
||||
state = textEditorState,
|
||||
voiceMessageState = VoiceMessageState.Idle,
|
||||
composerMode = aMessageComposerModeEdit(),
|
||||
enableVoiceMessages = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerEditCaptionPreview() = ElementPreview {
|
||||
|
|
@ -674,6 +760,31 @@ internal fun TextComposerReplyPreview(@PreviewParameter(InReplyToDetailsProvider
|
|||
}
|
||||
}
|
||||
|
||||
@Preview(
|
||||
name = DAY_MODE_NAME,
|
||||
heightDp = 800,
|
||||
)
|
||||
@Preview(
|
||||
name = NIGHT_MODE_NAME,
|
||||
uiMode = Configuration.UI_MODE_NIGHT_YES,
|
||||
heightDp = 800,
|
||||
)
|
||||
@Composable
|
||||
internal fun TextComposerReplyNotEncryptedPreview(@PreviewParameter(InReplyToDetailsProvider::class) inReplyToDetails: InReplyToDetails) = ElementPreview {
|
||||
PreviewColumn(
|
||||
items = aTextEditorStateRichList(isRoomEncrypted = false)
|
||||
) { _, textEditorState ->
|
||||
ATextComposer(
|
||||
state = textEditorState,
|
||||
voiceMessageState = VoiceMessageState.Idle,
|
||||
composerMode = aMessageComposerModeReply(
|
||||
replyToDetails = inReplyToDetails,
|
||||
),
|
||||
enableVoiceMessages = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerCaptionPreview() = ElementPreview {
|
||||
|
|
@ -734,6 +845,47 @@ internal fun TextComposerVoicePreview() = ElementPreview {
|
|||
}
|
||||
}
|
||||
|
||||
@PreviewsDayNight
|
||||
@Composable
|
||||
internal fun TextComposerVoiceNotEncryptedPreview() = ElementPreview {
|
||||
PreviewColumn(
|
||||
items = persistentListOf(
|
||||
VoiceMessageState.Recording(61.seconds, createFakeWaveform()),
|
||||
VoiceMessageState.Preview(
|
||||
isSending = false,
|
||||
isPlaying = false,
|
||||
showCursor = false,
|
||||
waveform = createFakeWaveform(),
|
||||
time = 0.seconds,
|
||||
playbackProgress = 0.0f
|
||||
),
|
||||
VoiceMessageState.Preview(
|
||||
isSending = false,
|
||||
isPlaying = true,
|
||||
showCursor = true,
|
||||
waveform = createFakeWaveform(),
|
||||
time = 3.seconds,
|
||||
playbackProgress = 0.2f
|
||||
),
|
||||
VoiceMessageState.Preview(
|
||||
isSending = true,
|
||||
isPlaying = false,
|
||||
showCursor = false,
|
||||
waveform = createFakeWaveform(),
|
||||
time = 61.seconds,
|
||||
playbackProgress = 0.0f
|
||||
),
|
||||
)
|
||||
) { _, voiceMessageState ->
|
||||
ATextComposer(
|
||||
state = aTextEditorStateRich(initialFocus = true, isRoomEncrypted = false),
|
||||
voiceMessageState = voiceMessageState,
|
||||
composerMode = MessageComposerMode.Normal,
|
||||
enableVoiceMessages = true,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
private fun <T> PreviewColumn(
|
||||
items: ImmutableList<T>,
|
||||
|
|
@ -741,6 +893,7 @@ private fun <T> PreviewColumn(
|
|||
) {
|
||||
Column {
|
||||
items.forEachIndexed { index, item ->
|
||||
HorizontalDivider()
|
||||
Box(
|
||||
modifier = Modifier.height(IntrinsicSize.Min)
|
||||
) {
|
||||
|
|
|
|||
|
|
@ -12,12 +12,14 @@ import io.element.android.wysiwyg.compose.RichTextEditorState
|
|||
fun aTextEditorStateMarkdown(
|
||||
initialText: String? = "",
|
||||
initialFocus: Boolean = false,
|
||||
isRoomEncrypted: Boolean? = null,
|
||||
): TextEditorState {
|
||||
return TextEditorState.Markdown(
|
||||
aMarkdownTextEditorState(
|
||||
initialText = initialText,
|
||||
initialFocus = initialFocus,
|
||||
)
|
||||
),
|
||||
isRoomEncrypted = isRoomEncrypted,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -36,6 +38,7 @@ fun aTextEditorStateRich(
|
|||
initialHtml: String = initialText,
|
||||
initialMarkdown: String = initialText,
|
||||
initialFocus: Boolean = false,
|
||||
isRoomEncrypted: Boolean? = null,
|
||||
): TextEditorState {
|
||||
return TextEditorState.Rich(
|
||||
aRichTextEditorState(
|
||||
|
|
@ -43,7 +46,8 @@ fun aTextEditorStateRich(
|
|||
initialHtml = initialHtml,
|
||||
initialMarkdown = initialMarkdown,
|
||||
initialFocus = initialFocus,
|
||||
)
|
||||
),
|
||||
isRoomEncrypted = isRoomEncrypted,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,12 +13,16 @@ import io.element.android.wysiwyg.compose.RichTextEditorState
|
|||
|
||||
@Immutable
|
||||
sealed interface TextEditorState {
|
||||
val isRoomEncrypted: Boolean?
|
||||
|
||||
data class Markdown(
|
||||
val state: MarkdownTextEditorState,
|
||||
override val isRoomEncrypted: Boolean?,
|
||||
) : TextEditorState
|
||||
|
||||
data class Rich(
|
||||
val richTextEditorState: RichTextEditorState
|
||||
val richTextEditorState: RichTextEditorState,
|
||||
override val isRoomEncrypted: Boolean?,
|
||||
) : TextEditorState
|
||||
|
||||
fun messageHtml(): String? = when (this) {
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ class KonsistPreviewTest {
|
|||
"MatrixBadgeAtomPositivePreview",
|
||||
"MatrixBadgeAtomNeutralPreview",
|
||||
"MatrixBadgeAtomNegativePreview",
|
||||
"MatrixBadgeAtomInfoPreview",
|
||||
"MentionSpanPreview",
|
||||
"MessageComposerViewVoicePreview",
|
||||
"MessagesReactionButtonAddPreview",
|
||||
|
|
@ -106,14 +107,19 @@ class KonsistPreviewTest {
|
|||
"TextComposerAddCaptionPreview",
|
||||
"TextComposerCaptionPreview",
|
||||
"TextComposerEditPreview",
|
||||
"TextComposerEditNotEncryptedPreview",
|
||||
"TextComposerEditCaptionPreview",
|
||||
"TextComposerFormattingPreview",
|
||||
"TextComposerFormattingNotEncryptedPreview",
|
||||
"TextComposerLinkDialogCreateLinkPreview",
|
||||
"TextComposerLinkDialogCreateLinkWithoutTextPreview",
|
||||
"TextComposerLinkDialogEditLinkPreview",
|
||||
"TextComposerReplyPreview",
|
||||
"TextComposerReplyNotEncryptedPreview",
|
||||
"TextComposerSimplePreview",
|
||||
"TextComposerSimpleNotEncryptedPreview",
|
||||
"TextComposerVoicePreview",
|
||||
"TextComposerVoiceNotEncryptedPreview",
|
||||
"TimelineImageWithCaptionRowPreview",
|
||||
"TimelineItemEventRowForDirectRoomPreview",
|
||||
"TimelineItemEventRowShieldPreview",
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:56c1b08295aa57b8f6a23929ff65481e8e3b4419a72a322c2c5778fdb501720d
|
||||
size 42565
|
||||
oid sha256:cb68bc3937183f353a87f193a34847676977cb2a366cc03fcede0e059e6f8f4f
|
||||
size 42658
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a53c076b1564cee6c9ee4af2260e821a835f9bbb4a45d72144102e88ccfb54e1
|
||||
size 41198
|
||||
oid sha256:3a863908ebec818d64c4b8511667b192e09094c09cbfa6dd372538c831520bb2
|
||||
size 41295
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:499ab99b53faaa24a372ffd3c353e8ec60f2017db94f138857854440e1b7f9f7
|
||||
size 43343
|
||||
oid sha256:05b48264399d0ae93be25361ff04cb01b9d9dc7168da72d266bbc58a781428cf
|
||||
size 43445
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d8bd2c340084ffb59089fe44a4ce5c31c28eb83d830082e9f478f930e1810e4a
|
||||
size 41464
|
||||
oid sha256:21df4f150516a7113b890f3da79c96b141245384dd6b74af7376ebb5bb9054cb
|
||||
size 41555
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6b21719f9d7a7078f468310765b7de115487f2860cc7f9e0df55bb52d64d8df0
|
||||
size 42273
|
||||
oid sha256:2b4cb0e83e6e48d650350be4338a99eb9f82fede2829a8dc5d71d8f8cc2ecd66
|
||||
size 42366
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:789cc6a332afbc1086ddc6fb90c91056ee9a1b5bbb28edbdc89b639017d9b65f
|
||||
size 42855
|
||||
oid sha256:5b0075df788b47714d60f58aa5de5db2cf5beda4777bf54cd48769b4df6f5ae2
|
||||
size 42944
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5e3400d75df1c13bde15394e1ab69df7657257bce86b7ac16953142ea7c61389
|
||||
size 41775
|
||||
oid sha256:f28b78dccc4eace6d8aeb897f1eef1d00fe9e73dddf4ae4c62305f7063add2d5
|
||||
size 41868
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cd1c6c17bb7aca2688b4c1c3f72b4d133774ca52a6dde1eef14dac9536445ebd
|
||||
size 32317
|
||||
oid sha256:a51d96a3e531140c918de3bef60b437dfd9e8f7a4cdd162b87077d96babafda9
|
||||
size 32438
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb20ef0455ab32e5375f24fa3588d1a837a4ed09315629e4c8b1a056a6b1ce19
|
||||
size 34473
|
||||
oid sha256:c89d28aeacb8cf19e76ebdc784176152991ad2a2067df4adbc4e40afa315e821
|
||||
size 34581
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:66121516d3abb9b80d636e00b7de6c139f56a04a593031a6d341af977f587e78
|
||||
size 41690
|
||||
oid sha256:91265422162edaf2b2e6c8474db8a94aec7db30427d67a7adcf7e9a30966d7f1
|
||||
size 41805
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2005f9cf7e3d22f03e400e1b652d1eb2b3b3e834311b0f94380599a52f932f0d
|
||||
size 40545
|
||||
oid sha256:d5029ca41d5043331cb59741433c5f9232105ee5d1f65d8f6aa2570e842ece45
|
||||
size 40644
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c41fdaa2341788494026277683590e0fe58fcc6b4c93919c77dcf29fd1e95c15
|
||||
size 41752
|
||||
oid sha256:9e9ebe7fe8e19809489798a996f888642159200486b129cd34aa333685e0ef56
|
||||
size 41854
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:acccf3a9cb267c8effd573dc78f381f666d91b4f30438031d32a04fff98292dd
|
||||
size 42538
|
||||
oid sha256:0b1be379fac2defa3ba11db1c9ab9d0847c8245b3820648315d41e3013c0dd9d
|
||||
size 42642
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:976d4e662ce84eace4a56c95560e333365bed13d745d8641a3f5e6e6d33fb557
|
||||
size 41478
|
||||
oid sha256:1127cde21edf3ebb251dda7ddf54a4c83ecdd0e4f7fa17c84743cbc6b35d4000
|
||||
size 41570
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ed8020dadea9b8d25d774b1069e69b62d904a772f9b7ff5150776809f3febc30
|
||||
size 41517
|
||||
oid sha256:2013a7c30aac9d4921bf2187b3a9d1d1329842fbee6a020d98a4cd82a9e0c5a8
|
||||
size 41619
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:564679f18d5a1c00a3e3e2882952ad590cfef5516494da36a212b04db224da46
|
||||
size 43489
|
||||
oid sha256:b7b8b61cdbe5ec0657f4f1852d8e371a5ab4db49e30574ef701165cd52a654fa
|
||||
size 43511
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:979e78d2f35d41a7f938990e19a4bdc30cbb89dfd8158d27e8494216a19d6cf5
|
||||
size 42034
|
||||
oid sha256:d282617bd3bb1db22842c23036e1637ae18bf66d135caca644f045dbfd2f9c8f
|
||||
size 42048
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cbc011665f08cb1e87bbebcee1541a0850efbce86769a40325e1804f7b82f6e9
|
||||
size 43865
|
||||
oid sha256:5db679b0fdb9fe6b7ca92ba6feec63c56075f2526d61648e323a3b96671cf34a
|
||||
size 43895
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb9b0223c7790fe0b5bb8a210236d18ac9c54daf7c8c3f606b96aa68c9d50b89
|
||||
size 42369
|
||||
oid sha256:3e12057777bc343396543ea3fca1352ddd33e65ec7baaa1c672a040b86b27a20
|
||||
size 42391
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:912fde637f2b3d4fc4c7e84f290d075f491ba30170794462272ee763c1174b98
|
||||
size 43183
|
||||
oid sha256:304074b1f15761b9a0fc2529d61ca56505e5c59d9a74ea3cea6db6dd5416783f
|
||||
size 43205
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:764e5560d1ebb7f415bc5ff830a19d3879a15741ccc9c7e6d35e0f47a594907b
|
||||
size 43791
|
||||
oid sha256:2dad2ff77ed440ab76deb90b2aa1287767f7078b4f0fd9b721d78661b891786e
|
||||
size 43813
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:398dd93176f5bb6058ccd8a3d4257bec7d14ebd2043d11c6b9f0de0108bf9b68
|
||||
size 42708
|
||||
oid sha256:d19188df2e2b6a66be9b76edcada4dce831d8b0fb5b3e76ac2185723ccc6ec34
|
||||
size 42730
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:286ab5e4f50b6af38f001c93d78dc9c377e1b986cc6ca03d183b6c3ecea6a7ad
|
||||
size 33092
|
||||
oid sha256:c301ada1436b647871471716eb3bde5afe63b3c8375fecf065821b24b8d2bfdb
|
||||
size 33118
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d6c037c7b1963a7f298f59edc96e502950276467d061e79be59aeebb1e7ff933
|
||||
size 35302
|
||||
oid sha256:568a9220be25d55e801611ff7e2be2b9cb5fb4da8018d280d4c9173526e2a6bf
|
||||
size 35331
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5d70764f1238eb95598271d784c354a4e6f84e590412402d0f3323d7f4f497ac
|
||||
size 42490
|
||||
oid sha256:122c7b535de6136219b6864bc72db43d093c10ac2991b7427a5fa1fd8a27c7ae
|
||||
size 42543
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7408a11744f6e8a0ce9c62cca6d4d0e9b1413981bf6c56c164c879201b0d63e8
|
||||
size 41456
|
||||
oid sha256:01e1ffd408352b307274768528095cacb54863b2ec54f6ca912b51c030acc90a
|
||||
size 41481
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d59deaee5d608c279670104c0f3bfcb5bbda90ac9779111441053ea1b9d40d4c
|
||||
size 42658
|
||||
oid sha256:89b759add6d46fed97f7acae8f8366bb247632090b9520e50b6dde9f8fd64921
|
||||
size 42681
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ee8120c50d4782bad2a81ba84ae6a3e81d3b107fe31c29fb085d7a62539f802
|
||||
size 43558
|
||||
oid sha256:61057d174a52244f032b823dc38dd2752e0ca07ae45acc185a49bc3f1808509f
|
||||
size 43588
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2a7c9cbeb91af7f4aef327777d7e384a03f71cf433716e9209c182dfc2d12588
|
||||
size 42458
|
||||
oid sha256:5476f3210bbd833b5f0b836e5942cb78fec6055c1cc43b35625397cc34973306
|
||||
size 42481
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5afb1e4196d40ec39bd4f391c6c6b3a947ff0dff6ebe2e41e9896dc020cff98e
|
||||
size 42432
|
||||
oid sha256:aaa0c1addbc1df1fcbd03f961a4da66a2f1663f4aa2ff35ad65165eb3befee9a
|
||||
size 42462
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b75d304c696b92209bfe9c3564165833dd74b13ad78a33ab5d875aee94b1ed0f
|
||||
size 7044
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:85aabf48fd622093cf07a3810b8267ddc373a6f002a225d1f7a0e785566ece51
|
||||
size 7054
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e64de19f68dd0135905925645c646890d177a2648b68ba4c3edf1769725cfabe
|
||||
size 52614
|
||||
oid sha256:7a23ecbbee117033cefa5ddfbdf68862bc6f44bf03b9cbb2d468ffe4236f9109
|
||||
size 52673
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:32fbd5db3fe38e87e698a03347b1ee6036520ef892603d158f506c45f43e0fd2
|
||||
size 51053
|
||||
oid sha256:3c019dc162f360869595392df03359b6333f96e98150ad3f3f65d464ba5317f7
|
||||
size 50971
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7decfd16d70668e4f2c7951726b0b0df3d0ce740e8aae9b4ab03f3002daf10bf
|
||||
size 53441
|
||||
oid sha256:93cbe1f644c5f13d7e77f917859333b761640355e6bd8087fc4a9308fb4afc01
|
||||
size 53776
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:44f01f033eb5f18a350a5bd8ec094c7a4fc33fc4773ad74e186ce7dbc0036a38
|
||||
size 51765
|
||||
oid sha256:58b867446d31a57350e72768449d8072d70f94203b2ec110950b302c8f1792ba
|
||||
size 51764
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07d327321baf7b5bfc5b9e635a42438b67cd7750de746665c2a49dbf90a86385
|
||||
size 47512
|
||||
oid sha256:2262ca89505ab3d8c896ef818830c2220aef2d0903e51ca3bab36ff63b1a6cfd
|
||||
size 47488
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b8173c9c25b203c9ef009c2433cd8e4dc9b61ed914e885b6770254b1649d6e02
|
||||
size 45976
|
||||
oid sha256:cf2354049558d02a1072285d58598353a65974f91702fb7f4b516d7977b03c5b
|
||||
size 46035
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ce2d7c9518c89e18cbdeefbd19a1a4821006aedc5e94a72951e76b98ea593e4f
|
||||
size 52144
|
||||
oid sha256:8d5feff7d5b06463196a09bf065a62c9e578c15fe9bafdc6e4508fcf93bfcdba
|
||||
size 52415
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb92895bc75caf350a6027a34e770b67456c7fb2865fefbcf1a089b38440a4c9
|
||||
size 50858
|
||||
oid sha256:440568a0cc345291ff16d49890bd9665af96651702f417ec016f89f6c0475dc4
|
||||
size 50833
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9e1589df371db7e489c4d8696898c44a919df001f4a30d83d2f32b92dbece2de
|
||||
size 63546
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3bf77d27c4fb0f491a40c3ca532e424bbb791660d168f951d8210cc6cb2898ba
|
||||
size 61205
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e64de19f68dd0135905925645c646890d177a2648b68ba4c3edf1769725cfabe
|
||||
size 52614
|
||||
oid sha256:7a23ecbbee117033cefa5ddfbdf68862bc6f44bf03b9cbb2d468ffe4236f9109
|
||||
size 52673
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:32fbd5db3fe38e87e698a03347b1ee6036520ef892603d158f506c45f43e0fd2
|
||||
size 51053
|
||||
oid sha256:3c019dc162f360869595392df03359b6333f96e98150ad3f3f65d464ba5317f7
|
||||
size 50971
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c86b3656e5913338c2513af8a56dc725a63d4fda9c5478f429ec684203c68115
|
||||
size 64550
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:1b491d682990192c54ebdae58045caab1ff653d3d6c89ca5f15e93bbb45c6fc0
|
||||
size 62052
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:59ff13af2bdf76abcbc6502f9a6159871cc60ddd3d693ff50bb1ed3f3298dc1a
|
||||
size 53921
|
||||
oid sha256:d2bc5c13d2a1e100bdcd0142b7f03b458ba80d0d6ded82de1ebb1b6aa055a344
|
||||
size 53893
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2f4896534efc9e1d1dd91e307609aaffafdc643a81ffca25ed9589ea424b2e60
|
||||
size 51303
|
||||
oid sha256:fb2210aa87440b2e87217ff53448091078bdff658a6b36fad12cb1a57caf59e2
|
||||
size 51187
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d12f482740fbab1a9fb12bd5cdc37dc2bd03fac6d1304208b353d86bc4f558c6
|
||||
size 73436
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:380a1544c59d1f8cf5f73f84341686b042bab24d7d092f43f30fd36cbb85b438
|
||||
size 59956
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7127c9b52895079a8837bacc7371b31b1b1fd99415157f3246ee56a4272bf39e
|
||||
size 72830
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7856d79bdf5166b6b1676d6cd418a33e0b21713b8d40d02b0187363951d373c3
|
||||
size 80957
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b7407ef412758b7e19e0acb3fd539d15578b4bf94c776e7e6eec7d15e1ad0a40
|
||||
size 62484
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:adf521b7a9e451146e13fcfd41ad3d072cfa4cdb01023cf252e39c147d9507b9
|
||||
size 61354
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:dfacf0126a768870f293f6f327c4d5a1379bd51e1d62da6b8953e6f76952c11d
|
||||
size 67852
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:9ba9b65e68427ae8f00f3075eeb671d2980c29ce904e10398bc26e3455bc641f
|
||||
size 60114
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b0538f1d4753e95082434db510f8d9b90c8c05be9975729000a6ec122b1b83d1
|
||||
size 60841
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:30532cf8f90261dff21a23f425a2c15334713d4659be97052fe6c796651ba8e2
|
||||
size 61988
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:add696fa3700b07bda65546a714887a96406cdc0c883b39e8b9b3eb419d60ef5
|
||||
size 68667
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d60de55c65d7225f077c084c0d345f17a4a1b9d8d8598824e7721b3ae3c53bb4
|
||||
size 60385
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0b18891980733fe58d000fcfc7b34f5fa0c355a7b7dc016157f02f633a0d2593
|
||||
size 71248
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:771606c34e4910bb123651706304db185fd2affe48c50e780147b9ecc86e6676
|
||||
size 58149
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:faa783569b0b56bc6e0853860d6a3aca19bc42d6d8cab8733f365a0c4d7ec076
|
||||
size 70683
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e689ed91b269984c11e5d3ff9dd8fafb3e9786585eaedb2b9bd3c0c367a8255e
|
||||
size 78512
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:061c17ac2134b7ae49b80eb408c49a26b8c8f9bc3d40a0094fa466f6484c4525
|
||||
size 60567
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:901c974b774202476d3091ed624df42549f9add3bf7a8b07bcc33fc657412b5b
|
||||
size 59591
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:b5fdb0fdf6af3368f21dedbdb9e2f1492e20340de1427cd537a2c38aa21a73e4
|
||||
size 65871
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d3a6b63e7c35d6f64cb5cc59af99c558b0ac5ed5ce9f1de1fb78c819f156c880
|
||||
size 58366
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:90a6561fa8d3576d93daf1ececda3bd89fd54ede171186059ec4eabd33d09a04
|
||||
size 59020
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:cd32e719165a0351ad00ff7a39adb121b7ecbaa58232450d9cf41033cc93b389
|
||||
size 60109
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:52d06e1cc43e7e4fab868faceaec8ceab4513e99422954b859c6f38a93475487
|
||||
size 66489
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:97ba97045331e55b16153ac3d8d37b3ddee0f8395d0b12d270d687e5ccdb662b
|
||||
size 58641
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c45c431a00a4222d48d7ed9bea28d4b87c744c543ac34345418897f338d45bc0
|
||||
size 76396
|
||||
oid sha256:a3dc5b4b88b11b4398777f9c19f55c760a6da33755206dc3559e8cfd5cf6bcfc
|
||||
size 76395
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:0b622bd71902638a554124a38477e7ef7fecb5a8a9a4c74fe22c291ea1b38a12
|
||||
size 59392
|
||||
oid sha256:513851c2cfe1dd1579962b1913ad389e1cffb0570ff3572f981a780acc3da532
|
||||
size 59926
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f7804f57fc5951d12fcf260dc9469f4ecf30ea7846feb75386fc0d45a577ab61
|
||||
size 74433
|
||||
oid sha256:598fd33fab87e4f7095803f52af75843445863b2092130b0d423abbc8bb77c22
|
||||
size 74571
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:74d0d5797e35f8bb8d07c58826dd5c6dc485d179ffef0d32d356a0dbd0e0af2f
|
||||
size 85811
|
||||
oid sha256:314a1640f2835e5fb6adc8f2ae199f4f10ef028b6dede17681760860455b3590
|
||||
size 85742
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:7a5f9dd27972e5b5598dabb207f62bd36a6fa8c618cf9f764565b2ed8f694280
|
||||
size 62643
|
||||
oid sha256:a1273ac2ab60a7427f676bef8eb232b53be46d47e46963c58b1a134bb482cfb6
|
||||
size 63085
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:447046861cf9c48ee6381a6d17d72d5d675b433a39df2d04a98f0d320ab3d972
|
||||
size 61729
|
||||
oid sha256:a78d1da2ef8b469b90c06bf715b7c04e4477bc809a9fb2c74f916a8184a8d867
|
||||
size 62131
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4a5a5d575648186710be4b466bbae6b8b7d7064be27042bdb3a575b90189d906
|
||||
size 69437
|
||||
oid sha256:bae403a239eb103b8c24708ef8fdef3ba92f2c38a80fc16bb1611fb23fc8b2c9
|
||||
size 70019
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c8788be00225f0547c54b9fc87a92497a86c706ae0638f3988e58518f8404ded
|
||||
size 59817
|
||||
oid sha256:c9d24dc3f0540f23d6b5511844b5b06511a757941dbf36277faff0fc5b376efd
|
||||
size 60366
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c990db5dda7d348b61e5a917575aaacc4b1ca2110fe6bcbff51e0eb3a718a342
|
||||
size 60629
|
||||
oid sha256:6e1a3088c752694f7260f2fd45f1b14d2449c7121609109ce93a1232ba9581a8
|
||||
size 61145
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2cf3f968dec3e9f4bab00e3ccd91ca432dc042dd49151e27e8d5ba07d399ed3c
|
||||
size 62862
|
||||
oid sha256:39047878c1505a00ca8549ddea2f4373682bf6321eca82d92822d73d689e12c1
|
||||
size 63211
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:4b95759b9fe7bf8d8807e35d5fe576d750620d7eafcf3d17a3e3f85532048e98
|
||||
size 70037
|
||||
oid sha256:00f12f3c347087b24cdc23fc4c82b93d2a2550c4af1026dcddbe7b22a3dcd334
|
||||
size 70522
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:3400d8a1c228da983fe9af087c38141d5c8f195541051bd250a51ac138700e7a
|
||||
size 60083
|
||||
oid sha256:6e9ed3949968e5c8653fddd929e5ebd4bf07dcd9391fab0fcb30d70146635fe1
|
||||
size 60638
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:ada8a9f61a93ce6ad58098b7e0743b23ba0ee50a6168eeeb34d55584a9796982
|
||||
size 73791
|
||||
oid sha256:c956c860f9148891b04eba8b30e8aef29b5e430caddc5340cd51af779596e598
|
||||
size 73718
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:95648a88ce6afce734f8230a8fc1b68947a2a0889e259621f68ea376e11eb943
|
||||
size 57265
|
||||
oid sha256:7b367679460940c258542d54316006f9391ca23a30145baca4c2191cbca80363
|
||||
size 57953
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:40245180648f6a71a7410bd7ce29cf5bef3de17afec4a9c4f2673ca9d16fa42f
|
||||
size 71970
|
||||
oid sha256:7503402391f7adaa717eeff9d83f359f37cafed3e8502271aa37350a4039de3c
|
||||
size 72010
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bac3e0bdcc1bf5b3fca6af2bbf9aa983bb0fbc412e179bdb18badf6d5d95d4c4
|
||||
size 83026
|
||||
oid sha256:0417f5f570680d727df49e22408f296b8cbbf4be9086f6cb9b0f0e89208ef0f3
|
||||
size 83091
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:2a89f4b6cf7529bc75a6ca5e478e0c5e5b0d1d788d4e1ab5a72039d108239a4a
|
||||
size 60538
|
||||
oid sha256:dbe2e2977ae2fd86d154c34cf59ef82b796c4ff75d69455dcae8fdb4041b2f25
|
||||
size 61122
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:6c7426edf9d3405664abc4882afc62aa77ca73004c3d167d52761b1d45ccc914
|
||||
size 59675
|
||||
oid sha256:c221234495c789453447b12ebfca4b03e3b4cb9c381bb21a6454f54bfe8a81f5
|
||||
size 60255
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d2178a1374d8ca42634347b9ae3ad7ec991e05af98b4503b29f3b2709c6c1bb0
|
||||
size 67265
|
||||
oid sha256:bd04747ca75e56c63324893810f4194c84c796e9aeda0db193cb9339b331f890
|
||||
size 68015
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue