89 lines
3.0 KiB
Kotlin
Raw Normal View History

2023-02-11 23:41:23 -06:00
package com.isolaatti.profile.ui
import android.content.Context
import android.content.Intent
2023-02-11 23:41:23 -06:00
import android.os.Bundle
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
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()
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)
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)
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)
userId?.let { viewModel.getProfile(it) }
2023-07-15 20:58:57 -06:00
}
companion object {
const val EXTRA_USER_ID = "user_id"
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
}
}