Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.resmana.githubuser
- import android.content.ContentValues
- import android.database.ContentObserver
- import android.net.Uri
- import androidx.appcompat.app.AppCompatActivity
- import android.os.Bundle
- import android.os.Handler
- import android.os.HandlerThread
- import android.util.Log
- import android.view.View
- import android.widget.Toast
- import com.bumptech.glide.Glide
- import com.bumptech.glide.request.RequestOptions
- import com.loopj.android.http.AsyncHttpClient
- import com.loopj.android.http.AsyncHttpResponseHandler
- import com.resmana.githubuser.db.DatabaseContract
- import com.resmana.githubuser.db.DatabaseContract.favoriteColumns.Companion.CONTENT_URI
- import cz.msebera.android.httpclient.Header
- import com.resmana.githubuser.db.FavoriteHelper
- import com.resmana.githubuser.entity.UserFavorite
- import com.resmana.githubuser.helper.MappingHelper
- import kotlinx.android.synthetic.main.activity_detail.*
- import org.json.JSONObject
- class DetailActivity : AppCompatActivity() {
- private var isFavorite = false
- private var usersFavorite: UserFavorite? = null
- private var position: Int = 0
- private lateinit var favoriteHelper: FavoriteHelper
- private lateinit var uriWithId: Uri
- 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
- }
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_detail)
- title = "Detail User"
- val userGit = intent.getParcelableExtra(EXTRA_USER) as Users
- val user = userGit.username
- getDetailUser(user)
- usersFavorite = intent.getParcelableExtra(EXTRA_FAVORITE)
- if (usersFavorite != null) {
- position = intent.getIntExtra(EXTRA_POSITION, 0)
- isFavorite = true
- } else {
- usersFavorite = UserFavorite()
- }
- setStatusFavorite(isFavorite)
- if (isFavorite) {
- uriWithId = Uri.parse(CONTENT_URI.toString() + "/" + usersFavorite?.id)
- val cursor = contentResolver.query(uriWithId, null, null, null, null)
- if (cursor != null) {
- usersFavorite = MappingHelper.mapCursorToObject(cursor)
- cursor.close()
- }
- usersFavorite?.let {
- Glide.with(this@DetailActivity)
- .load(it.avatar)
- .apply(RequestOptions().override(55, 55))
- .into(avatar_img)
- }
- usersFavorite?.let { nameDetail.setText(it.name) }
- usersFavorite?.let { tv_company.setText(it.company) }
- usersFavorite?.let { tv_location.setText(it.location) }
- contentResolver.delete(uriWithId, null, null)
- Toast.makeText(this, "Delete Favorite User", Toast.LENGTH_SHORT).show()
- finish()
- } else {
- fab_favorite.setOnClickListener {
- isFavorite = !isFavorite
- val values = ContentValues()
- values.put(DatabaseContract.favoriteColumns.AVATAR, userGit.avatar)
- values.put(DatabaseContract.favoriteColumns.NAME, nameDetail.text.toString().trim())
- values.put(DatabaseContract.favoriteColumns.LOCATION, tv_location.text.toString().trim())
- values.put(DatabaseContract.favoriteColumns.COMPANY, tv_company.text.toString().trim())
- contentResolver.insert(CONTENT_URI, values)
- Toast.makeText(this, "Add Favorite User", Toast.LENGTH_SHORT).show()
- finish()
- setStatusFavorite(isFavorite)
- }
- }
- val sectionsPagerAdapter = SectionsPagerAdapter(this, supportFragmentManager)
- sectionsPagerAdapter.userName = userGit.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 avatarUser = responseObject.getString("avatar_url")
- val name = responseObject.getString("name")
- val company = responseObject.getString("company")
- val locations = responseObject.getString("location")
- Glide.with(this@DetailActivity)
- .load(avatarUser)
- .apply(RequestOptions().override(55, 55))
- .into(avatar_img)
- nameDetail.text = name
- tv_company.text = company
- tv_location.text = locations
- } 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
Advertisement