@@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
8
8
import androidx.fragment.app.Fragment
9
9
import androidx.fragment.app.FragmentActivity
10
10
import androidx.fragment.app.activityViewModels
11
+ import androidx.recyclerview.widget.RecyclerView
11
12
import androidx.viewpager2.adapter.FragmentStateAdapter
12
13
import androidx.viewpager2.widget.MarginPageTransformer
13
14
import com.google.android.material.snackbar.Snackbar
@@ -40,6 +41,8 @@ import org.wordpress.android.ui.stats.refresh.lists.sections.insights.UpdateAler
40
41
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.UpdateAlertDialogFragment.Companion.UPDATE_ALERT_DIALOG_TAG
41
42
import org.wordpress.android.ui.stats.refresh.utils.StatsSiteProvider.SiteUpdateResult
42
43
import org.wordpress.android.ui.utils.UiHelpers
44
+ import org.wordpress.android.util.JetpackBrandingUtils
45
+ import org.wordpress.android.util.JetpackBrandingUtils.Screen.STATS
43
46
import org.wordpress.android.util.WPSwipeToRefreshHelper
44
47
import org.wordpress.android.util.helpers.SwipeToRefreshHelper
45
48
import org.wordpress.android.viewmodel.observeEvent
@@ -51,12 +54,15 @@ private val statsSections = listOf(INSIGHTS, DAYS, WEEKS, MONTHS, YEARS)
51
54
@AndroidEntryPoint
52
55
class StatsFragment : Fragment (R .layout.stats_fragment), ScrollableViewInitializedListener {
53
56
@Inject lateinit var uiHelpers: UiHelpers
57
+ @Inject lateinit var jetpackBrandingUtils: JetpackBrandingUtils
54
58
private val viewModel: StatsViewModel by activityViewModels()
55
59
private lateinit var swipeToRefreshHelper: SwipeToRefreshHelper
56
60
private lateinit var selectedTabListener: SelectedTabListener
57
61
58
62
private var restorePreviousSearch = false
59
63
64
+ private var binding: StatsFragmentBinding ? = null
65
+
60
66
override fun onCreate (savedInstanceState : Bundle ? ) {
61
67
super .onCreate(savedInstanceState)
62
68
setHasOptionsMenu(true )
@@ -67,6 +73,7 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
67
73
68
74
val nonNullActivity = requireActivity()
69
75
with (StatsFragmentBinding .bind(view)) {
76
+ binding = this
70
77
with (nonNullActivity as AppCompatActivity ) {
71
78
setSupportActionBar(toolbar)
72
79
supportActionBar?.let {
@@ -75,7 +82,7 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
75
82
}
76
83
}
77
84
initializeViewModels(nonNullActivity, savedInstanceState == null , savedInstanceState)
78
- initializeViews(nonNullActivity )
85
+ initializeViews()
79
86
}
80
87
}
81
88
@@ -85,8 +92,8 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
85
92
super .onSaveInstanceState(outState)
86
93
}
87
94
88
- private fun StatsFragmentBinding.initializeViews (activity : FragmentActivity ) {
89
- val adapter = StatsPagerAdapter (activity )
95
+ private fun StatsFragmentBinding.initializeViews () {
96
+ val adapter = StatsPagerAdapter (this @StatsFragment )
90
97
statsPager.adapter = adapter
91
98
statsPager.setPageTransformer(
92
99
MarginPageTransformer (resources.getDimensionPixelSize(R .dimen.margin_extra_large))
@@ -253,18 +260,42 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
253
260
254
261
override fun onScrollableViewInitialized (containerId : Int ) {
255
262
StatsFragmentBinding .bind(requireView()).appBarLayout.liftOnScrollTargetViewId = containerId
263
+ initJetpackBanner(containerId)
264
+ }
265
+
266
+ private fun initJetpackBanner (scrollableContainerId : Int ) {
267
+ if (jetpackBrandingUtils.shouldShowJetpackBranding()) {
268
+ binding?.root?.post {
269
+ val jetpackBannerView = binding?.jetpackBanner?.root ? : return @post
270
+ val scrollableView = binding?.root?.findViewById<View >(scrollableContainerId) as ? RecyclerView
271
+ ? : return @post
272
+
273
+ jetpackBrandingUtils.showJetpackBannerIfScrolledToTop(jetpackBannerView, scrollableView)
274
+ activity?.window?.let { jetpackBrandingUtils.setNavigationBarColorForBanner(it) }
275
+ jetpackBrandingUtils.initJetpackBannerAnimation(jetpackBannerView, scrollableView)
276
+
277
+ if (jetpackBrandingUtils.shouldShowJetpackPoweredBottomSheet()) {
278
+ binding?.jetpackBanner?.root?.setOnClickListener {
279
+ jetpackBrandingUtils.trackBannerTapped(STATS )
280
+ JetpackPoweredBottomSheetFragment
281
+ .newInstance()
282
+ .show(childFragmentManager, JetpackPoweredBottomSheetFragment .TAG )
283
+ }
284
+ }
285
+ }
286
+ }
256
287
}
257
288
}
258
289
259
- class StatsPagerAdapter (val activity : FragmentActivity ) : FragmentStateAdapter(activity ) {
290
+ class StatsPagerAdapter (private val parent : Fragment ) : FragmentStateAdapter(parent ) {
260
291
override fun getItemCount (): Int = statsSections.size
261
292
262
293
override fun createFragment (position : Int ): Fragment {
263
294
return StatsListFragment .newInstance(statsSections[position])
264
295
}
265
296
266
297
fun getTabTitle (position : Int ): CharSequence {
267
- return activity. getString(statsSections[position].titleRes)
298
+ return parent.context?. getString(statsSections[position].titleRes).orEmpty( )
268
299
}
269
300
}
270
301
0 commit comments