Skip to content

Commit d228ec8

Browse files
Merge pull request #1610 from session-foundation/fix/string-keys
Fix/string keys
2 parents 36c46c1 + abcaafb commit d228ec8

File tree

22 files changed

+207
-265
lines changed

22 files changed

+207
-265
lines changed

app/src/main/java/org/session/libsession/utilities/StringSubKeys.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,9 @@ object StringSubstitutionConstants {
5151
const val APP_PRO_KEY: StringSubKey = "app_pro"
5252
const val PRO_KEY: StringSubKey = "pro"
5353
const val CURRENT_PLAN_KEY: StringSubKey = "current_plan"
54-
const val SELECTED_PLAN_KEY: StringSubKey = "selected_plan"
54+
const val CURRENT_PLAN_LENGTH_KEY: StringSubKey = "current_plan_length"
55+
const val SELECTED_PLAN_LENGTH_KEY: StringSubKey = "selected_plan_length"
56+
const val SELECTED_PLAN_LENGTH_SINGULAR_KEY: StringSubKey = "selected_plan_length_singular"
5557
const val PLATFORM_KEY: StringSubKey = "platform"
5658
const val PLATFORM_STORE_KEY: StringSubKey = "platform_store"
5759
const val PLATFORM_STORE2_KEY: StringSubKey = "platform_store_other"

app/src/main/java/org/session/libsession/utilities/TextSecurePreferences.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,8 @@ interface TextSecurePreferences {
216216

217217
fun getDebugSubscriptionType(): DebugMenuViewModel.DebugSubscriptionStatus?
218218
fun setDebugSubscriptionType(status: DebugMenuViewModel.DebugSubscriptionStatus?)
219+
fun getDebugProPlanStatus(): DebugMenuViewModel.DebugProPlanStatus?
220+
fun setDebugProPlanStatus(status: DebugMenuViewModel.DebugProPlanStatus?)
219221

220222
fun setSubscriptionProvider(provider: String)
221223
fun getSubscriptionProvider(): String?
@@ -377,6 +379,7 @@ interface TextSecurePreferences {
377379

378380
const val DEBUG_MESSAGE_FEATURES = "debug_message_features"
379381
const val DEBUG_SUBSCRIPTION_STATUS = "debug_subscription_status"
382+
const val DEBUG_PRO_PLAN_STATUS = "debug_pro_plan_status"
380383

381384
const val SUBSCRIPTION_PROVIDER = "session_subscription_provider"
382385

@@ -1766,6 +1769,17 @@ class AppTextSecurePreferences @Inject constructor(
17661769
_events.tryEmit(TextSecurePreferences.DEBUG_SUBSCRIPTION_STATUS)
17671770
}
17681771

1772+
override fun getDebugProPlanStatus(): DebugMenuViewModel.DebugProPlanStatus? {
1773+
return getStringPreference(TextSecurePreferences.DEBUG_PRO_PLAN_STATUS, null)?.let {
1774+
DebugMenuViewModel.DebugProPlanStatus.valueOf(it)
1775+
}
1776+
}
1777+
1778+
override fun setDebugProPlanStatus(status: DebugMenuViewModel.DebugProPlanStatus?) {
1779+
setStringPreference(TextSecurePreferences.DEBUG_PRO_PLAN_STATUS, status?.name)
1780+
_events.tryEmit(TextSecurePreferences.DEBUG_PRO_PLAN_STATUS)
1781+
}
1782+
17691783
override fun getSubscriptionProvider(): String? {
17701784
return getStringPreference(TextSecurePreferences.SUBSCRIPTION_PROVIDER, null)
17711785
}

app/src/main/java/org/thoughtcrime/securesms/debugmenu/DebugMenu.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,26 @@ fun DebugMenu(
277277
)
278278
}
279279
)
280+
281+
Spacer(modifier = Modifier.height(LocalDimensions.current.xsSpacing))
282+
Text(
283+
modifier = Modifier.padding(top = LocalDimensions.current.xxsSpacing),
284+
text = "Pro Data Status",
285+
style = LocalType.current.base
286+
)
287+
DropDown(
288+
modifier = Modifier.fillMaxWidth()
289+
.padding(top = LocalDimensions.current.xxsSpacing),
290+
selectedText = uiState.selectedDebugProPlanStatus.label,
291+
values = uiState.debugProPlanStatus.map { it.label },
292+
onValueSelected = { selection ->
293+
sendCommand(
294+
DebugMenuViewModel.Commands.SetDebugProPlanStatus(
295+
uiState.debugProPlanStatus.first { it.label == selection }
296+
)
297+
)
298+
}
299+
)
280300
}
281301
}
282302

