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
|
2023-07-29 00:55:07 -06:00
|
|
|
import android.util.Log
|
2023-02-11 23:41:23 -06:00
|
|
|
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
|
2023-07-29 00:55:07 -06:00
|
|
|
import com.google.android.material.appbar.AppBarLayout
|
|
|
|
|
import com.google.android.material.appbar.AppBarLayout.OnOffsetChangedListener
|
2023-02-11 23:41:23 -06:00
|
|
|
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() {
|
|
|
|
|
|
|
|
|
|
lateinit var viewBinding: ActivityProfileBinding
|
2023-07-15 20:58:57 -06:00
|
|
|
private val viewModel: ProfileViewModel by viewModels()
|
2023-07-29 00:55:07 -06:00
|
|
|
private var userId: Int? = null
|
|
|
|
|
|
|
|
|
|
private var title = ""
|
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)
|
|
|
|
|
|
2023-07-29 00:55:07 -06:00
|
|
|
title = profile.name
|
2023-07-15 20:58:57 -06:00
|
|
|
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)
|
2023-07-29 00:55:07 -06:00
|
|
|
userId = intent.extras?.getInt(EXTRA_USER_ID)
|
|
|
|
|
var scrollRange = -1
|
|
|
|
|
var isShow = false
|
|
|
|
|
viewBinding.topAppBarLayout.addOnOffsetChangedListener(object: OnOffsetChangedListener {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onOffsetChanged(appBarLayout: AppBarLayout, verticalOffset: Int) {
|
|
|
|
|
if (scrollRange == -1) scrollRange = appBarLayout.totalScrollRange
|
|
|
|
|
if(scrollRange + verticalOffset == 0) {
|
|
|
|
|
viewBinding.collapsingToolbarLayout.title = title
|
|
|
|
|
isShow = true
|
|
|
|
|
} else if(isShow) {
|
|
|
|
|
viewBinding.collapsingToolbarLayout.title = " "
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
})
|
2023-02-11 23:41:23 -06:00
|
|
|
|
|
|
|
|
viewBinding.topAppBar.setNavigationOnClickListener {
|
2023-07-15 20:58:57 -06:00
|
|
|
finish()
|
2023-02-11 23:41:23 -06:00
|
|
|
}
|
|
|
|
|
|
2023-07-15 20:58:57 -06:00
|
|
|
|
|
|
|
|
viewModel.profile.observe(this, profileObserver)
|
2023-07-29 00:55:07 -06:00
|
|
|
|
|
|
|
|
userId?.let { viewModel.getProfile(it) }
|
|
|
|
|
|
2023-07-15 20:58:57 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
}
|
|
|
|
|
}
|