87 lines
2.8 KiB
Kotlin
Raw Normal View History

2023-02-11 23:41:23 -06:00
package com.isolaatti.profile.ui
import android.os.Bundle
import androidx.activity.addCallback
2023-07-15 20:58:57 -06:00
import androidx.activity.viewModels
2023-02-11 23:41:23 -06:00
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
2023-07-15 20:58:57 -06:00
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
2023-02-11 23:41:23 -06:00
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.adapter.FragmentViewHolder
import com.google.android.material.tabs.TabLayoutMediator
import com.isolaatti.R
import com.isolaatti.databinding.ActivityProfileBinding
2023-07-15 20:58:57 -06:00
import com.isolaatti.profile.data.remote.UserProfileDto
import com.isolaatti.profile.presentation.ProfileViewModel
import com.isolaatti.utils.UrlGen
2023-02-11 23:41:23 -06:00
import com.squareup.picasso.Picasso
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class ProfileActivity : AppCompatActivity() {
class ViewPagerAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
override fun getItemCount(): Int = 3
override fun createFragment(position: Int): Fragment {
return when(position) {
0 -> {
DiscussionsFragment()
}
1 -> {
AudiosFragment()
}
2 -> {
ImagesFragment()
}
else -> {Fragment()}
}
}
}
lateinit var viewBinding: ActivityProfileBinding
2023-07-15 20:58:57 -06:00
private val viewModel: ProfileViewModel by viewModels()
2023-02-11 23:41:23 -06:00
2023-07-15 20:58:57 -06:00
private val profileObserver = Observer<UserProfileDto> { profile ->
Picasso.get()
.load(UrlGen.userProfileImage(profile.id))
.into(viewBinding.profileImageView)
viewBinding.textViewUsername.text = profile.name
viewBinding.textViewDescription.text = profile.descriptionText
}
2023-02-11 23:41:23 -06:00
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
viewBinding = ActivityProfileBinding.inflate(layoutInflater)
setContentView(viewBinding.root)
viewBinding.profileViewPager2.adapter = ViewPagerAdapter(this)
viewBinding.topAppBar.setNavigationOnClickListener {
2023-07-15 20:58:57 -06:00
finish()
2023-02-11 23:41:23 -06:00
}
TabLayoutMediator(viewBinding.profileTabLayout, viewBinding.profileViewPager2) {tab, position ->
when(position) {
0 -> {
tab.text = getText(R.string.discussions)
}
1 -> {
tab.text = getText(R.string.audios)
}
2 -> {
tab.text = getText(R.string.images)
}
}
}.attach()
2023-07-15 20:58:57 -06:00
viewModel.profile.observe(this, profileObserver)
}
companion object {
const val EXTRA_USER_ID = "user_id"
2023-02-11 23:41:23 -06:00
}
}