@@ -750,6 +770,8 @@ fun PreviewDebugMenu() {
750770
dbInspectorState = DebugMenuViewModel.DatabaseInspectorState.STARTED,
751771
debugSubscriptionStatuses = setOf(DebugMenuViewModel.DebugSubscriptionStatus.AUTO_GOOGLE),
752772
selectedDebugSubscriptionStatus = DebugMenuViewModel.DebugSubscriptionStatus.AUTO_GOOGLE,
773+
debugProPlanStatus = setOf(DebugMenuViewModel.DebugProPlanStatus.NORMAL),
774+
selectedDebugProPlanStatus = DebugMenuViewModel.DebugProPlanStatus.NORMAL,
753775
debugProPlans = emptyList(),
754776
),
755777
sendCommand = {},

app/src/main/java/org/thoughtcrime/securesms/debugmenu/DebugMenuViewModel.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,12 @@ class DebugMenuViewModel @Inject constructor(
9393
DebugSubscriptionStatus.EXPIRED_APPLE,
9494
),
9595
selectedDebugSubscriptionStatus = textSecurePreferences.getDebugSubscriptionType() ?: DebugSubscriptionStatus.AUTO_GOOGLE,
96+
debugProPlanStatus = setOf(
97+
DebugProPlanStatus.NORMAL,
98+
DebugProPlanStatus.LOADING,
99+
DebugProPlanStatus.ERROR,
100+
),
101+
selectedDebugProPlanStatus = textSecurePreferences.getDebugProPlanStatus() ?: DebugProPlanStatus.NORMAL,
96102
debugProPlans = subscriptionManagers.asSequence()
97103
.flatMap { it.availablePlans.asSequence().map { plan -> DebugProPlan(it, plan) } }
98104
.toList(),
@@ -302,6 +308,13 @@ class DebugMenuViewModel @Inject constructor(
302308
}
303309
}
304310

311+
is Commands.SetDebugProPlanStatus -> {
312+
textSecurePreferences.setDebugProPlanStatus(command.status)
313+
_uiState.update {
314+
it.copy(selectedDebugProPlanStatus = command.status)
315+
}
316+
}
317+
305318
is Commands.PurchaseDebugPlan -> {
306319
command.plan.apply { manager.purchasePlan(plan) }
307320
}
@@ -410,6 +423,8 @@ class DebugMenuViewModel @Inject constructor(
410423
val dbInspectorState: DatabaseInspectorState,
411424
val debugSubscriptionStatuses: Set<DebugSubscriptionStatus>,
412425
val selectedDebugSubscriptionStatus: DebugSubscriptionStatus,
426+
val debugProPlanStatus: Set<DebugProPlanStatus>,
427+
val selectedDebugProPlanStatus: DebugProPlanStatus,
413428
val debugProPlans: List<DebugProPlan>,
414429
)
415430

@@ -428,6 +443,12 @@ class DebugMenuViewModel @Inject constructor(
428443
EXPIRED_APPLE("Expired (Apple)"),
429444
}
430445

446+
enum class DebugProPlanStatus(val label: String){
447+
NORMAL("Normal State"),
448+
LOADING("Always Loading"),
449+
ERROR("Always Erroring out"),
450+
}
451+
431452
sealed class Commands {
432453
object ChangeEnvironment : Commands()
433454
data class ShowEnvironmentWarningDialog(val environment: String) : Commands()
@@ -452,6 +473,7 @@ class DebugMenuViewModel @Inject constructor(
452473
data class GenerateContacts(val prefix: String, val count: Int): Commands()
453474
data object ToggleDatabaseInspector : Commands()
454475
data class SetDebugSubscriptionStatus(val status: DebugSubscriptionStatus) : Commands()
476+
data class SetDebugProPlanStatus(val status: DebugProPlanStatus) : Commands()
455477
data class PurchaseDebugPlan(val plan: DebugProPlan) : Commands()
456478
}
457479
}

app/src/main/java/org/thoughtcrime/securesms/home/HomeDialogs.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ fun HomeDialogs(
8686
CTAFeature.Icon(stringResource(R.string.proFeatureListLongerMessages)),
8787
CTAFeature.Icon(stringResource(R.string.proFeatureListPinnedConversations)),
8888
),
89-
positiveButtonText = stringResource(R.string.updatePlan),
89+
positiveButtonText = stringResource(R.string.update),
9090
negativeButtonText = stringResource(R.string.close),
9191
onUpgrade = {
9292
sendCommand(HomeViewModel.Commands.HideExpiringCTADialog)

app/src/main/java/org/thoughtcrime/securesms/preferences/prosettings/BaseProSettingsScreens.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.padding
1818
import androidx.compose.foundation.layout.size
1919
import androidx.compose.foundation.layout.systemBars
2020
import androidx.compose.foundation.layout.widthIn
21+
import androidx.compose.foundation.layout.windowInsetsBottomHeight
2122
import androidx.compose.foundation.rememberScrollState
2223
import androidx.compose.foundation.verticalScroll
2324
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -95,6 +96,9 @@ fun BaseProSettingsScreen(
9596
)
9697

9798
content()
99+
100+
Spacer(modifier = Modifier.height(LocalDimensions.current.spacing))
101+
Spacer(modifier = Modifier.windowInsetsBottomHeight(WindowInsets.systemBars))
98102
}
99103
}
100104
}

