Skip to content

Commit 4355cf9

Browse files
committed
Add donation request on complete
1 parent 3013112 commit 4355cf9

File tree

6 files changed

+89
-10
lines changed

6 files changed

+89
-10
lines changed

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/converter/strings/ConverterCompleteDialogStrings.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,18 @@ class ConverterCompleteDialogStrings(override val language: String): Strings(lan
1919
TITLE to "Conversão Concluída",
2020
START_TIME to "Horário de Início:",
2121
END_TIME to "Horário de Término:",
22-
DURATION_TIME to "Duração total:"
22+
DURATION_TIME to "Duração total:",
23+
DONATION_TEXT to "Este app é gratuito e feito com carinho. Ajude a mantê-lo vivo com uma pequena doação. Deus te abençoe!",
24+
DONATION to "Doação"
2325
)
2426

2527
override val en = mapOf(
2628
TITLE to "Conversion Completed",
2729
START_TIME to "Start time:",
2830
END_TIME to "End time:",
29-
DURATION_TIME to "Total duration:"
31+
DURATION_TIME to "Total duration:",
32+
DONATION_TEXT to "This app is free and made with love. Help keep it alive with a small donation. God bless you!",
33+
DONATION to "Donation"
3034
)
3135

3236
override val texts = mapOf(PT to pt, EN to en)
@@ -36,5 +40,7 @@ class ConverterCompleteDialogStrings(override val language: String): Strings(lan
3640
START_TIME,
3741
END_TIME,
3842
DURATION_TIME,
43+
DONATION_TEXT,
44+
DONATION
3945
}
4046
}

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/converter/ui/ConverterCompleteDialog.kt

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ import androidx.compose.foundation.layout.height
88
import androidx.compose.foundation.layout.width
99
import androidx.compose.material.icons.Icons
1010
import androidx.compose.material.icons.rounded.CheckCircle
11+
import androidx.compose.material.icons.rounded.VolunteerActivism
12+
import androidx.compose.material3.Icon
1113
import androidx.compose.material3.MaterialTheme
1214
import androidx.compose.material3.Text
1315
import androidx.compose.runtime.Composable
1416
import androidx.compose.runtime.CompositionLocalProvider
1517
import androidx.compose.ui.Alignment
1618
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.text.TextStyle
20+
import androidx.compose.ui.unit.sp
21+
import edneyosf.edconv.core.utils.PlatformUtils
1722
import edneyosf.edconv.features.common.CommonStrings.Keys.CONFIRMATION_BUTTON
1823
import edneyosf.edconv.features.common.commonStrings
1924
import edneyosf.edconv.features.converter.strings.ConverterCompleteDialogStrings.Keys.*
@@ -28,7 +33,13 @@ import edneyosf.edconv.ui.previews.PortugueseDarkPreview
2833
import edneyosf.edconv.ui.previews.PortugueseLightPreview
2934

3035
@Composable
31-
fun ConverterCompleteDialog(startTime: String, finishTime: String, duration: String, onFinish: () -> Unit) {
36+
fun ConverterCompleteDialog(
37+
startTime: String,
38+
finishTime: String,
39+
duration: String,
40+
donationUrl: String?,
41+
onFinish: () -> Unit
42+
) {
3243
CompositionLocalProvider(value = stringsComp provides converterCompleteDialogStrings) {
3344
SimpleDialog(
3445
title = strings[TITLE],
@@ -55,11 +66,27 @@ fun ConverterCompleteDialog(startTime: String, finishTime: String, duration: Str
5566
Spacer(modifier = Modifier.width(width = dimens.xxs))
5667
Text(text = duration, style = MaterialTheme.typography.titleMedium.copy(color = color))
5768
}
69+
Spacer(modifier = Modifier.height(height = dimens.xl))
70+
Row(verticalAlignment = Alignment.CenterVertically) {
71+
Icon(
72+
imageVector = Icons.Rounded.VolunteerActivism,
73+
contentDescription = null
74+
)
75+
Spacer(modifier = Modifier.width(width = dimens.xs))
76+
Text(
77+
text = strings[DONATION_TEXT],
78+
style = TextStyle(fontSize = 12.sp)
79+
)
80+
}
5881
}
5982
},
6083
icon = Icons.Rounded.CheckCircle,
6184
onConfirmation = onFinish,
62-
confirmationText = commonStrings[CONFIRMATION_BUTTON]
85+
confirmationText = commonStrings[CONFIRMATION_BUTTON],
86+
cancelText = if(donationUrl.isNullOrBlank()) null else strings[DONATION],
87+
onCancel = {
88+
donationUrl?.let { PlatformUtils.openLink(url = it) }
89+
}
6390
)
6491
}
6592
}
@@ -69,6 +96,7 @@ private fun DefaultPreview() = ConverterCompleteDialog(
6996
startTime = "123",
7097
finishTime = "123",
7198
duration = "123",
99+
donationUrl = "url",
72100
onFinish = {}
73101
)
74102

