From b256f02f14f0831495d9ca7f5f171bf49467f597 Mon Sep 17 00:00:00 2001 From: aayush262 Date: Sun, 26 May 2024 23:49:19 +0530 Subject: [PATCH] chore: optimized feed activity --- .../dantotsu/profile/activity/FeedActivity.kt | 68 ++++++++----------- .../notification/NotificationActivity.kt | 1 - .../notification/NotificationFragment.kt | 3 +- app/src/main/res/layout/fragment_feed.xml | 19 ++++-- .../res/layout/fragment_notifications.xml | 1 - 5 files changed, 44 insertions(+), 48 deletions(-) diff --git a/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt b/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt index 778bd37f..1b2079b4 100644 --- a/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/activity/FeedActivity.kt @@ -11,17 +11,20 @@ import androidx.fragment.app.Fragment import androidx.fragment.app.FragmentManager import androidx.lifecycle.Lifecycle import androidx.viewpager2.adapter.FragmentStateAdapter +import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.R import ani.dantotsu.databinding.ActivityFeedBinding +import ani.dantotsu.databinding.ActivityNotificationBinding import ani.dantotsu.initActivity import ani.dantotsu.navBarHeight import ani.dantotsu.statusBarHeight import ani.dantotsu.themes.ThemeManager import ani.dantotsu.profile.activity.ActivityFragment.Companion.ActivityType +import ani.dantotsu.profile.notification.NotificationActivity import nl.joery.animatedbottombar.AnimatedBottomBar class FeedActivity : AppCompatActivity() { - private lateinit var binding: ActivityFeedBinding + private lateinit var binding: ActivityNotificationBinding private var selected: Int = 0 lateinit var navBar: AnimatedBottomBar @@ -29,29 +32,27 @@ class FeedActivity : AppCompatActivity() { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() initActivity(this) - binding = ActivityFeedBinding.inflate(layoutInflater) + binding = ActivityNotificationBinding.inflate(layoutInflater) setContentView(binding.root) - navBar = binding.feedNavBar - val navBarMargin = if (resources.configuration.orientation == - Configuration.ORIENTATION_LANDSCAPE - ) 0 else navBarHeight - navBar.updateLayoutParams { bottomMargin = navBarMargin } - val personalTab = navBar.createTab(R.drawable.ic_round_person_24, "Following") - val globalTab = navBar.createTab(R.drawable.ic_globe_24, "Global") - navBar.addTab(personalTab) - navBar.addTab(globalTab) - binding.listTitle.text = getString(R.string.activities) - binding.feedViewPager.updateLayoutParams { - bottomMargin = navBarMargin - topMargin += statusBarHeight + binding.notificationTitle.text = getString(R.string.activities) + binding.notificationToolbar.updateLayoutParams { + topMargin = statusBarHeight } - binding.listToolbar.updateLayoutParams { topMargin += statusBarHeight } - val activityId = intent.getIntExtra("activityId", -1) - if (activityId != -1) { navBar.visibility = View.GONE } - binding.feedViewPager.adapter = - ViewPagerAdapter(supportFragmentManager, lifecycle, activityId) - binding.feedViewPager.setCurrentItem(selected, false) - binding.feedViewPager.isUserInputEnabled = false + navBar = binding.notificationNavBar + binding.root.updateLayoutParams { + bottomMargin = navBarHeight + } + val tabs = listOf( + Pair(R.drawable.ic_round_person_24, "Following"), + Pair(R.drawable.ic_globe_24, "Global"), + ) + tabs.forEach { (icon, title) -> navBar.addTab(navBar.createTab(icon, title)) } + binding.notificationBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() } + val getOne = intent.getIntExtra("activityId", -1) + if (getOne != -1) { navBar.visibility = View.GONE } + binding.notificationViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, getOne) + binding.notificationViewPager.setOffscreenPageLimit(4) + binding.notificationViewPager.setCurrentItem(selected, false) navBar.selectTabAt(selected) navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { override fun onTabSelected( @@ -61,24 +62,15 @@ class FeedActivity : AppCompatActivity() { newTab: AnimatedBottomBar.Tab ) { selected = newIndex - binding.feedViewPager.setCurrentItem(selected, true) + binding.notificationViewPager.setCurrentItem(selected, true) + } + }) + binding.notificationViewPager.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { + override fun onPageSelected(position: Int) { + super.onPageSelected(position) + navBar.selectTabAt(position) } }) - binding.listBack.setOnClickListener { - onBackPressedDispatcher.onBackPressed() - } - } - - override fun onConfigurationChanged(newConfig: Configuration) { - super.onConfigurationChanged(newConfig) - val margin = - if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 0 else navBarHeight - val params: ViewGroup.MarginLayoutParams = - binding.feedViewPager.layoutParams as ViewGroup.MarginLayoutParams - val paramsNav: ViewGroup.MarginLayoutParams = - navBar.layoutParams as ViewGroup.MarginLayoutParams - params.updateMargins(bottom = margin) - paramsNav.updateMargins(bottom = margin) } override fun onResume() { diff --git a/app/src/main/java/ani/dantotsu/profile/notification/NotificationActivity.kt b/app/src/main/java/ani/dantotsu/profile/notification/NotificationActivity.kt index e2b1b8fc..ea0de673 100644 --- a/app/src/main/java/ani/dantotsu/profile/notification/NotificationActivity.kt +++ b/app/src/main/java/ani/dantotsu/profile/notification/NotificationActivity.kt @@ -51,7 +51,6 @@ class NotificationActivity : AppCompatActivity() { binding.notificationViewPager.adapter = ViewPagerAdapter(supportFragmentManager, lifecycle, getOne) binding.notificationViewPager.setOffscreenPageLimit(4) binding.notificationViewPager.setCurrentItem(selected, false) - binding.notificationViewPager navBar.selectTabAt(selected) navBar.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener { override fun onTabSelected( diff --git a/app/src/main/java/ani/dantotsu/profile/notification/NotificationFragment.kt b/app/src/main/java/ani/dantotsu/profile/notification/NotificationFragment.kt index 5eefb695..1c6b827e 100644 --- a/app/src/main/java/ani/dantotsu/profile/notification/NotificationFragment.kt +++ b/app/src/main/java/ani/dantotsu/profile/notification/NotificationFragment.kt @@ -53,6 +53,7 @@ class NotificationFragment( binding.notificationRecyclerView.setBaseline(navbar) binding.notificationRecyclerView.adapter = adapter binding.notificationRecyclerView.layoutManager = LinearLayoutManager(context) + binding.notificationProgressBar.isVisible = true binding.notificationRefresh.updateLayoutParams { bottomMargin = navBarHeight } @@ -78,6 +79,7 @@ class NotificationFragment( super.onScrolled(recyclerView, dx, dy) if (shouldLoadMore()) { lifecycleScope.launch { + binding.notificationRefresh.isVisible = true getList() binding.notificationRefresh.isVisible = false } @@ -94,7 +96,6 @@ class NotificationFragment( NotificationType.USER -> getNotificationsFiltered { it.media == null } NotificationType.SUBSCRIPTION -> getSubscriptions() NotificationType.COMMENT -> getComments() - else -> listOf() } adapter.addAll(list.map { NotificationItem(it, ::onClick) }) } diff --git a/app/src/main/res/layout/fragment_feed.xml b/app/src/main/res/layout/fragment_feed.xml index a8aae5b7..e341d0a9 100644 --- a/app/src/main/res/layout/fragment_feed.xml +++ b/app/src/main/res/layout/fragment_feed.xml @@ -4,19 +4,25 @@ android:layout_height="match_parent" android:orientation="vertical"> - + android:layout_width="match_parent" + android:layout_height="match_parent" + android:gravity="center" + tools:visibility="gone"> + + + + -