app/src/main/java/org/thoughtcrime/securesms/preferences/prosettings/CancelPlanNonOriginating.kt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ fun CancelPlanNonOriginating(
3636
onBack = onBack,
3737
headerTitle = Phrase.from(context.getText(R.string.proCancelSorry))
3838
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
39-
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
4039
.format().toString(),
4140
buttonText = Phrase.from(context.getText(R.string.openPlatformWebsite))
4241
.put(PLATFORM_KEY, subscriptionDetails.getPlatformDisplayName())
@@ -47,12 +46,8 @@ fun CancelPlanNonOriginating(
4746
},
4847
contentTitle = stringResource(R.string.proCancellation),
4948
contentDescription = Phrase.from(context.getText(R.string.proCancellationDescription))
50-
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
51-
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
5249
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
5350
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
54-
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
55-
.put(PLATFORM_ACCOUNT_KEY, subscriptionDetails.platformAccount)
5651
.put(PLATFORM_ACCOUNT_KEY, subscriptionDetails.platformAccount)
5752
.format(),
5853
linkCellsInfo = stringResource(R.string.proCancellationOptions),
@@ -66,6 +61,7 @@ fun CancelPlanNonOriginating(
6661
.put(DEVICE_TYPE_KEY, subscriptionDetails.device)
6762
.put(PLATFORM_ACCOUNT_KEY, subscriptionDetails.platformAccount)
6863
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
64+
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
6965
.format(),
7066
iconRes = R.drawable.ic_smartphone
7167
),

app/src/main/java/org/thoughtcrime/securesms/preferences/prosettings/CancelPlanScreen.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,6 @@ fun CancelPlan(
9797
},
9898
title = Phrase.from(context.getText(R.string.proCancelSorry))
9999
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
100-
.put(APP_PRO_KEY, NonTranslatableStringConstants.APP_PRO)
101100
.format().toString(),
102101
){
103102
Column {

app/src/main/java/org/thoughtcrime/securesms/preferences/prosettings/ProSettingsHomeScreen.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -518,15 +518,15 @@ fun ProSettings(
518518

519519
val (subtitle, subColor, icon) = when(subscriptionRefreshState){
520520
is State.Loading -> Triple<CharSequence, Color, @Composable BoxScope.() -> Unit>(
521-
Phrase.from(LocalContext.current, R.string.proPlanLoadingEllipsis)
521+
Phrase.from(LocalContext.current, R.string.proAccessLoadingEllipsis)
522522
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
523523
.format().toString(),
524524
LocalColors.current.text,
525525
{ SmallCircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) }
526526
)
527527

528528
is State.Error -> Triple<CharSequence, Color, @Composable BoxScope.() -> Unit>(
529-
Phrase.from(LocalContext.current, R.string.errorLoadingProPlan)
529+
Phrase.from(LocalContext.current, R.string.errorLoadingProAccess)
530530
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
531531
.format().toString(),
532532
LocalColors.current.warning, chevronIcon
@@ -539,7 +539,11 @@ fun ProSettings(
539539
}
540540

541541
ActionRowItem(
542-
title = annotatedStringResource(R.string.updatePlan),
542+
title = annotatedStringResource(
543+
Phrase.from(LocalContext.current, R.string.updateAccess)
544+
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
545+
.format().toString()
546+
),
543547
subtitle = annotatedStringResource(subtitle),
544548
subtitleColor = subColor,
545549
endContent = {
@@ -766,7 +770,11 @@ fun ProManage(
766770
when(data){
767771
is SubscriptionType.Active.AutoRenewing -> {
768772
IconActionRowItem(
769-
title = annotatedStringResource(R.string.cancelPlan),
773+
title = annotatedStringResource(
774+
Phrase.from(LocalContext.current, R.string.cancelAccess)
775+
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
776+
.format().toString()
777+
),
770778
titleColor = LocalColors.current.danger,
771779
icon = R.drawable.ic_circle_x_custom,
772780
iconColor = LocalColors.current.danger,
@@ -821,7 +829,7 @@ fun ProManage(
821829

822830
ActionRowItem(
823831
title = annotatedStringResource(
824-
Phrase.from(LocalContext.current, R.string.proPlanRenew)
832+
Phrase.from(LocalContext.current, R.string.proAccessRenew)
825833
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
826834
.format().toString()
827835
),
@@ -841,7 +849,7 @@ fun ProManage(
841849
Divider()
842850
IconActionRowItem(
843851
title = annotatedStringResource(
844-
Phrase.from(LocalContext.current, R.string.proPlanRecover)
852+
Phrase.from(LocalContext.current, R.string.proAccessRecover)
845853
.put(PRO_KEY, NonTranslatableStringConstants.PRO)
846854
.format().toString()
847855
),

0 commit comments

Comments
 (0)