Skip to content

Commit c43f911

Browse files
authored
CMM-736: Incorrect subscriber details open when tapping on subscribers
1 parent c9919fc commit c43f911

File tree

2 files changed

+28
-20
lines changed

2 files changed

+28
-20
lines changed

WordPress/src/main/java/org/wordpress/android/ui/subscribers/SubscribersActivity.kt

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -142,28 +142,23 @@ class SubscribersActivity : BaseAppCompatActivity() {
142142
}
143143

144144
composable(route = SubscriberScreen.Detail.name) {
145-
navController.previousBackStackEntry?.savedStateHandle?.let { handle ->
146-
val userId = handle.get<Long>(KEY_USER_ID)
147-
if (userId != null) {
148-
viewModel.getSubscriber(userId)?.let { subscriber ->
149-
titleState.value = subscriber.displayNameOrEmail()
150-
showAddSubscribersButtonState.value = false
151-
ShowSubscriberDetailScreen(
152-
subscriber = subscriber,
153-
navController = navController,
154-
modifier = Modifier.padding(contentPadding)
155-
)
156-
}
157-
}
145+
// Use the selected subscriber directly instead of looking it up by ID
146+
viewModel.getSelectedSubscriber()?.let { subscriber ->
147+
titleState.value = subscriber.displayNameOrEmail()
148+
showAddSubscribersButtonState.value = false
149+
ShowSubscriberDetailScreen(
150+
subscriber = subscriber,
151+
navController = navController,
152+
modifier = Modifier.padding(contentPadding)
153+
)
158154
}
159155
}
160156

161157
composable(route = SubscriberScreen.Plan.name) {
162158
navController.previousBackStackEntry?.savedStateHandle?.let { handle ->
163-
val userId = handle.get<Long>(KEY_USER_ID)
164159
val planIndex = handle.get<Int>(KEY_PLAN_INDEX)
165-
if (userId != null && planIndex != null) {
166-
viewModel.getSubscriber(userId)?.let { subscriber ->
160+
if (planIndex != null) {
161+
viewModel.getSelectedSubscriber()?.let { subscriber ->
167162
subscriber.plans?.let { plans ->
168163
if (planIndex in plans.indices) {
169164
titleState.value = plans[planIndex].title
@@ -213,6 +208,8 @@ class SubscribersActivity : BaseAppCompatActivity() {
213208
onItemClick = { item ->
214209
viewModel.onItemClick(item)
215210
(item.data as? Subscriber)?.let { subscriber ->
211+
// Store the entire subscriber object to avoid lookup issues
212+
viewModel.setSelectedSubscriber(subscriber)
216213
navController.currentBackStackEntry?.savedStateHandle?.set(
217214
key = KEY_USER_ID,
218215
value = subscriber.userId
@@ -249,10 +246,6 @@ class SubscribersActivity : BaseAppCompatActivity() {
249246
onUrlClick(url)
250247
},
251248
onPlanClick = { planIndex ->
252-
navController.currentBackStackEntry?.savedStateHandle?.set(
253-
key = KEY_USER_ID,
254-
value = subscriber.userId
255-
)
256249
// plans don't have a unique id, so we use the index to identify them
257250
navController.currentBackStackEntry?.savedStateHandle?.set(
258251
key = KEY_PLAN_INDEX,

WordPress/src/main/java/org/wordpress/android/ui/subscribers/SubscribersViewModel.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class SubscribersViewModel @Inject constructor(
5555
private val _subscriberStats = MutableStateFlow<IndividualSubscriberStats?>(null)
5656
val subscriberStats = _subscriberStats.asStateFlow()
5757

58+
private var selectedSubscriber: Subscriber? = null
5859
private var statsJob: Job? = null
5960

6061
override val emptyView = DataViewEmptyView(
@@ -214,6 +215,20 @@ class SubscribersViewModel @Inject constructor(
214215
return item?.data as? Subscriber
215216
}
216217

218+
/**
219+
* Sets the currently selected subscriber for detail view navigation
220+
*/
221+
fun setSelectedSubscriber(subscriber: Subscriber) {
222+
selectedSubscriber = subscriber
223+
}
224+
225+
/**
226+
* Returns the currently selected subscriber
227+
*/
228+
fun getSelectedSubscriber(): Subscriber? {
229+
return selectedSubscriber
230+
}
231+
217232
private suspend fun fetchSubscriberStats(subscriptionId: ULong): IndividualSubscriberStats? =
218233
withContext(ioDispatcher) {
219234
if (USE_DUMMY_DATA) {

0 commit comments

Comments
 (0)