Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.resmana.githubuser
- import android.net.Uri
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.util.Log
- import android.view.View
- import android.widget.Toast
- import androidx.lifecycle.Observer
- import androidx.lifecycle.ViewModelProviders
- import com.bumptech.glide.Glide
- import com.bumptech.glide.request.RequestOptions
- import com.loopj.android.http.AsyncHttpClient
- import com.loopj.android.http.AsyncHttpResponseHandler
- import cz.msebera.android.httpclient.Header
- import com.resmana.githubuser.db.FavoriteHelper
- import com.resmana.githubuser.entity.Users
- import com.resmana.githubuser.viewmodel.FavoriteViewModel
- import kotlinx.android.synthetic.main.activity_detail.*
- import kotlinx.android.synthetic.main.item_user.*
- import org.json.JSONObject
- class DetailActivity : AppCompatActivity() {
- private var isFavorite = false
- private var position: Int = 0
- private lateinit var favoriteHelper: FavoriteHelper
- private lateinit var uriWithId: Uri
- private var users: Users? = null
- private lateinit var favorite: Users
- companion object {
- private val TAG = DetailActivity::class.java.simpleName
- const val EXTRA_STATE = "extra_state"
- const val EXTRA_USER = "extra_user"
- const val EXTRA_FAVORITE = "extra_favorite"
- const val EXTRA_POSITION = "extra_position"
- const val REQUEST_INTENT = 100
- const val REQUEST_ADD = 200
- const val REQUEST_DELETE = 300
- }
- private val viewModel by lazy{
- ViewModelProviders.of(this).get(FavoriteViewModel::class.java)
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_detail)
- title = "Detail User"
- setStatusFavorite(isFavorite)
- users = intent.getParcelableExtra(EXTRA_USER)
- if (users != null) {
- position = intent.getIntExtra(EXTRA_FAVORITE, 0)
- viewModel.getFavoriteById(position)
- getDetailUser(users!!.username)
- } else {
- users = Users()
- }
- if (isFavorite) {
- val observer = Observer {it : Users ->
- idGit.text = it.id.toString()
- Glide.with(this@DetailActivity).load(it.avatar)
- nameDetail.text = it.name
- tv_location.text = it.location
- tv_company.text = it.company
- users = it
- }
- viewModel.favorite.observe(this, observer)
- setStatusFavorite(true)
- } else {
- setStatusFavorite(false)
- }
- fab_favorite.setOnClickListener {
- isFavorite = !isFavorite
- val favorite = Users(
- null,
- idGit.text.toString(),
- users!!.avatar.toString(),
- userName.text.toString(),
- nameDetail.text.toString(),
- tv_location.text.toString(),
- tv_company.text.toString(),
- followersUsers.text.toString(),
- followingUsers.text.toString()
- )
- viewModel.insertFavorite(favorite)
- Toast.makeText(this, "Add Favorite User", Toast.LENGTH_SHORT).show()
- finish()
- setStatusFavorite(isFavorite)
- }
- val sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager)
- sectionsPagerAdapter.userName = users!!.username
- view_pager.adapter = sectionsPagerAdapter
- tabs.setupWithViewPager(view_pager)
- supportActionBar?.elevation = 0f
- }
- private fun setStatusFavorite(isFavorite: Boolean) {
- if (isFavorite) {
- fab_favorite.setImageResource(R.drawable.ic_favorite)
- } else {
- fab_favorite.setImageResource(R.drawable.ic_favorite_border)
- }
- }
- private fun getDetailUser(userGit:String?) {
- progressBarDetail.visibility = View.VISIBLE
- val url = "https://api.github.com/users/${userGit}"
- val client = AsyncHttpClient()
- client.addHeader("Authorization","token 66aee8cabb1e59a238deddb718f1a4e742defb20")
- client.addHeader("User-Agent", "request")
- client.get(url, object : AsyncHttpResponseHandler(){
- override fun onSuccess(statusCode: Int, headers: Array<Header>, responseBody: ByteArray){
- progressBarDetail.visibility = View.INVISIBLE
- val result = String(responseBody)
- Log.d(TAG, result)
- try{
- val responseObject = JSONObject(result)
- val id = responseObject.getInt("id")
- val avatarUser = responseObject.getString("avatar_url")
- val username = responseObject.getString("login")
- val name = responseObject.getString("name")
- val company = responseObject.getString("company")
- val locations = responseObject.getString("location")
- val followers = responseObject.getInt("followers")
- val following = responseObject.getInt("following")
- Glide.with(this@DetailActivity)
- .load(avatarUser)
- .apply(RequestOptions().override(55, 55))
- .into(avatar_img)
- idGit.text = id.toString()
- userName.text = username
- nameDetail.text = name
- tv_company.text = company
- tv_location.text = locations
- followersUsers.text = followers.toString()
- followingUsers.text = following.toString()
- } catch (e: Exception) {
- Log.d(TAG, e.message.toString())
- e.printStackTrace()
- }
- }
- override fun onFailure(statusCode: Int, headers: Array<Header>, responseBody: ByteArray,error: Throwable) {
- progressBarDetail.visibility = View.INVISIBLE
- val errorMessage = when(statusCode){
- 401 -> "$statusCode : Bad Request"
- 403 -> "$statusCode : Forbidden"
- 404 -> "$statusCode : Not Found"
- else -> "$statusCode : ${error.message}"
- }
- Toast.makeText(this@DetailActivity, errorMessage, Toast.LENGTH_SHORT).show()
- }
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment