package ani.dantotsu.profile.activity import android.content.res.Configuration import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.core.view.updateLayoutParams import androidx.core.view.updateMargins 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: ActivityNotificationBinding private var selected: Int = 0 lateinit var navBar: AnimatedBottomBar override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() initActivity(this) binding = ActivityNotificationBinding.inflate(layoutInflater) setContentView(binding.root) binding.notificationTitle.text = getString(R.string.activities) binding.notificationToolbar.updateLayoutParams { topMargin = statusBarHeight } 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.isUserInputEnabled = false 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( lastIndex: Int, lastTab: AnimatedBottomBar.Tab?, newIndex: Int, newTab: AnimatedBottomBar.Tab ) { selected = newIndex binding.notificationViewPager.setCurrentItem(selected, false) } }) } override fun onResume() { super.onResume() navBar.selectTabAt(selected) } private class ViewPagerAdapter( fragmentManager: FragmentManager, lifecycle: Lifecycle, private val activityId: Int ) : FragmentStateAdapter(fragmentManager, lifecycle) { override fun getItemCount(): Int = if (activityId != -1) 1 else 2 override fun createFragment(position: Int): Fragment { return when (position) { 0 -> ActivityFragment.newInstance(if (activityId != -1) ActivityType.ONE else ActivityType.USER, activityId = activityId) else -> ActivityFragment.newInstance(ActivityType.GLOBAL) } } } }