Skip to content

Commit

Permalink
feat(MyKSuite-10): Put all upgrade features in the module (#276)
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianDevel authored Feb 7, 2025
2 parents bf336f2 + 90797a1 commit f4de857
Show file tree
Hide file tree
Showing 16 changed files with 276 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
package com.infomaniak.core.myksuite.ui.screens

import android.content.res.Configuration
import android.os.Parcelable
import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.rememberScrollState
Expand All @@ -40,29 +41,25 @@ import com.infomaniak.core.myksuite.ui.theme.LocalMyKSuiteColors
import com.infomaniak.core.myksuite.ui.theme.Margin
import com.infomaniak.core.myksuite.ui.theme.MyKSuiteTheme
import com.infomaniak.core.myksuite.ui.theme.Typography
import kotlinx.parcelize.Parcelize

@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MyKSuiteUpgradeBottomSheet(
modifier: Modifier = Modifier,
style: MyKSuiteButtonType,
app: KSuiteApp,
sheetState: SheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true),
onDismissRequest: () -> Unit,
customFeatures: (() -> List<MyKSuiteUpgradeFeatures>)?,
) {
MyKSuiteTheme {
ModalBottomSheet(onDismissRequest, modifier, sheetState) {
UpgradeBottomSheetContent(customFeatures, style, onDismissRequest)
UpgradeBottomSheetContent(app, onDismissRequest)
}
}
}

