2023-02-11 23:41:23 -06:00
|
|
|
package com.isolaatti.profile.ui
|
|
|
|
|
|
2023-07-28 21:36:38 -06:00
|
|
|
import android.content.Context
|
|
|
|
|
import android.content.Intent
|
2023-02-11 23:41:23 -06:00
|
|
|
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-07-28 21:36:38 -06:00
|
|
|
|
|
|
|
|
fun startActivity(context: Context, userId: Int) {
|
|
|
|
|
context.startActivity(Intent(context, ProfileActivity::class.java).apply {
|
|
|
|
|
putExtra(EXTRA_USER_ID, userId)
|
|
|
|
|
})
|
|
|
|
|
}
|
2023-02-11 23:41:23 -06:00
|
|
|
}
|
|
|
|
|
}
|