package xyz.adjutor.aniki.topmanga import android.content.Context import android.os.Bundle import android.view.View import android.widget.ImageView import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide import com.bumptech.glide.request.RequestOptions import com.google.gson.GsonBuilder import retrofit2.Call import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import xyz.adjutor.aniki.R import xyz.adjutor.aniki.manga.MangaApi import xyz.adjutor.aniki.manga.RestMangaResponse class DetailTopMangaActivity : AppCompatActivity() { var base_url = "https://api.jikan.moe/" val gson = GsonBuilder() .setLenient() .create() var manga: RestMangaResponse? = null private val mangaId = "themangaid" private val mangaTitle = "themangatitle" private val mangaRank = "themangarank" private val mangaScore = "themangascore" private val mangaImageUrl = "themangaimageurl" private val mangaVolumes = "themangavolumes" private val mangaStartDate = "themangastartdate" private val mangaEndDate = "themangaenddate" override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_detail_top_manga) val mangaId = intent.getStringExtra(mangaId) val mangaTitle = intent.getStringExtra(mangaTitle) val mangaRank = intent.getStringExtra(mangaRank) val mangaScore = intent.getStringExtra(mangaScore) val mangaImage = intent.getStringExtra(mangaImageUrl) val mangaVolumes = intent.getStringExtra(mangaVolumes) val mangaStartDate = intent.getStringExtra(mangaStartDate) val mangaEndDate = intent.getStringExtra(mangaEndDate) val tvId: TextView = findViewById(R.id.tv_detail_id) val tvTitle: TextView = findViewById(R.id.tv_detail_title) val tvRank: TextView = findViewById(R.id.tv_detail_rank) val tvScore: TextView = findViewById(R.id.tv_detail_score) val ivImage: ImageView = findViewById(R.id.iv_detail_image) val tvVolumes: TextView = findViewById(R.id.tv_volumes) val tvStartDate: TextView = findViewById(R.id.tv_start_date) val tvEndDate: TextView = findViewById(R.id.tv_end_date) tvId.text = mangaId tvTitle.text = mangaTitle tvRank.text = mangaRank tvScore.text = mangaScore Glide .with(this) .load(mangaImage) .apply(RequestOptions().override(400)) .into(ivImage) tvVolumes.text = mangaVolumes tvStartDate.text = mangaStartDate tvEndDate.text = mangaEndDate makeApiCall(base_url) } private fun makeApiCall(BASE_URL: String) { val retrofit = Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .build() val service = retrofit.create(MangaApi::class.java) val call = service.getMangaData() call.enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { if(response.isSuccessful && response.body() != null){ //if the code returned is >= 200 and < 300 AND the the body ain't empty manga = response.body() //getting the RestMangaResponse fields showDetail(manga!!) } else { showError("API ERROR : is not successful") } } override fun onFailure(call: Call, t: Throwable) { showError("API ERROR : onFailure") } }) } private fun showDetail(manga: RestMangaResponse) { //elements from RestMangaResponse val tvChapters: TextView = findViewById(R.id.tv_chapters) val tvSynopsis: TextView = findViewById(R.id.tv_synopsis) val tvBackground: TextView = findViewById(R.id.tv_background) tvChapters.text = manga.chapters.toString() tvSynopsis.text = manga.synopsis.toString() tvBackground.text = manga.background.toString() } fun showError(text: String) { Toast.makeText(this, text, Toast.LENGTH_LONG).show() } }