130 lines
No EOL
4.8 KiB
Kotlin
130 lines
No EOL
4.8 KiB
Kotlin
package ani.dantotsu.profile
|
|
|
|
import android.content.Intent
|
|
import android.os.Bundle
|
|
import android.view.View
|
|
import android.view.ViewGroup.MarginLayoutParams
|
|
import android.widget.ImageButton
|
|
import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.core.view.updateLayoutParams
|
|
import androidx.lifecycle.lifecycleScope
|
|
import androidx.recyclerview.widget.GridLayoutManager
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
import ani.dantotsu.connections.anilist.Anilist
|
|
import ani.dantotsu.connections.anilist.api.User
|
|
import ani.dantotsu.databinding.ActivityFollowBinding
|
|
import ani.dantotsu.initActivity
|
|
import ani.dantotsu.navBarHeight
|
|
import ani.dantotsu.settings.saving.PrefManager
|
|
import ani.dantotsu.settings.saving.PrefName
|
|
import ani.dantotsu.statusBarHeight
|
|
import ani.dantotsu.themes.ThemeManager
|
|
import com.xwray.groupie.GroupieAdapter
|
|
import kotlinx.coroutines.Dispatchers
|
|
import kotlinx.coroutines.launch
|
|
import kotlinx.coroutines.withContext
|
|
|
|
|
|
class FollowActivity : AppCompatActivity(){
|
|
private lateinit var binding: ActivityFollowBinding
|
|
val adapter = GroupieAdapter()
|
|
var users: List<User>? = null
|
|
private lateinit var selected: ImageButton
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
ThemeManager(this).applyTheme()
|
|
initActivity(this)
|
|
binding = ActivityFollowBinding.inflate(layoutInflater)
|
|
binding.listToolbar.updateLayoutParams<MarginLayoutParams> { topMargin = statusBarHeight }
|
|
binding.listFrameLayout.updateLayoutParams<MarginLayoutParams> { bottomMargin = navBarHeight }
|
|
setContentView(binding.root)
|
|
val layoutType = PrefManager.getVal<Int>(PrefName.FollowerLayout)
|
|
selected = getSelected(layoutType)
|
|
binding.followerGrid.alpha = 0.33f
|
|
binding.followerList.alpha = 0.33f
|
|
selected(selected)
|
|
binding.listRecyclerView.layoutManager = LinearLayoutManager(
|
|
this,
|
|
LinearLayoutManager.VERTICAL,
|
|
false
|
|
)
|
|
binding.listRecyclerView.adapter = adapter
|
|
binding.listProgressBar.visibility = View.VISIBLE
|
|
binding.listBack.setOnClickListener { finish() }
|
|
|
|
val title = intent.getStringExtra("title")
|
|
val userID= intent.getIntExtra("userId", 0)
|
|
binding.listTitle.text = title
|
|
|
|
lifecycleScope.launch(Dispatchers.IO) {
|
|
val respond = when (title) {
|
|
"Following" -> Anilist.query.userFollowing(userID)?.data?.page?.following
|
|
"Followers" -> Anilist.query.userFollowers(userID)?.data?.page?.followers
|
|
else -> null
|
|
}
|
|
users = respond
|
|
withContext(Dispatchers.Main) {
|
|
fillList()
|
|
binding.listProgressBar.visibility = View.GONE
|
|
}
|
|
}
|
|
binding.followerList.setOnClickListener {
|
|
selected(it as ImageButton)
|
|
PrefManager.setVal(PrefName.FollowerLayout, 0)
|
|
fillList()
|
|
}
|
|
binding.followerGrid.setOnClickListener {
|
|
selected(it as ImageButton)
|
|
PrefManager.setVal(PrefName.FollowerLayout, 1)
|
|
fillList()
|
|
}
|
|
binding.followSwipeRefresh.setOnRefreshListener {
|
|
binding.followSwipeRefresh.isRefreshing = false
|
|
}
|
|
}
|
|
|
|
private fun fillList() {
|
|
adapter.clear()
|
|
binding.listRecyclerView.layoutManager = when (getLayoutType(selected)) {
|
|
0 -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
|
1 -> GridLayoutManager(this, 3, GridLayoutManager.VERTICAL, false)
|
|
else -> LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)
|
|
}
|
|
users?.forEach { user ->
|
|
if (getLayoutType(selected) == 0) {
|
|
adapter.add(FollowerItem(user.id, user.name ?: "Unknown", user.avatar?.medium, user.bannerImage ?: user.avatar?.medium ) { onUserClick(it) })
|
|
} else {
|
|
adapter.add(GridFollowerItem(user.id, user.name ?: "Unknown", user.avatar?.medium) { onUserClick(it) })
|
|
}
|
|
}
|
|
}
|
|
|
|
fun selected(it: ImageButton) {
|
|
selected.alpha = 0.33f
|
|
selected = it
|
|
selected.alpha = 1f
|
|
}
|
|
|
|
private fun getSelected(pos: Int): ImageButton {
|
|
return when (pos) {
|
|
0 -> binding.followerList
|
|
1 -> binding.followerGrid
|
|
else -> binding.followerList
|
|
}
|
|
}
|
|
|
|
private fun getLayoutType(it: ImageButton): Int {
|
|
return when (it) {
|
|
binding.followerList -> 0
|
|
binding.followerGrid -> 1
|
|
else -> 0
|
|
}
|
|
}
|
|
|
|
private fun onUserClick(id: Int) {
|
|
val intent = Intent(this, ProfileActivity::class.java)
|
|
intent.putExtra("userId", id)
|
|
startActivity(intent)
|
|
}
|
|
} |