Skip to content

Commit

Permalink
Add real data to reader announcement card
Browse files Browse the repository at this point in the history
  • Loading branch information
RenanLukas committed May 17, 2024
1 parent 5c9f9bc commit b45ef93
Show file tree
Hide file tree
Showing 8 changed files with 51 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -187,11 +187,12 @@ class ReaderFragment : Fragment(R.layout.reader_fragment_layout), ScrollableView
readerAnnouncementCardComposeView.apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
val announcementCardState by viewModel.announcementCardState.observeAsState()
val state = announcementCardState ?: return@setContent

AppTheme {
ReaderAnnouncementCard(items = listOf())
val announcementCardUiState by viewModel.announcementCardState.observeAsState()
val state = announcementCardUiState ?: return@setContent
if (state.shouldShow) {
AppTheme {
ReaderAnnouncementCard(items = state.items)
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import org.wordpress.android.util.JetpackBrandingUtils
import org.wordpress.android.util.QuickStartUtils
import org.wordpress.android.util.SnackbarSequencer
import org.wordpress.android.util.UrlUtilsWrapper
import org.wordpress.android.util.config.ReaderAnnouncementCardFeatureConfig
import org.wordpress.android.util.config.ReaderTagsFeedFeatureConfig
import org.wordpress.android.util.distinct
import org.wordpress.android.viewmodel.Event
Expand Down Expand Up @@ -82,6 +83,7 @@ class ReaderViewModel @Inject constructor(
private val urlUtilsWrapper: UrlUtilsWrapper,
private val readerTagsFeedFeatureConfig: ReaderTagsFeedFeatureConfig,
// todo: annnmarie removed this private val getFollowedTagsUseCase: GetFollowedTagsUseCase
private val readerAnnouncementCardFeatureConfig: ReaderAnnouncementCardFeatureConfig,
) : ScopedViewModel(mainDispatcher) {
private var initialized: Boolean = false
private var wasPaused: Boolean = false
Expand All @@ -94,8 +96,8 @@ class ReaderViewModel @Inject constructor(
private val _topBarUiState = MutableLiveData<TopBarUiState>()
val topBarUiState: LiveData<TopBarUiState> = _topBarUiState.distinct()

private val _announcementCardState = MutableLiveData<ReaderAnnouncementCardItemData>()
val announcementCardState: LiveData<ReaderAnnouncementCardItemData> = _announcementCardState
private val _announcementCardState = MutableLiveData<AnnouncementCardUiState>()
val announcementCardState: LiveData<AnnouncementCardUiState> = _announcementCardState

private val _updateTags = MutableLiveData<Event<Unit>>()
val updateTags: LiveData<Event<Unit>> = _updateTags
Expand Down Expand Up @@ -129,6 +131,7 @@ class ReaderViewModel @Inject constructor(
if (initialized) return
loadTabs(savedInstanceState)
if (jetpackBrandingUtils.shouldShowJetpackPoweredBottomSheet()) showJetpackPoweredBottomSheet()
loadAnnouncementCard()
}

fun onSaveInstanceState(out: Bundle) {
Expand All @@ -142,6 +145,25 @@ class ReaderViewModel @Inject constructor(
// _showJetpackPoweredBottomSheet.value = Event(true)
}

private fun loadAnnouncementCard() {
_announcementCardState.value = AnnouncementCardUiState(
shouldShow = readerAnnouncementCardFeatureConfig.isEnabled() &&
appPrefsWrapper.shouldShowReaderAnnouncementCard(),
items = listOf(
ReaderAnnouncementCardItemData(
iconRes = R.drawable.ic_reader_tag,
titleRes = R.string.reader_announcement_card_tags_stream_title,
descriptionRes = R.string.reader_announcement_card_tags_stream_description,
),
ReaderAnnouncementCardItemData(
iconRes = R.drawable.ic_reader_preferences,
titleRes = R.string.reader_announcement_card_reading_preferences_title,
descriptionRes = R.string.reader_announcement_card_reading_preferences_description,
),
),
)
}

@JvmOverloads
fun loadTabs(savedInstanceState: Bundle? = null) {
launch {
Expand Down Expand Up @@ -567,6 +589,11 @@ class ReaderViewModel @Inject constructor(
val duration: Int = QUICK_START_PROMPT_DURATION
)

data class AnnouncementCardUiState(
val shouldShow: Boolean,
val items: List<ReaderAnnouncementCardItemData>,
)

companion object {
private const val QUICK_START_PROMPT_DURATION = 5000
private const val FILTER_UPDATE_DELAY = 50L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ private fun ReaderAnnouncementCardItem(data: ReaderAnnouncementCardItemData) {
modifier = Modifier.padding(
start = Margin.Large.value,
),
text = stringResource(data.titleRes),
text = stringResource(data.descriptionRes),
style = MaterialTheme.typography.footnote,
color = secondaryElementColor,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ class TagsAndCategoriesUseCase
}

private fun getIcon(type: String) =
if (type == "tag") R.drawable.ic_tag_white_24dp else R.drawable.ic_folder_white_24dp
if (type == "tag") R.drawable.ic_reader_tag else R.drawable.ic_folder_white_24dp

private fun onLinkClick() {
analyticsTracker.track(AnalyticsTracker.Stat.STATS_TAGS_AND_CATEGORIES_VIEW_MORE_TAPPED)
Expand Down
9 changes: 9 additions & 0 deletions WordPress/src/main/res/drawable/ic_reader_tag_24dp.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="24dp"
android:viewportWidth="25"
android:viewportHeight="24">
<path
android:pathData="M20.6,11.2L13.9,4.5C13.8,4.4 13.6,4.3 13.4,4.3H5.5C5.1,4.2 4.7,4.6 4.7,5V12.8C4.7,13 4.8,13.2 4.9,13.3L11.6,20C11.8,20.2 12.1,20.4 12.3,20.5C12.5,20.6 12.9,20.7 13.2,20.7C13.5,20.7 13.8,20.6 14.1,20.5C14.4,20.4 14.6,20.2 14.9,20L20.5,14.4C20.9,14 21.2,13.4 21.2,12.8C21.3,12.2 21,11.6 20.6,11.2ZM19.5,13.4L13.9,19C13.8,19.1 13.7,19.1 13.6,19.2C13.4,19.3 13.2,19.3 13,19.2C12.9,19.2 12.8,19.1 12.7,19L6.2,12.5V5.8H13L19.5,12.3C19.7,12.5 19.7,12.7 19.7,12.9C19.7,13 19.7,13.2 19.5,13.4ZM9.5,8C8.9,8 8.5,8.4 8.5,9C8.5,9.6 8.9,10 9.5,10C10.1,10 10.5,9.6 10.5,9C10.5,8.4 10.1,8 9.5,8Z"
android:fillColor="#ffffff"/>
</vector>
4 changes: 4 additions & 0 deletions WordPress/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -1710,6 +1710,10 @@
<string name="reader_filter_chip_tag_one">1 Tag</string>
<string name="reader_filter_chip_tag_other">%d Tags</string>
<string name="reader_announcement_card_title">New in Reader</string>
<string name="reader_announcement_card_tags_stream_title">Tags stream</string>
<string name="reader_announcement_card_tags_stream_description">Tap the dropdown at the top and select Tags to access streams from your followed tags.</string>
<string name="reader_announcement_card_reading_preferences_title">Reading Preferences</string>
<string name="reader_announcement_card_reading_preferences_description">Choose colors and fonts that suit you. When you’re reading a post tap the AA icon at the top of the screen.</string>

<string name="reader_preferences_screen_preview_title">Reading Preferences</string>
<string name="reader_preferences_screen_preview_tags" translatable="false">reading,colors,fonts</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -246,7 +246,7 @@ class TagsAndCategoriesUseCaseTest : BaseUnitTest() {
} else {
assertThat(item.barWidth).isNull()
}
assertThat(item.icon).isEqualTo(R.drawable.ic_tag_white_24dp)
assertThat(item.icon).isEqualTo(R.drawable.ic_reader_tag)
assertThat(item.contentDescription).isEqualTo(contentDescription)
}

Expand Down

0 comments on commit b45ef93

Please sign in to comment.