@@ -8,6 +8,7 @@ import androidx.appcompat.app.AppCompatActivity
88import androidx.fragment.app.Fragment
99import androidx.fragment.app.FragmentActivity
1010import androidx.fragment.app.activityViewModels
11+ import androidx.recyclerview.widget.RecyclerView
1112import androidx.viewpager2.adapter.FragmentStateAdapter
1213import androidx.viewpager2.widget.MarginPageTransformer
1314import com.google.android.material.snackbar.Snackbar
@@ -40,6 +41,8 @@ import org.wordpress.android.ui.stats.refresh.lists.sections.insights.UpdateAler
4041import org.wordpress.android.ui.stats.refresh.lists.sections.insights.UpdateAlertDialogFragment.Companion.UPDATE_ALERT_DIALOG_TAG
4142import org.wordpress.android.ui.stats.refresh.utils.StatsSiteProvider.SiteUpdateResult
4243import org.wordpress.android.ui.utils.UiHelpers
44+ import org.wordpress.android.util.JetpackBrandingUtils
45+ import org.wordpress.android.util.JetpackBrandingUtils.Screen.STATS
4346import org.wordpress.android.util.WPSwipeToRefreshHelper
4447import org.wordpress.android.util.helpers.SwipeToRefreshHelper
4548import org.wordpress.android.viewmodel.observeEvent
@@ -51,12 +54,15 @@ private val statsSections = listOf(INSIGHTS, DAYS, WEEKS, MONTHS, YEARS)
5154@AndroidEntryPoint
5255class StatsFragment : Fragment (R .layout.stats_fragment), ScrollableViewInitializedListener {
5356 @Inject lateinit var uiHelpers: UiHelpers
57+ @Inject lateinit var jetpackBrandingUtils: JetpackBrandingUtils
5458 private val viewModel: StatsViewModel by activityViewModels()
5559 private lateinit var swipeToRefreshHelper: SwipeToRefreshHelper
5660 private lateinit var selectedTabListener: SelectedTabListener
5761
5862 private var restorePreviousSearch = false
5963
64+ private var binding: StatsFragmentBinding ? = null
65+
6066 override fun onCreate (savedInstanceState : Bundle ? ) {
6167 super .onCreate(savedInstanceState)
6268 setHasOptionsMenu(true )
@@ -67,6 +73,7 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
6773
6874 val nonNullActivity = requireActivity()
6975 with (StatsFragmentBinding .bind(view)) {
76+ binding = this
7077 with (nonNullActivity as AppCompatActivity ) {
7178 setSupportActionBar(toolbar)
7279 supportActionBar?.let {
@@ -75,7 +82,7 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
7582 }
7683 }
7784 initializeViewModels(nonNullActivity, savedInstanceState == null , savedInstanceState)
78- initializeViews(nonNullActivity )
85+ initializeViews()
7986 }
8087 }
8188
@@ -85,8 +92,8 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
8592 super .onSaveInstanceState(outState)
8693 }
8794
88- private fun StatsFragmentBinding.initializeViews (activity : FragmentActivity ) {
89- val adapter = StatsPagerAdapter (activity )
95+ private fun StatsFragmentBinding.initializeViews () {
96+ val adapter = StatsPagerAdapter (this @StatsFragment )
9097 statsPager.adapter = adapter
9198 statsPager.setPageTransformer(
9299 MarginPageTransformer (resources.getDimensionPixelSize(R .dimen.margin_extra_large))
@@ -253,18 +260,42 @@ class StatsFragment : Fragment(R.layout.stats_fragment), ScrollableViewInitializ
253260
254261 override fun onScrollableViewInitialized (containerId : Int ) {
255262 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+ }
256287 }
257288}
258289
259- class StatsPagerAdapter (val activity : FragmentActivity ) : FragmentStateAdapter(activity ) {
290+ class StatsPagerAdapter (private val parent : Fragment ) : FragmentStateAdapter(parent ) {
260291 override fun getItemCount (): Int = statsSections.size
261292
262293 override fun createFragment (position : Int ): Fragment {
263294 return StatsListFragment .newInstance(statsSections[position])
264295 }
265296
266297 fun getTabTitle (position : Int ): CharSequence {
267- return activity. getString(statsSections[position].titleRes)
298+ return parent.context?. getString(statsSections[position].titleRes).orEmpty( )
268299 }
269300}
270301
0 commit comments