@Composable
private fun UpgradeBottomSheetContent(
customFeatures: (() -> List<MyKSuiteUpgradeFeatures>)?,
style: MyKSuiteButtonType,
onButtonClicked: () -> Unit,
) {
private fun UpgradeBottomSheetContent(app: KSuiteApp, onButtonClicked: () -> Unit) {
val localColors = LocalMyKSuiteColors.current

Column(
Expand Down Expand Up @@ -94,7 +91,8 @@ private fun UpgradeBottomSheetContent(
color = localColors.secondaryTextColor,
)
Spacer(Modifier.height(Margin.Medium))
UpgradeFeatures(customFeatures, paddedModifier)
UpgradeFeatures(app, paddedModifier)
Spacer(Modifier.height(Margin.Large))
Text(
modifier = paddedModifier,
text = stringResource(R.string.myKSuiteUpgradeDetails),
Expand All @@ -105,24 +103,30 @@ private fun UpgradeBottomSheetContent(
MyKSuitePrimaryButton(
modifier = paddedModifier.fillMaxWidth(),
text = stringResource(R.string.buttonClose),
colors = style.colors,
shape = style.shape,
colors = app.buttonStyle.colors,
shape = app.buttonStyle.shape,
onClick = onButtonClicked,
)
Spacer(Modifier.height(Margin.Large))
}
}

@Composable
private fun ColumnScope.UpgradeFeatures(
customFeatures: (() -> List<MyKSuiteUpgradeFeatures>)?,
modifier: Modifier,
) {
customFeatures?.let {
it().forEach { UpgradeFeature(it, modifier) }
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures, modifier)
Spacer(Modifier.height(Margin.Large))
}
private fun ColumnScope.UpgradeFeatures(app: KSuiteApp, modifier: Modifier) {
app.features.forEach { UpgradeFeature(it, modifier) }
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures, modifier)
}

@Parcelize
enum class KSuiteApp(internal val features: List<MyKSuiteUpgradeFeatures>, internal val buttonStyle: MyKSuiteButtonType) : Parcelable {
Mail(
features = listOf(MyKSuiteUpgradeFeatures.MailUnlimitedFeature, MyKSuiteUpgradeFeatures.MailOtherFeature),
buttonStyle = MyKSuiteButtonType.Mail,
),
Drive(
features = listOf(MyKSuiteUpgradeFeatures.DriveStorageFeature, MyKSuiteUpgradeFeatures.DriveDropboxFeature),
buttonStyle = MyKSuiteButtonType.Drive,
),
}

@Preview(name = "(1) Light")
Expand All @@ -131,13 +135,7 @@ private fun ColumnScope.UpgradeFeatures(
private fun Preview() {
MyKSuiteTheme {
Surface {
UpgradeBottomSheetContent(
customFeatures = {
listOf(MyKSuiteUpgradeFeatures(title = R.string.myKSuiteUpgradeLabel, icon = R.drawable.ic_gift))
},
style = MyKSuiteButtonType.Mail,
onButtonClicked = {}
)
UpgradeBottomSheetContent(app = KSuiteApp.Mail, onButtonClicked = {})
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,31 @@
*/
package com.infomaniak.core.myksuite.ui.screens

import android.os.Parcelable
import androidx.annotation.DrawableRes
import androidx.annotation.StringRes
import com.infomaniak.core.myksuite.R
import kotlinx.parcelize.Parcelize

@Parcelize
data class MyKSuiteUpgradeFeatures(@StringRes val title: Int, @DrawableRes val icon: Int) : Parcelable {
internal enum class MyKSuiteUpgradeFeatures(@StringRes val title: Int, @DrawableRes val icon: Int) {

internal companion object {
val MoreFeatures = MyKSuiteUpgradeFeatures(title = R.string.myKSuiteUpgradeLabel, icon = R.drawable.ic_gift)
}
DriveStorageFeature(
title = R.string.myKSuiteUpgradeDriveLabel,
icon = R.drawable.ic_drive_cloud,
),

DriveDropboxFeature(
title = R.string.myKSuiteUpgradeDropboxLabel,
icon = R.drawable.ic_folder_circle_filled_arrow_up,
),

MailUnlimitedFeature(
title = R.string.myKSuiteUpgradeUnlimitedMailLabel,
icon = R.drawable.ic_paperplane,
),

MailOtherFeature(
title = R.string.myKSuiteUpgradeRedirectLabel,
icon = R.drawable.ic_enveloppe_italic,
),

MoreFeatures(title = R.string.myKSuiteUpgradeLabel, icon = R.drawable.ic_gift),
}
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ import com.infomaniak.core.myksuite.ui.theme.Typography
@Composable
internal fun AppStorageQuotas(modifier: Modifier) {
Column(modifier = modifier, verticalArrangement = Arrangement.spacedBy(Margin.Medium)) {
KSuiteApp.entries.forEach { AppStorageQuota(app = it) }
KSuiteAppWithQuotas.entries.forEach { AppStorageQuota(app = it) }
}
}

@Composable
private fun AppStorageQuota(modifier: Modifier = Modifier, app: KSuiteApp) {
private fun AppStorageQuota(modifier: Modifier = Modifier, app: KSuiteAppWithQuotas) {
val localColors = LocalMyKSuiteColors.current
Column(modifier) {
Row(verticalAlignment = Alignment.CenterVertically) {
Expand Down Expand Up @@ -75,8 +75,9 @@ private fun AppStorageQuota(modifier: Modifier = Modifier, app: KSuiteApp) {
}
}

private enum class KSuiteApp(val displayName: String, val color: @Composable () -> Color) {
Mail("Mail", { LocalMyKSuiteColors.current.mail }), Drive("kDrive", { LocalMyKSuiteColors.current.drive })
private enum class KSuiteAppWithQuotas(val displayName: String, val color: @Composable () -> Color) {
Mail("Mail", { LocalMyKSuiteColors.current.mail }),
Drive("kDrive", { LocalMyKSuiteColors.current.drive }),
}

@Preview(name = "(1) Light")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import androidx.compose.ui.unit.dp
import com.infomaniak.core.myksuite.ui.theme.Dimens
import com.infomaniak.core.myksuite.ui.theme.LocalMyKSuiteColors

enum class MyKSuiteButtonType(val colors: @Composable () -> MyKSuiteButtonColors, val shape: Shape) {
internal enum class MyKSuiteButtonType(val colors: @Composable () -> MyKSuiteButtonColors, val shape: Shape) {
Mail(
colors = {
val localColors = LocalMyKSuiteColors.current
Expand All @@ -50,7 +50,7 @@ enum class MyKSuiteButtonType(val colors: @Composable () -> MyKSuiteButtonColors
),
}

data class MyKSuiteButtonColors(val containerColor: Color, val contentColor: Color) {
internal data class MyKSuiteButtonColors(val containerColor: Color, val contentColor: Color) {

@Composable
fun buttonColors(): ButtonColors = ButtonDefaults.buttonColors(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import com.infomaniak.core.myksuite.ui.screens.MyKSuiteUpgradeFeatures
import com.infomaniak.core.myksuite.ui.screens.MyKSuiteUpgradeFeatures.*
import com.infomaniak.core.myksuite.ui.theme.*

@Composable
Expand Down Expand Up @@ -63,8 +64,9 @@ private fun Preview() {
MyKSuiteTheme {
Surface {
Column {
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures)
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures)
UpgradeFeature(DriveStorageFeature)
UpgradeFeature(DriveDropboxFeature)
UpgradeFeature(MoreFeatures)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ import androidx.navigation.fragment.findNavController
import androidx.navigation.fragment.navArgs
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import com.infomaniak.core.myksuite.ui.screens.MyKSuiteUpgradeBottomSheet
import com.infomaniak.core.myksuite.ui.screens.components.MyKSuiteButtonType

@OptIn(ExperimentalMaterial3Api::class)
class MyKSuiteUpgradeBottomSheetDialog : BottomSheetDialogFragment() {
Expand All @@ -40,9 +39,8 @@ class MyKSuiteUpgradeBottomSheetDialog : BottomSheetDialogFragment() {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
MyKSuiteUpgradeBottomSheet(
style = MyKSuiteButtonType.Mail,
onDismissRequest = this@MyKSuiteUpgradeBottomSheetDialog.findNavController()::popBackStack,
customFeatures = { navigationArgs.upgradeFeatures.toList() }
app = navigationArgs.kSuiteApp,
)
}
}
Expand Down
27 changes: 27 additions & 0 deletions MykSuite/src/main/res/drawable/ic_drive_cloud.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?><!--
~ Infomaniak Core - Android
~ Copyright (C) 2025 Infomaniak Network SA
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#666666"
android:fillType="evenOdd"
android:pathData="M10.557,0.138C12.214,-0.182 13.93,0.058 15.435,0.822C16.794,1.511 17.91,2.592 18.644,3.919C19.234,3.948 19.816,4.071 20.37,4.282C21.079,4.553 21.727,4.964 22.274,5.491C22.82,6.018 23.255,6.649 23.552,7.348C23.848,8.047 24.001,8.799 24,9.558C24,12.023 22.761,13.461 21.521,14.25C21.004,14.579 20.492,14.793 20.075,14.932L21.624,17.837C21.66,17.904 21.685,17.973 21.699,18.044C21.951,18.475 22.082,18.976 22.082,19.481V21.358C22.082,22.025 21.854,22.684 21.421,23.185C20.985,23.69 20.368,24 19.696,24H4.305C3.633,24 3.015,23.69 2.579,23.185C2.147,22.684 1.919,22.025 1.919,21.358V19.481C1.919,18.976 2.05,18.475 2.301,18.044C2.316,17.973 2.341,17.903 2.376,17.837L3.812,15.145C3.411,15.085 2.864,14.96 2.308,14.693C1.747,14.425 1.161,14.004 0.718,13.35C0.27,12.691 -0,11.844 -0,10.779C-0,10.12 0.147,9.469 0.43,8.874C0.714,8.279 1.126,7.754 1.638,7.339C2.15,6.924 2.748,6.628 3.388,6.473C3.756,6.384 4.132,6.343 4.508,6.35C4.739,4.961 5.352,3.658 6.286,2.591C7.398,1.322 8.901,0.459 10.557,0.138ZM4.644,16.839H19.356L17.067,12.547C16.954,12.335 16.838,12.203 16.744,12.131C16.655,12.063 16.6,12.056 16.577,12.056H7.426V12.06L7.423,12.056C7.4,12.057 7.344,12.064 7.257,12.131C7.163,12.203 7.046,12.335 6.933,12.547L4.644,16.839ZM7.432,10.524L7.432,10.522L7.425,10.524C7.014,10.524 6.638,10.676 6.327,10.914L6.301,10.923L6.307,10.929C6.008,11.163 5.767,11.478 5.582,11.826L4.596,13.675C4.565,13.671 4.533,13.67 4.501,13.67L4.483,13.67C4.464,13.67 4.434,13.669 4.393,13.667C4.31,13.662 4.188,13.652 4.039,13.63C3.738,13.585 3.349,13.494 2.97,13.312C2.594,13.132 2.244,12.87 1.985,12.49C1.73,12.114 1.532,11.574 1.532,10.778C1.532,10.347 1.628,9.922 1.813,9.532C1.999,9.143 2.269,8.8 2.603,8.529C2.938,8.257 3.329,8.063 3.748,7.962C4.167,7.861 4.604,7.854 5.026,7.943C5.244,7.989 5.471,7.937 5.648,7.802C5.826,7.667 5.935,7.461 5.948,7.238C6.027,5.894 6.552,4.614 7.439,3.6C8.326,2.587 9.526,1.898 10.848,1.642C12.17,1.387 13.54,1.579 14.742,2.188C15.943,2.797 16.907,3.789 17.481,5.008C17.612,5.285 17.896,5.458 18.203,5.446C18.756,5.425 19.307,5.516 19.824,5.713C20.341,5.91 20.812,6.21 21.211,6.594C21.609,6.978 21.926,7.438 22.142,7.947C22.358,8.456 22.469,9.004 22.469,9.557C22.469,11.404 21.584,12.395 20.699,12.957C20.243,13.247 19.782,13.424 19.431,13.529C19.4,13.538 19.37,13.547 19.341,13.555L18.419,11.826C18.23,11.471 17.984,11.152 17.677,10.916C17.365,10.677 16.989,10.524 16.577,10.524H7.432ZM4.501,13.67L4.503,13.848L4.503,13.849C4.5,13.67 4.501,13.67 4.501,13.67ZM3.739,18.655C3.911,18.456 4.118,18.371 4.305,18.371H19.696C19.883,18.371 20.09,18.456 20.261,18.655C20.436,18.858 20.55,19.154 20.55,19.481V21.358C20.55,21.686 20.436,21.982 20.261,22.184C20.09,22.383 19.883,22.468 19.696,22.468H4.305C4.118,22.468 3.911,22.383 3.739,22.184C3.564,21.982 3.451,21.686 3.451,21.358V19.481C3.451,19.154 3.564,18.858 3.739,18.655ZM14.739,20.431C14.739,20.008 15.082,19.665 15.505,19.665H18.045C18.468,19.665 18.811,20.008 18.811,20.431C18.811,20.854 18.468,21.197 18.045,21.197H15.505C15.082,21.197 14.739,20.854 14.739,20.431ZM6.127,19.451C5.936,19.451 5.749,19.508 5.59,19.614C5.43,19.72 5.306,19.871 5.233,20.048C5.16,20.225 5.14,20.419 5.177,20.607C5.214,20.795 5.306,20.967 5.441,21.103C5.576,21.239 5.748,21.331 5.936,21.369C6.124,21.407 6.318,21.388 6.495,21.315C6.672,21.243 6.824,21.119 6.931,20.96C7.038,20.802 7.095,20.615 7.096,20.423V20.42C7.096,20.163 6.994,19.917 6.812,19.736C6.649,19.573 6.435,19.474 6.207,19.455C6.181,19.452 6.154,19.451 6.127,19.451ZM8.425,19.614C8.584,19.508 8.771,19.451 8.963,19.451C8.99,19.451 9.016,19.452 9.042,19.455C9.27,19.474 9.485,19.573 9.648,19.736C9.829,19.917 9.931,20.163 9.931,20.42V20.423C9.931,20.615 9.873,20.802 9.766,20.96C9.659,21.119 9.508,21.243 9.331,21.315C9.154,21.388 8.959,21.407 8.771,21.369C8.584,21.331 8.412,21.239 8.277,21.103C8.142,20.967 8.05,20.795 8.013,20.607C7.976,20.419 7.995,20.225 8.068,20.048C8.142,19.871 8.266,19.72 8.425,19.614Z" />
</vector>
27 changes: 27 additions & 0 deletions MykSuite/src/main/res/drawable/ic_enveloppe_italic.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?><!--
~ Infomaniak Core - Android
~ Copyright (C) 2025 Infomaniak Network SA
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#666666"
android:fillType="evenOdd"
android:pathData="M3.763,5.596C3.296,5.658 2.921,5.829 2.561,6.142C2.156,6.494 1.908,6.897 1.79,7.39C1.76,7.515 1.345,9.746 0.867,12.348C0.015,16.989 -0.001,17.084 0,17.413C0.002,18.061 0.215,18.608 0.646,19.069C1.036,19.486 1.522,19.731 2.092,19.797C2.279,19.819 4.84,19.824 11.314,19.819L20.278,19.81L20.49,19.752C20.866,19.648 21.14,19.501 21.429,19.25C21.833,18.898 22.09,18.483 22.203,17.996C22.285,17.645 23.957,8.502 23.988,8.235C24.039,7.796 23.925,7.211 23.713,6.828C23.338,6.148 22.67,5.688 21.927,5.597C21.648,5.563 4.018,5.562 3.763,5.596ZM3.847,7.295C3.792,7.315 3.741,7.338 3.734,7.345C3.715,7.364 3.757,7.386 8.09,9.681C10.833,11.133 12.041,11.76 12.081,11.751C12.127,11.741 15.088,10.571 22.038,7.814L22.306,7.708L22.268,7.633C22.204,7.506 21.979,7.319 21.851,7.286C21.765,7.264 19.354,7.256 12.84,7.257C5.399,7.258 3.931,7.264 3.847,7.295ZM2.393,13.169C1.575,17.637 1.595,17.506 1.706,17.726C1.767,17.847 1.922,18.003 2.05,18.073C2.139,18.121 2.423,18.123 11.076,18.13C16.928,18.134 20.043,18.127 20.106,18.11C20.335,18.047 20.543,17.833 20.606,17.595C20.646,17.444 22.073,9.635 22.063,9.624C22.057,9.618 19.846,10.489 17.148,11.559C12.551,13.383 12.231,13.506 12.046,13.519C11.877,13.531 11.825,13.524 11.692,13.468C11.607,13.432 9.656,12.406 7.357,11.187C5.058,9.968 3.174,8.971 3.17,8.971C3.165,8.971 2.816,10.86 2.393,13.169Z" />
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8"?><!--
~ Infomaniak Core - Android
~ Copyright (C) 2025 Infomaniak Network SA
~
~ This program is free software: you can redistribute it and/or modify
~ it under the terms of the GNU General Public License as published by
~ the Free Software Foundation, either version 3 of the License, or
~ (at your option) any later version.
~
~ This program is distributed in the hope that it will be useful,
~ but WITHOUT ANY WARRANTY; without even the implied warranty of
~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
~ GNU General Public License for more details.
~
~ You should have received a copy of the GNU General Public License
~ along with this program. If not, see <http://www.gnu.org/licenses/>.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#666666"
android:fillType="evenOdd"
android:pathData="M2.487,0.75C1.86,0.75 1.24,0.965 0.768,1.373C0.293,1.784 0,2.368 0,3.003L0,19.335L0,19.347C0.01,19.969 0.279,20.548 0.725,20.981C1.167,21.412 1.757,21.675 2.377,21.745C2.405,21.748 2.434,21.75 2.462,21.75H10.226C10.641,21.75 10.976,21.414 10.976,21C10.976,20.586 10.641,20.25 10.226,20.25H2.509C2.208,20.208 1.949,20.079 1.771,19.906C1.589,19.729 1.505,19.522 1.5,19.328V3.003C1.5,2.841 1.573,2.66 1.75,2.507C1.929,2.352 2.193,2.25 2.487,2.25H7.697C7.991,2.25 8.255,2.352 8.434,2.507C8.61,2.66 8.684,2.841 8.684,3.003V4.506C8.684,4.92 9.02,5.256 9.434,5.256H21.591C21.885,5.256 22.149,5.358 22.328,5.513C22.433,5.604 22.5,5.741 22.5,6.009V10.676C22.5,11.09 22.836,11.426 23.25,11.426C23.664,11.426 24,11.09 24,10.676V6.009C24,5.479 23.856,4.852 23.31,4.379C22.838,3.971 22.218,3.756 21.591,3.756H10.184V3.003C10.184,2.368 9.891,1.784 9.416,1.373C8.944,0.965 8.324,0.75 7.697,0.75H2.487ZM13.757,13.007C14.883,11.882 16.409,11.25 18,11.25C19.591,11.25 21.118,11.882 22.243,13.007C23.368,14.133 24,15.659 24,17.25C24,18.841 23.368,20.367 22.243,21.493C21.118,22.618 19.591,23.25 18,23.25C16.409,23.25 14.883,22.618 13.757,21.493C12.632,20.367 12,18.841 12,17.25C12,15.659 12.632,14.133 13.757,13.007ZM14.716,17.235C14.425,16.939 14.429,16.465 14.724,16.174L17.474,13.466C17.766,13.178 18.234,13.178 18.526,13.466L21.276,16.174C21.571,16.465 21.575,16.939 21.284,17.235C20.994,17.53 20.519,17.533 20.224,17.243L18.75,15.791V20.5C18.75,20.914 18.414,21.25 18,21.25C17.586,21.25 17.25,20.914 17.25,20.5L17.25,15.791L15.776,17.243C15.481,17.533 15.006,17.53 14.716,17.235Z" />
</vector>
Loading

0 comments on commit f4de857

Please sign in to comment.