Skip to content

Commit 353d144

Browse files
authored
Merge pull request #17025 from wordpress-mobile/Jetpack-focus-feature-specific-bottom-sheet-
Jetpack focus: fixes for bottom sheet
2 parents 3b0a4ae + 6480999 commit 353d144

12 files changed

Lines changed: 376 additions & 325 deletions

WordPress/src/main/java/org/wordpress/android/ui/mysite/jetpackbadge/JetpackPoweredAdapter.kt

Lines changed: 0 additions & 57 deletions
This file was deleted.

WordPress/src/main/java/org/wordpress/android/ui/mysite/jetpackbadge/JetpackPoweredBottomSheetFragment.kt

Lines changed: 41 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import android.view.View
77
import android.view.ViewGroup
88
import android.widget.FrameLayout
99
import androidx.fragment.app.viewModels
10-
import androidx.recyclerview.widget.LinearLayoutManager
1110
import com.google.android.material.bottomsheet.BottomSheetBehavior
1211
import com.google.android.material.bottomsheet.BottomSheetDialog
1312
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
1413
import dagger.hilt.android.AndroidEntryPoint
1514
import org.wordpress.android.R
1615
import org.wordpress.android.databinding.JetpackPoweredBottomSheetBinding
16+
import org.wordpress.android.databinding.JetpackPoweredExpandedBottomSheetBinding
1717
import org.wordpress.android.ui.ActivityLauncherWrapper
1818
import org.wordpress.android.ui.ActivityLauncherWrapper.Companion.JETPACK_PACKAGE_NAME
1919
import org.wordpress.android.ui.main.WPMainNavigationView.PageType
@@ -22,51 +22,63 @@ import org.wordpress.android.ui.main.WPMainNavigationView.PageType.NOTIFS
2222
import org.wordpress.android.ui.main.WPMainNavigationView.PageType.READER
2323
import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredDialogAction.DismissDialog
2424
import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredDialogAction.OpenPlayStore
25-
import org.wordpress.android.util.extensions.disableAnimation
2625
import org.wordpress.android.util.extensions.exhaustive
2726
import javax.inject.Inject
2827

