Skip to content

Commit abcaafb

Browse files
committed
New debug drop down to force the pro status (normal, always loading, always erroring)
1 parent 8d219d9 commit abcaafb

File tree

4 files changed

+71
-4
lines changed

4 files changed

+71
-4
lines changed

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/pro/ProStatusManager.kt

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,20 @@ class ProStatusManager @Inject constructor(
4242
recipientRepository.observeSelf(),
4343
(TextSecurePreferences.events.filter { it == TextSecurePreferences.DEBUG_SUBSCRIPTION_STATUS } as Flow<*>)
4444
.onStart { emit(Unit) }
45-
.map { prefs.getDebugSubscriptionType() }
46-
){ selfRecipient, debugSubscription ->
45+
.map { prefs.getDebugSubscriptionType() },
46+
(TextSecurePreferences.events.filter { it == TextSecurePreferences.DEBUG_PRO_PLAN_STATUS } as Flow<*>)
47+
.onStart { emit(Unit) }
48+
.map { prefs.getDebugProPlanStatus() },
49+
){ selfRecipient, debugSubscription, debugProPlanStatus ->
4750
//todo PRO implement properly
4851

4952
val subscriptionState = debugSubscription ?: DebugMenuViewModel.DebugSubscriptionStatus.AUTO_GOOGLE
53+
val proStatus = when(debugProPlanStatus){
54+
DebugMenuViewModel.DebugProPlanStatus.LOADING -> State.Loading
55+
DebugMenuViewModel.DebugProPlanStatus.ERROR -> State.Error(Exception())
56+
else -> State.Success(Unit)
57+
}
58+
5059
SubscriptionState(
5160
type = when(subscriptionState){
5261
DebugMenuViewModel.DebugSubscriptionStatus.AUTO_GOOGLE -> SubscriptionType.Active.AutoRenewing(
@@ -136,8 +145,8 @@ class ProStatusManager @Inject constructor(
136145
)
137146
)
138147
},
139-
// SubscriptionType.NeverSubscribed,
140-
refreshState = State.Success(Unit),
148+
149+
refreshState = proStatus,
141150
)
142151

143152
}.stateIn(GlobalScope, SharingStarted.Eagerly,

0 commit comments

Comments
 (0)