@@ -86,4 +114,4 @@ private fun PortugueseLight() = PortugueseLightPreview { DefaultPreview() }
86114

87115
@Preview
88116
@Composable
89-
private fun PortugueseDark() = PortugueseDarkPreview { DefaultPreview() }
117+
private fun PortugueseDark() = PortugueseDarkPreview { DefaultPreview() }

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/converter/ui/ConverterDialogs.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
package edneyosf.edconv.features.converter.ui
22

33
import androidx.compose.runtime.Composable
4+
import edneyosf.edconv.core.config.RemoteConfig
45
import edneyosf.edconv.features.converter.ConverterEvent
56
import edneyosf.edconv.features.converter.states.ConverterDialogState
67
import edneyosf.edconv.features.converter.states.ConverterState
78
import edneyosf.edconv.features.converter.states.ConverterStatusState
89
import edneyosf.edconv.features.converter.enums.ConverterFileExistsAction as FileExistsAction
910
import edneyosf.edconv.features.settings.ui.SettingsDialog
11+
import org.koin.compose.koinInject
1012

1113
@Composable
1214
fun ConverterState.Dialogs(event: ConverterEvent) {
15+
val remoteConfig = koinInject<RemoteConfig>()
16+
val donationUrl = remoteConfig.donationUrl
17+
1318
status.run {
1419
when (this) {
1520
is ConverterStatusState.Failure -> {
@@ -24,6 +29,7 @@ fun ConverterState.Dialogs(event: ConverterEvent) {
2429
startTime = startTime,
2530
finishTime = finishTime,
2631
duration = duration,
32+
donationUrl = donationUrl,
2733
onFinish = { event.setStatus(ConverterStatusState.Initial) }
2834
)
2935
}

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/metrics/strings/MetricsCompleteDialogStrings.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ class MetricsCompleteDialogStrings(override val language: String): Strings(langu
2222
DURATION_TIME to "Duração total:",
2323
VMAF_SCORE to "VMAF:",
2424
PSNR_SCORE to "PSNR:",
25-
SSIM_SCORE to "SSIM:"
25+
SSIM_SCORE to "SSIM:",
26+
DONATION_TEXT to "Este app é gratuito e feito com carinho. Ajude a mantê-lo vivo com uma pequena doação. Deus te abençoe!",
27+
DONATION to "Doação"
2628
)
2729

2830
override val en = mapOf(
@@ -32,7 +34,9 @@ class MetricsCompleteDialogStrings(override val language: String): Strings(langu
3234
DURATION_TIME to "Total duration:",
3335
VMAF_SCORE to "VMAF:",
3436
PSNR_SCORE to "PSNR:",
35-
SSIM_SCORE to "SSIM:"
37+
SSIM_SCORE to "SSIM:",
38+
DONATION_TEXT to "This app is free and made with love. Help keep it alive with a small donation. God bless you!",
39+
DONATION to "Donation"
3640
)
3741

3842
override val texts = mapOf(PT to pt, EN to en)
@@ -44,6 +48,8 @@ class MetricsCompleteDialogStrings(override val language: String): Strings(langu
4448
DURATION_TIME,
4549
VMAF_SCORE,
4650
PSNR_SCORE,
47-
SSIM_SCORE
51+
SSIM_SCORE,
52+
DONATION_TEXT,
53+
DONATION
4854
}
4955
}

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/metrics/ui/MetricsCompleteDialog.kt

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ import androidx.compose.foundation.layout.height
88
import androidx.compose.foundation.layout.width
99
import androidx.compose.material.icons.Icons
1010
import androidx.compose.material.icons.rounded.CheckCircle
11+
import androidx.compose.material.icons.rounded.VolunteerActivism
12+
import androidx.compose.material3.Icon
1113
import androidx.compose.material3.MaterialTheme
1214
import androidx.compose.material3.Text
1315
import androidx.compose.runtime.Composable
1416
import androidx.compose.runtime.CompositionLocalProvider
1517
import androidx.compose.ui.Alignment
1618
import androidx.compose.ui.Modifier
19+
import androidx.compose.ui.text.TextStyle
20+
import androidx.compose.ui.unit.sp
21+
import edneyosf.edconv.core.utils.PlatformUtils
1722
import edneyosf.edconv.features.common.CommonStrings.Keys.CONFIRMATION_BUTTON
1823
import edneyosf.edconv.features.common.commonStrings
1924
import edneyosf.edconv.features.metrics.strings.MetricsCompleteDialogStrings.Keys.*
@@ -29,7 +34,12 @@ import edneyosf.edconv.ui.previews.PortugueseLightPreview
2934

3035
@Composable
3136
fun MetricsCompleteDialog(
32-
vmafScore: String?, psnrScore: String?, ssimScore: String?, startTime: String, finishTime: String,
37+
vmafScore: String?,
38+
psnrScore: String?,
39+
ssimScore: String?,
40+
startTime: String,
41+
finishTime: String,
42+
donationUrl: String?,
3343
duration: String, onFinish: () -> Unit
3444
) {
3545
CompositionLocalProvider(value = stringsComp provides metricsCompleteDialogStrings) {
@@ -56,11 +66,27 @@ fun MetricsCompleteDialog(
5666
vmafScore?.let { Score(label = strings[VMAF_SCORE], value = it) }
5767
psnrScore?.let { Score(label = strings[PSNR_SCORE], value = it) }
5868
ssimScore?.let { Score(label = strings[SSIM_SCORE], value = it) }
69+
Spacer(modifier = Modifier.height(height = dimens.xl))
70+
Row(verticalAlignment = Alignment.CenterVertically) {
71+
Icon(
72+
imageVector = Icons.Rounded.VolunteerActivism,
73+
contentDescription = null
74+
)
75+
Spacer(modifier = Modifier.width(width = dimens.xs))
76+
Text(
77+
text = strings[DONATION_TEXT],
78+
style = TextStyle(fontSize = 12.sp)
79+
)
80+
}
5981
}
6082
},
6183
icon = Icons.Rounded.CheckCircle,
6284
onConfirmation = onFinish,
63-
confirmationText = commonStrings[CONFIRMATION_BUTTON]
85+
confirmationText = commonStrings[CONFIRMATION_BUTTON],
86+
cancelText = if(donationUrl.isNullOrBlank()) null else strings[DONATION],
87+
onCancel = {
88+
donationUrl?.let { PlatformUtils.openLink(url = it) }
89+
}
6490
)
6591
}
6692
}
@@ -90,6 +116,7 @@ private fun DefaultPreview() = MetricsCompleteDialog(
90116
startTime = "123",
91117
finishTime = "123",
92118
duration = "123",
119+
donationUrl = "url",
93120
onFinish = {}
94121
)
95122

composeApp/src/jvmMain/kotlin/edneyosf/edconv/features/metrics/ui/MetricsDialogs.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package edneyosf.edconv.features.metrics.ui
22

33
import androidx.compose.runtime.Composable
4+
import edneyosf.edconv.core.config.RemoteConfig
45
import edneyosf.edconv.features.metrics.MetricsEvent
56
import edneyosf.edconv.features.metrics.states.MetricsState
67
import edneyosf.edconv.features.metrics.states.MetricsStatusState.*
8+
import org.koin.compose.koinInject
79

810
@Composable
911
fun MetricsState.Dialogs(event: MetricsEvent) {
12+
val remoteConfig = koinInject<RemoteConfig>()
13+
val donationUrl = remoteConfig.donationUrl
14+
1015
status.run {
1116
when (this) {
1217
is Failure -> {
@@ -23,6 +28,7 @@ fun MetricsState.Dialogs(event: MetricsEvent) {
2328
startTime = startTime,
2429
finishTime = finishTime,
2530
duration = duration,
31+
donationUrl = donationUrl,
2632
onFinish = { event.setStatus(Initial) }
2733
)
2834
}

0 commit comments

Comments
 (0)