2928
@AndroidEntryPoint
3029
class JetpackPoweredBottomSheetFragment : BottomSheetDialogFragment() {
31-
@Inject lateinit var adapter: JetpackPoweredAdapter
3230
@Inject lateinit var activityLauncherWrapper: ActivityLauncherWrapper
3331
private val viewModel: JetpackPoweredDialogViewModel by viewModels()
32+
private var fullScreen: Boolean = false
33+
34+
override fun onCreate(savedInstanceState: Bundle?) {
35+
super.onCreate(savedInstanceState)
36+
fullScreen = arguments?.getBoolean(KEY_FULL_SCREEN, false) ?: false
37+
}
3438

3539
override fun onCreateView(
3640
inflater: LayoutInflater,
3741
container: ViewGroup?,
3842
savedInstanceState: Bundle?
3943
): View? {
40-
return inflater.inflate(R.layout.jetpack_powered_bottom_sheet, container)
44+
val layout = if (fullScreen) {
45+
R.layout.jetpack_powered_expanded_bottom_sheet
46+
} else {
47+
R.layout.jetpack_powered_bottom_sheet
48+
}
49+
50+
return inflater.inflate(layout, container)
4151
}
4252

4353
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
4454
super.onViewCreated(view, savedInstanceState)
4555

46-
with(JetpackPoweredBottomSheetBinding.bind(view)) {
47-
initializeViews()
48-
setupObservers()
49-
}
50-
}
51-
52-
private fun JetpackPoweredBottomSheetBinding.initializeViews() {
53-
contentRecyclerView.layoutManager = LinearLayoutManager(requireActivity())
54-
contentRecyclerView.adapter = adapter
55-
contentRecyclerView.disableAnimation()
56-
57-
primaryButton.setOnClickListener { viewModel.openJetpackAppDownloadLink() }
58-
59-
val fullScreen = arguments?.getBoolean(KEY_FULL_SCREEN, false) ?: false
60-
6156
if (fullScreen) {
62-
secondaryButton.visibility = View.VISIBLE
63-
val pageType = arguments?.getSerializable(KEY_SITE_SCREEN) as? PageType ?: MY_SITE
64-
secondaryButton.text = when (pageType) {
65-
MY_SITE -> getString(R.string.wp_jetpack_continue_to_stats)
66-
READER -> getString(R.string.wp_jetpack_continue_to_reader)
67-
NOTIFS -> getString(R.string.wp_jetpack_continue_to_notifications)
57+
with(JetpackPoweredExpandedBottomSheetBinding.bind(view)) {
58+
when (arguments?.getSerializable(KEY_SITE_SCREEN) as? PageType ?: MY_SITE) {
59+
MY_SITE -> {
60+
title.text = getString(R.string.wp_jetpack_powered_stats_powered_by_jetpack)
61+
caption.text = getString(R.string.wp_jetpack_powered_stats_powered_by_jetpack_caption)
62+
secondaryButton.text = getString(R.string.wp_jetpack_continue_to_stats)
63+
}
64+
READER -> {
65+
title.text = getString(R.string.wp_jetpack_powered_reader_powered_by_jetpack)
66+
caption.text = getString(R.string.wp_jetpack_powered_reader_powered_by_jetpack_caption)
67+
secondaryButton.text = getString(R.string.wp_jetpack_continue_to_reader)
68+
}
69+
NOTIFS -> {
70+
title.text = getString(R.string.wp_jetpack_powered_notifications_powered_by_jetpack)
71+
caption.text = getString(R.string.wp_jetpack_powered_notifications_powered_by_jetpack_caption)
72+
secondaryButton.text = getString(R.string.wp_jetpack_continue_to_notifications)
73+
}
74+
}
75+
primaryButton.setOnClickListener { viewModel.openJetpackAppDownloadLink() }
76+
secondaryButton.setOnClickListener { viewModel.dismissBottomSheet() }
77+
}
78+
} else {
79+
with(JetpackPoweredBottomSheetBinding.bind(view)) {
80+
primaryButton.setOnClickListener { viewModel.openJetpackAppDownloadLink() }
6881
}
69-
secondaryButton.setOnClickListener { viewModel.dismissBottomSheet() }
7082
}
7183

7284
(dialog as? BottomSheetDialog)?.apply {
@@ -81,15 +93,11 @@ class JetpackPoweredBottomSheetFragment : BottomSheetDialogFragment() {
8193
expandBottomSheet(bottomSheetBehavior)
8294
}
8395
}
84-
}
85-
86-
private fun JetpackPoweredBottomSheetBinding.setupObservers() {
87-
viewModel.start()
8896

89-
viewModel.uiState.observe(this@JetpackPoweredBottomSheetFragment) { uiState ->
90-
adapter.submitList(uiState?.uiItems ?: listOf())
91-
}
97+
setupObservers()
98+
}
9299

100+
private fun setupObservers() {
93101
viewModel.action.observe(viewLifecycleOwner) { action ->
94102
when (action) {
95103
is OpenPlayStore -> {

WordPress/src/main/java/org/wordpress/android/ui/mysite/jetpackbadge/JetpackPoweredDialogViewModel.kt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,7 @@ import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import dagger.hilt.android.lifecycle.HiltViewModel
66
import kotlinx.coroutines.CoroutineDispatcher
7-
import org.wordpress.android.R
8-
import org.wordpress.android.R.string
97
import org.wordpress.android.modules.UI_THREAD
10-
import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredItem.Caption
11-
import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredItem.Illustration
12-
import org.wordpress.android.ui.mysite.jetpackbadge.JetpackPoweredItem.Title
13-
import org.wordpress.android.ui.utils.UiString.UiStringRes
148
import org.wordpress.android.util.JetpackBrandingUtils
159
import org.wordpress.android.viewmodel.ScopedViewModel
1610
import javax.inject.Inject
@@ -21,34 +15,16 @@ class JetpackPoweredDialogViewModel @Inject constructor(
2115
@Named(UI_THREAD) mainDispatcher: CoroutineDispatcher,
2216
private val jetpackBrandingUtils: JetpackBrandingUtils
2317
) : ScopedViewModel(mainDispatcher) {
24-
private val _uiState = MutableLiveData<UiState>()
25-
val uiState: LiveData<UiState> = _uiState
26-
2718
private val _action = MutableLiveData<JetpackPoweredDialogAction>()
2819
val action: LiveData<JetpackPoweredDialogAction> = _action
2920

30-
@Suppress("ForbiddenComment")
31-
fun start() {
32-
_uiState.value = UiState(
33-
listOf(
34-
Illustration(R.raw.wp2jp),
35-
Title(UiStringRes(string.wp_jetpack_powered_better_with_jetpack)),
36-
Caption(UiStringRes(string.wp_jetpack_powered_features))
37-
)
38-
)
39-
}
40-
41-
@Suppress("ForbiddenComment")
4221
fun openJetpackAppDownloadLink() {
4322
jetpackBrandingUtils.trackGetJetpackAppTapped()
4423
_action.value = JetpackPoweredDialogAction.OpenPlayStore
4524
}
4625

47-
@Suppress("ForbiddenComment")
4826
fun dismissBottomSheet() {
4927
jetpackBrandingUtils.trackDismissTapped()
5028
_action.value = JetpackPoweredDialogAction.DismissDialog
5129
}
52-
53-
data class UiState(val uiItems: List<JetpackPoweredItem>)
5430
}

WordPress/src/main/java/org/wordpress/android/ui/mysite/jetpackbadge/JetpackPoweredItem.kt

Lines changed: 0 additions & 19 deletions
This file was deleted.

WordPress/src/main/java/org/wordpress/android/ui/mysite/jetpackbadge/JetpackPoweredViewHolder.kt

Lines changed: 0 additions & 79 deletions
This file was deleted.

0 commit comments

Comments
 (0)