diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/components/EmptyState.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/EmptyState.kt
index efeac9f0ea..8eb2a0b939 100644
--- a/app/src/main/java/com/infomaniak/swisstransfer/ui/components/EmptyState.kt
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/EmptyState.kt
@@ -39,7 +39,7 @@ import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme
fun EmptyState(
icon: ImageVector,
@StringRes title: Int,
- @StringRes description: Int,
+ description: String,
modifier: Modifier = Modifier,
) {
Box(
@@ -49,7 +49,7 @@ fun EmptyState(
IllustratedMessageBlock(
icon = icon,
title = title,
- description = stringResource(description),
+ description = description,
modifier = modifier.padding(horizontal = Margin.Medium),
)
}
@@ -64,7 +64,7 @@ private fun EmptyStatePreview() {
EmptyState(
icon = AppIllus.MascotSearching,
title = R.string.noTransferReceivedTitle,
- description = R.string.noTransferReceivedDescription,
+ description = stringResource(R.string.noTransferReceivedDescription),
)
}
}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/components/SwissTransferBottomSheet.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/SwissTransferBottomSheet.kt
index 664d81405a..f6ac4e267a 100644
--- a/app/src/main/java/com/infomaniak/swisstransfer/ui/components/SwissTransferBottomSheet.kt
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/SwissTransferBottomSheet.kt
@@ -44,7 +44,7 @@ fun SwissTransferBottomSheet(
modifier: Modifier = Modifier,
onDismissRequest: () -> Unit,
imageVector: ImageVector? = null,
- @StringRes titleRes: Int,
+ @StringRes titleRes: Int? = null,
@StringRes descriptionRes: Int? = null,
topButton: @Composable ((Modifier) -> Unit)? = null,
bottomButton: @Composable ((Modifier) -> Unit)? = null,
@@ -67,8 +67,8 @@ fun SwissTransferBottomSheet(
@Composable
private fun BottomSheetContent(
imageVector: ImageVector?,
- titleRes: Int,
- descriptionRes: Int?,
+ @StringRes titleRes: Int?,
+ @StringRes descriptionRes: Int?,
content: @Composable (() -> Unit)?,
topButton: @Composable ((Modifier) -> Unit)? = null,
bottomButton: @Composable ((Modifier) -> Unit)? = null,
@@ -84,12 +84,14 @@ private fun BottomSheetContent(
Spacer(modifier = Modifier.height(Margin.Large))
}
- Text(
- text = stringResource(titleRes),
- style = SwissTransferTheme.typography.bodyMedium,
- color = SwissTransferTheme.colors.primaryTextColor,
- )
- Spacer(modifier = Modifier.height(Margin.Large))
+ titleRes?.let {
+ Text(
+ text = stringResource(it),
+ style = SwissTransferTheme.typography.bodyMedium,
+ color = SwissTransferTheme.colors.primaryTextColor,
+ )
+ Spacer(modifier = Modifier.height(Margin.Large))
+ }
descriptionRes?.let {
Text(
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/components/transfer/TransferExpiredBottomSheet.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/transfer/TransferExpiredBottomSheet.kt
new file mode 100644
index 0000000000..c140783d7b
--- /dev/null
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/components/transfer/TransferExpiredBottomSheet.kt
@@ -0,0 +1,100 @@
+/*
+ * Infomaniak SwissTransfer - Android
+ * Copyright (C) 2024 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 .
+ */
+package com.infomaniak.swisstransfer.ui.components.transfer
+
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.height
+import androidx.compose.material3.Surface
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
+import com.infomaniak.swisstransfer.R
+import com.infomaniak.swisstransfer.ui.components.EmptyState
+import com.infomaniak.swisstransfer.ui.components.LargeButton
+import com.infomaniak.swisstransfer.ui.components.SwissTransferBottomSheet
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIcons
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus
+import com.infomaniak.swisstransfer.ui.images.icons.Bin
+import com.infomaniak.swisstransfer.ui.images.illus.mascotDead.MascotDead
+import com.infomaniak.swisstransfer.ui.theme.Margin
+import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme
+import com.infomaniak.swisstransfer.ui.utils.FORMAT_DATE_SIMPLE
+import com.infomaniak.swisstransfer.ui.utils.PreviewAllWindows
+import com.infomaniak.swisstransfer.ui.utils.format
+import java.util.Date
+
+@Composable
+fun TransferExpiredBottomSheet(
+ isVisible: () -> Boolean,
+ expirationDate: () -> Date?,
+ downloadsLimit: () -> Int?,
+ onDeleteTransferClicked: () -> Unit,
+ closeBottomSheet: () -> Unit,
+) {
+
+ if (!isVisible()) return
+
+ val date = expirationDate()
+ val descriptionText = if (date != null) {
+ stringResource(
+ R.string.transferExpiredDateReachedDescription,
+ date.format(FORMAT_DATE_SIMPLE),
+ )
+ } else {
+ stringResource(R.string.transferExpiredLimitReachedDescription, downloadsLimit()!!)
+ }
+
+ SwissTransferBottomSheet(
+ modifier = Modifier,
+ onDismissRequest = closeBottomSheet,
+ bottomButton = {
+ LargeButton(
+ modifier = it,
+ titleRes = R.string.transferExpiredButton,
+ imageVector = AppIcons.Bin,
+ onClick = onDeleteTransferClicked,
+ )
+ },
+ ) {
+ Column {
+ Spacer(modifier = Modifier.height(Margin.Medium))
+ EmptyState(
+ icon = AppIllus.MascotDead.image(),
+ title = R.string.transferExpiredTitle,
+ description = descriptionText,
+ )
+ }
+ }
+}
+
+@PreviewAllWindows
+@Composable
+private fun Preview() {
+ SwissTransferTheme {
+ Surface {
+ TransferExpiredBottomSheet(
+ isVisible = { true },
+ expirationDate = { Date() },
+ downloadsLimit = { 42 },
+ onDeleteTransferClicked = {},
+ closeBottomSheet = {},
+ )
+ }
+ }
+}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/images/icons/Bin.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/icons/Bin.kt
new file mode 100644
index 0000000000..8079f2409d
--- /dev/null
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/icons/Bin.kt
@@ -0,0 +1,128 @@
+package com.infomaniak.swisstransfer.ui.images.icons
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.PathFillType.Companion.NonZero
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.graphics.StrokeCap.Companion.Butt
+import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.vector.ImageVector.Builder
+import androidx.compose.ui.graphics.vector.path
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.infomaniak.swisstransfer.ui.images.AppImages
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIcons
+
+val AppIcons.Bin: ImageVector
+ get() {
+
+ if (_bin != null) return _bin!!
+
+ _bin = Builder(
+ name = "Bin",
+ defaultWidth = 16.0.dp,
+ defaultHeight = 16.0.dp,
+ viewportWidth = 16.0f,
+ viewportHeight = 16.0f,
+ ).apply {
+ path(
+ fill = SolidColor(Color(0xFFF7FCFA)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(15.502f, 2.115f)
+ horizontalLineTo(11.236f)
+ verticalLineTo(1.621f)
+ curveTo(11.236f, 1.198f, 11.093f, 0.775f, 10.738f, 0.493f)
+ curveTo(10.382f, 0.211f, 10.027f, 0.0f, 9.6f, 0.0f)
+ horizontalLineTo(6.471f)
+ curveTo(5.973f, 0.0f, 5.618f, 0.211f, 5.333f, 0.493f)
+ curveTo(4.978f, 0.775f, 4.836f, 1.198f, 4.836f, 1.621f)
+ verticalLineTo(2.185f)
+ horizontalLineTo(0.569f)
+ curveTo(0.284f, 2.185f, 0.0f, 2.396f, 0.0f, 2.749f)
+ curveTo(0.0f, 3.101f, 0.213f, 3.313f, 0.569f, 3.313f)
+ horizontalLineTo(1.707f)
+ lineTo(2.631f, 14.52f)
+ curveTo(2.631f, 14.943f, 2.844f, 15.295f, 3.129f, 15.577f)
+ curveTo(3.413f, 15.859f, 3.84f, 16.0f, 4.196f, 16.0f)
+ horizontalLineTo(11.804f)
+ curveTo(12.231f, 16.0f, 12.587f, 15.859f, 12.871f, 15.577f)
+ curveTo(13.156f, 15.295f, 13.369f, 14.943f, 13.369f, 14.52f)
+ lineTo(14.293f, 3.313f)
+ horizontalLineTo(15.431f)
+ curveTo(15.716f, 3.313f, 16.0f, 3.101f, 16.0f, 2.749f)
+ curveTo(16.0f, 2.396f, 15.787f, 2.115f, 15.502f, 2.115f)
+ close()
+ moveTo(5.902f, 1.621f)
+ curveTo(5.902f, 1.48f, 5.973f, 1.339f, 6.044f, 1.269f)
+ curveTo(6.116f, 1.198f, 6.258f, 1.128f, 6.4f, 1.128f)
+ horizontalLineTo(9.6f)
+ curveTo(9.742f, 1.128f, 9.884f, 1.198f, 9.956f, 1.269f)
+ curveTo(10.027f, 1.339f, 10.169f, 1.48f, 10.169f, 1.621f)
+ verticalLineTo(2.185f)
+ horizontalLineTo(5.902f)
+ verticalLineTo(1.621f)
+ close()
+ moveTo(12.373f, 14.379f)
+ curveTo(12.373f, 14.52f, 12.302f, 14.661f, 12.231f, 14.731f)
+ curveTo(12.16f, 14.802f, 12.018f, 14.872f, 11.876f, 14.872f)
+ horizontalLineTo(4.196f)
+ curveTo(4.053f, 14.872f, 3.911f, 14.802f, 3.84f, 14.731f)
+ curveTo(3.769f, 14.661f, 3.698f, 14.52f, 3.698f, 14.379f)
+ lineTo(2.773f, 3.172f)
+ horizontalLineTo(13.369f)
+ lineTo(12.373f, 14.379f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFF7FCFA)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(6.471f, 5.85f)
+ curveTo(6.116f, 5.85f, 5.902f, 6.062f, 5.902f, 6.414f)
+ verticalLineTo(11.7f)
+ curveTo(5.902f, 11.982f, 6.116f, 12.194f, 6.471f, 12.194f)
+ curveTo(6.827f, 12.194f, 7.04f, 11.982f, 7.04f, 11.63f)
+ verticalLineTo(6.414f)
+ curveTo(6.969f, 6.062f, 6.756f, 5.85f, 6.471f, 5.85f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFF7FCFA)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(9.6f, 5.85f)
+ curveTo(9.316f, 5.85f, 9.031f, 6.062f, 9.031f, 6.414f)
+ verticalLineTo(11.7f)
+ curveTo(9.031f, 11.982f, 9.244f, 12.264f, 9.6f, 12.264f)
+ curveTo(9.956f, 12.264f, 10.169f, 12.053f, 10.169f, 11.7f)
+ verticalLineTo(6.414f)
+ curveTo(10.169f, 6.062f, 9.956f, 5.85f, 9.6f, 5.85f)
+ close()
+ }
+ }.build()
+
+ return _bin!!
+ }
+
+private var _bin: ImageVector? = null
+
+@Preview
+@Composable
+private fun Preview() {
+ Box {
+ Image(
+ imageVector = AppIcons.Bin,
+ contentDescription = null,
+ modifier = Modifier.size(AppImages.previewSize),
+ )
+ }
+}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDead.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDead.kt
new file mode 100644
index 0000000000..66f50769c0
--- /dev/null
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDead.kt
@@ -0,0 +1,53 @@
+/*
+ * Infomaniak SwissTransfer - Android
+ * Copyright (C) 2024 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 .
+ */
+package com.infomaniak.swisstransfer.ui.images.illus.mascotDead
+
+import android.content.res.Configuration
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.tooling.preview.Preview
+import com.infomaniak.swisstransfer.ui.images.AppImages
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus
+import com.infomaniak.swisstransfer.ui.images.ThemedImage
+import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme
+
+val AppIllus.MascotDead: ThemedImage
+ get() = _mascotDead ?: object : ThemedImage {
+ override val light = AppIllus.MascotDeadLight
+ override val dark = AppIllus.MascotDeadDark
+ }.also { _mascotDead = it }
+
+private var _mascotDead: ThemedImage? = null
+
+@Preview(name = "Light")
+@Preview(name = "Dark", uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL)
+@Composable
+private fun Preview() {
+ SwissTransferTheme {
+ Box {
+ Image(
+ imageVector = AppIllus.MascotDead.image(),
+ contentDescription = null,
+ modifier = Modifier.size(AppImages.previewSize),
+ )
+ }
+ }
+}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadDark.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadDark.kt
new file mode 100644
index 0000000000..bf6bc5e9fb
--- /dev/null
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadDark.kt
@@ -0,0 +1,415 @@
+/*
+ * Infomaniak SwissTransfer - Android
+ * Copyright (C) 2024 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 .
+ */
+package com.infomaniak.swisstransfer.ui.images.illus.mascotDead
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.PathFillType.Companion.EvenOdd
+import androidx.compose.ui.graphics.PathFillType.Companion.NonZero
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.graphics.StrokeCap.Companion.Butt
+import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.vector.ImageVector.Builder
+import androidx.compose.ui.graphics.vector.path
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.infomaniak.swisstransfer.ui.images.AppImages
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus
+
+val AppIllus.MascotDeadDark: ImageVector
+ get() {
+
+ if (_mascotDeadDark != null) return _mascotDeadDark!!
+
+ _mascotDeadDark = Builder(
+ name = "MascotDeadDark",
+ defaultWidth = 185.0.dp,
+ defaultHeight = 160.0.dp,
+ viewportWidth = 185.0f,
+ viewportHeight = 160.0f,
+ ).apply {
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(0.0f, 145.66f)
+ arcToRelative(92.23f, 14.34f, 0.0f, true, false, 184.46f, 0.0f)
+ arcToRelative(92.23f, 14.34f, 0.0f, true, false, -184.46f, 0.0f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF2B383B)), stroke = SolidColor(Color(0xFFDCE4E5)),
+ strokeLineWidth = 0.5f, strokeLineCap = Butt, strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(56.09f, 52.92f)
+ curveTo(58.09f, 34.48f, 73.65f, 20.51f, 92.2f, 20.51f)
+ curveTo(110.75f, 20.51f, 126.32f, 34.48f, 128.31f, 52.92f)
+ lineTo(138.65f, 148.57f)
+ lineTo(127.5f, 133.27f)
+ curveTo(121.62f, 125.19f, 109.58f, 125.19f, 103.7f, 133.27f)
+ curveTo(98.02f, 141.07f, 86.38f, 141.07f, 80.7f, 133.27f)
+ curveTo(74.82f, 125.19f, 62.78f, 125.19f, 56.9f, 133.27f)
+ lineTo(45.75f, 148.57f)
+ lineTo(56.09f, 52.92f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF67DD95)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(92.2f, 78.23f)
+ moveToRelative(-2.79f, 0.0f)
+ arcToRelative(2.79f, 2.79f, 0.0f, true, true, 5.59f, 0.0f)
+ arcToRelative(2.79f, 2.79f, 0.0f, true, true, -5.59f, 0.0f)
+ }
+ path(
+ fill = SolidColor(Color(0xFF67DD95)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(58.59f, 12.98f)
+ curveTo(59.21f, 14.09f, 58.86f, 15.31f, 58.36f, 16.27f)
+ curveTo(57.89f, 17.14f, 57.75f, 17.49f, 58.11f, 18.14f)
+ lineTo(58.31f, 18.5f)
+ lineTo(57.23f, 19.11f)
+ lineTo(57.01f, 18.71f)
+ curveTo(56.46f, 17.73f, 56.69f, 17.03f, 57.32f, 15.87f)
+ curveTo(57.71f, 15.14f, 57.93f, 14.41f, 57.5f, 13.65f)
+ curveTo(57.09f, 12.91f, 56.17f, 12.8f, 55.27f, 13.3f)
+ curveTo(53.96f, 14.03f, 54.05f, 15.18f, 54.4f, 15.92f)
+ lineTo(53.34f, 16.51f)
+ curveTo(52.5f, 14.99f, 53.14f, 13.33f, 54.8f, 12.4f)
+ curveTo(56.12f, 11.66f, 57.8f, 11.56f, 58.59f, 12.98f)
+ close()
+ moveTo(58.51f, 21.64f)
+ lineTo(57.76f, 20.3f)
+ lineTo(59.1f, 19.55f)
+ lineTo(59.85f, 20.89f)
+ lineTo(58.51f, 21.64f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(118.84f, 1.61f)
+ curveTo(118.83f, 2.47f, 118.22f, 3.07f, 117.61f, 3.47f)
+ curveTo(117.04f, 3.83f, 116.85f, 3.99f, 116.84f, 4.49f)
+ lineTo(116.84f, 4.77f)
+ lineTo(116.0f, 4.77f)
+ lineTo(116.0f, 4.46f)
+ curveTo(116.0f, 3.7f, 116.38f, 3.37f, 117.13f, 2.89f)
+ curveTo(117.6f, 2.59f, 117.97f, 2.23f, 117.98f, 1.64f)
+ curveTo(117.98f, 1.07f, 117.47f, 0.7f, 116.78f, 0.7f)
+ curveTo(115.76f, 0.69f, 115.43f, 1.4f, 115.39f, 1.95f)
+ lineTo(114.57f, 1.95f)
+ curveTo(114.58f, 0.77f, 115.51f, 0.0f, 116.8f, 0.01f)
+ curveTo(117.82f, 0.01f, 118.84f, 0.51f, 118.84f, 1.61f)
+ close()
+ moveTo(115.91f, 6.69f)
+ lineTo(115.92f, 5.65f)
+ lineTo(116.96f, 5.65f)
+ lineTo(116.95f, 6.69f)
+ lineTo(115.91f, 6.69f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF67DD95)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(133.4f, 13.05f)
+ curveTo(132.85f, 14.58f, 131.39f, 15.27f, 130.04f, 15.59f)
+ curveTo(128.82f, 15.87f, 128.36f, 16.03f, 128.04f, 16.92f)
+ lineTo(127.86f, 17.42f)
+ lineTo(126.37f, 16.88f)
+ lineTo(126.56f, 16.33f)
+ curveTo(127.05f, 14.98f, 127.92f, 14.62f, 129.56f, 14.25f)
+ curveTo(130.59f, 14.02f, 131.48f, 13.61f, 131.85f, 12.57f)
+ curveTo(132.21f, 11.56f, 131.55f, 10.57f, 130.31f, 10.13f)
+ curveTo(128.51f, 9.48f, 127.48f, 10.53f, 127.07f, 11.49f)
+ lineTo(125.6f, 10.96f)
+ curveTo(126.37f, 8.88f, 128.5f, 8.1f, 130.78f, 8.92f)
+ curveTo(132.6f, 9.57f, 134.1f, 11.11f, 133.4f, 13.05f)
+ close()
+ moveTo(125.0f, 20.24f)
+ lineTo(125.66f, 18.39f)
+ lineTo(127.51f, 19.05f)
+ lineTo(126.85f, 20.9f)
+ lineTo(125.0f, 20.24f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF67DD95)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = EvenOdd
+ ) {
+ moveTo(75.37f, 57.74f)
+ lineTo(72.41f, 60.7f)
+ lineTo(76.36f, 64.65f)
+ lineTo(72.4f, 68.6f)
+ lineTo(75.37f, 71.57f)
+ lineTo(79.32f, 67.61f)
+ lineTo(83.27f, 71.57f)
+ lineTo(86.24f, 68.6f)
+ lineTo(82.28f, 64.65f)
+ lineTo(86.23f, 60.7f)
+ lineTo(83.27f, 57.74f)
+ lineTo(79.32f, 61.69f)
+ lineTo(75.37f, 57.74f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF67DD95)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = EvenOdd
+ ) {
+ moveTo(99.82f, 57.74f)
+ lineTo(96.85f, 60.7f)
+ lineTo(100.8f, 64.65f)
+ lineTo(96.85f, 68.6f)
+ lineTo(99.82f, 71.57f)
+ lineTo(103.77f, 67.61f)
+ lineTo(107.72f, 71.57f)
+ lineTo(110.68f, 68.6f)
+ lineTo(106.73f, 64.65f)
+ lineTo(110.68f, 60.7f)
+ lineTo(107.72f, 57.74f)
+ lineTo(103.77f, 61.69f)
+ lineTo(99.82f, 57.74f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF2B383B)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(135.73f, 97.57f)
+ lineTo(126.83f, 82.14f)
+ lineTo(115.33f, 88.78f)
+ lineTo(124.24f, 104.2f)
+ curveTo(126.07f, 107.38f, 130.13f, 108.46f, 133.3f, 106.63f)
+ curveTo(136.48f, 104.8f, 137.57f, 100.74f, 135.73f, 97.57f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0x00000000)), stroke = SolidColor(Color(0xFFDCE4E5)),
+ strokeLineWidth = 0.5f, strokeLineCap = Butt, strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(115.33f, 88.78f)
+ lineTo(124.24f, 104.2f)
+ curveTo(126.07f, 107.38f, 130.13f, 108.46f, 133.3f, 106.63f)
+ verticalLineTo(106.63f)
+ curveTo(136.48f, 104.8f, 137.57f, 100.74f, 135.73f, 97.57f)
+ lineTo(126.83f, 82.14f)
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(145.44f, 110.91f)
+ curveTo(144.46f, 110.91f, 143.55f, 110.56f, 142.85f, 109.86f)
+ curveTo(142.15f, 109.15f, 141.8f, 108.24f, 141.8f, 107.26f)
+ curveTo(141.8f, 106.28f, 142.15f, 105.37f, 142.85f, 104.66f)
+ lineTo(146.21f, 101.3f)
+ curveTo(146.85f, 100.67f, 147.76f, 100.25f, 148.67f, 100.25f)
+ curveTo(149.58f, 100.18f, 150.49f, 100.53f, 151.2f, 101.16f)
+ curveTo(151.9f, 101.79f, 152.39f, 102.63f, 152.46f, 103.54f)
+ curveTo(152.6f, 104.45f, 152.32f, 105.37f, 151.76f, 106.14f)
+ curveTo(151.62f, 106.35f, 151.26f, 106.42f, 151.05f, 106.28f)
+ curveTo(150.84f, 106.14f, 150.77f, 105.79f, 150.91f, 105.58f)
+ curveTo(151.34f, 105.01f, 151.48f, 104.38f, 151.4f, 103.75f)
+ curveTo(151.34f, 103.12f, 150.99f, 102.49f, 150.49f, 102.07f)
+ curveTo(150.0f, 101.44f, 149.37f, 101.23f, 148.74f, 101.23f)
+ curveTo(148.04f, 101.3f, 147.41f, 101.58f, 146.99f, 102.0f)
+ lineTo(143.62f, 105.37f)
+ curveTo(143.13f, 105.86f, 142.85f, 106.56f, 142.85f, 107.26f)
+ curveTo(142.85f, 107.96f, 143.13f, 108.59f, 143.62f, 109.15f)
+ curveTo(144.6f, 110.14f, 146.35f, 110.14f, 147.34f, 109.15f)
+ lineTo(147.97f, 108.45f)
+ curveTo(148.18f, 108.24f, 148.53f, 108.24f, 148.74f, 108.45f)
+ curveTo(148.95f, 108.66f, 148.95f, 109.01f, 148.74f, 109.22f)
+ lineTo(148.11f, 109.86f)
+ curveTo(147.41f, 110.56f, 146.49f, 110.91f, 145.44f, 110.91f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(151.62f, 108.45f)
+ curveTo(150.7f, 108.45f, 149.86f, 108.17f, 149.23f, 107.54f)
+ curveTo(148.53f, 106.91f, 148.11f, 106.07f, 147.97f, 105.15f)
+ curveTo(147.83f, 104.24f, 148.11f, 103.33f, 148.67f, 102.56f)
+ curveTo(148.81f, 102.35f, 149.16f, 102.28f, 149.37f, 102.42f)
+ curveTo(149.58f, 102.56f, 149.65f, 102.91f, 149.51f, 103.12f)
+ curveTo(149.09f, 103.68f, 148.95f, 104.31f, 149.02f, 104.94f)
+ curveTo(149.09f, 105.58f, 149.44f, 106.21f, 149.93f, 106.63f)
+ curveTo(150.42f, 107.05f, 151.05f, 107.26f, 151.76f, 107.26f)
+ curveTo(152.39f, 107.26f, 153.02f, 106.98f, 153.51f, 106.49f)
+ lineTo(156.88f, 103.12f)
+ curveTo(157.3f, 102.77f, 157.58f, 102.14f, 157.58f, 101.44f)
+ curveTo(157.58f, 100.74f, 157.3f, 100.11f, 156.81f, 99.54f)
+ curveTo(155.82f, 98.56f, 154.07f, 98.56f, 153.09f, 99.54f)
+ lineTo(152.53f, 100.11f)
+ curveTo(152.32f, 100.32f, 151.97f, 100.32f, 151.76f, 100.11f)
+ curveTo(151.55f, 99.89f, 151.62f, 99.54f, 151.83f, 99.33f)
+ lineTo(152.32f, 98.84f)
+ curveTo(153.02f, 98.14f, 153.93f, 97.79f, 154.91f, 97.79f)
+ curveTo(155.9f, 97.79f, 156.81f, 98.14f, 157.51f, 98.84f)
+ curveTo(158.21f, 99.54f, 158.56f, 100.46f, 158.56f, 101.44f)
+ curveTo(158.56f, 102.42f, 158.21f, 103.33f, 157.51f, 104.03f)
+ lineTo(154.14f, 107.4f)
+ curveTo(153.51f, 108.03f, 152.6f, 108.45f, 151.69f, 108.45f)
+ horizontalLineTo(151.62f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF2B383B)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(59.6f, 104.2f)
+ lineTo(68.5f, 88.78f)
+ lineTo(57.01f, 82.14f)
+ lineTo(48.1f, 97.57f)
+ curveTo(46.27f, 100.74f, 47.36f, 104.8f, 50.53f, 106.63f)
+ curveTo(53.71f, 108.46f, 57.76f, 107.38f, 59.6f, 104.2f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0x00000000)), stroke =
+ SolidColor(Color(0xFFDCE4E5)), strokeLineWidth = 0.5f, strokeLineCap =
+ Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f, pathFillType =
+ NonZero
+ ) {
+ moveTo(57.01f, 82.14f)
+ lineTo(48.1f, 97.57f)
+ curveTo(46.27f, 100.74f, 47.36f, 104.8f, 50.53f, 106.63f)
+ verticalLineTo(106.63f)
+ curveTo(53.71f, 108.46f, 57.76f, 107.38f, 59.6f, 104.2f)
+ lineTo(68.5f, 88.78f)
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = EvenOdd
+ ) {
+ moveTo(24.52f, 102.28f)
+ curveTo(24.52f, 100.34f, 26.09f, 98.76f, 28.03f, 98.76f)
+ curveTo(29.98f, 98.76f, 31.55f, 100.34f, 31.55f, 102.28f)
+ curveTo(31.55f, 104.22f, 29.98f, 105.79f, 28.03f, 105.79f)
+ curveTo(26.09f, 105.79f, 24.52f, 104.22f, 24.52f, 102.28f)
+ close()
+ moveTo(28.03f, 99.85f)
+ curveTo(26.69f, 99.85f, 25.6f, 100.93f, 25.6f, 102.28f)
+ curveTo(25.6f, 103.62f, 26.69f, 104.71f, 28.03f, 104.71f)
+ curveTo(29.38f, 104.71f, 30.47f, 103.62f, 30.47f, 102.28f)
+ curveTo(30.47f, 100.93f, 29.38f, 99.85f, 28.03f, 99.85f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(28.58f, 106.91f)
+ curveTo(27.76f, 106.81f, 26.94f, 106.94f, 26.19f, 107.29f)
+ curveTo(25.45f, 107.64f, 24.82f, 108.19f, 24.38f, 108.89f)
+ curveTo(24.04f, 109.43f, 23.82f, 110.03f, 23.74f, 110.66f)
+ horizontalLineTo(29.48f)
+ curveTo(29.78f, 110.66f, 30.02f, 110.9f, 30.02f, 111.2f)
+ curveTo(30.02f, 111.5f, 29.78f, 111.74f, 29.48f, 111.74f)
+ horizontalLineTo(23.17f)
+ curveTo(23.02f, 111.74f, 22.89f, 111.69f, 22.79f, 111.58f)
+ curveTo(22.68f, 111.48f, 22.63f, 111.35f, 22.63f, 111.2f)
+ curveTo(22.63f, 110.18f, 22.92f, 109.17f, 23.47f, 108.31f)
+ curveTo(24.02f, 107.44f, 24.8f, 106.75f, 25.73f, 106.31f)
+ curveTo(26.66f, 105.87f, 27.69f, 105.71f, 28.71f, 105.84f)
+ curveTo(29.73f, 105.97f, 30.69f, 106.38f, 31.48f, 107.04f)
+ curveTo(31.71f, 107.23f, 31.74f, 107.57f, 31.55f, 107.8f)
+ curveTo(31.36f, 108.03f, 31.02f, 108.06f, 30.79f, 107.87f)
+ curveTo(30.16f, 107.35f, 29.39f, 107.01f, 28.58f, 106.91f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(33.59f, 112.81f)
+ curveTo(33.29f, 113.15f, 32.85f, 113.36f, 32.36f, 113.36f)
+ curveTo(31.46f, 113.36f, 30.74f, 112.64f, 30.74f, 111.74f)
+ curveTo(30.74f, 110.85f, 31.46f, 110.12f, 32.36f, 110.12f)
+ curveTo(32.76f, 110.12f, 33.12f, 110.26f, 33.4f, 110.5f)
+ curveTo(33.42f, 110.48f, 33.44f, 110.46f, 33.47f, 110.45f)
+ lineTo(36.1f, 108.87f)
+ curveTo(36.13f, 108.85f, 36.15f, 108.84f, 36.18f, 108.83f)
+ curveTo(36.16f, 108.72f, 36.15f, 108.61f, 36.15f, 108.5f)
+ curveTo(36.15f, 107.6f, 36.87f, 106.88f, 37.77f, 106.88f)
+ curveTo(38.66f, 106.88f, 39.39f, 107.6f, 39.39f, 108.5f)
+ curveTo(39.39f, 109.39f, 38.66f, 110.12f, 37.77f, 110.12f)
+ curveTo(37.37f, 110.12f, 37.01f, 109.98f, 36.73f, 109.74f)
+ curveTo(36.71f, 109.76f, 36.68f, 109.78f, 36.66f, 109.79f)
+ lineTo(34.03f, 111.37f)
+ curveTo(34.0f, 111.39f, 33.98f, 111.4f, 33.95f, 111.41f)
+ curveTo(33.97f, 111.52f, 33.98f, 111.63f, 33.98f, 111.74f)
+ curveTo(33.98f, 111.77f, 33.98f, 111.79f, 33.98f, 111.82f)
+ curveTo(34.01f, 111.82f, 34.04f, 111.83f, 34.07f, 111.84f)
+ lineTo(36.46f, 112.8f)
+ curveTo(36.49f, 112.81f, 36.52f, 112.83f, 36.54f, 112.84f)
+ curveTo(36.84f, 112.5f, 37.28f, 112.28f, 37.77f, 112.28f)
+ curveTo(38.66f, 112.28f, 39.39f, 113.01f, 39.39f, 113.91f)
+ curveTo(39.39f, 114.8f, 38.66f, 115.53f, 37.77f, 115.53f)
+ curveTo(36.87f, 115.53f, 36.15f, 114.8f, 36.15f, 113.91f)
+ curveTo(36.15f, 113.88f, 36.15f, 113.86f, 36.15f, 113.83f)
+ curveTo(36.12f, 113.83f, 36.09f, 113.82f, 36.06f, 113.81f)
+ lineTo(33.67f, 112.85f)
+ curveTo(33.64f, 112.84f, 33.61f, 112.82f, 33.59f, 112.81f)
+ close()
+ }
+ }.build()
+
+ return _mascotDeadDark!!
+ }
+
+private var _mascotDeadDark: ImageVector? = null
+
+@Preview
+@Composable
+private fun Preview() {
+ Box {
+ Image(
+ imageVector = AppIllus.MascotDeadDark,
+ contentDescription = null,
+ modifier = Modifier.size(AppImages.previewSize),
+ )
+ }
+}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadLight.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadLight.kt
new file mode 100644
index 0000000000..bada20e2b2
--- /dev/null
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/images/illus/mascotDead/MascotDeadLight.kt
@@ -0,0 +1,415 @@
+/*
+ * Infomaniak SwissTransfer - Android
+ * Copyright (C) 2024 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 .
+ */
+package com.infomaniak.swisstransfer.ui.images.illus.mascotDead
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.size
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.PathFillType.Companion.EvenOdd
+import androidx.compose.ui.graphics.PathFillType.Companion.NonZero
+import androidx.compose.ui.graphics.SolidColor
+import androidx.compose.ui.graphics.StrokeCap.Companion.Butt
+import androidx.compose.ui.graphics.StrokeJoin.Companion.Miter
+import androidx.compose.ui.graphics.vector.ImageVector
+import androidx.compose.ui.graphics.vector.ImageVector.Builder
+import androidx.compose.ui.graphics.vector.path
+import androidx.compose.ui.tooling.preview.Preview
+import androidx.compose.ui.unit.dp
+import com.infomaniak.swisstransfer.ui.images.AppImages
+import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus
+
+val AppIllus.MascotDeadLight: ImageVector
+ get() {
+
+ if (_mascotDeadLight != null) return _mascotDeadLight!!
+
+ _mascotDeadLight = Builder(
+ name = "MascotDeadLight",
+ defaultWidth = 185.0.dp,
+ defaultHeight = 160.0.dp,
+ viewportWidth = 185.0f,
+ viewportHeight = 160.0f,
+ ).apply {
+ path(
+ fill = SolidColor(Color(0xFFE3F6DC)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(0.27f, 145.66f)
+ arcToRelative(92.23f, 14.34f, 0.0f, true, false, 184.46f, 0.0f)
+ arcToRelative(92.23f, 14.34f, 0.0f, true, false, -184.46f, 0.0f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = SolidColor(Color(0xFF014958)),
+ strokeLineWidth = 1.0f, strokeLineCap = Butt, strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(56.61f, 52.95f)
+ curveTo(58.59f, 34.64f, 74.05f, 20.76f, 92.47f, 20.76f)
+ curveTo(110.89f, 20.76f, 126.35f, 34.64f, 128.33f, 52.95f)
+ lineTo(138.57f, 147.67f)
+ lineTo(127.97f, 133.12f)
+ curveTo(122.0f, 124.91f, 109.75f, 124.91f, 103.77f, 133.12f)
+ curveTo(98.19f, 140.78f, 86.76f, 140.78f, 81.18f, 133.12f)
+ curveTo(75.2f, 124.91f, 62.95f, 124.91f, 56.97f, 133.12f)
+ lineTo(46.37f, 147.67f)
+ lineTo(56.61f, 52.95f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF3CB572)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(92.47f, 78.23f)
+ moveToRelative(-2.79f, 0.0f)
+ arcToRelative(2.79f, 2.79f, 0.0f, true, true, 5.59f, 0.0f)
+ arcToRelative(2.79f, 2.79f, 0.0f, true, true, -5.59f, 0.0f)
+ }
+ path(
+ fill = SolidColor(Color(0xFF3CB572)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(58.86f, 12.98f)
+ curveTo(59.48f, 14.09f, 59.13f, 15.31f, 58.62f, 16.27f)
+ curveTo(58.16f, 17.14f, 58.02f, 17.49f, 58.38f, 18.14f)
+ lineTo(58.58f, 18.5f)
+ lineTo(57.5f, 19.11f)
+ lineTo(57.28f, 18.71f)
+ curveTo(56.73f, 17.73f, 56.96f, 17.03f, 57.59f, 15.87f)
+ curveTo(57.98f, 15.14f, 58.2f, 14.41f, 57.77f, 13.65f)
+ curveTo(57.36f, 12.91f, 56.44f, 12.8f, 55.54f, 13.3f)
+ curveTo(54.23f, 14.03f, 54.32f, 15.18f, 54.67f, 15.92f)
+ lineTo(53.61f, 16.51f)
+ curveTo(52.77f, 14.99f, 53.41f, 13.33f, 55.07f, 12.4f)
+ curveTo(56.39f, 11.66f, 58.07f, 11.56f, 58.86f, 12.98f)
+ close()
+ moveTo(58.78f, 21.64f)
+ lineTo(58.03f, 20.3f)
+ lineTo(59.37f, 19.55f)
+ lineTo(60.12f, 20.89f)
+ lineTo(58.78f, 21.64f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(119.11f, 1.61f)
+ curveTo(119.1f, 2.47f, 118.5f, 3.07f, 117.88f, 3.47f)
+ curveTo(117.32f, 3.83f, 117.11f, 3.99f, 117.11f, 4.49f)
+ lineTo(117.11f, 4.77f)
+ lineTo(116.27f, 4.77f)
+ lineTo(116.27f, 4.46f)
+ curveTo(116.27f, 3.7f, 116.65f, 3.37f, 117.4f, 2.89f)
+ curveTo(117.87f, 2.59f, 118.24f, 2.23f, 118.25f, 1.64f)
+ curveTo(118.25f, 1.07f, 117.74f, 0.7f, 117.04f, 0.7f)
+ curveTo(116.03f, 0.69f, 115.7f, 1.4f, 115.67f, 1.95f)
+ lineTo(114.84f, 1.95f)
+ curveTo(114.85f, 0.77f, 115.78f, 0.0f, 117.07f, 0.01f)
+ curveTo(118.09f, 0.01f, 119.11f, 0.51f, 119.11f, 1.61f)
+ close()
+ moveTo(116.18f, 6.69f)
+ lineTo(116.19f, 5.65f)
+ lineTo(117.23f, 5.65f)
+ lineTo(117.22f, 6.69f)
+ lineTo(116.18f, 6.69f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF3CB572)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(133.67f, 13.05f)
+ curveTo(133.12f, 14.58f, 131.66f, 15.27f, 130.31f, 15.59f)
+ curveTo(129.08f, 15.87f, 128.63f, 16.03f, 128.31f, 16.92f)
+ lineTo(128.13f, 17.42f)
+ lineTo(126.64f, 16.88f)
+ lineTo(126.83f, 16.33f)
+ curveTo(127.32f, 14.98f, 128.19f, 14.62f, 129.83f, 14.25f)
+ curveTo(130.85f, 14.02f, 131.74f, 13.61f, 132.12f, 12.57f)
+ curveTo(132.48f, 11.56f, 131.82f, 10.57f, 130.58f, 10.13f)
+ curveTo(128.78f, 9.48f, 127.75f, 10.53f, 127.34f, 11.49f)
+ lineTo(125.87f, 10.96f)
+ curveTo(126.64f, 8.88f, 128.77f, 8.1f, 131.05f, 8.92f)
+ curveTo(132.87f, 9.57f, 134.37f, 11.11f, 133.67f, 13.05f)
+ close()
+ moveTo(125.27f, 20.24f)
+ lineTo(125.93f, 18.39f)
+ lineTo(127.78f, 19.05f)
+ lineTo(127.12f, 20.9f)
+ lineTo(125.27f, 20.24f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF3CB572)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = EvenOdd
+ ) {
+ moveTo(75.64f, 57.74f)
+ lineTo(72.67f, 60.7f)
+ lineTo(76.63f, 64.65f)
+ lineTo(72.67f, 68.6f)
+ lineTo(75.64f, 71.57f)
+ lineTo(79.59f, 67.61f)
+ lineTo(83.54f, 71.57f)
+ lineTo(86.5f, 68.6f)
+ lineTo(82.55f, 64.65f)
+ lineTo(86.5f, 60.7f)
+ lineTo(83.54f, 57.74f)
+ lineTo(79.59f, 61.69f)
+ lineTo(75.64f, 57.74f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF3CB572)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = EvenOdd
+ ) {
+ moveTo(100.08f, 57.74f)
+ lineTo(97.12f, 60.7f)
+ lineTo(101.07f, 64.65f)
+ lineTo(97.12f, 68.6f)
+ lineTo(100.08f, 71.57f)
+ lineTo(104.04f, 67.61f)
+ lineTo(107.99f, 71.57f)
+ lineTo(110.95f, 68.6f)
+ lineTo(107.0f, 64.65f)
+ lineTo(110.95f, 60.7f)
+ lineTo(107.99f, 57.74f)
+ lineTo(104.04f, 61.69f)
+ lineTo(100.08f, 57.74f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth = 0.0f,
+ strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f,
+ pathFillType = NonZero
+ ) {
+ moveTo(136.0f, 97.57f)
+ lineTo(127.1f, 82.14f)
+ lineTo(115.6f, 88.78f)
+ lineTo(124.51f, 104.2f)
+ curveTo(126.34f, 107.38f, 130.4f, 108.46f, 133.57f, 106.63f)
+ curveTo(136.75f, 104.8f, 137.83f, 100.74f, 136.0f, 97.57f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0x00000000)), stroke = SolidColor(Color(0xFF014958)),
+ strokeLineWidth = 1.0f, strokeLineCap = Butt, strokeLineJoin = Miter,
+ strokeLineMiter = 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(115.6f, 88.78f)
+ lineTo(124.51f, 104.2f)
+ curveTo(126.34f, 107.38f, 130.4f, 108.46f, 133.57f, 106.63f)
+ verticalLineTo(106.63f)
+ curveTo(136.75f, 104.8f, 137.83f, 100.74f, 136.0f, 97.57f)
+ lineTo(127.1f, 82.14f)
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(145.71f, 110.91f)
+ curveTo(144.73f, 110.91f, 143.82f, 110.56f, 143.12f, 109.86f)
+ curveTo(142.42f, 109.15f, 142.07f, 108.24f, 142.07f, 107.26f)
+ curveTo(142.07f, 106.28f, 142.42f, 105.37f, 143.12f, 104.67f)
+ lineTo(146.48f, 101.3f)
+ curveTo(147.12f, 100.67f, 148.03f, 100.25f, 148.94f, 100.25f)
+ curveTo(149.85f, 100.18f, 150.76f, 100.53f, 151.46f, 101.16f)
+ curveTo(152.17f, 101.79f, 152.66f, 102.63f, 152.73f, 103.54f)
+ curveTo(152.87f, 104.46f, 152.59f, 105.37f, 152.03f, 106.14f)
+ curveTo(151.88f, 106.35f, 151.54f, 106.42f, 151.32f, 106.28f)
+ curveTo(151.11f, 106.14f, 151.04f, 105.79f, 151.18f, 105.58f)
+ curveTo(151.6f, 105.02f, 151.74f, 104.38f, 151.68f, 103.75f)
+ curveTo(151.6f, 103.12f, 151.25f, 102.49f, 150.76f, 102.07f)
+ curveTo(150.27f, 101.44f, 149.64f, 101.23f, 149.01f, 101.23f)
+ curveTo(148.31f, 101.3f, 147.68f, 101.58f, 147.26f, 102.0f)
+ lineTo(143.89f, 105.37f)
+ curveTo(143.4f, 105.86f, 143.12f, 106.56f, 143.12f, 107.26f)
+ curveTo(143.12f, 107.96f, 143.4f, 108.59f, 143.89f, 109.15f)
+ curveTo(144.87f, 110.14f, 146.63f, 110.14f, 147.61f, 109.15f)
+ lineTo(148.24f, 108.45f)
+ curveTo(148.45f, 108.24f, 148.8f, 108.24f, 149.01f, 108.45f)
+ curveTo(149.22f, 108.66f, 149.22f, 109.01f, 149.01f, 109.22f)
+ lineTo(148.38f, 109.86f)
+ curveTo(147.68f, 110.56f, 146.76f, 110.91f, 145.71f, 110.91f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(151.88f, 108.45f)
+ curveTo(150.97f, 108.45f, 150.13f, 108.17f, 149.5f, 107.54f)
+ curveTo(148.8f, 106.91f, 148.38f, 106.07f, 148.24f, 105.16f)
+ curveTo(148.1f, 104.24f, 148.38f, 103.33f, 148.94f, 102.56f)
+ curveTo(149.08f, 102.35f, 149.43f, 102.28f, 149.64f, 102.42f)
+ curveTo(149.85f, 102.56f, 149.92f, 102.91f, 149.78f, 103.12f)
+ curveTo(149.36f, 103.68f, 149.22f, 104.31f, 149.29f, 104.95f)
+ curveTo(149.36f, 105.58f, 149.71f, 106.21f, 150.2f, 106.63f)
+ curveTo(150.69f, 107.05f, 151.32f, 107.26f, 152.03f, 107.26f)
+ curveTo(152.66f, 107.26f, 153.29f, 106.98f, 153.78f, 106.49f)
+ lineTo(157.15f, 103.12f)
+ curveTo(157.57f, 102.77f, 157.85f, 102.14f, 157.85f, 101.44f)
+ curveTo(157.85f, 100.74f, 157.57f, 100.11f, 157.08f, 99.54f)
+ curveTo(156.09f, 98.56f, 154.34f, 98.56f, 153.36f, 99.54f)
+ lineTo(152.8f, 100.11f)
+ curveTo(152.59f, 100.32f, 152.24f, 100.32f, 152.03f, 100.11f)
+ curveTo(151.82f, 99.9f, 151.88f, 99.54f, 152.1f, 99.33f)
+ lineTo(152.59f, 98.84f)
+ curveTo(153.29f, 98.14f, 154.2f, 97.79f, 155.18f, 97.79f)
+ curveTo(156.16f, 97.79f, 157.08f, 98.14f, 157.78f, 98.84f)
+ curveTo(158.48f, 99.54f, 158.83f, 100.46f, 158.83f, 101.44f)
+ curveTo(158.83f, 102.42f, 158.48f, 103.33f, 157.78f, 104.03f)
+ lineTo(154.41f, 107.4f)
+ curveTo(153.78f, 108.03f, 152.87f, 108.45f, 151.96f, 108.45f)
+ horizontalLineTo(151.88f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFFffffff)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(59.87f, 104.2f)
+ lineTo(68.77f, 88.78f)
+ lineTo(57.28f, 82.14f)
+ lineTo(48.37f, 97.57f)
+ curveTo(46.54f, 100.74f, 47.63f, 104.8f, 50.8f, 106.63f)
+ curveTo(53.98f, 108.46f, 58.03f, 107.38f, 59.87f, 104.2f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0x00000000)), stroke =
+ SolidColor(Color(0xFF014958)), strokeLineWidth = 1.0f, strokeLineCap =
+ Butt, strokeLineJoin = Miter, strokeLineMiter = 4.0f, pathFillType =
+ NonZero
+ ) {
+ moveTo(57.28f, 82.14f)
+ lineTo(48.37f, 97.57f)
+ curveTo(46.54f, 100.74f, 47.63f, 104.8f, 50.8f, 106.63f)
+ verticalLineTo(106.63f)
+ curveTo(53.98f, 108.46f, 58.03f, 107.38f, 59.87f, 104.2f)
+ lineTo(68.77f, 88.78f)
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = EvenOdd
+ ) {
+ moveTo(24.79f, 102.28f)
+ curveTo(24.79f, 100.34f, 26.36f, 98.76f, 28.3f, 98.76f)
+ curveTo(30.25f, 98.76f, 31.82f, 100.34f, 31.82f, 102.28f)
+ curveTo(31.82f, 104.22f, 30.25f, 105.79f, 28.3f, 105.79f)
+ curveTo(26.36f, 105.79f, 24.79f, 104.22f, 24.79f, 102.28f)
+ close()
+ moveTo(28.3f, 99.85f)
+ curveTo(26.96f, 99.85f, 25.87f, 100.93f, 25.87f, 102.28f)
+ curveTo(25.87f, 103.62f, 26.96f, 104.71f, 28.3f, 104.71f)
+ curveTo(29.65f, 104.71f, 30.74f, 103.62f, 30.74f, 102.28f)
+ curveTo(30.74f, 100.93f, 29.65f, 99.85f, 28.3f, 99.85f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(28.85f, 106.91f)
+ curveTo(28.03f, 106.81f, 27.2f, 106.94f, 26.46f, 107.29f)
+ curveTo(25.72f, 107.64f, 25.09f, 108.19f, 24.65f, 108.89f)
+ curveTo(24.31f, 109.42f, 24.09f, 110.03f, 24.01f, 110.66f)
+ horizontalLineTo(29.75f)
+ curveTo(30.05f, 110.66f, 30.29f, 110.9f, 30.29f, 111.2f)
+ curveTo(30.29f, 111.5f, 30.05f, 111.74f, 29.75f, 111.74f)
+ horizontalLineTo(23.44f)
+ curveTo(23.29f, 111.74f, 23.16f, 111.68f, 23.05f, 111.58f)
+ curveTo(22.95f, 111.48f, 22.9f, 111.35f, 22.9f, 111.2f)
+ curveTo(22.9f, 110.18f, 23.19f, 109.17f, 23.74f, 108.31f)
+ curveTo(24.29f, 107.44f, 25.07f, 106.75f, 26.0f, 106.31f)
+ curveTo(26.93f, 105.87f, 27.96f, 105.71f, 28.98f, 105.84f)
+ curveTo(30.0f, 105.97f, 30.96f, 106.38f, 31.75f, 107.04f)
+ curveTo(31.98f, 107.23f, 32.01f, 107.57f, 31.82f, 107.8f)
+ curveTo(31.63f, 108.03f, 31.29f, 108.06f, 31.06f, 107.87f)
+ curveTo(30.43f, 107.35f, 29.66f, 107.01f, 28.85f, 106.91f)
+ close()
+ }
+ path(
+ fill = SolidColor(Color(0xFF014958)), stroke = null, strokeLineWidth =
+ 0.0f, strokeLineCap = Butt, strokeLineJoin = Miter, strokeLineMiter =
+ 4.0f, pathFillType = NonZero
+ ) {
+ moveTo(33.85f, 112.81f)
+ curveTo(33.56f, 113.15f, 33.12f, 113.36f, 32.63f, 113.36f)
+ curveTo(31.73f, 113.36f, 31.01f, 112.64f, 31.01f, 111.74f)
+ curveTo(31.01f, 110.85f, 31.73f, 110.12f, 32.63f, 110.12f)
+ curveTo(33.03f, 110.12f, 33.39f, 110.26f, 33.67f, 110.5f)
+ curveTo(33.69f, 110.48f, 33.71f, 110.46f, 33.74f, 110.45f)
+ lineTo(36.37f, 108.87f)
+ curveTo(36.4f, 108.85f, 36.42f, 108.84f, 36.45f, 108.83f)
+ curveTo(36.43f, 108.72f, 36.42f, 108.61f, 36.42f, 108.5f)
+ curveTo(36.42f, 107.6f, 37.14f, 106.88f, 38.04f, 106.88f)
+ curveTo(38.93f, 106.88f, 39.66f, 107.6f, 39.66f, 108.5f)
+ curveTo(39.66f, 109.39f, 38.93f, 110.12f, 38.04f, 110.12f)
+ curveTo(37.64f, 110.12f, 37.28f, 109.98f, 37.0f, 109.74f)
+ curveTo(36.98f, 109.76f, 36.95f, 109.78f, 36.93f, 109.79f)
+ lineTo(34.3f, 111.37f)
+ curveTo(34.27f, 111.39f, 34.25f, 111.4f, 34.22f, 111.41f)
+ curveTo(34.24f, 111.52f, 34.25f, 111.63f, 34.25f, 111.74f)
+ curveTo(34.25f, 111.77f, 34.25f, 111.79f, 34.25f, 111.82f)
+ curveTo(34.28f, 111.82f, 34.31f, 111.83f, 34.34f, 111.84f)
+ lineTo(36.73f, 112.8f)
+ curveTo(36.76f, 112.81f, 36.79f, 112.83f, 36.81f, 112.84f)
+ curveTo(37.11f, 112.5f, 37.55f, 112.28f, 38.04f, 112.28f)
+ curveTo(38.93f, 112.28f, 39.66f, 113.01f, 39.66f, 113.9f)
+ curveTo(39.66f, 114.8f, 38.93f, 115.53f, 38.04f, 115.53f)
+ curveTo(37.14f, 115.53f, 36.42f, 114.8f, 36.42f, 113.9f)
+ curveTo(36.42f, 113.88f, 36.42f, 113.86f, 36.42f, 113.83f)
+ curveTo(36.39f, 113.82f, 36.36f, 113.82f, 36.33f, 113.81f)
+ lineTo(33.94f, 112.85f)
+ curveTo(33.91f, 112.83f, 33.88f, 112.82f, 33.85f, 112.81f)
+ close()
+ }
+ }.build()
+
+ return _mascotDeadLight!!
+ }
+
+private var _mascotDeadLight: ImageVector? = null
+
+@Preview
+@Composable
+private fun Preview() {
+ Box {
+ Image(
+ imageVector = AppIllus.MascotDeadLight,
+ contentDescription = null,
+ modifier = Modifier.size(AppImages.previewSize),
+ )
+ }
+}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt
index 01d095860a..894d22202e 100644
--- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt
@@ -20,17 +20,17 @@ package com.infomaniak.swisstransfer.ui.screen.main.received
import android.util.Log
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Surface
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.derivedStateOf
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.remember
+import androidx.compose.runtime.*
+import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Modifier
+import androidx.compose.ui.res.stringResource
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.infomaniak.multiplatform_swisstransfer.common.interfaces.ui.FileUi
import com.infomaniak.multiplatform_swisstransfer.common.interfaces.ui.TransferUi
import com.infomaniak.swisstransfer.R
import com.infomaniak.swisstransfer.ui.components.EmptyState
+import com.infomaniak.swisstransfer.ui.components.transfer.TransferExpiredBottomSheet
import com.infomaniak.swisstransfer.ui.components.transfer.TransferItemList
import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus
import com.infomaniak.swisstransfer.ui.images.illus.MascotSearching
@@ -57,6 +57,11 @@ fun ReceivedScreen(
@Composable
private fun ReceivedScreen(areTransfersEmpty: () -> Boolean) {
+
+ var isVisible: Boolean by rememberSaveable { mutableStateOf(false) }
+ var expirationDate: Date? by rememberSaveable { mutableStateOf(null) }
+ var downloadsLimit: Int? by rememberSaveable { mutableStateOf(null) }
+
BrandTopAppBarScaffold(
floatingActionButton = { ReceivedEmptyFab(areTransfersEmpty) },
) {
@@ -64,7 +69,7 @@ private fun ReceivedScreen(areTransfersEmpty: () -> Boolean) {
EmptyState(
icon = AppIllus.MascotSearching,
title = R.string.noTransferReceivedTitle,
- description = R.string.noTransferReceivedDescription,
+ description = stringResource(R.string.noTransferReceivedDescription),
)
} else {
@@ -159,15 +164,37 @@ private fun ReceivedScreen(areTransfersEmpty: () -> Boolean) {
modifier = Modifier.padding(Margin.Medium),
transfers = transfers,
onClick = { transfer ->
- if (transfer.expiresInDays < 0 || transfer.downloadLeft == 0) {
- Log.d("TODO", "Display expired transfer bottomSheet")
- // TODO
- } else {
- Log.d("TODO", "Display transfer details screen")
- // TODO
+ when {
+ transfer.expiresInDays < 0 -> {
+ isVisible = true
+ expirationDate = Date(transfer.expirationDateTimestamp)
+ }
+ transfer.downloadLeft == 0 -> {
+ isVisible = true
+ downloadsLimit = transfer.downloadLimit
+ }
+ else -> {
+ Log.d("TODO", "Display transfer details screen")
+ // TODO
+ }
}
}
)
+
+ TransferExpiredBottomSheet(
+ isVisible = { isVisible },
+ expirationDate = { expirationDate },
+ downloadsLimit = { downloadsLimit },
+ onDeleteTransferClicked = {
+ Log.d("TODO", "Delete expired Transfer")
+ // TODO
+ },
+ closeBottomSheet = {
+ isVisible = false
+ expirationDate = null
+ downloadsLimit = null
+ },
+ )
}
}
}
diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/importfiles/components/ImportedFilesCard.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/importfiles/components/ImportedFilesCard.kt
index f8782635d1..90cad2f2cb 100644
--- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/importfiles/components/ImportedFilesCard.kt
+++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/newtransfer/importfiles/components/ImportedFilesCard.kt
@@ -57,7 +57,7 @@ fun ImportedFilesCard(
val fileCount = importedFiles.count()
SwissTransferCard(modifier) {
- SharpRippleButton(onClick = { /*TODO*/ }) {
+ SharpRippleButton(onClick = { /* TODO */ }) {
Text(
text = pluralStringResource(R.plurals.filesCount, fileCount, fileCount),
modifier = Modifier.padding(start = Margin.Medium),
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index 68d559bc63..b98f603366 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -84,6 +84,10 @@
Link in die Zwischenablage kopiert
Es wurde keine Anwendung gefunden, die diese Aktion bearbeitet
+ Aus dem Verlauf löschen
+ Tut mir leid, diese Übertragung ist am %s abgelaufen. Du kannst die Dateien nicht mehr herunterladen oder ansehen.
+ Entschuldigung, diese Übertragung hat die Grenze der %d möglichen Downloads erreicht.
+ Diese Übertragung ist nicht mehr verfügbar
Senden
- %s übrig
diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml
index cd8b9b7e58..b39b4b5e76 100644
--- a/app/src/main/res/values-es/strings.xml
+++ b/app/src/main/res/values-es/strings.xml
@@ -84,6 +84,10 @@
Enlace copiado en el portapapeles
No se ha encontrado ninguna aplicación que gestione esta acción
+ Borrar del historial
+ Lo sentimos, esta transferencia expiró el %s. Ya no puede descargar ni ver los archivos.
+ Lo sentimos, esta transferencia ha alcanzado el límite de %d descargas posibles.
+ Esta transferencia ya no está disponible
Enviar
- Queda %s
diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml
index 7ef07c5cc8..6526228034 100644
--- a/app/src/main/res/values-fr/strings.xml
+++ b/app/src/main/res/values-fr/strings.xml
@@ -85,6 +85,10 @@
Lien copié dans le presse-papiers
Aucune application n’a été trouvée pour gérer cette action
+ Supprimer de l’historique
+ Désolé, ce transfert a expiré le %s. Tu ne peux plus télécharger ni consulter les fichiers.
+ Désolé, ce transfert a atteint la limite de %d téléchargements possibles.
+ Ce transfert n’est plus disponible
Envoyer
- %s restant
diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml
index e8c9caa6ca..d758b2fd8f 100644
--- a/app/src/main/res/values-it/strings.xml
+++ b/app/src/main/res/values-it/strings.xml
@@ -84,6 +84,10 @@
Link copiato negli appunti
Non è stata trovata alcuna applicazione in grado di gestire questa azione
+ Cancellare dalla cronologia
+ Spiacente, questo trasferimento è scaduto il %s. Non è più possibile scaricare o visualizzare i file.
+ Spiacente, questo trasferimento ha raggiunto il limite di %d download possibili.
+ Questo trasferimento non è più disponibile
Invia
- %s rimasto
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 30d3b4ace6..893e116535 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -89,6 +89,10 @@
Link copied to clipboard
No application has been found to handle this action
+ Delete from history
+ Sorry, this transfer expired on %s. You can no longer download or view the files.
+ Sorry, this transfer has reached the limit of %d possible downloads.
+ This transfer is no longer available
Send
- %s left