From e8a489b5cdac44f5cc445ba7942587e0384c536b Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:10:05 +0100 Subject: [PATCH 01/19] SAS emoji: use embedded drawable (#1953) --- .../impl/VerifySelfSessionStateProvider.kt | 14 +-- .../impl/VerifySelfSessionView.kt | 14 +-- .../impl/emoji/VerificationEmoji.kt | 89 +++++++++++++++++++ .../drawable/ic_verification_aeroplane.xml | 18 ++++ .../res/drawable/ic_verification_anchor.xml | 12 +++ .../res/drawable/ic_verification_apple.xml | 15 ++++ .../res/drawable/ic_verification_ball.xml | 15 ++++ .../res/drawable/ic_verification_banana.xml | 36 ++++++++ .../res/drawable/ic_verification_bell.xml | 15 ++++ .../res/drawable/ic_verification_bicycle.xml | 27 ++++++ .../res/drawable/ic_verification_book.xml | 24 +++++ .../drawable/ic_verification_butterfly.xml | 39 ++++++++ .../res/drawable/ic_verification_cactus.xml | 51 +++++++++++ .../res/drawable/ic_verification_cake.xml | 42 +++++++++ .../main/res/drawable/ic_verification_cat.xml | 36 ++++++++ .../res/drawable/ic_verification_clock.xml | 27 ++++++ .../res/drawable/ic_verification_cloud.xml | 12 +++ .../res/drawable/ic_verification_corn.xml | 18 ++++ .../main/res/drawable/ic_verification_dog.xml | 45 ++++++++++ .../res/drawable/ic_verification_elephant.xml | 15 ++++ .../res/drawable/ic_verification_fire.xml | 12 +++ .../res/drawable/ic_verification_fish.xml | 24 +++++ .../res/drawable/ic_verification_flag.xml | 24 +++++ .../res/drawable/ic_verification_flower.xml | 15 ++++ .../res/drawable/ic_verification_folder.xml | 12 +++ .../res/drawable/ic_verification_gift.xml | 21 +++++ .../res/drawable/ic_verification_glasses.xml | 12 +++ .../res/drawable/ic_verification_globe.xml | 15 ++++ .../res/drawable/ic_verification_guitar.xml | 51 +++++++++++ .../res/drawable/ic_verification_hammer.xml | 12 +++ .../main/res/drawable/ic_verification_hat.xml | 15 ++++ .../drawable/ic_verification_headphones.xml | 15 ++++ .../res/drawable/ic_verification_heart.xml | 9 ++ .../res/drawable/ic_verification_horse.xml | 33 +++++++ .../drawable/ic_verification_hourglass.xml | 15 ++++ .../main/res/drawable/ic_verification_key.xml | 9 ++ .../drawable/ic_verification_light_bulb.xml | 21 +++++ .../res/drawable/ic_verification_lion.xml | 54 +++++++++++ .../res/drawable/ic_verification_lock.xml | 12 +++ .../res/drawable/ic_verification_moon.xml | 12 +++ .../res/drawable/ic_verification_mushroom.xml | 24 +++++ .../res/drawable/ic_verification_octopus.xml | 24 +++++ .../res/drawable/ic_verification_panda.xml | 42 +++++++++ .../drawable/ic_verification_paperclip.xml | 9 ++ .../res/drawable/ic_verification_pencil.xml | 24 +++++ .../res/drawable/ic_verification_penguin.xml | 21 +++++ .../res/drawable/ic_verification_phone.xml | 15 ++++ .../main/res/drawable/ic_verification_pig.xml | 21 +++++ .../main/res/drawable/ic_verification_pin.xml | 18 ++++ .../res/drawable/ic_verification_pizza.xml | 21 +++++ .../res/drawable/ic_verification_rabbit.xml | 27 ++++++ .../res/drawable/ic_verification_robot.xml | 48 ++++++++++ .../res/drawable/ic_verification_rocket.xml | 24 +++++ .../res/drawable/ic_verification_rooster.xml | 18 ++++ .../res/drawable/ic_verification_santa.xml | 42 +++++++++ .../res/drawable/ic_verification_scissors.xml | 21 +++++ .../res/drawable/ic_verification_smiley.xml | 18 ++++ .../res/drawable/ic_verification_spanner.xml | 9 ++ .../drawable/ic_verification_strawberry.xml | 15 ++++ .../drawable/ic_verification_thumbs_up.xml | 12 +++ .../res/drawable/ic_verification_train.xml | 72 +++++++++++++++ .../res/drawable/ic_verification_tree.xml | 54 +++++++++++ .../res/drawable/ic_verification_trophy.xml | 18 ++++ .../res/drawable/ic_verification_trumpet.xml | 21 +++++ .../res/drawable/ic_verification_turtle.xml | 21 +++++ .../res/drawable/ic_verification_umbrella.xml | 18 ++++ .../res/drawable/ic_verification_unicorn.xml | 30 +++++++ .../impl/VerifySelfSessionPresenterTests.kt | 4 +- .../api/verification/VerificationEmoji.kt | 2 +- .../RustSessionVerificationService.kt | 2 +- 70 files changed, 1636 insertions(+), 16 deletions(-) create mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_aeroplane.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_anchor.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_apple.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_ball.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_banana.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_bell.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_bicycle.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_book.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_butterfly.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_cactus.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_cake.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_cat.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_clock.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_cloud.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_corn.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_dog.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_elephant.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_fire.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_fish.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_flag.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_flower.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_folder.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_gift.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_glasses.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_globe.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_guitar.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_hammer.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_hat.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_headphones.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_heart.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_horse.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_hourglass.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_key.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_light_bulb.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_lion.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_lock.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_moon.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_mushroom.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_octopus.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_panda.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_paperclip.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_pencil.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_penguin.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_phone.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_pig.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_pin.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_pizza.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_rabbit.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_robot.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_rocket.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_rooster.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_santa.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_scissors.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_smiley.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_spanner.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_strawberry.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_thumbs_up.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_train.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_tree.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_trophy.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_trumpet.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_turtle.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_umbrella.xml create mode 100644 features/verifysession/impl/src/main/res/drawable/ic_verification_unicorn.xml diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt index 54a59dee01..c0d5bc1628 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt @@ -49,11 +49,11 @@ fun aVerifySelfSessionState() = VerifySelfSessionState( ) fun aVerificationEmojiList() = listOf( - VerificationEmoji("🍕", "Pizza"), - VerificationEmoji("🚀", "Rocket"), - VerificationEmoji("🚀", "Rocket"), - VerificationEmoji("🗺️", "Map"), - VerificationEmoji("🎳", "Bowling"), - VerificationEmoji("🎳", "Bowling"), - VerificationEmoji("📌", "Pin"), + VerificationEmoji(27, "Pizza"), + VerificationEmoji(54, "Rocket"), + VerificationEmoji(54, "Rocket"), + VerificationEmoji(42, "Book"), + VerificationEmoji(48, "Hammer"), + VerificationEmoji(48, "Hammer"), + VerificationEmoji(63, "Pin"), ) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index df29cc653e..a2b0f209e4 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -17,6 +17,7 @@ package io.element.android.features.verifysession.impl import androidx.activity.compose.BackHandler +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -25,6 +26,7 @@ import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.widthIn import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable @@ -33,11 +35,13 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp +import io.element.android.compound.theme.ElementTheme +import io.element.android.features.verifysession.impl.emoji.toEmojiDrawableRes import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule @@ -49,7 +53,6 @@ import io.element.android.libraries.designsystem.theme.components.CircularProgre import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton import io.element.android.libraries.matrix.api.verification.VerificationEmoji -import io.element.android.compound.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.features.verifysession.impl.VerifySelfSessionState.VerificationStep as FlowStep @@ -158,9 +161,10 @@ private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: @Composable private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifier) { Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier) { - Text( - text = emoji.code, - style = ElementTheme.typography.fontBodyMdRegular.copy(fontSize = 34.sp), + Image( + modifier = Modifier.size(48.dp), + painter = painterResource(id = emoji.code.toEmojiDrawableRes()), + contentDescription = null, ) Spacer(modifier = Modifier.height(16.dp)) Text( diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt new file mode 100644 index 0000000000..4b96808dc2 --- /dev/null +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.element.android.features.verifysession.impl.emoji + +import androidx.annotation.DrawableRes +import io.element.android.features.verifysession.impl.R + +@DrawableRes +internal fun Int.toEmojiDrawableRes(): Int { + return when (this % 64) { + 0 -> R.drawable.ic_verification_dog + 1 -> R.drawable.ic_verification_cat + 2 -> R.drawable.ic_verification_lion + 3 -> R.drawable.ic_verification_horse + 4 -> R.drawable.ic_verification_unicorn + 5 -> R.drawable.ic_verification_pig + 6 -> R.drawable.ic_verification_elephant + 7 -> R.drawable.ic_verification_rabbit + 8 -> R.drawable.ic_verification_panda + 9 -> R.drawable.ic_verification_rooster + 10 -> R.drawable.ic_verification_penguin + 11 -> R.drawable.ic_verification_turtle + 12 -> R.drawable.ic_verification_fish + 13 -> R.drawable.ic_verification_octopus + 14 -> R.drawable.ic_verification_butterfly + 15 -> R.drawable.ic_verification_flower + 16 -> R.drawable.ic_verification_tree + 17 -> R.drawable.ic_verification_cactus + 18 -> R.drawable.ic_verification_mushroom + 19 -> R.drawable.ic_verification_globe + 20 -> R.drawable.ic_verification_moon + 21 -> R.drawable.ic_verification_cloud + 22 -> R.drawable.ic_verification_fire + 23 -> R.drawable.ic_verification_banana + 24 -> R.drawable.ic_verification_apple + 25 -> R.drawable.ic_verification_strawberry + 26 -> R.drawable.ic_verification_corn + 27 -> R.drawable.ic_verification_pizza + 28 -> R.drawable.ic_verification_cake + 29 -> R.drawable.ic_verification_heart + 30 -> R.drawable.ic_verification_smiley + 31 -> R.drawable.ic_verification_robot + 32 -> R.drawable.ic_verification_hat + 33 -> R.drawable.ic_verification_glasses + 34 -> R.drawable.ic_verification_spanner + 35 -> R.drawable.ic_verification_santa + 36 -> R.drawable.ic_verification_thumbs_up + 37 -> R.drawable.ic_verification_umbrella + 38 -> R.drawable.ic_verification_hourglass + 39 -> R.drawable.ic_verification_clock + 40 -> R.drawable.ic_verification_gift + 41 -> R.drawable.ic_verification_light_bulb + 42 -> R.drawable.ic_verification_book + 43 -> R.drawable.ic_verification_pencil + 44 -> R.drawable.ic_verification_paperclip + 45 -> R.drawable.ic_verification_scissors + 46 -> R.drawable.ic_verification_lock + 47 -> R.drawable.ic_verification_key + 48 -> R.drawable.ic_verification_hammer + 49 -> R.drawable.ic_verification_phone + 50 -> R.drawable.ic_verification_flag + 51 -> R.drawable.ic_verification_train + 52 -> R.drawable.ic_verification_bicycle + 53 -> R.drawable.ic_verification_aeroplane + 54 -> R.drawable.ic_verification_rocket + 55 -> R.drawable.ic_verification_trophy + 56 -> R.drawable.ic_verification_ball + 57 -> R.drawable.ic_verification_guitar + 58 -> R.drawable.ic_verification_trumpet + 59 -> R.drawable.ic_verification_bell + 60 -> R.drawable.ic_verification_anchor + 61 -> R.drawable.ic_verification_headphones + 62 -> R.drawable.ic_verification_folder + /* 63 */ else -> R.drawable.ic_verification_pin + } +} diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_aeroplane.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_aeroplane.xml new file mode 100644 index 0000000000..72026cd7a0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_aeroplane.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_anchor.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_anchor.xml new file mode 100644 index 0000000000..b89d033b9e --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_anchor.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_apple.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_apple.xml new file mode 100644 index 0000000000..54e0f9a3c0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_apple.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_ball.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_ball.xml new file mode 100644 index 0000000000..b12c6d245b --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_ball.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_banana.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_banana.xml new file mode 100644 index 0000000000..cdd3cb1b9f --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_banana.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_bell.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_bell.xml new file mode 100644 index 0000000000..2f29828bcf --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_bell.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_bicycle.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_bicycle.xml new file mode 100644 index 0000000000..1427e793c5 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_bicycle.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_book.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_book.xml new file mode 100644 index 0000000000..8e3ecc00c0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_book.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_butterfly.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_butterfly.xml new file mode 100644 index 0000000000..d4b557a7ed --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_butterfly.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_cactus.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_cactus.xml new file mode 100644 index 0000000000..ce8aff0657 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_cactus.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_cake.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_cake.xml new file mode 100644 index 0000000000..9ebb3c0904 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_cake.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_cat.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_cat.xml new file mode 100644 index 0000000000..b34cf63d98 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_cat.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_clock.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_clock.xml new file mode 100644 index 0000000000..48d7150c36 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_clock.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_cloud.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_cloud.xml new file mode 100644 index 0000000000..d390bd6e87 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_cloud.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_corn.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_corn.xml new file mode 100644 index 0000000000..d863d03c2a --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_corn.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_dog.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_dog.xml new file mode 100644 index 0000000000..8346a5ebee --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_dog.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_elephant.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_elephant.xml new file mode 100644 index 0000000000..d0a2de42cb --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_elephant.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_fire.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_fire.xml new file mode 100644 index 0000000000..ebf42039b1 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_fire.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_fish.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_fish.xml new file mode 100644 index 0000000000..30907f2496 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_fish.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_flag.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_flag.xml new file mode 100644 index 0000000000..250388dc4a --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_flag.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_flower.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_flower.xml new file mode 100644 index 0000000000..8a91221a80 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_flower.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_folder.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_folder.xml new file mode 100644 index 0000000000..9320766492 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_folder.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_gift.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_gift.xml new file mode 100644 index 0000000000..d18c6e860a --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_gift.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_glasses.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_glasses.xml new file mode 100644 index 0000000000..8913d1ffd7 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_glasses.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_globe.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_globe.xml new file mode 100644 index 0000000000..2a07829cb3 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_globe.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_guitar.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_guitar.xml new file mode 100644 index 0000000000..2622fbe416 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_guitar.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_hammer.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_hammer.xml new file mode 100644 index 0000000000..7b70654d52 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_hammer.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_hat.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_hat.xml new file mode 100644 index 0000000000..15f980bdb1 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_hat.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_headphones.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_headphones.xml new file mode 100644 index 0000000000..cbc43e7601 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_headphones.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_heart.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_heart.xml new file mode 100644 index 0000000000..d37bcc33d1 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_heart.xml @@ -0,0 +1,9 @@ + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_horse.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_horse.xml new file mode 100644 index 0000000000..bedf0f6f46 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_horse.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_hourglass.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_hourglass.xml new file mode 100644 index 0000000000..8bb37a35bb --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_hourglass.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_key.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_key.xml new file mode 100644 index 0000000000..4cd1d033f7 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_key.xml @@ -0,0 +1,9 @@ + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_light_bulb.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_light_bulb.xml new file mode 100644 index 0000000000..18f3149500 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_light_bulb.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_lion.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_lion.xml new file mode 100644 index 0000000000..b97a508fc2 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_lion.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_lock.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_lock.xml new file mode 100644 index 0000000000..de3979434f --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_lock.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_moon.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_moon.xml new file mode 100644 index 0000000000..3f5abe6ae3 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_moon.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_mushroom.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_mushroom.xml new file mode 100644 index 0000000000..72f7036856 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_mushroom.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_octopus.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_octopus.xml new file mode 100644 index 0000000000..054760f3b8 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_octopus.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_panda.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_panda.xml new file mode 100644 index 0000000000..ab1e718c44 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_panda.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_paperclip.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_paperclip.xml new file mode 100644 index 0000000000..e8f89859d6 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_paperclip.xml @@ -0,0 +1,9 @@ + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_pencil.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_pencil.xml new file mode 100644 index 0000000000..3b9f51fca5 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_pencil.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_penguin.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_penguin.xml new file mode 100644 index 0000000000..fb2e05760f --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_penguin.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_phone.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_phone.xml new file mode 100644 index 0000000000..7beda09c4e --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_phone.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_pig.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_pig.xml new file mode 100644 index 0000000000..c31bd06c52 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_pig.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_pin.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_pin.xml new file mode 100644 index 0000000000..f10e4606a9 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_pin.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_pizza.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_pizza.xml new file mode 100644 index 0000000000..a514aeb3d6 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_pizza.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_rabbit.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_rabbit.xml new file mode 100644 index 0000000000..c8ff75c999 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_rabbit.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_robot.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_robot.xml new file mode 100644 index 0000000000..a53cfe99c0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_robot.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_rocket.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_rocket.xml new file mode 100644 index 0000000000..4097ed9030 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_rocket.xml @@ -0,0 +1,24 @@ + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_rooster.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_rooster.xml new file mode 100644 index 0000000000..cb7ad563f0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_rooster.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_santa.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_santa.xml new file mode 100644 index 0000000000..4f7bc1a24f --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_santa.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_scissors.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_scissors.xml new file mode 100644 index 0000000000..98e68c2071 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_scissors.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_smiley.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_smiley.xml new file mode 100644 index 0000000000..087adc8c6d --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_smiley.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_spanner.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_spanner.xml new file mode 100644 index 0000000000..ba3c4313a3 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_spanner.xml @@ -0,0 +1,9 @@ + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_strawberry.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_strawberry.xml new file mode 100644 index 0000000000..0eeb290d9d --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_strawberry.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_thumbs_up.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_thumbs_up.xml new file mode 100644 index 0000000000..9761204ab6 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_thumbs_up.xml @@ -0,0 +1,12 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_train.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_train.xml new file mode 100644 index 0000000000..e317ce1642 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_train.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_tree.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_tree.xml new file mode 100644 index 0000000000..c5acc19a72 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_tree.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_trophy.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_trophy.xml new file mode 100644 index 0000000000..631da7320d --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_trophy.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_trumpet.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_trumpet.xml new file mode 100644 index 0000000000..84f95a8592 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_trumpet.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_turtle.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_turtle.xml new file mode 100644 index 0000000000..1cedc1b6ad --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_turtle.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_umbrella.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_umbrella.xml new file mode 100644 index 0000000000..ac1267cd3b --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_umbrella.xml @@ -0,0 +1,18 @@ + + + + + + diff --git a/features/verifysession/impl/src/main/res/drawable/ic_verification_unicorn.xml b/features/verifysession/impl/src/main/res/drawable/ic_verification_unicorn.xml new file mode 100644 index 0000000000..19cef5d339 --- /dev/null +++ b/features/verifysession/impl/src/main/res/drawable/ic_verification_unicorn.xml @@ -0,0 +1,30 @@ + + + + + + + + + + diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt index 8f8795ed78..3bf074b602 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt @@ -157,8 +157,8 @@ class VerifySelfSessionPresenterTests { @Test fun `present - When verification is approved, the flow completes if there is no error`() = runTest { - val emojis = listOf( - VerificationEmoji("😄", "Smile") + val emojis = listOf( + VerificationEmoji(30, "Smiley") ) val service = FakeSessionVerificationService().apply { givenEmojiList(emojis) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt index 43b89b6587..af5e49565e 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt @@ -17,6 +17,6 @@ package io.element.android.libraries.matrix.api.verification data class VerificationEmoji( - val code: String, + val code: Int, val name: String, ) diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt index 3d00c2d50e..6a1a91cba1 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt @@ -107,7 +107,7 @@ class RustSessionVerificationService( override fun didReceiveVerificationData(data: List) { val emojis = data.map { emoji -> - emoji.use { VerificationEmoji(it.symbol(), it.description()) } + emoji.use { VerificationEmoji(it.code(), it.description()) } } .toImmutableList() _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(emojis) From ed13dfaf9a5bbb427e69250d029ed9ac4a274a41 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:12:37 +0100 Subject: [PATCH 02/19] Import script to import SAS string from Element Android --- tools/sas/import_sas_strings.py | 103 ++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100755 tools/sas/import_sas_strings.py diff --git a/tools/sas/import_sas_strings.py b/tools/sas/import_sas_strings.py new file mode 100755 index 0000000000..cd642fd0d1 --- /dev/null +++ b/tools/sas/import_sas_strings.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 + +# Copyright (c) 2020 New Vector Ltd +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import argparse +import json +import os +import os.path +# Run `pip3 install requests` if not installed yet +import requests + +### Arguments + +parser = argparse.ArgumentParser(description='Download sas string from matrix-doc.') +parser.add_argument('-v', + '--verbose', + help="increase output verbosity.", + action="store_true") + +args = parser.parse_args() + +if args.verbose: + print("Argument:") + print(args) + +base_url = "https://raw.githubusercontent.com/matrix-org/matrix-spec/main/data-definitions/sas-emoji.json" + +print("Downloading " + base_url + "…") + +r0 = requests.get(base_url) +data0 = json.loads(r0.content.decode()) + +if args.verbose: + print("Json data:") + print(data0) + +print() + +# emoji -> translation +default = dict() +# Language -> emoji -> translation +cumul = dict() + +for emoji in data0: + description = emoji["description"] + if args.verbose: + print("Description: " + description) + default[description] = description + + for lang in emoji["translated_descriptions"]: + if args.verbose: + print("Lang: " + lang) + if not (lang in cumul): + cumul[lang] = dict() + cumul[lang][description] = emoji["translated_descriptions"][lang] + +if args.verbose: + print(default) + print(cumul) + +def write_file(file, dict): + print("Writing file " + file) + if args.verbose: + print("With") + print(dict) + os.makedirs(os.path.dirname(file), exist_ok=True) + with open(file, mode="w", encoding="utf8") as o: + o.write("\n") + o.write("\n") + o.write(" \n") + for key in dict: + if dict[key] is None: + continue + o.write(" " + dict[key].replace("'", "\\'") + "\n") + o.write("\n") + +scripts_dir = os.path.dirname(os.path.abspath(__file__)) +data_defs_dir = os.path.join(scripts_dir, "../matrix-sdk-android/src/main/res") + +# Write default file +write_file(os.path.join(data_defs_dir, "values/strings_sas.xml"), default) + +# Write each language file +for lang in cumul: + androidLang = lang\ + .replace("_", "-r")\ + .replace("zh-rHans", "zh-rCN") + write_file(os.path.join(data_defs_dir, "values-" + androidLang + "/strings_sas.xml"), cumul[lang]) + +print() +print("Success!") From bfefd0ff73af24b1d7c260654c35ac18bfb99648 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:13:41 +0100 Subject: [PATCH 03/19] Adapt to EXA --- tools/sas/import_sas_strings.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/sas/import_sas_strings.py b/tools/sas/import_sas_strings.py index cd642fd0d1..b05be28d31 100755 --- a/tools/sas/import_sas_strings.py +++ b/tools/sas/import_sas_strings.py @@ -87,7 +87,7 @@ def write_file(file, dict): o.write("\n") scripts_dir = os.path.dirname(os.path.abspath(__file__)) -data_defs_dir = os.path.join(scripts_dir, "../matrix-sdk-android/src/main/res") +data_defs_dir = os.path.join(scripts_dir, "../../features/verifysession/impl/src/main/res") # Write default file write_file(os.path.join(data_defs_dir, "values/strings_sas.xml"), default) @@ -96,7 +96,8 @@ write_file(os.path.join(data_defs_dir, "values/strings_sas.xml"), default) for lang in cumul: androidLang = lang\ .replace("_", "-r")\ - .replace("zh-rHans", "zh-rCN") + .replace("zh-rHans", "zh-rCN") \ + .replace("zh-rHant", "zh-rTW") write_file(os.path.join(data_defs_dir, "values-" + androidLang + "/strings_sas.xml"), cumul[lang]) print() From 9502b92dc4e1ad5f8a657912cab46b6d70fa8a88 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:26:50 +0100 Subject: [PATCH 04/19] Use SAS string resource, for i18n. --- .../impl/VerifySelfSessionView.kt | 3 +- ...VerificationEmoji.kt => EmojiDrawables.kt} | 0 .../verifysession/impl/emoji/EmojiStrings.kt | 89 +++++++++++++++++++ .../src/main/res/values-ar/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-bg/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-ca/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-cs/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-de/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-eo/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-es/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-et/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-fa/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-fi/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-fr/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-hr/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-hu/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-id/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-it/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-ja/strings_sas.xml | 68 ++++++++++++++ .../main/res/values-nb-rNO/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-nl/strings_sas.xml | 68 ++++++++++++++ .../main/res/values-pt-rBR/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-pt/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-ru/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-si/strings_sas.xml | 8 ++ .../src/main/res/values-sk/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-sq/strings_sas.xml | 67 ++++++++++++++ .../src/main/res/values-sr/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-sv/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-szl/strings_sas.xml | 4 + .../src/main/res/values-tzm/strings_sas.xml | 30 +++++++ .../src/main/res/values-uk/strings_sas.xml | 68 ++++++++++++++ .../src/main/res/values-vi/strings_sas.xml | 68 ++++++++++++++ .../main/res/values-zh-rCN/strings_sas.xml | 68 ++++++++++++++ .../main/res/values-zh-rTW/strings_sas.xml | 68 ++++++++++++++ .../impl/src/main/res/values/strings_sas.xml | 68 ++++++++++++++ 36 files changed, 2172 insertions(+), 1 deletion(-) rename features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/{VerificationEmoji.kt => EmojiDrawables.kt} (100%) create mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt create mode 100644 features/verifysession/impl/src/main/res/values-ar/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-bg/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-ca/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-cs/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-de/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-eo/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-es/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-et/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-fa/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-fi/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-fr/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-hr/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-hu/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-id/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-it/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-ja/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-nb-rNO/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-nl/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-pt-rBR/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-pt/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-ru/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-si/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-sk/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-sq/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-sr/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-sv/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-szl/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-tzm/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-uk/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-vi/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-zh-rCN/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values-zh-rTW/strings_sas.xml create mode 100644 features/verifysession/impl/src/main/res/values/strings_sas.xml diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index a2b0f209e4..f449eb98ff 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -42,6 +42,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme import io.element.android.features.verifysession.impl.emoji.toEmojiDrawableRes +import io.element.android.features.verifysession.impl.emoji.toEmojiStringRes import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule @@ -168,7 +169,7 @@ private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifie ) Spacer(modifier = Modifier.height(16.dp)) Text( - emoji.name, + text = stringResource(id = emoji.code.toEmojiStringRes()), style = ElementTheme.typography.fontBodyMdRegular, color = MaterialTheme.colorScheme.secondary, maxLines = 1, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt similarity index 100% rename from features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/VerificationEmoji.kt rename to features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt new file mode 100644 index 0000000000..26df09a306 --- /dev/null +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.element.android.features.verifysession.impl.emoji + +import androidx.annotation.StringRes +import io.element.android.features.verifysession.impl.R + +@StringRes +internal fun Int.toEmojiStringRes(): Int { + return when (this % 64) { + 0 -> R.string.verification_emoji_dog + 1 -> R.string.verification_emoji_cat + 2 -> R.string.verification_emoji_lion + 3 -> R.string.verification_emoji_horse + 4 -> R.string.verification_emoji_unicorn + 5 -> R.string.verification_emoji_pig + 6 -> R.string.verification_emoji_elephant + 7 -> R.string.verification_emoji_rabbit + 8 -> R.string.verification_emoji_panda + 9 -> R.string.verification_emoji_rooster + 10 -> R.string.verification_emoji_penguin + 11 -> R.string.verification_emoji_turtle + 12 -> R.string.verification_emoji_fish + 13 -> R.string.verification_emoji_octopus + 14 -> R.string.verification_emoji_butterfly + 15 -> R.string.verification_emoji_flower + 16 -> R.string.verification_emoji_tree + 17 -> R.string.verification_emoji_cactus + 18 -> R.string.verification_emoji_mushroom + 19 -> R.string.verification_emoji_globe + 20 -> R.string.verification_emoji_moon + 21 -> R.string.verification_emoji_cloud + 22 -> R.string.verification_emoji_fire + 23 -> R.string.verification_emoji_banana + 24 -> R.string.verification_emoji_apple + 25 -> R.string.verification_emoji_strawberry + 26 -> R.string.verification_emoji_corn + 27 -> R.string.verification_emoji_pizza + 28 -> R.string.verification_emoji_cake + 29 -> R.string.verification_emoji_heart + 30 -> R.string.verification_emoji_smiley + 31 -> R.string.verification_emoji_robot + 32 -> R.string.verification_emoji_hat + 33 -> R.string.verification_emoji_glasses + 34 -> R.string.verification_emoji_spanner + 35 -> R.string.verification_emoji_santa + 36 -> R.string.verification_emoji_thumbs_up + 37 -> R.string.verification_emoji_umbrella + 38 -> R.string.verification_emoji_hourglass + 39 -> R.string.verification_emoji_clock + 40 -> R.string.verification_emoji_gift + 41 -> R.string.verification_emoji_light_bulb + 42 -> R.string.verification_emoji_book + 43 -> R.string.verification_emoji_pencil + 44 -> R.string.verification_emoji_paperclip + 45 -> R.string.verification_emoji_scissors + 46 -> R.string.verification_emoji_lock + 47 -> R.string.verification_emoji_key + 48 -> R.string.verification_emoji_hammer + 49 -> R.string.verification_emoji_telephone + 50 -> R.string.verification_emoji_flag + 51 -> R.string.verification_emoji_train + 52 -> R.string.verification_emoji_bicycle + 53 -> R.string.verification_emoji_aeroplane + 54 -> R.string.verification_emoji_rocket + 55 -> R.string.verification_emoji_trophy + 56 -> R.string.verification_emoji_ball + 57 -> R.string.verification_emoji_guitar + 58 -> R.string.verification_emoji_trumpet + 59 -> R.string.verification_emoji_bell + 60 -> R.string.verification_emoji_anchor + 61 -> R.string.verification_emoji_headphones + 62 -> R.string.verification_emoji_folder + /* 63 */ else -> R.string.verification_emoji_pin + } +} diff --git a/features/verifysession/impl/src/main/res/values-ar/strings_sas.xml b/features/verifysession/impl/src/main/res/values-ar/strings_sas.xml new file mode 100644 index 0000000000..7e09da1779 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-ar/strings_sas.xml @@ -0,0 +1,68 @@ + + + + كلب + هِرَّة + أَسَد + حِصَان + حصان وحيد القرن + خِنزِير + فِيل + أَرنَب + باندَا + دِيك + بطريق + سُلحفاة + سَمَكة + أُخطُبُوط + فَرَاشَة + زَهرَة + شَجَرَة + صبار + فُطر + كُرَةٌ أرضِيَّة + قَمَر + سَحابَة + نار + مَوزَة + تُفَّاحَة + فَراوِلَة + ذُرَة + بِيتزا + كَعكَة + قَلب + اِبتِسَامَة + رُوبُوت + قُبَّعَة + نَظَّارَة + مِفتَاحُ رَبط + سانتا + رَفعُ إِبهَام + مِظَلَّة + سَاعَةٌ رَملِيَّة + سَاعَة + هَدِيَّة + مِصبَاح + كِتَاب + قَلَمُ رَصاص + مِشبَكُ وَرَق + مِقَصّ + قُفل + مِفتَاح + مِطرَقَة + تِلِفُون + عَلَم + قِطَار + دَرّاجَة + طَائِرة + صَارُوخ + كَأسُ النَّصر + كُرَة + غيتار + بُوق + جَرَس + مِرسَاة + سَمّاعَة رَأس + مُجَلَّد + دَبُّوس + diff --git a/features/verifysession/impl/src/main/res/values-bg/strings_sas.xml b/features/verifysession/impl/src/main/res/values-bg/strings_sas.xml new file mode 100644 index 0000000000..e2ee9faefc --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-bg/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Куче + Котка + Лъв + Кон + Еднорог + Прасе + Слон + Заек + Панда + Петел + Пингвин + Костенурка + Риба + Октопод + Пеперуда + Цвете + Дърво + Кактус + Гъба + Глобус + Луна + Облак + Огън + Банан + Ябълка + Ягода + Царевица + Пица + Торта + Сърце + Усмивка + Робот + Шапка + Очила + Гаечен ключ + Дядо Коледа + Палец нагоре + Чадър + Пясъчен часовник + Часовник + Подарък + Лампа + Книга + Молив + Кламер + Ножици + Катинар + Ключ + Чук + Телефон + Флаг + Влак + Колело + Самолет + Ракета + Трофей + Топка + Китара + Тромпет + Звънец + Котва + Слушалки + Папка + Кабърче + diff --git a/features/verifysession/impl/src/main/res/values-ca/strings_sas.xml b/features/verifysession/impl/src/main/res/values-ca/strings_sas.xml new file mode 100644 index 0000000000..acc0dcbc72 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-ca/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Gos + Gat + Lleó + Cavall + Unicorn + Porc + Elefant + Conill + Panda + Gall + Pingüí + Tortuga + Peix + Pop + Papallona + Flor + Arbre + Cactus + Bolet + Globus terraqüi + Lluna + Núvol + Foc + Plàtan + Poma + Maduixa + Blat de moro + Pizza + Pastís + Cor + Somrient + Robot + Barret + Ulleres + Clau anglesa + Pare Noél + Polzes amunt + Paraigües + Rellotge de sorra + Rellotge + Regal + Bombeta + Llibre + Llapis + Clip + Tisores + Cadenat + Clau + Martell + Telèfon + Bandera + Tren + Bicicleta + Avió + Coet + Trofeu + Pilota + Guitarra + Trompeta + Campana + Àncora + Auriculars + Carpeta + Xinxeta + diff --git a/features/verifysession/impl/src/main/res/values-cs/strings_sas.xml b/features/verifysession/impl/src/main/res/values-cs/strings_sas.xml new file mode 100644 index 0000000000..1c63273e7a --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-cs/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Pes + Kočka + Lev + Kůň + Jednorožec + Prase + Slon + Králík + Panda + Kohout + Tučňák + Želva + Ryba + Chobotnice + Motýl + Květina + Strom + Kaktus + Houba + Zeměkoule + Měsíc + Mrak + Oheň + Banán + Jablko + Jahoda + Kukuřice + Pizza + Dort + Srdce + Smajlík + Robot + Klobouk + Brýle + Klíč + Mikuláš + Palec nahoru + Deštník + Přesýpací hodiny + Hodiny + Dárek + Žárovka + Kniha + Tužka + Sponka + Nůžky + Zámek + Klíč ke dveřím + Kladivo + Telefon + Vlajka + Vlak + Kolo + Letadlo + Raketa + Pohár + Míč + Kytara + Trumpeta + Zvonek + Kotva + Sluchátka + Složka + Špendlík + diff --git a/features/verifysession/impl/src/main/res/values-de/strings_sas.xml b/features/verifysession/impl/src/main/res/values-de/strings_sas.xml new file mode 100644 index 0000000000..be75f797f9 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-de/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Hund + Katze + Löwe + Pferd + Einhorn + Schwein + Elefant + Hase + Panda + Hahn + Pinguin + Schildkröte + Fisch + Oktopus + Schmetterling + Blume + Baum + Kaktus + Pilz + Globus + Mond + Wolke + Feuer + Banane + Apfel + Erdbeere + Mais + Pizza + Kuchen + Herz + Lächeln + Roboter + Hut + Brille + Schraubenschlüssel + Weihnachtsmann + Daumen Hoch + Regenschirm + Sanduhr + Uhr + Geschenk + Glühbirne + Buch + Bleistift + Büroklammer + Schere + Schloss + Schlüssel + Hammer + Telefon + Flagge + Zug + Fahrrad + Flugzeug + Rakete + Pokal + Ball + Gitarre + Trompete + Glocke + Anker + Kopfhörer + Ordner + Stecknadel + diff --git a/features/verifysession/impl/src/main/res/values-eo/strings_sas.xml b/features/verifysession/impl/src/main/res/values-eo/strings_sas.xml new file mode 100644 index 0000000000..16f762e362 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-eo/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Hundo + Kato + Leono + Ĉevalo + Unukorno + Porko + Elefanto + Kuniklo + Pando + Virkoko + Pingveno + Testudo + Fiŝo + Polpo + Papilio + Floro + Arbo + Kakto + Fungo + Globo + Luno + Nubo + Fajro + Banano + Pomo + Frago + Maizo + Pico + Torto + Koro + Rideto + Roboto + Ĉapelo + Okulvitroj + Ŝraŭbŝlosilo + Kristnaska viro + Dikfingro supren + Ombrelo + Sablohorloĝo + Horloĝo + Donaco + Lampo + Libro + Krajono + Paperkuntenilo + Tondilo + Seruro + Ŝlosilo + Martelo + Telefono + Flago + Vagonaro + Biciklo + Aviadilo + Raketo + Trofeo + Pilko + Gitaro + Trumpeto + Sonorilo + Ankro + Kapaŭdilo + Dosierujo + Pinglo + diff --git a/features/verifysession/impl/src/main/res/values-es/strings_sas.xml b/features/verifysession/impl/src/main/res/values-es/strings_sas.xml new file mode 100644 index 0000000000..04ef234d98 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-es/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Perro + Gato + León + Caballo + Unicornio + Cerdo + Elefante + Conejo + Panda + Gallo + Pingüino + Tortuga + Pez + Pulpo + Mariposa + Flor + Árbol + Cactus + Seta + Globo + Luna + Nube + Fuego + Plátano + Manzana + Fresa + Maíz + Pizza + Tarta + Corazón + Emoticono + Robot + Sombrero + Gafas + Llave inglesa + Papá Noel + Pulgar arriba + Paraguas + Reloj de arena + Reloj + Regalo + Bombilla + Libro + Lápiz + Clip + Tijeras + Candado + Llave + Martillo + Teléfono + Bandera + Tren + Bicicleta + Avión + Cohete + Trofeo + Bola + Guitarra + Trompeta + Campana + Ancla + Cascos + Carpeta + Alfiler + diff --git a/features/verifysession/impl/src/main/res/values-et/strings_sas.xml b/features/verifysession/impl/src/main/res/values-et/strings_sas.xml new file mode 100644 index 0000000000..60df725eaa --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-et/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Koer + Kass + Lõvi + Hobune + Ükssarvik + Siga + Elevant + Jänes + Panda + Kukk + Pingviin + Kilpkonn + Kala + Kaheksajalg + Liblikas + Lill + Puu + Kaktus + Seen + Maakera + Kuu + Pilv + Tuli + Banaan + Õun + Maasikas + Mais + Pitsa + Kook + Süda + Smaili + Robot + Kübar + Prillid + Mutrivõti + Jõuluvana + Pöidlad püsti + Vihmavari + Liivakell + Kell + Kingitus + Lambipirn + Raamat + Pliiats + Kirjaklamber + Käärid + Lukk + Võti + Haamer + Telefon + Lipp + Rong + Jalgratas + Lennuk + Rakett + Auhind + Pall + Kitarr + Trompet + Kelluke + Ankur + Kõrvaklapid + Kaust + Nööpnõel + diff --git a/features/verifysession/impl/src/main/res/values-fa/strings_sas.xml b/features/verifysession/impl/src/main/res/values-fa/strings_sas.xml new file mode 100644 index 0000000000..d1c5e96c47 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-fa/strings_sas.xml @@ -0,0 +1,68 @@ + + + + سگ + گربه + شیر + اسب + تک شاخ + خوک + فیل + خرگوش + پاندا + خروس + پنگوئن + لاک‌پشت + ماهی + اختاپوس + پروانه + گل + درخت + کاکتوس + قارچ + زمین + ماه + ابر + آتش + موز + سیب + توت فرنگی + ذرت + پیتزا + کیک + قلب + خنده + ربات + کلاه + عینک + آچار + بابا نوئل + لایک + چتر + ساعت شنی + ساعت + هدیه + لامپ + کتاب + مداد + گیره کاغذ + قیچی + قفل + کلید + چکش + تلفن + پرچم + قطار + دوچرخه + هواپیما + موشک + جام + توپ + گیتار + شیپور + زنگ + لنگر + هدفون + پوشه + سنجاق + diff --git a/features/verifysession/impl/src/main/res/values-fi/strings_sas.xml b/features/verifysession/impl/src/main/res/values-fi/strings_sas.xml new file mode 100644 index 0000000000..12edb39070 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-fi/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Koira + Kissa + Leijona + Hevonen + Yksisarvinen + Sika + Norsu + Kani + Panda + Kukko + Pingviini + Kilpikonna + Kala + Tursas + Perhonen + Kukka + Puu + Kaktus + Sieni + Maapallo + Kuu + Pilvi + Tuli + Banaani + Omena + Mansikka + Maissi + Pizza + Kakku + Sydän + Hymynaama + Robotti + Hattu + Silmälasit + Kiintoavain + Joulupukki + Peukalo ylös + Sateenvarjo + Tiimalasi + Pöytäkello + Lahja + Hehkulamppu + Kirja + Lyijykynä + Paperiliitin + Sakset + Lukko + Avain + Vasara + Puhelin + Lippu + Juna + Polkupyörä + Lentokone + Raketti + Palkinto + Pallo + Kitara + Trumpetti + Soittokello + Ankkuri + Kuulokkeet + Kansio + Nuppineula + diff --git a/features/verifysession/impl/src/main/res/values-fr/strings_sas.xml b/features/verifysession/impl/src/main/res/values-fr/strings_sas.xml new file mode 100644 index 0000000000..e7d6ef8058 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-fr/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Chien + Chat + Lion + Cheval + Licorne + Cochon + Éléphant + Lapin + Panda + Coq + Manchot + Tortue + Poisson + Poulpe + Papillon + Fleur + Arbre + Cactus + Champignon + Globe + Lune + Nuage + Feu + Banane + Pomme + Fraise + Maïs + Pizza + Gâteau + Cœur + Sourire + Robot + Chapeau + Lunettes + Clé à molette + Père Noël + Pouce en l’air + Parapluie + Sablier + Réveil + Cadeau + Ampoule + Livre + Crayon + Trombone + Ciseaux + Cadenas + Clé + Marteau + Téléphone + Drapeau + Train + Vélo + Avion + Fusée + Trophée + Ballon + Guitare + Trompette + Cloche + Ancre + Casque audio + Dossier + Punaise + diff --git a/features/verifysession/impl/src/main/res/values-hr/strings_sas.xml b/features/verifysession/impl/src/main/res/values-hr/strings_sas.xml new file mode 100644 index 0000000000..423ab20186 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-hr/strings_sas.xml @@ -0,0 +1,68 @@ + + + + pas + mačka + lav + konj + jednorog + svinja + slon + zec + panda + kokot + pingvin + kornjača + riba + hobotnica + leptir + svijet + drvo + kaktus + gljiva + Globus + mjesec + oblak + vatra + banana + jabuka + jagoda + kukuruza + pizza + torta + srca + smajlića + robot + kapa + naočale + ključ + deda Mraz + palac gore + kišobran + pješčani sat + sat + poklon + žarulja + knjiga + olovka + spajalica + škare + zaključati + ključ + čekić + telefon + zastava + vlak + bicikl + avion + raketa + trofej + lopta + gitara + truba + zvono + sidro + slušalice + mapu + pribadača + diff --git a/features/verifysession/impl/src/main/res/values-hu/strings_sas.xml b/features/verifysession/impl/src/main/res/values-hu/strings_sas.xml new file mode 100644 index 0000000000..5b5e0e0205 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-hu/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Kutya + Macska + Oroszlán + + Egyszarvú + Malac + Elefánt + Nyúl + Panda + Kakas + Pingvin + Teknős + Hal + Polip + Pillangó + Virág + Fa + Kaktusz + Gomba + Földgömb + Hold + Felhő + Tűz + Banán + Alma + Eper + Kukorica + Pizza + Süti + Szív + Mosoly + Robot + Kalap + Szemüveg + Csavarkulcs + Télapó + Hüvelykujj fel + Esernyő + Homokóra + Óra + Ajándék + Égő + Könyv + Ceruza + Gémkapocs + Olló + Lakat + Kulcs + Kalapács + Telefon + Zászló + Vonat + Kerékpár + Repülő + Rakáta + Trófea + Labda + Gitár + Trombita + Harang + Horgony + Fejhallgató + Mappa + Rajszeg + diff --git a/features/verifysession/impl/src/main/res/values-id/strings_sas.xml b/features/verifysession/impl/src/main/res/values-id/strings_sas.xml new file mode 100644 index 0000000000..73270815e7 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-id/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Anjing + Kucing + Singa + Kuda + Unicorn + Babi + Gajah + Kelinci + Panda + Ayam + Penguin + Kura-Kura + Ikan + Gurita + Kupu-Kupu + Bunga + Pohon + Kaktus + Jamur + Bola Dunia + Bulan + Awan + Api + Pisang + Apel + Stroberi + Jagung + Pizza + Kue + Hati + Senyuman + Robot + Topi + Kacamata + Kunci Bengkel + Santa + Jempol + Payung + Jam Pasir + Jam + Kado + Bohlam Lampu + Buku + Pensil + Klip Kertas + Gunting + Gembok + Kunci + Palu + Telepon + Bendera + Kereta Api + Sepeda + Pesawat + Roket + Piala + Bola + Gitar + Terompet + Lonceng + Jangkar + Headphone + Map + Pin + diff --git a/features/verifysession/impl/src/main/res/values-it/strings_sas.xml b/features/verifysession/impl/src/main/res/values-it/strings_sas.xml new file mode 100644 index 0000000000..b66c22bc6b --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-it/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Cane + Gatto + Leone + Cavallo + Unicorno + Maiale + Elefante + Coniglio + Panda + Gallo + Pinguino + Tartaruga + Pesce + Polpo + Farfalla + Fiore + Albero + Cactus + Fungo + Globo + Luna + Nuvola + Fuoco + Banana + Mela + Fragola + Mais + Pizza + Torta + Cuore + Faccina sorridente + Robot + Cappello + Occhiali + Chiave inglese + Babbo Natale + Pollice alzato + Ombrello + Clessidra + Orologio + Regalo + Lampadina + Libro + Matita + Graffetta + Forbici + Lucchetto + Chiave + Martello + Telefono + Bandiera + Treno + Bicicletta + Aeroplano + Razzo + Trofeo + Palla + Chitarra + Trombetta + Campana + Ancora + Cuffie + Cartella + Puntina + diff --git a/features/verifysession/impl/src/main/res/values-ja/strings_sas.xml b/features/verifysession/impl/src/main/res/values-ja/strings_sas.xml new file mode 100644 index 0000000000..562577bef5 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-ja/strings_sas.xml @@ -0,0 +1,68 @@ + + + + + + ライオン + + ユニコーン + ブタ + ゾウ + うさぎ + パンダ + ニワトリ + ペンギン + + + たこ + ちょうちょ + + + サボテン + きのこ + 地球 + + + + バナナ + リンゴ + いちご + とうもろこし + ピザ + ケーキ + ハート + スマイル + ロボット + 帽子 + めがね + スパナ + サンタ + いいね + + 砂時計 + 時計 + ギフト + 電球 + + 鉛筆 + クリップ + はさみ + 錠前 + + 金槌 + 電話機 + + 電車 + 自転車 + 飛行機 + ロケット + トロフィー + ボール + ギター + トランペット + ベル + いかり + ヘッドホン + フォルダー + ピン + diff --git a/features/verifysession/impl/src/main/res/values-nb-rNO/strings_sas.xml b/features/verifysession/impl/src/main/res/values-nb-rNO/strings_sas.xml new file mode 100644 index 0000000000..c348b5bfbb --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-nb-rNO/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Hund + Katt + Løve + Hest + Enhjørning + Gris + Elefant + Kanin + Panda + Hane + Pingvin + Skilpadde + Fisk + Blekksprut + Sommerfugl + Blomst + Tre + Kaktus + Sopp + Globus + Måne + Sky + Flamme + Banan + Eple + Jordbær + Mais + Pizza + Kake + Hjerte + Smilefjes + Robot + Hatt + Briller + Fastnøkkel + Julenisse + Tommel Opp + Paraply + Timeglass + Klokke + Gave + Lyspære + Bok + Blyant + BInders + Saks + Lås + Nøkkel + Hammer + Telefon + Flagg + Tog + Sykkel + Fly + Rakett + Pokal + Ball + Gitar + Trompet + Bjelle + Anker + Hodetelefoner + Mappe + Tegnestift + diff --git a/features/verifysession/impl/src/main/res/values-nl/strings_sas.xml b/features/verifysession/impl/src/main/res/values-nl/strings_sas.xml new file mode 100644 index 0000000000..077244232a --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-nl/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Hond + Kat + Leeuw + Paard + Eenhoorn + Varken + Olifant + Konijn + Panda + Haan + Pinguïn + Schildpad + Vis + Octopus + Vlinder + Bloem + Boom + Cactus + Paddenstoel + Wereldbol + Maan + Wolk + Vuur + Banaan + Appel + Aardbei + Maïs + Pizza + Taart + Hart + Smiley + Robot + Hoed + Bril + Moersleutel + Kerstman + Duim omhoog + Paraplu + Zandloper + Wekker + Geschenk + Gloeilamp + Boek + Potlood + Papierklemmetje + Schaar + Slot + Sleutel + Hamer + Telefoon + Vlag + Trein + Fiets + Vliegtuig + Raket + Trofee + Bal + Gitaar + Trompet + Bel + Anker + Koptelefoon + Map + Duimspijker + diff --git a/features/verifysession/impl/src/main/res/values-pt-rBR/strings_sas.xml b/features/verifysession/impl/src/main/res/values-pt-rBR/strings_sas.xml new file mode 100644 index 0000000000..ed621e5477 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-pt-rBR/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Cachorro + Gato + Leão + Cavalo + Unicórnio + Porco + Elefante + Coelho + Panda + Galo + Pinguim + Tartaruga + Peixe + Polvo + Borboleta + Flor + Árvore + Cacto + Cogumelo + Globo + Lua + Nuvem + Fogo + Banana + Maçã + Morango + Milho + Pizza + Bolo + Coração + Sorriso + Robô + Chapéu + Óculos + Chave inglesa + Papai-noel + Joinha + Guarda-chuva + Ampulheta + Relógio + Presente + Lâmpada + Livro + Lápis + Clipe de papel + Tesoura + Cadeado + Chave + Martelo + Telefone + Bandeira + Trem + Bicicleta + Avião + Foguete + Troféu + Bola + Guitarra + Trombeta + Sino + Âncora + Fones de ouvido + Pasta + Alfinete + diff --git a/features/verifysession/impl/src/main/res/values-pt/strings_sas.xml b/features/verifysession/impl/src/main/res/values-pt/strings_sas.xml new file mode 100644 index 0000000000..d3108551cc --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-pt/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Cão + Gato + Leão + Cavalo + Unicórnio + Porco + Elefante + Coelho + Panda + Galo + Pinguim + Tartaruga + Peixe + Polvo + Borboleta + Flor + Árvore + Cato + Cogumelo + Globo + Lua + Nuvem + Fogo + Banana + Maçã + Morango + Milho + Piza + Bolo + Coração + Sorriso + Robô + Chapéu + Óculos + Chave inglesa + Pai Natal + Polegar para cima + Guarda-chuva + Ampulheta + Relógio + Presente + Lâmpada + Livro + Lápis + Clipe + Tesoura + Cadeado + Chave + Martelo + Telefone + Bandeira + Comboio + Bicicleta + Avião + Foguetão + Troféu + Bola + Guitarra + Trompete + Sino + Âncora + Fones + Pasta + Pionés + diff --git a/features/verifysession/impl/src/main/res/values-ru/strings_sas.xml b/features/verifysession/impl/src/main/res/values-ru/strings_sas.xml new file mode 100644 index 0000000000..f60d7026b6 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-ru/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Собака + Кошка + Лев + Лошадь + Единорог + Свинья + Слон + Кролик + Панда + Петух + Пингвин + Черепаха + Рыба + Осьминог + Бабочка + Цветок + Дерево + Кактус + Гриб + Глобус + Луна + Облако + Огонь + Банан + Яблоко + Клубника + Кукуруза + Пицца + Торт + Сердце + Улыбка + Робот + Шляпа + Очки + Ключ + Санта + Большой палец вверх + Зонт + Песочные часы + Часы + Подарок + Лампочка + Книга + Карандаш + Скрепка + Ножницы + Замок + Ключ + Молоток + Телефон + Флаг + Поезд + Велосипед + Самолет + Ракета + Кубок + Мяч + Гитара + Труба + Колокол + Якорь + Наушники + Папка + Булавка + diff --git a/features/verifysession/impl/src/main/res/values-si/strings_sas.xml b/features/verifysession/impl/src/main/res/values-si/strings_sas.xml new file mode 100644 index 0000000000..7ea72d2a4d --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-si/strings_sas.xml @@ -0,0 +1,8 @@ + + + + බල්ලා + පූසා + සිංහයා + අශ්වයා + diff --git a/features/verifysession/impl/src/main/res/values-sk/strings_sas.xml b/features/verifysession/impl/src/main/res/values-sk/strings_sas.xml new file mode 100644 index 0000000000..ea9af66443 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-sk/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Pes + Mačka + Lev + Kôň + Jednorožec + Prasa + Slon + Zajac + Panda + Kohút + Tučniak + Korytnačka + Ryba + Chobotnica + Motýľ + Kvet + Strom + Kaktus + Huba + Zemeguľa + Mesiac + Oblak + Oheň + Banán + Jablko + Jahoda + Kukurica + Pizza + Torta + Srdce + Smajlík + Robot + Klobúk + Okuliare + Vidlicový kľúč + Mikuláš + Palec nahor + Dáždnik + Presýpacie hodiny + Budík + Darček + Žiarovka + Kniha + Ceruzka + Kancelárska sponka + Nožnice + Zámka + Kľúč + Kladivo + Telefón + Zástava + Vlak + Bicykel + Lietadlo + Raketa + Trofej + Lopta + Gitara + Trúbka + Zvonec + Kotva + Slúchadlá + Fascikel + Špendlík + diff --git a/features/verifysession/impl/src/main/res/values-sq/strings_sas.xml b/features/verifysession/impl/src/main/res/values-sq/strings_sas.xml new file mode 100644 index 0000000000..309cec8c9e --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-sq/strings_sas.xml @@ -0,0 +1,67 @@ + + + + Qen + Mace + Luan + Kalë + Njëbrirësh + Derr + Elefant + Lepur + Panda + Këndes + Pinguin + Breshkë + Peshk + Oktapod + Flutur + Lule + Pemë + Kaktus + Kërpudhë + Rruzull + Hënë + Re + Zjarr + Banane + Mollë + Luleshtrydhe + Misër + Picë + Tortë + Zemër + Emotikon + Robot + Kapë + Syze + Çelës + Babagjyshi i Vitit të Ri + Ombrellë + Klepsidër + Sahat + Dhuratë + Llambë + Libër + Laps + Kapëse + Gërshërë + Dry + Çelës + Çekiç + Telefon + Flamur + Tren + Biçikletë + Avion + Raketë + Trofe + Top + Kitarë + Trombë + Kambanë + Spirancë + Kufje + Dosje + Karficë + diff --git a/features/verifysession/impl/src/main/res/values-sr/strings_sas.xml b/features/verifysession/impl/src/main/res/values-sr/strings_sas.xml new file mode 100644 index 0000000000..04da7a11f0 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-sr/strings_sas.xml @@ -0,0 +1,68 @@ + + + + пас + мачка + лав + коњ + једнорог + прасе + слон + зец + панда + петао + пингвин + корњача + риба + октопод + лептир + цвет + дрво + кактус + печурка + глобус + месец + облак + ватра + банана + јабука + јагода + кукуруз + пица + торта + срце + смајли + робот + шешир + наочаре + кључ + деда Мраз + палчић горе + кишобран + пешчаник + сат + поклон + сијалица + књига + оловка + спајалица + маказе + катанац + кључ + чекић + телефон + застава + воз + бицикл + авион + ракета + пехар + лопта + гитара + труба + звоно + сидро + слушалице + фасцикла + чиода + diff --git a/features/verifysession/impl/src/main/res/values-sv/strings_sas.xml b/features/verifysession/impl/src/main/res/values-sv/strings_sas.xml new file mode 100644 index 0000000000..2d6e2f407a --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-sv/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Hund + Katt + Lejon + Häst + Enhörning + Gris + Elefant + Kanin + Panda + Tupp + Pingvin + Sköldpadda + Fisk + Bläckfisk + Fjäril + Blomma + Träd + Kaktus + Svamp + Jordklot + Måne + Moln + Eld + Banan + Äpple + Jordgubbe + Majs + Pizza + Tårta + Hjärta + Smiley + Robot + Hatt + Glasögon + Skruvnyckel + Tomte + Tummen upp + Paraply + Timglas + Klocka + Present + Lampa + Bok + Penna + Gem + Sax + Lås + Nyckel + Hammare + Telefon + Flagga + Tåg + Cykel + Flygplan + Raket + Trofé + Boll + Gitarr + Trumpet + Bjällra + Ankare + Hörlurar + Mapp + Häftstift + diff --git a/features/verifysession/impl/src/main/res/values-szl/strings_sas.xml b/features/verifysession/impl/src/main/res/values-szl/strings_sas.xml new file mode 100644 index 0000000000..9769ad73ce --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-szl/strings_sas.xml @@ -0,0 +1,4 @@ + + + + diff --git a/features/verifysession/impl/src/main/res/values-tzm/strings_sas.xml b/features/verifysession/impl/src/main/res/values-tzm/strings_sas.xml new file mode 100644 index 0000000000..bebf64e5ab --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-tzm/strings_sas.xml @@ -0,0 +1,30 @@ + + + + Aydi + Amuc + Izem + Ayyis + Ilef + Ilu + Agnin + Ayaẓiḍ + Ifker + Aselm + Aseklu + Agursel + Ayyur + Timessi + Tabanant + Tadeffuyt + Ul + Aṛubu + Taraza + Adlis + Tasarut + Atilifun + Acenyal + Tcama + Agiṭaṛ + Asdaw + diff --git a/features/verifysession/impl/src/main/res/values-uk/strings_sas.xml b/features/verifysession/impl/src/main/res/values-uk/strings_sas.xml new file mode 100644 index 0000000000..f979f77250 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-uk/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Пес + Кіт + Лев + Кінь + Єдиноріг + Свиня + Слон + Кріль + Панда + Когут + Пінгвін + Черепаха + Риба + Восьминіг + Метелик + Квітка + Дерево + Кактус + Гриб + Глобус + Місяць + Хмара + Вогонь + Банан + Яблуко + Полуниця + Кукурудза + Піца + Пиріг + Серце + Посмішка + Робот + Капелюх + Окуляри + Гайковий ключ + Санта Клаус + Великий палець вгору + Парасолька + Пісковий годинник + Годинник + Подарунок + Лампочка + Книга + Олівець + Спиначка + Ножиці + Замок + Ключ + Молоток + Телефон + Прапор + Потяг + Велосипед + Літак + Ракета + Приз + М\'яч + Гітара + Труба + Дзвін + Якір + Навушники + Тека + Кнопка + diff --git a/features/verifysession/impl/src/main/res/values-vi/strings_sas.xml b/features/verifysession/impl/src/main/res/values-vi/strings_sas.xml new file mode 100644 index 0000000000..8ad1a46121 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-vi/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Chó + Mèo + Sư tử + Ngựa + Kỳ lân + Heo + Voi + Thỏ + Gấu trúc + Gà trống + Chim cánh cụt + Rùa + + Bạch tuộc + Bướm + Hoa + Cây + Xương rồng + Nấm + Địa cầu + Mặt trăng + Mây + Lửa + Chuối + Táo + Dâu tây + Bắp + Pizza + Bánh + Tim + Mặt cười + Rô-bô + + Kính mắt + Cờ-lê + ông già Nô-en + Thích + Cái ô + Đồng hồ cát + Đồng hồ + Quà tặng + Bóng đèn tròn + Sách + Viết chì + Kẹp giấy + Cái kéo + Ổ khóa + Chìa khóa + Búa + Điện thoại + Lá cờ + Xe lửa + Xe đạp + Máy bay + Tên lửa + Cúp + Banh + Ghi-ta + Kèn + Chuông + Mỏ neo + Tai nghe + Thư mục + Ghim + diff --git a/features/verifysession/impl/src/main/res/values-zh-rCN/strings_sas.xml b/features/verifysession/impl/src/main/res/values-zh-rCN/strings_sas.xml new file mode 100644 index 0000000000..8d50991805 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-zh-rCN/strings_sas.xml @@ -0,0 +1,68 @@ + + + + + + 狮子 + + 独角兽 + + 大象 + 兔子 + 熊猫 + 公鸡 + 企鹅 + 乌龟 + + 章鱼 + 蝴蝶 + + + 仙人掌 + 蘑菇 + 地球 + 月亮 + + + 香蕉 + 苹果 + 草莓 + 玉米 + 披萨 + 蛋糕 + + 笑脸 + 机器人 + 帽子 + 眼镜 + 扳手 + 圣诞老人 + + + 沙漏 + 时钟 + 礼物 + 灯泡 + + 铅笔 + 回形针 + 剪刀 + + 钥匙 + 锤子 + 电话 + 旗帜 + 火车 + 自行车 + 飞机 + 火箭 + 奖杯 + + 吉他 + 喇叭 + 铃铛 + + 耳机 + 文件夹 + 图钉 + diff --git a/features/verifysession/impl/src/main/res/values-zh-rTW/strings_sas.xml b/features/verifysession/impl/src/main/res/values-zh-rTW/strings_sas.xml new file mode 100644 index 0000000000..fa4e49776b --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-zh-rTW/strings_sas.xml @@ -0,0 +1,68 @@ + + + + + + 獅子 + + 獨角獸 + + 大象 + 兔子 + 熊貓 + 公雞 + 企鵝 + 烏龜 + + 章魚 + 蝴蝶 + + + 仙人掌 + 蘑菇 + 地球 + 月亮 + 雲朵 + + 香蕉 + 蘋果 + 草莓 + 玉米 + 披薩 + 蛋糕 + 愛心 + 笑臉 + 機器人 + 帽子 + 眼鏡 + 扳手 + 聖誕老人 + + 雨傘 + 沙漏 + 時鐘 + 禮物 + 燈泡 + + 鉛筆 + 迴紋針 + 剪刀 + 鎖頭 + 鑰匙 + 鎚子 + 電話 + 旗幟 + 火車 + 腳踏車 + 飛機 + 火箭 + 獎盃 + 足球 + 吉他 + 喇叭 + 鈴鐺 + 船錨 + 耳機 + 資料夾 + 圖釘 + diff --git a/features/verifysession/impl/src/main/res/values/strings_sas.xml b/features/verifysession/impl/src/main/res/values/strings_sas.xml new file mode 100644 index 0000000000..8a366a22e5 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Dog + Cat + Lion + Horse + Unicorn + Pig + Elephant + Rabbit + Panda + Rooster + Penguin + Turtle + Fish + Octopus + Butterfly + Flower + Tree + Cactus + Mushroom + Globe + Moon + Cloud + Fire + Banana + Apple + Strawberry + Corn + Pizza + Cake + Heart + Smiley + Robot + Hat + Glasses + Spanner + Santa + Thumbs Up + Umbrella + Hourglass + Clock + Gift + Light Bulb + Book + Pencil + Paperclip + Scissors + Lock + Key + Hammer + Telephone + Flag + Train + Bicycle + Aeroplane + Rocket + Trophy + Ball + Guitar + Trumpet + Bell + Anchor + Headphones + Folder + Pin + From faaa94860b955b86ed0cf4e57ffcb52671b77e30 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:42:10 +0100 Subject: [PATCH 05/19] Refacto a bit for clarity --- .../impl/VerifySelfSessionView.kt | 8 +- .../impl/emoji/EmojiDrawables.kt | 89 ------------------ .../impl/emoji/EmojiResources.kt | 94 +++++++++++++++++++ .../verifysession/impl/emoji/EmojiStrings.kt | 89 ------------------ 4 files changed, 98 insertions(+), 182 deletions(-) delete mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt create mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt delete mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index f449eb98ff..ef047ed1bf 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -41,8 +41,7 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import io.element.android.compound.theme.ElementTheme -import io.element.android.features.verifysession.impl.emoji.toEmojiDrawableRes -import io.element.android.features.verifysession.impl.emoji.toEmojiStringRes +import io.element.android.features.verifysession.impl.emoji.toEmojiResource import io.element.android.libraries.architecture.Async import io.element.android.libraries.designsystem.atomic.molecules.ButtonColumnMolecule import io.element.android.libraries.designsystem.atomic.molecules.IconTitleSubtitleMolecule @@ -161,15 +160,16 @@ private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: @Composable private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifier) { + val emojiResource = emoji.code.toEmojiResource() Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier) { Image( modifier = Modifier.size(48.dp), - painter = painterResource(id = emoji.code.toEmojiDrawableRes()), + painter = painterResource(id = emojiResource.drawableRes), contentDescription = null, ) Spacer(modifier = Modifier.height(16.dp)) Text( - text = stringResource(id = emoji.code.toEmojiStringRes()), + text = stringResource(id = emojiResource.nameRes), style = ElementTheme.typography.fontBodyMdRegular, color = MaterialTheme.colorScheme.secondary, maxLines = 1, diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt deleted file mode 100644 index 4b96808dc2..0000000000 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiDrawables.kt +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.element.android.features.verifysession.impl.emoji - -import androidx.annotation.DrawableRes -import io.element.android.features.verifysession.impl.R - -@DrawableRes -internal fun Int.toEmojiDrawableRes(): Int { - return when (this % 64) { - 0 -> R.drawable.ic_verification_dog - 1 -> R.drawable.ic_verification_cat - 2 -> R.drawable.ic_verification_lion - 3 -> R.drawable.ic_verification_horse - 4 -> R.drawable.ic_verification_unicorn - 5 -> R.drawable.ic_verification_pig - 6 -> R.drawable.ic_verification_elephant - 7 -> R.drawable.ic_verification_rabbit - 8 -> R.drawable.ic_verification_panda - 9 -> R.drawable.ic_verification_rooster - 10 -> R.drawable.ic_verification_penguin - 11 -> R.drawable.ic_verification_turtle - 12 -> R.drawable.ic_verification_fish - 13 -> R.drawable.ic_verification_octopus - 14 -> R.drawable.ic_verification_butterfly - 15 -> R.drawable.ic_verification_flower - 16 -> R.drawable.ic_verification_tree - 17 -> R.drawable.ic_verification_cactus - 18 -> R.drawable.ic_verification_mushroom - 19 -> R.drawable.ic_verification_globe - 20 -> R.drawable.ic_verification_moon - 21 -> R.drawable.ic_verification_cloud - 22 -> R.drawable.ic_verification_fire - 23 -> R.drawable.ic_verification_banana - 24 -> R.drawable.ic_verification_apple - 25 -> R.drawable.ic_verification_strawberry - 26 -> R.drawable.ic_verification_corn - 27 -> R.drawable.ic_verification_pizza - 28 -> R.drawable.ic_verification_cake - 29 -> R.drawable.ic_verification_heart - 30 -> R.drawable.ic_verification_smiley - 31 -> R.drawable.ic_verification_robot - 32 -> R.drawable.ic_verification_hat - 33 -> R.drawable.ic_verification_glasses - 34 -> R.drawable.ic_verification_spanner - 35 -> R.drawable.ic_verification_santa - 36 -> R.drawable.ic_verification_thumbs_up - 37 -> R.drawable.ic_verification_umbrella - 38 -> R.drawable.ic_verification_hourglass - 39 -> R.drawable.ic_verification_clock - 40 -> R.drawable.ic_verification_gift - 41 -> R.drawable.ic_verification_light_bulb - 42 -> R.drawable.ic_verification_book - 43 -> R.drawable.ic_verification_pencil - 44 -> R.drawable.ic_verification_paperclip - 45 -> R.drawable.ic_verification_scissors - 46 -> R.drawable.ic_verification_lock - 47 -> R.drawable.ic_verification_key - 48 -> R.drawable.ic_verification_hammer - 49 -> R.drawable.ic_verification_phone - 50 -> R.drawable.ic_verification_flag - 51 -> R.drawable.ic_verification_train - 52 -> R.drawable.ic_verification_bicycle - 53 -> R.drawable.ic_verification_aeroplane - 54 -> R.drawable.ic_verification_rocket - 55 -> R.drawable.ic_verification_trophy - 56 -> R.drawable.ic_verification_ball - 57 -> R.drawable.ic_verification_guitar - 58 -> R.drawable.ic_verification_trumpet - 59 -> R.drawable.ic_verification_bell - 60 -> R.drawable.ic_verification_anchor - 61 -> R.drawable.ic_verification_headphones - 62 -> R.drawable.ic_verification_folder - /* 63 */ else -> R.drawable.ic_verification_pin - } -} diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt new file mode 100644 index 0000000000..4dc72420bb --- /dev/null +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package io.element.android.features.verifysession.impl.emoji + +import androidx.annotation.DrawableRes +import androidx.annotation.StringRes +import io.element.android.features.verifysession.impl.R + +internal data class EmojiResource( + @DrawableRes val drawableRes: Int, + @StringRes val nameRes: Int +) + +internal fun Int.toEmojiResource(): EmojiResource { + return when (this % 64) { + 0 -> EmojiResource(R.drawable.ic_verification_dog, R.string.verification_emoji_dog) + 1 -> EmojiResource(R.drawable.ic_verification_cat, R.string.verification_emoji_cat) + 2 -> EmojiResource(R.drawable.ic_verification_lion, R.string.verification_emoji_lion) + 3 -> EmojiResource(R.drawable.ic_verification_horse, R.string.verification_emoji_horse) + 4 -> EmojiResource(R.drawable.ic_verification_unicorn, R.string.verification_emoji_unicorn) + 5 -> EmojiResource(R.drawable.ic_verification_pig, R.string.verification_emoji_pig) + 6 -> EmojiResource(R.drawable.ic_verification_elephant, R.string.verification_emoji_elephant) + 7 -> EmojiResource(R.drawable.ic_verification_rabbit, R.string.verification_emoji_rabbit) + 8 -> EmojiResource(R.drawable.ic_verification_panda, R.string.verification_emoji_panda) + 9 -> EmojiResource(R.drawable.ic_verification_rooster, R.string.verification_emoji_rooster) + 10 -> EmojiResource(R.drawable.ic_verification_penguin, R.string.verification_emoji_penguin) + 11 -> EmojiResource(R.drawable.ic_verification_turtle, R.string.verification_emoji_turtle) + 12 -> EmojiResource(R.drawable.ic_verification_fish, R.string.verification_emoji_fish) + 13 -> EmojiResource(R.drawable.ic_verification_octopus, R.string.verification_emoji_octopus) + 14 -> EmojiResource(R.drawable.ic_verification_butterfly, R.string.verification_emoji_butterfly) + 15 -> EmojiResource(R.drawable.ic_verification_flower, R.string.verification_emoji_flower) + 16 -> EmojiResource(R.drawable.ic_verification_tree, R.string.verification_emoji_tree) + 17 -> EmojiResource(R.drawable.ic_verification_cactus, R.string.verification_emoji_cactus) + 18 -> EmojiResource(R.drawable.ic_verification_mushroom, R.string.verification_emoji_mushroom) + 19 -> EmojiResource(R.drawable.ic_verification_globe, R.string.verification_emoji_globe) + 20 -> EmojiResource(R.drawable.ic_verification_moon, R.string.verification_emoji_moon) + 21 -> EmojiResource(R.drawable.ic_verification_cloud, R.string.verification_emoji_cloud) + 22 -> EmojiResource(R.drawable.ic_verification_fire, R.string.verification_emoji_fire) + 23 -> EmojiResource(R.drawable.ic_verification_banana, R.string.verification_emoji_banana) + 24 -> EmojiResource(R.drawable.ic_verification_apple, R.string.verification_emoji_apple) + 25 -> EmojiResource(R.drawable.ic_verification_strawberry, R.string.verification_emoji_strawberry) + 26 -> EmojiResource(R.drawable.ic_verification_corn, R.string.verification_emoji_corn) + 27 -> EmojiResource(R.drawable.ic_verification_pizza, R.string.verification_emoji_pizza) + 28 -> EmojiResource(R.drawable.ic_verification_cake, R.string.verification_emoji_cake) + 29 -> EmojiResource(R.drawable.ic_verification_heart, R.string.verification_emoji_heart) + 30 -> EmojiResource(R.drawable.ic_verification_smiley, R.string.verification_emoji_smiley) + 31 -> EmojiResource(R.drawable.ic_verification_robot, R.string.verification_emoji_robot) + 32 -> EmojiResource(R.drawable.ic_verification_hat, R.string.verification_emoji_hat) + 33 -> EmojiResource(R.drawable.ic_verification_glasses, R.string.verification_emoji_glasses) + 34 -> EmojiResource(R.drawable.ic_verification_spanner, R.string.verification_emoji_spanner) + 35 -> EmojiResource(R.drawable.ic_verification_santa, R.string.verification_emoji_santa) + 36 -> EmojiResource(R.drawable.ic_verification_thumbs_up, R.string.verification_emoji_thumbs_up) + 37 -> EmojiResource(R.drawable.ic_verification_umbrella, R.string.verification_emoji_umbrella) + 38 -> EmojiResource(R.drawable.ic_verification_hourglass, R.string.verification_emoji_hourglass) + 39 -> EmojiResource(R.drawable.ic_verification_clock, R.string.verification_emoji_clock) + 40 -> EmojiResource(R.drawable.ic_verification_gift, R.string.verification_emoji_gift) + 41 -> EmojiResource(R.drawable.ic_verification_light_bulb, R.string.verification_emoji_light_bulb) + 42 -> EmojiResource(R.drawable.ic_verification_book, R.string.verification_emoji_book) + 43 -> EmojiResource(R.drawable.ic_verification_pencil, R.string.verification_emoji_pencil) + 44 -> EmojiResource(R.drawable.ic_verification_paperclip, R.string.verification_emoji_paperclip) + 45 -> EmojiResource(R.drawable.ic_verification_scissors, R.string.verification_emoji_scissors) + 46 -> EmojiResource(R.drawable.ic_verification_lock, R.string.verification_emoji_lock) + 47 -> EmojiResource(R.drawable.ic_verification_key, R.string.verification_emoji_key) + 48 -> EmojiResource(R.drawable.ic_verification_hammer, R.string.verification_emoji_hammer) + 49 -> EmojiResource(R.drawable.ic_verification_phone, R.string.verification_emoji_telephone) + 50 -> EmojiResource(R.drawable.ic_verification_flag, R.string.verification_emoji_flag) + 51 -> EmojiResource(R.drawable.ic_verification_train, R.string.verification_emoji_train) + 52 -> EmojiResource(R.drawable.ic_verification_bicycle, R.string.verification_emoji_bicycle) + 53 -> EmojiResource(R.drawable.ic_verification_aeroplane, R.string.verification_emoji_aeroplane) + 54 -> EmojiResource(R.drawable.ic_verification_rocket, R.string.verification_emoji_rocket) + 55 -> EmojiResource(R.drawable.ic_verification_trophy, R.string.verification_emoji_trophy) + 56 -> EmojiResource(R.drawable.ic_verification_ball, R.string.verification_emoji_ball) + 57 -> EmojiResource(R.drawable.ic_verification_guitar, R.string.verification_emoji_guitar) + 58 -> EmojiResource(R.drawable.ic_verification_trumpet, R.string.verification_emoji_trumpet) + 59 -> EmojiResource(R.drawable.ic_verification_bell, R.string.verification_emoji_bell) + 60 -> EmojiResource(R.drawable.ic_verification_anchor, R.string.verification_emoji_anchor) + 61 -> EmojiResource(R.drawable.ic_verification_headphones, R.string.verification_emoji_headphones) + 62 -> EmojiResource(R.drawable.ic_verification_folder, R.string.verification_emoji_folder) + /* 63 */ else -> EmojiResource(R.drawable.ic_verification_pin, R.string.verification_emoji_pin) + } +} diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt deleted file mode 100644 index 26df09a306..0000000000 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiStrings.kt +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (c) 2023 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.element.android.features.verifysession.impl.emoji - -import androidx.annotation.StringRes -import io.element.android.features.verifysession.impl.R - -@StringRes -internal fun Int.toEmojiStringRes(): Int { - return when (this % 64) { - 0 -> R.string.verification_emoji_dog - 1 -> R.string.verification_emoji_cat - 2 -> R.string.verification_emoji_lion - 3 -> R.string.verification_emoji_horse - 4 -> R.string.verification_emoji_unicorn - 5 -> R.string.verification_emoji_pig - 6 -> R.string.verification_emoji_elephant - 7 -> R.string.verification_emoji_rabbit - 8 -> R.string.verification_emoji_panda - 9 -> R.string.verification_emoji_rooster - 10 -> R.string.verification_emoji_penguin - 11 -> R.string.verification_emoji_turtle - 12 -> R.string.verification_emoji_fish - 13 -> R.string.verification_emoji_octopus - 14 -> R.string.verification_emoji_butterfly - 15 -> R.string.verification_emoji_flower - 16 -> R.string.verification_emoji_tree - 17 -> R.string.verification_emoji_cactus - 18 -> R.string.verification_emoji_mushroom - 19 -> R.string.verification_emoji_globe - 20 -> R.string.verification_emoji_moon - 21 -> R.string.verification_emoji_cloud - 22 -> R.string.verification_emoji_fire - 23 -> R.string.verification_emoji_banana - 24 -> R.string.verification_emoji_apple - 25 -> R.string.verification_emoji_strawberry - 26 -> R.string.verification_emoji_corn - 27 -> R.string.verification_emoji_pizza - 28 -> R.string.verification_emoji_cake - 29 -> R.string.verification_emoji_heart - 30 -> R.string.verification_emoji_smiley - 31 -> R.string.verification_emoji_robot - 32 -> R.string.verification_emoji_hat - 33 -> R.string.verification_emoji_glasses - 34 -> R.string.verification_emoji_spanner - 35 -> R.string.verification_emoji_santa - 36 -> R.string.verification_emoji_thumbs_up - 37 -> R.string.verification_emoji_umbrella - 38 -> R.string.verification_emoji_hourglass - 39 -> R.string.verification_emoji_clock - 40 -> R.string.verification_emoji_gift - 41 -> R.string.verification_emoji_light_bulb - 42 -> R.string.verification_emoji_book - 43 -> R.string.verification_emoji_pencil - 44 -> R.string.verification_emoji_paperclip - 45 -> R.string.verification_emoji_scissors - 46 -> R.string.verification_emoji_lock - 47 -> R.string.verification_emoji_key - 48 -> R.string.verification_emoji_hammer - 49 -> R.string.verification_emoji_telephone - 50 -> R.string.verification_emoji_flag - 51 -> R.string.verification_emoji_train - 52 -> R.string.verification_emoji_bicycle - 53 -> R.string.verification_emoji_aeroplane - 54 -> R.string.verification_emoji_rocket - 55 -> R.string.verification_emoji_trophy - 56 -> R.string.verification_emoji_ball - 57 -> R.string.verification_emoji_guitar - 58 -> R.string.verification_emoji_trumpet - 59 -> R.string.verification_emoji_bell - 60 -> R.string.verification_emoji_anchor - 61 -> R.string.verification_emoji_headphones - 62 -> R.string.verification_emoji_folder - /* 63 */ else -> R.string.verification_emoji_pin - } -} From f820a38e32041c461fea1cdd747a5a71422e2d40 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 14:56:40 +0100 Subject: [PATCH 06/19] Add workflow to automatically sync SAS strings. --- .github/workflows/sync-sas-strings.yml | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 .github/workflows/sync-sas-strings.yml diff --git a/.github/workflows/sync-sas-strings.yml b/.github/workflows/sync-sas-strings.yml new file mode 100644 index 0000000000..6b1ad8569e --- /dev/null +++ b/.github/workflows/sync-sas-strings.yml @@ -0,0 +1,35 @@ +name: Sync SAS strings +on: + workflow_dispatch: + schedule: + # At 00:00 on every Monday UTC + - cron: '0 0 * * 1' + +jobs: + sync-sas-strings: + runs-on: ubuntu-latest + # Skip in forks + if: github.repository == 'vector-im/element-x-android' + # No concurrency required, runs every time on a schedule. + steps: + - uses: actions/checkout@v4 + - name: Set up Python 3.8 + uses: actions/setup-python@v4 + with: + python-version: 3.9 + - name: Install Prerequisite dependencies + run: | + pip install requests + - name: Run SAS String script + run: ./tools/sas/import_sas_strings.py + - name: Create Pull Request for SAS Strings + uses: peter-evans/create-pull-request@v5 + with: + commit-message: Sync SAS Strings + title: Sync SAS Strings + body: | + - Update SAS Strings from matrix-doc. + branch: sync-sas-strings + base: develop + + From ef6d2b2e7511e665b0eed550986703cebd2b25b5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 6 Dec 2023 15:06:25 +0100 Subject: [PATCH 07/19] Changelog --- changelog.d/1965.misc | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/1965.misc diff --git a/changelog.d/1965.misc b/changelog.d/1965.misc new file mode 100644 index 0000000000..49132f82ce --- /dev/null +++ b/changelog.d/1965.misc @@ -0,0 +1 @@ +Update rendering of Emojis displayed during verification. From de9645e514bfc90fc6eb9a6993b2ea9c083154f5 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 15:35:21 +0100 Subject: [PATCH 08/19] use sdk 0.1.76 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b3625b7c9e..9187a61133 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -147,7 +147,7 @@ jsoup = "org.jsoup:jsoup:1.17.1" appyx_core = { module = "com.bumble.appyx:core", version.ref = "appyx" } molecule-runtime = "app.cash.molecule:molecule-runtime:1.3.1" timber = "com.jakewharton.timber:timber:5.0.1" -matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.75" +matrix_sdk = "org.matrix.rustcomponents:sdk-android:0.1.76" matrix_richtexteditor = { module = "io.element.android:wysiwyg", version.ref = "wysiwyg" } matrix_richtexteditor_compose = { module = "io.element.android:wysiwyg-compose", version.ref = "wysiwyg" } sqldelight-driver-android = { module = "app.cash.sqldelight:android-driver", version.ref = "sqldelight" } From 78ce22d458aaa13074b28df80792513ae4af7fc7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 16:36:47 +0100 Subject: [PATCH 09/19] Update regarding SDK change on verification data --- .../impl/VerifySelfSessionPresenter.kt | 4 +- .../impl/VerifySelfSessionState.kt | 4 +- .../impl/VerifySelfSessionStateMachine.kt | 18 ++++----- .../impl/VerifySelfSessionStateProvider.kt | 34 +++++++++++------ .../impl/VerifySelfSessionView.kt | 30 +++++++++------ ...ionEmoji.kt => SessionVerificationData.kt} | 21 +++++++++- .../SessionVerificationService.kt | 4 +- .../RustSessionVerificationService.kt | 38 +++++++++++++++---- 8 files changed, 105 insertions(+), 48 deletions(-) rename libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/{VerificationEmoji.kt => SessionVerificationData.kt} (59%) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt index 689ff3a154..89751ca604 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenter.kt @@ -97,7 +97,7 @@ class VerifySelfSessionPresenter @Inject constructor( is StateMachineState.Verifying.Replying -> Async.Loading() else -> Async.Uninitialized } - VerifySelfSessionState.VerificationStep.Verifying(machineState.emojis, async) + VerifySelfSessionState.VerificationStep.Verifying(machineState.data, async) } StateMachineState.Completed -> { @@ -116,7 +116,7 @@ class VerifySelfSessionPresenter @Inject constructor( stateMachine.dispatch(VerifySelfSessionStateMachine.Event.DidStartSasVerification) } is VerificationFlowState.ReceivedVerificationData -> { - stateMachine.dispatch(VerifySelfSessionStateMachine.Event.DidReceiveChallenge(verificationAttemptState.emoji)) + stateMachine.dispatch(VerifySelfSessionStateMachine.Event.DidReceiveChallenge(verificationAttemptState.data)) } VerificationFlowState.Finished -> { stateMachine.dispatch(VerifySelfSessionStateMachine.Event.DidAcceptChallenge) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt index 248e3aec10..f3afd3b7b9 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionState.kt @@ -19,7 +19,7 @@ package io.element.android.features.verifysession.impl import androidx.compose.runtime.Immutable import androidx.compose.runtime.Stable import io.element.android.libraries.architecture.Async -import io.element.android.libraries.matrix.api.verification.VerificationEmoji +import io.element.android.libraries.matrix.api.verification.SessionVerificationData @Immutable data class VerifySelfSessionState( @@ -33,7 +33,7 @@ data class VerifySelfSessionState( data object Canceled : VerificationStep data object AwaitingOtherDeviceResponse : VerificationStep data object Ready : VerificationStep - data class Verifying(val emojiList: List, val state: Async) : VerificationStep + data class Verifying(val data: SessionVerificationData, val state: Async) : VerificationStep data object Completed : VerificationStep } } diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt index ad48294e92..52bd38bfbd 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateMachine.kt @@ -20,8 +20,8 @@ package io.element.android.features.verifysession.impl import com.freeletics.flowredux.dsl.FlowReduxStateMachine +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.SessionVerificationService -import io.element.android.libraries.matrix.api.verification.VerificationEmoji import kotlinx.coroutines.ExperimentalCoroutinesApi import javax.inject.Inject import com.freeletics.flowredux.dsl.State as MachineState @@ -70,15 +70,15 @@ class VerifySelfSessionStateMachine @Inject constructor( } inState { on { event: Event.DidReceiveChallenge, state: MachineState -> - state.override { State.Verifying.ChallengeReceived(event.emojis) } + state.override { State.Verifying.ChallengeReceived(event.data) } } } inState { on { _: Event.AcceptChallenge, state: MachineState -> - state.override { State.Verifying.Replying(state.snapshot.emojis, accept = true) } + state.override { State.Verifying.Replying(state.snapshot.data, accept = true) } } on { _: Event.DeclineChallenge, state: MachineState -> - state.override { State.Verifying.Replying(state.snapshot.emojis, accept = false) } + state.override { State.Verifying.Replying(state.snapshot.data, accept = false) } } } inState { @@ -139,12 +139,12 @@ class VerifySelfSessionStateMachine @Inject constructor( /** A SaS verification flow has been started. */ data object SasVerificationStarted : State - sealed class Verifying(open val emojis: List) : State { + sealed class Verifying(open val data: SessionVerificationData) : State { /** Verification accepted and emojis received. */ - data class ChallengeReceived(override val emojis: List) : Verifying(emojis) + data class ChallengeReceived(override val data: SessionVerificationData) : Verifying(data) /** Replying to a verification challenge. */ - data class Replying(override val emojis: List, val accept: Boolean) : Verifying(emojis) + data class Replying(override val data: SessionVerificationData, val accept: Boolean) : Verifying(data) } /** The verification is being canceled. */ @@ -170,8 +170,8 @@ class VerifySelfSessionStateMachine @Inject constructor( /** Started a SaS verification flow. */ data object DidStartSasVerification : Event - /** Has received emojis. */ - data class DidReceiveChallenge(val emojis: List) : Event + /** Has received data. */ + data class DidReceiveChallenge(val data: SessionVerificationData) : Event /** Emojis match. */ data object AcceptChallenge : Event diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt index c0d5bc1628..913b43dfd3 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt @@ -18,6 +18,7 @@ package io.element.android.features.verifysession.impl import androidx.compose.ui.tooling.preview.PreviewParameterProvider import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationEmoji open class VerifySelfSessionStateProvider : PreviewParameterProvider { @@ -28,10 +29,10 @@ open class VerifySelfSessionStateProvider : PreviewParameterProvider = aVerificationEmojiList(), + decimals: List = emptyList(), +): SessionVerificationData { + return if (emojiList.isEmpty()) { + SessionVerificationData.Decimals(decimals) + } else { + SessionVerificationData.Emojis(emojiList) + } +} + +private fun aVerifySelfSessionState() = VerifySelfSessionState( verificationFlowStep = VerifySelfSessionState.VerificationStep.Initial, eventSink = {}, ) -fun aVerificationEmojiList() = listOf( - VerificationEmoji(27, "Pizza"), - VerificationEmoji(54, "Rocket"), - VerificationEmoji(54, "Rocket"), - VerificationEmoji(42, "Book"), - VerificationEmoji(48, "Hammer"), - VerificationEmoji(48, "Hammer"), - VerificationEmoji(63, "Pin"), +private fun aVerificationEmojiList() = listOf( + VerificationEmoji(number = 27, emoji = "🍕", description = "Pizza"), + VerificationEmoji(number = 54, emoji = "🚀", description = "Rocket"), + VerificationEmoji(number = 54, emoji = "🚀", description = "Rocket"), + VerificationEmoji(number = 42, emoji = "📕", description = "Book"), + VerificationEmoji(number = 48, emoji = "🔨", description = "Hammer"), + VerificationEmoji(number = 48, emoji = "🔨", description = "Hammer"), + VerificationEmoji(number = 63, emoji = "📌", description = "Pin"), ) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index ef047ed1bf..a81693b9b0 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -52,6 +52,7 @@ import io.element.android.libraries.designsystem.theme.components.Button import io.element.android.libraries.designsystem.theme.components.CircularProgressIndicator import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.TextButton +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationEmoji import io.element.android.libraries.ui.strings.CommonStrings import io.element.android.features.verifysession.impl.VerifySelfSessionState.VerificationStep as FlowStep @@ -141,17 +142,22 @@ private fun ContentWaiting(modifier: Modifier = Modifier) { @Composable private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: Modifier = Modifier) { - // We want each row to have up to 4 emojis - val rows = verificationFlowStep.emojiList.chunked(4) - Column(modifier = modifier.fillMaxWidth()) { - for ((rowIndex, emojis) in rows.withIndex()) { - // Vertical spacing between rows - if (rowIndex > 0) { - Spacer(modifier = Modifier.height(40.dp)) - } - Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly) { - for (emoji in emojis) { - EmojiItemView(emoji = emoji, modifier = Modifier.widthIn(max = 60.dp)) + when (verificationFlowStep.data) { + is SessionVerificationData.Decimals -> Unit // TODO Render decimals + is SessionVerificationData.Emojis -> { + // We want each row to have up to 4 emojis + val rows = verificationFlowStep.data.emojis.chunked(4) + Column(modifier = modifier.fillMaxWidth()) { + for ((rowIndex, emojis) in rows.withIndex()) { + // Vertical spacing between rows + if (rowIndex > 0) { + Spacer(modifier = Modifier.height(40.dp)) + } + Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly) { + for (emoji in emojis) { + EmojiItemView(emoji = emoji, modifier = Modifier.widthIn(max = 60.dp)) + } + } } } } @@ -160,7 +166,7 @@ private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: @Composable private fun EmojiItemView(emoji: VerificationEmoji, modifier: Modifier = Modifier) { - val emojiResource = emoji.code.toEmojiResource() + val emojiResource = emoji.number.toEmojiResource() Column(horizontalAlignment = Alignment.CenterHorizontally, modifier = modifier) { Image( modifier = Modifier.size(48.dp), diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationData.kt similarity index 59% rename from libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt rename to libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationData.kt index af5e49565e..9368773ae8 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/VerificationEmoji.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationData.kt @@ -16,7 +16,24 @@ package io.element.android.libraries.matrix.api.verification +import androidx.compose.runtime.Immutable + +@Immutable +sealed interface SessionVerificationData { + data class Emojis( + // 7 emojis + val emojis: List, + ) : SessionVerificationData + + data class Decimals( + // 3 numbers + val decimals: List, + ) : SessionVerificationData +} + +// https://spec.matrix.org/unstable/client-server-api/#sas-method-emoji data class VerificationEmoji( - val code: Int, - val name: String, + val number: Int, + val emoji: String, + val description: String, ) diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt index 639b704823..8a51f38a8d 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt @@ -101,8 +101,8 @@ sealed interface VerificationFlowState { /** Short Authentication String (SAS) verification started between the 2 devices. */ data object StartedSasVerification : VerificationFlowState - /** Verification data for the SAS verification (emojis) received. */ - data class ReceivedVerificationData(val emoji: ImmutableList) : VerificationFlowState + /** Verification data for the SAS verification received. */ + data class ReceivedVerificationData(val data: SessionVerificationData) : VerificationFlowState /** Verification completed successfully. */ data object Finished : VerificationFlowState diff --git a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt index 6a1a91cba1..0d705d6834 100644 --- a/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt +++ b/libraries/matrix/impl/src/main/kotlin/io/element/android/libraries/matrix/impl/verification/RustSessionVerificationService.kt @@ -18,12 +18,12 @@ package io.element.android.libraries.matrix.impl.verification import io.element.android.libraries.core.data.tryOrNull import io.element.android.libraries.matrix.api.sync.SyncState +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.SessionVerificationService import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus import io.element.android.libraries.matrix.api.verification.VerificationEmoji import io.element.android.libraries.matrix.api.verification.VerificationFlowState import io.element.android.libraries.matrix.impl.sync.RustSyncService -import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -33,7 +33,8 @@ import kotlinx.coroutines.launch import org.matrix.rustcomponents.sdk.SessionVerificationController import org.matrix.rustcomponents.sdk.SessionVerificationControllerDelegate import org.matrix.rustcomponents.sdk.SessionVerificationControllerInterface -import org.matrix.rustcomponents.sdk.SessionVerificationEmoji +import org.matrix.rustcomponents.sdk.use +import org.matrix.rustcomponents.sdk.SessionVerificationData as RustSessionVerificationData class RustSessionVerificationService( private val syncService: RustSyncService, @@ -105,12 +106,8 @@ class RustSessionVerificationService( updateVerificationStatus(isVerified = true) } - override fun didReceiveVerificationData(data: List) { - val emojis = data.map { emoji -> - emoji.use { VerificationEmoji(it.code(), it.description()) } - } - .toImmutableList() - _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(emojis) + override fun didReceiveVerificationData(data: RustSessionVerificationData) { + _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(data.map()) } // When the actual SAS verification starts @@ -142,3 +139,28 @@ class RustSessionVerificationService( _sessionVerifiedStatus.value = newValue } } + +private fun RustSessionVerificationData.map(): SessionVerificationData { + return use { sessionVerificationData -> + when (sessionVerificationData) { + is RustSessionVerificationData.Emojis -> { + SessionVerificationData.Emojis( + emojis = sessionVerificationData.emojis.mapIndexed { index, emoji -> + emoji.use { sessionVerificationEmoji -> + VerificationEmoji( + number = sessionVerificationData.indices[index].toInt(), + emoji = sessionVerificationEmoji.symbol(), + description = sessionVerificationEmoji.description(), + ) + } + }, + ) + } + is RustSessionVerificationData.Decimals -> { + SessionVerificationData.Decimals( + decimals = sessionVerificationData.values.map { it.toInt() }, + ) + } + } + } +} From e2eaa9a5177092f4d6af893d99aa43368c6e5c2c Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 16:42:03 +0100 Subject: [PATCH 10/19] kotlin compiler --- .idea/kotlinc.xml | 2 +- .../matrix/api/verification/SessionVerificationService.kt | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml index e805548aaa..ae3f30ae18 100644 --- a/.idea/kotlinc.xml +++ b/.idea/kotlinc.xml @@ -1,6 +1,6 @@ - \ No newline at end of file diff --git a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt index 8a51f38a8d..db8fa1a939 100644 --- a/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt +++ b/libraries/matrix/api/src/main/kotlin/io/element/android/libraries/matrix/api/verification/SessionVerificationService.kt @@ -17,7 +17,6 @@ package io.element.android.libraries.matrix.api.verification import androidx.compose.runtime.Immutable -import kotlinx.collections.immutable.ImmutableList import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.StateFlow @@ -26,7 +25,7 @@ interface SessionVerificationService { /** * State of the current verification flow ([VerificationFlowState.Initial] if not started). */ - val verificationFlowState : StateFlow + val verificationFlowState: StateFlow /** * The internal service that checks verification can only run after the initial sync. From cc41cf64326d613aff96138c90eb6de2c49b7575 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 16:52:12 +0100 Subject: [PATCH 11/19] Update test. --- .../impl/VerifySelfSessionPresenterTests.kt | 36 ++++++++++++------- .../FakeSessionVerificationService.kt | 17 +++------ 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt index 3bf074b602..c96866cb5a 100644 --- a/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt +++ b/features/verifysession/impl/src/test/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionPresenterTests.kt @@ -23,11 +23,11 @@ import app.cash.turbine.test import com.google.common.truth.Truth.assertThat import io.element.android.features.verifysession.impl.VerifySelfSessionState.VerificationStep import io.element.android.libraries.architecture.Async +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.VerificationEmoji import io.element.android.libraries.matrix.api.verification.VerificationFlowState import io.element.android.libraries.matrix.test.verification.FakeSessionVerificationService import io.element.android.tests.testutils.WarmUpRule -import kotlinx.collections.immutable.persistentListOf import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.runTest import org.junit.Rule @@ -74,7 +74,7 @@ class VerifySelfSessionPresenterTests { // Await for other device response: assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.AwaitingOtherDeviceResponse) // ChallengeReceived: - service.triggerReceiveVerificationData() + service.triggerReceiveVerificationData(SessionVerificationData.Emojis(emptyList())) val verifyingState = awaitItem() assertThat(verifyingState.verificationFlowStep).isInstanceOf(VerificationStep.Verifying::class.java) } @@ -133,7 +133,7 @@ class VerifySelfSessionPresenterTests { presenter.present() }.test { requestVerificationAndAwaitVerifyingState(service) - service.givenVerificationFlowState(VerificationFlowState.ReceivedVerificationData(persistentListOf())) + service.givenVerificationFlowState(VerificationFlowState.ReceivedVerificationData(SessionVerificationData.Emojis(emptyList()))) ensureAllEventsConsumed() } } @@ -158,18 +158,24 @@ class VerifySelfSessionPresenterTests { @Test fun `present - When verification is approved, the flow completes if there is no error`() = runTest { val emojis = listOf( - VerificationEmoji(30, "Smiley") + VerificationEmoji(number = 30, emoji = "😀", description = "Smiley") ) - val service = FakeSessionVerificationService().apply { - givenEmojiList(emojis) - } + val service = FakeSessionVerificationService() val presenter = createVerifySelfSessionPresenter(service) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { - val state = requestVerificationAndAwaitVerifyingState(service) + val state = requestVerificationAndAwaitVerifyingState( + service, + SessionVerificationData.Emojis(emojis) + ) state.eventSink(VerifySelfSessionViewEvents.ConfirmVerification) - assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Verifying(emojis, Async.Loading())) + assertThat(awaitItem().verificationFlowStep).isEqualTo( + VerificationStep.Verifying( + SessionVerificationData.Emojis(emojis), + Async.Loading(), + ) + ) assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Completed) } } @@ -183,13 +189,19 @@ class VerifySelfSessionPresenterTests { }.test { val state = requestVerificationAndAwaitVerifyingState(service) state.eventSink(VerifySelfSessionViewEvents.DeclineVerification) - assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Verifying(emptyList(), Async.Loading())) + assertThat(awaitItem().verificationFlowStep).isEqualTo( + VerificationStep.Verifying( + SessionVerificationData.Emojis(emptyList()), + Async.Loading(), + ) + ) assertThat(awaitItem().verificationFlowStep).isEqualTo(VerificationStep.Canceled) } } private suspend fun ReceiveTurbine.requestVerificationAndAwaitVerifyingState( - fakeService: FakeSessionVerificationService + fakeService: FakeSessionVerificationService, + sessionVerificationData: SessionVerificationData = SessionVerificationData.Emojis(emptyList()), ): VerifySelfSessionState { var state = awaitItem() assertThat(state.verificationFlowStep).isEqualTo(VerificationStep.Initial) @@ -204,7 +216,7 @@ class VerifySelfSessionPresenterTests { // Await for other device response (again): state = awaitItem() assertThat(state.verificationFlowStep).isEqualTo(VerificationStep.AwaitingOtherDeviceResponse) - fakeService.triggerReceiveVerificationData() + fakeService.triggerReceiveVerificationData(sessionVerificationData) // Finally, ChallengeReceived: state = awaitItem() assertThat(state.verificationFlowStep).isInstanceOf(VerificationStep.Verifying::class.java) diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt index 34405f1e3d..4a7aa1c304 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/verification/FakeSessionVerificationService.kt @@ -16,12 +16,10 @@ package io.element.android.libraries.matrix.test.verification +import io.element.android.libraries.matrix.api.verification.SessionVerificationData import io.element.android.libraries.matrix.api.verification.SessionVerificationService -import io.element.android.libraries.matrix.api.verification.VerificationFlowState import io.element.android.libraries.matrix.api.verification.SessionVerifiedStatus -import io.element.android.libraries.matrix.api.verification.VerificationEmoji -import kotlinx.collections.immutable.persistentListOf -import kotlinx.collections.immutable.toPersistentList +import io.element.android.libraries.matrix.api.verification.VerificationFlowState import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow @@ -31,10 +29,9 @@ class FakeSessionVerificationService : SessionVerificationService { private val _sessionVerifiedStatus = MutableStateFlow(SessionVerifiedStatus.Unknown) private var _verificationFlowState = MutableStateFlow(VerificationFlowState.Initial) private var _canVerifySessionFlow = MutableStateFlow(true) - private var emojiList = persistentListOf() var shouldFail = false - override val verificationFlowState: StateFlow =_verificationFlowState + override val verificationFlowState: StateFlow = _verificationFlowState override val sessionVerifiedStatus: StateFlow = _sessionVerifiedStatus override val canVerifySessionFlow: Flow = _canVerifySessionFlow @@ -64,8 +61,8 @@ class FakeSessionVerificationService : SessionVerificationService { } } - fun triggerReceiveVerificationData() { - _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(emojiList) + fun triggerReceiveVerificationData(sessionVerificationData: SessionVerificationData) { + _verificationFlowState.value = VerificationFlowState.ReceivedVerificationData(sessionVerificationData) } override suspend fun startVerification() { @@ -88,10 +85,6 @@ class FakeSessionVerificationService : SessionVerificationService { _isReady.value = value } - fun givenEmojiList(emojis: List) { - this.emojiList = emojis.toPersistentList() - } - override suspend fun reset() { _verificationFlowState.value = VerificationFlowState.Initial } From d422bbca500b3c178b0b7f7cd4a128aa0dd9e5cb Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 17:12:55 +0100 Subject: [PATCH 12/19] Add support for SAS verification with numbers. --- .../impl/VerifySelfSessionStateProvider.kt | 22 ++++++++------ .../impl/VerifySelfSessionView.kt | 29 +++++++++++++++++-- .../impl/src/main/res/values/localazy.xml | 2 ++ 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt index 913b43dfd3..9115b8b444 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionStateProvider.kt @@ -29,10 +29,10 @@ open class VerifySelfSessionStateProvider : PreviewParameterProvider = aVerificationEmojiList(), - decimals: List = emptyList(), ): SessionVerificationData { - return if (emojiList.isEmpty()) { - SessionVerificationData.Decimals(decimals) - } else { - SessionVerificationData.Emojis(emojiList) - } + return SessionVerificationData.Emojis(emojiList) +} + +private fun aDecimalsSessionVerificationData( + decimals: List = listOf(123, 456, 789), +): SessionVerificationData { + return SessionVerificationData.Decimals(decimals) } private fun aVerifySelfSessionState() = VerifySelfSessionState( diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index a81693b9b0..dd0905dc65 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -19,6 +19,7 @@ package io.element.android.features.verifysession.impl import androidx.activity.compose.BackHandler import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -104,14 +105,23 @@ private fun HeaderContent(verificationFlowStep: FlowStep, modifier: Modifier = M FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_title FlowStep.Canceled -> CommonStrings.common_verification_cancelled FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_title - FlowStep.Ready, is FlowStep.Verifying, FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_title + FlowStep.Ready, + FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_title + is FlowStep.Verifying -> when (verificationFlowStep.data) { + is SessionVerificationData.Decimals -> R.string.screen_session_verification_compare_numbers_title + is SessionVerificationData.Emojis -> R.string.screen_session_verification_compare_emojis_title + } } val subtitleTextId = when (verificationFlowStep) { FlowStep.Initial -> R.string.screen_session_verification_open_existing_session_subtitle FlowStep.Canceled -> R.string.screen_session_verification_cancelled_subtitle FlowStep.AwaitingOtherDeviceResponse -> R.string.screen_session_verification_waiting_to_accept_subtitle - is FlowStep.Verifying, FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_subtitle FlowStep.Ready -> R.string.screen_session_verification_ready_subtitle + FlowStep.Completed -> R.string.screen_session_verification_compare_emojis_subtitle + is FlowStep.Verifying -> when (verificationFlowStep.data) { + is SessionVerificationData.Decimals -> R.string.screen_session_verification_compare_numbers_subtitle + is SessionVerificationData.Emojis -> R.string.screen_session_verification_compare_emojis_subtitle + } } IconTitleSubtitleMolecule( @@ -143,7 +153,20 @@ private fun ContentWaiting(modifier: Modifier = Modifier) { @Composable private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: Modifier = Modifier) { when (verificationFlowStep.data) { - is SessionVerificationData.Decimals -> Unit // TODO Render decimals + is SessionVerificationData.Decimals -> { + val text = verificationFlowStep.data.decimals.joinToString(separator = " - ") { it.toString() } + Box( + modifier = modifier.fillMaxWidth(), + contentAlignment = Alignment.Center, + ) { + Text( + text = text, + style = ElementTheme.typography.fontHeadingLgBold, + color = MaterialTheme.colorScheme.primary, + maxLines = 1, + ) + } + } is SessionVerificationData.Emojis -> { // We want each row to have up to 4 emojis val rows = verificationFlowStep.data.emojis.chunked(4) diff --git a/features/verifysession/impl/src/main/res/values/localazy.xml b/features/verifysession/impl/src/main/res/values/localazy.xml index 24b3a7cf26..9b785044d8 100644 --- a/features/verifysession/impl/src/main/res/values/localazy.xml +++ b/features/verifysession/impl/src/main/res/values/localazy.xml @@ -3,6 +3,8 @@ "Something doesn’t seem right. Either the request timed out or the request was denied." "Confirm that the emojis below match those shown on your other session." "Compare emojis" + "Confirm that the numbers below match those shown on your other session." + "Compare numbers" "Your new session is now verified. It has access to your encrypted messages, and other users will see it as trusted." "Prove it’s you in order to access your encrypted message history." "Open an existing session" From 487a634990e89bb5c864f1bc93eacb0f383f7c34 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 17:16:10 +0100 Subject: [PATCH 13/19] Layout optimization --- .../impl/VerifySelfSessionView.kt | 29 ++++++++----------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt index dd0905dc65..a132431812 100644 --- a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/VerifySelfSessionView.kt @@ -19,7 +19,6 @@ package io.element.android.features.verifysession.impl import androidx.activity.compose.BackHandler import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -38,6 +37,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp @@ -155,27 +155,22 @@ private fun ContentVerifying(verificationFlowStep: FlowStep.Verifying, modifier: when (verificationFlowStep.data) { is SessionVerificationData.Decimals -> { val text = verificationFlowStep.data.decimals.joinToString(separator = " - ") { it.toString() } - Box( + Text( modifier = modifier.fillMaxWidth(), - contentAlignment = Alignment.Center, - ) { - Text( - text = text, - style = ElementTheme.typography.fontHeadingLgBold, - color = MaterialTheme.colorScheme.primary, - maxLines = 1, - ) - } + text = text, + style = ElementTheme.typography.fontHeadingLgBold, + color = MaterialTheme.colorScheme.primary, + textAlign = TextAlign.Center, + ) } is SessionVerificationData.Emojis -> { // We want each row to have up to 4 emojis val rows = verificationFlowStep.data.emojis.chunked(4) - Column(modifier = modifier.fillMaxWidth()) { - for ((rowIndex, emojis) in rows.withIndex()) { - // Vertical spacing between rows - if (rowIndex > 0) { - Spacer(modifier = Modifier.height(40.dp)) - } + Column( + modifier = modifier.fillMaxWidth(), + verticalArrangement = Arrangement.spacedBy(40.dp), + ) { + rows.forEach { emojis -> Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly) { for (emoji in emojis) { EmojiItemView(emoji = emoji, modifier = Modifier.widthIn(max = 60.dp)) From 71d844952790e9c4682196580fb94e30b29730d2 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Fri, 8 Dec 2023 16:26:05 +0000 Subject: [PATCH 14/19] Update screenshots --- ...l_VerifySelfSessionView-Day-0_1_null_2,NEXUS_5,1.0,en].png | 4 ++-- ...l_VerifySelfSessionView-Day-0_1_null_3,NEXUS_5,1.0,en].png | 4 ++-- ...l_VerifySelfSessionView-Day-0_1_null_6,NEXUS_5,1.0,en].png | 3 +++ ...VerifySelfSessionView-Night-0_2_null_2,NEXUS_5,1.0,en].png | 4 ++-- ...VerifySelfSessionView-Night-0_2_null_3,NEXUS_5,1.0,en].png | 4 ++-- ...VerifySelfSessionView-Night-0_2_null_6,NEXUS_5,1.0,en].png | 3 +++ 6 files changed, 14 insertions(+), 8 deletions(-) create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_6,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_6,NEXUS_5,1.0,en].png diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_2,NEXUS_5,1.0,en].png index d42407f5bb..de0e46a071 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_2,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_2,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b801d06d7ec8cab2a9a2804541cdf2e0e27dfed949bddb29b3ce7e6b348ac452 -size 56485 +oid sha256:8425428904c58fd9a22f4505c7dbb47798efcf2f2e5007fbf3f402222cb0cf53 +size 51381 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_3,NEXUS_5,1.0,en].png index 806c701471..258a528e6c 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_3,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_3,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:41983afd517fc4a8ad8347ee1e07ce65a58ab4677dc2c07582aefef2764f1263 -size 57899 +oid sha256:f5318f2a7564c319c58971daf76a60a696d0835476d06666a190849a7222c98d +size 52689 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_6,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_6,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..fb2edac72f --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Day-0_1_null_6,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22817cd770e9eb1d438128804007a33cc038f8da17788f0848ec5db26211a179 +size 35569 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_2,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_2,NEXUS_5,1.0,en].png index 81d26981a8..1c24f49ca9 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_2,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_2,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2d5701107cf5091ac15c167daa45e7eb38d36ee119eef31ffaaaa0e94da1c7d6 -size 55684 +oid sha256:77668eb95611c9b72913d286956b1b5e6bafe1cf6a1facfc00a5c4fd0ceab3d2 +size 49133 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_3,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_3,NEXUS_5,1.0,en].png index 4f3e4a9556..dd78bc04ea 100644 --- a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_3,NEXUS_5,1.0,en].png +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_3,NEXUS_5,1.0,en].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c56c2c33e4b4c1e4175a2f9ea147680bd1b463a925cc62d2f4fc5a82d53bae9 -size 57085 +oid sha256:121d1b8f9a6abf9c50a951b2db6a7e52602ec34876a55e38b009f1fdffcd725d +size 50525 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_6,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_6,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..7fb3f28454 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl_VerifySelfSessionView_null_VerifySelfSessionView-Night-0_2_null_6,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83961b489de278edf3f2646f228e059e71f381363ffb751f44244a7d12604cb9 +size 33443 From 650b25a43d01e3bc78281b1c94c3f9bf34d252e9 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 19:17:35 +0100 Subject: [PATCH 15/19] Fix issue with id resource folder. --- .../src/main/res/values-in/strings_sas.xml | 68 +++++++++++++++++++ tools/sas/import_sas_strings.py | 3 +- 2 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 features/verifysession/impl/src/main/res/values-in/strings_sas.xml diff --git a/features/verifysession/impl/src/main/res/values-in/strings_sas.xml b/features/verifysession/impl/src/main/res/values-in/strings_sas.xml new file mode 100644 index 0000000000..73270815e7 --- /dev/null +++ b/features/verifysession/impl/src/main/res/values-in/strings_sas.xml @@ -0,0 +1,68 @@ + + + + Anjing + Kucing + Singa + Kuda + Unicorn + Babi + Gajah + Kelinci + Panda + Ayam + Penguin + Kura-Kura + Ikan + Gurita + Kupu-Kupu + Bunga + Pohon + Kaktus + Jamur + Bola Dunia + Bulan + Awan + Api + Pisang + Apel + Stroberi + Jagung + Pizza + Kue + Hati + Senyuman + Robot + Topi + Kacamata + Kunci Bengkel + Santa + Jempol + Payung + Jam Pasir + Jam + Kado + Bohlam Lampu + Buku + Pensil + Klip Kertas + Gunting + Gembok + Kunci + Palu + Telepon + Bendera + Kereta Api + Sepeda + Pesawat + Roket + Piala + Bola + Gitar + Terompet + Lonceng + Jangkar + Headphone + Map + Pin + diff --git a/tools/sas/import_sas_strings.py b/tools/sas/import_sas_strings.py index b05be28d31..62dec19f49 100755 --- a/tools/sas/import_sas_strings.py +++ b/tools/sas/import_sas_strings.py @@ -97,7 +97,8 @@ for lang in cumul: androidLang = lang\ .replace("_", "-r")\ .replace("zh-rHans", "zh-rCN") \ - .replace("zh-rHant", "zh-rTW") + .replace("zh-rHant", "zh-rTW") \ + .replace("id", "in") write_file(os.path.join(data_defs_dir, "values-" + androidLang + "/strings_sas.xml"), cumul[lang]) print() From 49a59b89c6c09224f07f5f7e4ed8c0f75409c000 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Fri, 8 Dec 2023 19:51:02 +0100 Subject: [PATCH 16/19] and remove file... --- .../src/main/res/values-id/strings_sas.xml | 68 ------------------- 1 file changed, 68 deletions(-) delete mode 100644 features/verifysession/impl/src/main/res/values-id/strings_sas.xml diff --git a/features/verifysession/impl/src/main/res/values-id/strings_sas.xml b/features/verifysession/impl/src/main/res/values-id/strings_sas.xml deleted file mode 100644 index 73270815e7..0000000000 --- a/features/verifysession/impl/src/main/res/values-id/strings_sas.xml +++ /dev/null @@ -1,68 +0,0 @@ - - - - Anjing - Kucing - Singa - Kuda - Unicorn - Babi - Gajah - Kelinci - Panda - Ayam - Penguin - Kura-Kura - Ikan - Gurita - Kupu-Kupu - Bunga - Pohon - Kaktus - Jamur - Bola Dunia - Bulan - Awan - Api - Pisang - Apel - Stroberi - Jagung - Pizza - Kue - Hati - Senyuman - Robot - Topi - Kacamata - Kunci Bengkel - Santa - Jempol - Payung - Jam Pasir - Jam - Kado - Bohlam Lampu - Buku - Pensil - Klip Kertas - Gunting - Gembok - Kunci - Palu - Telepon - Bendera - Kereta Api - Sepeda - Pesawat - Roket - Piala - Bola - Gitar - Terompet - Lonceng - Jangkar - Headphone - Map - Pin - From 2af84415152116b1c729edff879d29e14ed164f7 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 11 Dec 2023 16:41:28 +0100 Subject: [PATCH 17/19] Add preview for SAS Emojis. --- .../impl/emoji/SasEmojisPreview.kt | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/SasEmojisPreview.kt diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/SasEmojisPreview.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/SasEmojisPreview.kt new file mode 100644 index 0000000000..0508aa66c3 --- /dev/null +++ b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/SasEmojisPreview.kt @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2023 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.element.android.features.verifysession.impl.emoji + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import io.element.android.compound.theme.ElementTheme +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight +import io.element.android.libraries.designsystem.theme.components.Text + +@Composable +@PreviewsDayNight +internal fun SasEmojisPreview() = ElementPreview { + Column( + modifier = Modifier.padding(8.dp), + verticalArrangement = Arrangement.spacedBy(2.dp), + ) { + List(64) { it to it.toEmojiResource() } + .chunked(8) + .forEach { + Row( + horizontalArrangement = Arrangement.spacedBy(2.dp), + ) { + it.forEach { emoji -> + Column( + modifier = Modifier.weight(1f), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Image( + painter = painterResource(id = emoji.second.drawableRes), + contentDescription = null, + modifier = Modifier + .size(32.dp) + ) + Text( + text = emoji.first.toString() + ":" + stringResource(id = emoji.second.nameRes), + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = ElementTheme.typography.fontBodySmRegular.copy( + fontSize = 8.sp + ) + ) + } + } + } + } + } +} From 0615a41f4fe697ed3988e33edab67999f3781f90 Mon Sep 17 00:00:00 2001 From: ElementBot Date: Mon, 11 Dec 2023 15:50:43 +0000 Subject: [PATCH 18/19] Update screenshots --- ...i_SasEmojis_null_SasEmojis-Day-1_2_null,NEXUS_5,1.0,en].png | 3 +++ ...SasEmojis_null_SasEmojis-Night-1_3_null,NEXUS_5,1.0,en].png | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Day-1_2_null,NEXUS_5,1.0,en].png create mode 100644 tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Night-1_3_null,NEXUS_5,1.0,en].png diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Day-1_2_null,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Day-1_2_null,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..8b90490c82 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Day-1_2_null,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7828291ad80dc68805aae63d630347ce79f492439ef151d39737e79a21d09ed +size 145819 diff --git a/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Night-1_3_null,NEXUS_5,1.0,en].png b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Night-1_3_null,NEXUS_5,1.0,en].png new file mode 100644 index 0000000000..39ffa185e6 --- /dev/null +++ b/tests/uitests/src/test/snapshots/images/ui_S_t[f.verifysession.impl.emoji_SasEmojis_null_SasEmojis-Night-1_3_null,NEXUS_5,1.0,en].png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92da49716950104897050f184e6eeb271863575ac0aca38cab31c7e89f395e90 +size 143323 From 2c62224bf2d3601eaf83f9a4ec9c11729ea5e96a Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Mon, 11 Dec 2023 17:22:25 +0100 Subject: [PATCH 19/19] Rename EmojiResource --- .../impl/emoji/{EmojiResources.kt => EmojiResource.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/{EmojiResources.kt => EmojiResource.kt} (100%) diff --git a/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt b/features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt similarity index 100% rename from features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResources.kt rename to features/verifysession/impl/src/main/kotlin/io/element/android/features/verifysession/impl/emoji/EmojiResource.kt