Skip to content

Commit ac08ce7

Browse files
authored
Merge pull request #21466 from wordpress-mobile/issue/21465-remove-reader-feedback
Removed feedback link from reading preferences
2 parents 29cf463 + e5f5734 commit ac08ce7

File tree

8 files changed

+8
-181
lines changed

8 files changed

+8
-181
lines changed

WordPress/src/main/java/org/wordpress/android/ui/reader/ReaderReadingPreferencesDialogFragment.kt

-3
Original file line numberDiff line numberDiff line change
@@ -60,16 +60,13 @@ class ReaderReadingPreferencesDialogFragment : BottomSheetDialogFragment() {
6060
setContent {
6161
AppThemeM3 {
6262
val readerPreferences by viewModel.currentReadingPreferences.collectAsState()
63-
val isFeedbackEnabled by viewModel.isFeedbackEnabled.collectAsState()
6463
ReadingPreferencesScreen(
6564
currentReadingPreferences = readerPreferences,
6665
onCloseClick = viewModel::onExitActionClick,
67-
onSendFeedbackClick = viewModel::onSendFeedbackClick,
6866
onThemeClick = viewModel::onThemeClick,
6967
onFontFamilyClick = viewModel::onFontFamilyClick,
7068
onFontSizeClick = viewModel::onFontSizeClick,
7169
onBackgroundColorUpdate = { dialog?.window?.setWindowStatusBarColor(it) },
72-
isFeedbackEnabled = isFeedbackEnabled,
7370
)
7471
}
7572
}

WordPress/src/main/java/org/wordpress/android/ui/reader/tracker/ReaderReadingPreferencesTracker.kt

-4
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@ class ReaderReadingPreferencesTracker @Inject constructor(
1818
analyticsTrackerWrapper.track(AnalyticsTracker.Stat.READER_READING_PREFERENCES_CLOSED)
1919
}
2020

21-
fun trackFeedbackTapped() {
22-
analyticsTrackerWrapper.track(AnalyticsTracker.Stat.READER_READING_PREFERENCES_FEEDBACK_TAPPED)
23-
}
24-
2521
fun trackItemTapped(theme: ReaderReadingPreferences.Theme) {
2622
val props = mapOf(
2723
PROP_TYPE_KEY to PROP_TYPE_THEME,

WordPress/src/main/java/org/wordpress/android/ui/reader/viewmodels/ReaderReadingPreferencesViewModel.kt

-17
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import org.wordpress.android.ui.reader.models.ReaderReadingPreferences
1212
import org.wordpress.android.ui.reader.tracker.ReaderReadingPreferencesTracker
1313
import org.wordpress.android.ui.reader.usecases.ReaderGetReadingPreferencesSyncUseCase
1414
import org.wordpress.android.ui.reader.usecases.ReaderSaveReadingPreferencesUseCase
15-
import org.wordpress.android.util.config.ReaderReadingPreferencesFeedbackFeatureConfig
1615
import org.wordpress.android.viewmodel.ScopedViewModel
1716
import javax.inject.Inject
1817
import javax.inject.Named
@@ -21,23 +20,18 @@ import javax.inject.Named
2120
class ReaderReadingPreferencesViewModel @Inject constructor(
2221
getReadingPreferences: ReaderGetReadingPreferencesSyncUseCase,
2322
private val saveReadingPreferences: ReaderSaveReadingPreferencesUseCase,
24-
private val readingPreferencesFeedbackFeatureConfig: ReaderReadingPreferencesFeedbackFeatureConfig,
2523
private val readingPreferencesTracker: ReaderReadingPreferencesTracker,
2624
@Named(BG_THREAD) private val bgDispatcher: CoroutineDispatcher,
2725
) : ScopedViewModel(bgDispatcher) {
2826
private val originalReadingPreferences = getReadingPreferences()
2927
private val _currentReadingPreferences = MutableStateFlow(originalReadingPreferences)
3028
val currentReadingPreferences: StateFlow<ReaderReadingPreferences> = _currentReadingPreferences
3129

32-
private val _isFeedbackEnabled = MutableStateFlow(false)
33-
val isFeedbackEnabled: StateFlow<Boolean> = _isFeedbackEnabled
34-
3530
private val _actionEvents = MutableSharedFlow<ActionEvent>()
3631
val actionEvents: SharedFlow<ActionEvent> = _actionEvents
3732

3833
fun init() {
3934
launch {
40-
_isFeedbackEnabled.emit(readingPreferencesFeedbackFeatureConfig.isEnabled())
4135
_actionEvents.emit(ActionEvent.UpdateStatusBarColor(originalReadingPreferences.theme))
4236
}
4337
}
@@ -92,13 +86,6 @@ class ReaderReadingPreferencesViewModel @Inject constructor(
9286
}
9387
}
9488

95-
fun onSendFeedbackClick() {
96-
launch {
97-
readingPreferencesTracker.trackFeedbackTapped()
98-
_actionEvents.emit(ActionEvent.OpenWebView(FEEDBACK_URL))
99-
}
100-
}
101-
10289
private suspend fun saveReadingPreferencesInternal() {
10390
val currentPreferences = currentReadingPreferences.value
10491
if (isDirty()) {
@@ -115,8 +102,4 @@ class ReaderReadingPreferencesViewModel @Inject constructor(
115102
data class UpdateStatusBarColor(val theme: ReaderReadingPreferences.Theme) : ActionEvent
116103
data class OpenWebView(val url: String) : ActionEvent
117104
}
118-
119-
companion object {
120-
private const val FEEDBACK_URL = "https://automattic.survey.fm/reader-customization-survey"
121-
}
122105
}

WordPress/src/main/java/org/wordpress/android/ui/reader/views/compose/readingpreferences/ReadingPreferencesScreen.kt

+4-73
Original file line numberDiff line numberDiff line change
@@ -34,15 +34,9 @@ import androidx.compose.ui.platform.LocalContext
3434
import androidx.compose.ui.platform.LocalHapticFeedback
3535
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
3636
import androidx.compose.ui.res.stringResource
37-
import androidx.compose.ui.semantics.onClick
38-
import androidx.compose.ui.semantics.semantics
39-
import androidx.compose.ui.text.LinkAnnotation
40-
import androidx.compose.ui.text.SpanStyle
4137
import androidx.compose.ui.text.TextStyle
42-
import androidx.compose.ui.text.buildAnnotatedString
4338
import androidx.compose.ui.text.font.FontFamily
4439
import androidx.compose.ui.text.font.FontWeight
45-
import androidx.compose.ui.text.style.TextDecoration
4640
import androidx.compose.ui.tooling.preview.Preview
4741
import androidx.compose.ui.unit.sp
4842
import org.wordpress.android.R
@@ -63,19 +57,15 @@ private const val TEXT_LINE_HEIGHT_MULTIPLIER = 1.6f
6357
fun ReadingPreferencesScreen(
6458
currentReadingPreferences: ReaderReadingPreferences,
6559
onCloseClick: () -> Unit,
66-
onSendFeedbackClick: () -> Unit,
6760
onThemeClick: (ReaderReadingPreferences.Theme) -> Unit,
6861
onFontFamilyClick: (ReaderReadingPreferences.FontFamily) -> Unit,
6962
onFontSizeClick: (ReaderReadingPreferences.FontSize) -> Unit,
7063
onBackgroundColorUpdate: (Int) -> Unit,
71-
isFeedbackEnabled: Boolean,
72-
isHapticsFeedbackEnabled: Boolean = true,
7364
) {
7465
val themeValues = ReaderReadingPreferences.ThemeValues.from(LocalContext.current, currentReadingPreferences.theme)
7566
val backgroundColor by animateColorAsState(Color(themeValues.intBackgroundColor), label = "backgroundColor")
7667
val baseTextColor by animateColorAsState(Color(themeValues.intBaseTextColor), label = "baseTextColor")
7768
val textColor by animateColorAsState(Color(themeValues.intTextColor), label = "textColor")
78-
val linkColor by animateColorAsState(Color(themeValues.intLinkColor), label = "linkColor")
7969

8070
SideEffect {
8171
// update background color based on value animation and notify the parent
@@ -87,7 +77,7 @@ fun ReadingPreferencesScreen(
8777
val fontSize = currentReadingPreferences.fontSize.toSp()
8878
val fontSizeMultiplier = currentReadingPreferences.fontSize.multiplier
8979

90-
val haptics = LocalHapticFeedback.current.takeIf { isHapticsFeedbackEnabled }
80+
val haptics = LocalHapticFeedback.current
9181

9282
Column(
9383
modifier = Modifier
@@ -145,14 +135,6 @@ fun ReadingPreferencesScreen(
145135
style = contentStyle,
146136
)
147137

148-
if (isFeedbackEnabled) {
149-
ReadingPreferencesPreviewFeedback(
150-
onSendFeedbackClick = onSendFeedbackClick,
151-
textStyle = contentStyle,
152-
linkColor = linkColor,
153-
)
154-
}
155-
156138
// Tags
157139
FlowRow(
158140
modifier = Modifier.fillMaxWidth(),
@@ -195,7 +177,7 @@ fun ReadingPreferencesScreen(
195177
theme = theme,
196178
isSelected = theme == currentReadingPreferences.theme,
197179
onClick = {
198-
haptics?.performHapticFeedback(HapticFeedbackType.LongPress)
180+
haptics.performHapticFeedback(HapticFeedbackType.LongPress)
199181
onThemeClick(theme)
200182
},
201183
)
@@ -218,7 +200,7 @@ fun ReadingPreferencesScreen(
218200
fontFamily = fontFamily,
219201
isSelected = fontFamily == currentReadingPreferences.fontFamily,
220202
onClick = {
221-
haptics?.performHapticFeedback(HapticFeedbackType.LongPress)
203+
haptics.performHapticFeedback(HapticFeedbackType.LongPress)
222204
onFontFamilyClick(fontFamily)
223205
},
224206
)
@@ -235,7 +217,7 @@ fun ReadingPreferencesScreen(
235217
previewFontFamily = fontFamily,
236218
selectedFontSize = currentReadingPreferences.fontSize,
237219
onFontSizeSelected = {
238-
haptics?.performHapticFeedback(HapticFeedbackType.LongPress)
220+
haptics.performHapticFeedback(HapticFeedbackType.LongPress)
239221
onFontSizeClick(it)
240222
},
241223
)
@@ -260,55 +242,6 @@ private fun ExperimentalBadge(
260242
)
261243
}
262244

263-
@Composable
264-
private fun ReadingPreferencesPreviewFeedback(
265-
onSendFeedbackClick: () -> Unit,
266-
textStyle: TextStyle,
267-
linkColor: Color,
268-
) {
269-
val linkString = stringResource(R.string.reader_preferences_screen_preview_text_feedback_link)
270-
val feedbackString = stringResource(R.string.reader_preferences_screen_preview_text_feedback, linkString)
271-
val annotatedString = buildAnnotatedString {
272-
append(feedbackString)
273-
274-
val startIndex = feedbackString.indexOf(linkString)
275-
val endIndex = startIndex + linkString.length
276-
277-
addStyle(
278-
style = SpanStyle(
279-
color = linkColor,
280-
textDecoration = TextDecoration.Underline,
281-
),
282-
start = startIndex,
283-
end = endIndex,
284-
)
285-
286-
addLink(
287-
clickable = LinkAnnotation.Clickable(
288-
tag = "url",
289-
linkInteractionListener = {
290-
onSendFeedbackClick()
291-
}
292-
),
293-
start = startIndex,
294-
end = endIndex,
295-
)
296-
}
297-
298-
val buttonLabel = stringResource(R.string.reader_preferences_screen_preview_text_feedback_label)
299-
Text(
300-
text = annotatedString,
301-
style = textStyle,
302-
modifier = Modifier.semantics {
303-
onClick(
304-
label = buttonLabel,
305-
) {
306-
onSendFeedbackClick()
307-
true
308-
}
309-
},
310-
)
311-
}
312245

313246
private fun getTitleTextStyle(
314247
fontFamily: FontFamily,
@@ -335,11 +268,9 @@ private fun ReadingPreferencesScreenPreview() {
335268
ReadingPreferencesScreen(
336269
currentReadingPreferences = readingPreferences,
337270
onCloseClick = {},
338-
onSendFeedbackClick = {},
339271
onThemeClick = { readingPreferences = readingPreferences.copy(theme = it) },
340272
onFontFamilyClick = { readingPreferences = readingPreferences.copy(fontFamily = it) },
341273
onFontSizeClick = { readingPreferences = readingPreferences.copy(fontSize = it) },
342-
isFeedbackEnabled = true,
343274
onBackgroundColorUpdate = {},
344275
)
345276
}

WordPress/src/main/java/org/wordpress/android/util/config/ReaderReadingPreferencesFeedbackFeatureConfig.kt

-21
This file was deleted.

WordPress/src/test/java/org/wordpress/android/ui/reader/tracker/ReaderReadingPreferencesTrackerTest.kt

-7
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,6 @@ class ReaderReadingPreferencesTrackerTest {
4848
verify(analyticsTrackerWrapper).track(Stat.READER_READING_PREFERENCES_CLOSED)
4949
}
5050

51-
@Test
52-
fun `when trackFeedbackTapped is called, then track event`() {
53-
tracker.trackFeedbackTapped()
54-
55-
verify(analyticsTrackerWrapper).track(Stat.READER_READING_PREFERENCES_FEEDBACK_TAPPED)
56-
}
57-
5851
@Test
5952
fun `when trackItemTapped is called with theme, then track event`() {
6053
ReaderReadingPreferences.Theme.values().forEach { theme ->

WordPress/src/test/java/org/wordpress/android/ui/reader/viewmodels/ReaderReadingPreferencesViewModelTest.kt

+4-55
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import org.wordpress.android.ui.reader.tracker.ReaderReadingPreferencesTracker
2121
import org.wordpress.android.ui.reader.usecases.ReaderGetReadingPreferencesSyncUseCase
2222
import org.wordpress.android.ui.reader.usecases.ReaderSaveReadingPreferencesUseCase
2323
import org.wordpress.android.ui.reader.viewmodels.ReaderReadingPreferencesViewModel.ActionEvent
24-
import org.wordpress.android.util.config.ReaderReadingPreferencesFeedbackFeatureConfig
2524

2625
@ExperimentalCoroutinesApi
2726
class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
@@ -31,9 +30,6 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
3130
@Mock
3231
lateinit var saveReadingPreferences: ReaderSaveReadingPreferencesUseCase
3332

34-
@Mock
35-
lateinit var readingPreferencesFeedbackFeatureConfig: ReaderReadingPreferencesFeedbackFeatureConfig
36-
3733
@Mock
3834
lateinit var readingPreferencesTracker: ReaderReadingPreferencesTracker
3935

@@ -49,7 +45,6 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
4945
viewModel = ReaderReadingPreferencesViewModel(
5046
getReadingPreferences,
5147
saveReadingPreferences,
52-
readingPreferencesFeedbackFeatureConfig,
5348
readingPreferencesTracker,
5449
viewModelDispatcher,
5550
)
@@ -211,46 +206,10 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
211206
assertThat(updateEvent).isEqualTo(ActionEvent.UpdatePostDetails)
212207
}
213208

214-
@Test
215-
fun `when onSendFeedbackClick is called then it emits OpenWebView action event`() = test {
216-
// When
217-
viewModel.onSendFeedbackClick()
218-
219-
// Then
220-
val openWebViewEvent = collectedEvents.last() as ActionEvent.OpenWebView
221-
assertThat(openWebViewEvent.url).isEqualTo(EXPECTED_FEEDBACK_URL)
222-
}
223-
224-
@Test
225-
fun `when readerReadingPreferencesFeedbackFeatureConfig is true then isFeedbackEnabled emits true`() = test {
226-
// Given
227-
whenever(readingPreferencesFeedbackFeatureConfig.isEnabled()).thenReturn(true)
228-
229-
// When
230-
viewModel.init()
231-
232-
// Then
233-
val isFeedbackEnabled = viewModel.isFeedbackEnabled.first()
234-
assertThat(isFeedbackEnabled).isTrue()
235-
}
236-
237-
@Test
238-
fun `when readerReadingPreferencesFeedbackFeatureConfig is false then isFeedbackEnabled emits false`() = test {
239-
// Given
240-
whenever(readingPreferencesFeedbackFeatureConfig.isEnabled()).thenReturn(false)
241-
242-
// When
243-
viewModel.init()
244-
245-
// Then
246-
val isFeedbackEnabled = viewModel.isFeedbackEnabled.first()
247-
assertThat(isFeedbackEnabled).isFalse()
248-
}
249-
250209
// analytics tests
251210
@Test
252211
fun `when onScreenOpened is called then it should track the screen opened event`() = test {
253-
ReaderReadingPreferencesTracker.Source.values().forEach { source ->
212+
ReaderReadingPreferencesTracker.Source.entries.forEach { source ->
254213
// When
255214
viewModel.onScreenOpened(source)
256215

@@ -268,18 +227,9 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
268227
verify(readingPreferencesTracker).trackScreenClosed()
269228
}
270229

271-
@Test
272-
fun `when onSendFeedbackClick is called then it should track the feedback tapped event`() = test {
273-
// When
274-
viewModel.onSendFeedbackClick()
275-
276-
// Then
277-
verify(readingPreferencesTracker).trackFeedbackTapped()
278-
}
279-
280230
@Test
281231
fun `when onThemeClick is called then it should track the theme tapped event`() = test {
282-
ReaderReadingPreferences.Theme.values().forEach { theme ->
232+
ReaderReadingPreferences.Theme.entries.forEach { theme ->
283233
// When
284234
viewModel.onThemeClick(theme)
285235

@@ -290,7 +240,7 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
290240

291241
@Test
292242
fun `when onFontFamilyClick is called then it should track the font family tapped event`() = test {
293-
ReaderReadingPreferences.FontFamily.values().forEach { fontFamily ->
243+
ReaderReadingPreferences.FontFamily.entries.forEach { fontFamily ->
294244
// When
295245
viewModel.onFontFamilyClick(fontFamily)
296246

@@ -301,7 +251,7 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
301251

302252
@Test
303253
fun `when onFontSizeClick is called then it should track the font size tapped event`() = test {
304-
ReaderReadingPreferences.FontSize.values().forEach { fontSize ->
254+
ReaderReadingPreferences.FontSize.entries.forEach { fontSize ->
305255
// When
306256
viewModel.onFontSizeClick(fontSize)
307257

@@ -325,6 +275,5 @@ class ReaderReadingPreferencesViewModelTest : BaseUnitTest() {
325275

326276
companion object {
327277
private val DEFAULT_READING_PREFERENCES = ReaderReadingPreferences()
328-
private const val EXPECTED_FEEDBACK_URL = "https://automattic.survey.fm/reader-customization-survey"
329278
}
330279
}

0 commit comments

Comments
 (0)