diff options
Diffstat (limited to 'app/src/main/java/xyz/adjutor/aniki/manga/topmanga')
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt | 45 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt | 1 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt | 2 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt | 19 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt (renamed from app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt) | 6 |
5 files changed, 39 insertions, 34 deletions
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt index c7b6317..6d89437 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt @@ -18,23 +18,25 @@ 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 +import xyz.adjutor.aniki.manga.MangaResponse import java.lang.reflect.Type class DetailTopMangaActivity : AppCompatActivity() { private var baseUrl = "https://api.jikan.moe/" - var sharedPreferences: SharedPreferences? = null + private lateinit var sharedPreferences: SharedPreferences private val gson = GsonBuilder() .setLenient() .create() - private val intentMangaId = "themangaid" + //used in the list private val intentMangaTitle = "themangatitle" private val intentMangaRank = "themangarank" private val intentMangaScore = "themangascore" private val intentMangaImageUrl = "themangaimageurl" + //only used for the detail + private val intentMangaId = "themangaid" private val intentMangaVolumes = "themangavolumes" private val intentMangaStartDate = "themangastartdate" private val intentMangaEndDate = "themangaenddate" @@ -46,29 +48,28 @@ class DetailTopMangaActivity : AppCompatActivity() { sharedPreferences = this.getSharedPreferences("sp_manga", Context.MODE_PRIVATE) - val mangaId = intent.getStringExtra(intentMangaId) val mangaTitle = intent.getStringExtra(intentMangaTitle) val mangaRank = intent.getStringExtra(intentMangaRank) val mangaScore = intent.getStringExtra(intentMangaScore) val mangaImageUrl = intent.getStringExtra(intentMangaImageUrl) + val mangaId = intent.getStringExtra(intentMangaId) val mangaVolumes = intent.getStringExtra(intentMangaVolumes) val mangaStartDate = intent.getStringExtra(intentMangaStartDate) val mangaEndDate = intent.getStringExtra(intentMangaEndDate) val mangaUrl = intent.getStringExtra(intentMangaUrl) - 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 tvId: TextView = findViewById(R.id.tv_detail_id) 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) val tvUrl: TextView = findViewById(R.id.tv_url) - tvId.text = mangaId tvTitle.text = mangaTitle tvRank.text = mangaRank tvScore.text = mangaScore @@ -78,6 +79,8 @@ class DetailTopMangaActivity : AppCompatActivity() { .apply(RequestOptions().override(400)) .into(ivImage) + tvId.text = mangaId + //using null as a string because it has been converted to a string before tvVolumes.text = if (mangaVolumes != "null") { mangaVolumes @@ -95,7 +98,7 @@ class DetailTopMangaActivity : AppCompatActivity() { tvUrl.text = mangaUrl - val manga: RestMangaResponse? = getDataFromCache(mangaId.toString()) + val manga: MangaResponse? = getDataFromCache(mangaId.toString()) if (manga != null) { showDetail(manga) } else { @@ -105,13 +108,13 @@ class DetailTopMangaActivity : AppCompatActivity() { } - private fun getDataFromCache(mangaId: String): RestMangaResponse? { - val jsonManga: String? = sharedPreferences?.getString(mangaId, null) + private fun getDataFromCache(mangaId: String): MangaResponse? { + val jsonManga: String? = sharedPreferences.getString(mangaId, null) return if (jsonManga == null) { null } else { - val type: Type = object : TypeToken<RestMangaResponse>() {}.type + val type: Type = object : TypeToken<MangaResponse>() {}.type gson.fromJson(jsonManga, type) } } @@ -126,14 +129,14 @@ class DetailTopMangaActivity : AppCompatActivity() { val service = retrofit.create(MangaApi::class.java) val call = service.getMangaData(mangaId) //based on the id - call.enqueue(object : Callback<RestMangaResponse> { + call.enqueue(object : Callback<MangaResponse> { override fun onResponse( - call: Call<RestMangaResponse>, - response: Response<RestMangaResponse> + call: Call<MangaResponse>, + response: Response<MangaResponse> ) { if (response.isSuccessful && response.body() != null) { //if the code returned is >= 200 and < 300 AND the the body ain't empty - val manga = response.body() //getting the RestMangaResponse fields + val manga = response.body() //getting the MangaResponse fields saveList(manga) showDetail(manga!!) @@ -142,15 +145,15 @@ class DetailTopMangaActivity : AppCompatActivity() { } } - override fun onFailure(call: Call<RestMangaResponse>, t: Throwable) { + override fun onFailure(call: Call<MangaResponse>, t: Throwable) { showError("API ERROR : onFailure") } }) } - private fun showDetail(manga: RestMangaResponse) { - //elements from RestMangaResponse + private fun showDetail(manga: MangaResponse) { + //elements from MangaResponse val tvChapters: TextView = findViewById(R.id.tv_chapters) val tvSynopsis: TextView = findViewById(R.id.tv_synopsis) val tvBackground: TextView = findViewById(R.id.tv_background) @@ -179,12 +182,12 @@ class DetailTopMangaActivity : AppCompatActivity() { return "Unknown" } - fun saveList(manga: RestMangaResponse?) { + fun saveList(manga: MangaResponse?) { val jsonString: String = gson.toJson(manga) sharedPreferences - ?.edit() - ?.putString(manga?.mal_id.toString(), jsonString) - ?.apply() + .edit() + .putString(manga?.mal_id.toString(), jsonString) + .apply() } }
\ No newline at end of file diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt index 626f34e..d0c56f7 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt @@ -62,6 +62,7 @@ class TopMangaAdapter(private val mangaList: List<TopManga>) : val currentMangaEndDate = "themangaenddate" val currentMangaUrl = "themangaurl" + //intent is used to pass data to another activity val intent: Intent = Intent(holder.itemView.context, DetailTopMangaActivity::class.java).apply { putExtra(currentMangaId, currentManga.mal_id.toString()) diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt index 278c3e1..629fe02 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt @@ -6,6 +6,6 @@ import retrofit2.http.GET interface TopMangaApi { @GET("v3/top/manga") - fun getTopMangaData(): Call<RestTopMangaResponse> + fun getTopMangaData(): Call<TopMangaResponse> }
\ No newline at end of file diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt index ce9b1c6..b35bcdd 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt @@ -26,7 +26,7 @@ import java.lang.reflect.Type class TopMangaPage : Fragment() { - var sharedPreferences: SharedPreferences? = null + private lateinit var sharedPreferences: SharedPreferences val gson: Gson = GsonBuilder() .setLenient() .create() @@ -53,7 +53,7 @@ class TopMangaPage : Fragment() { private fun getDataFromCache(): List<TopManga>? { //the value of the mangaList json, if nothing is found, return null - val jsonManga: String? = sharedPreferences?.getString("jsonMangaList", null) + val jsonManga: String? = sharedPreferences.getString("jsonMangaList", null) //if it's null, well, return null return if (jsonManga == null) { @@ -92,6 +92,7 @@ class TopMangaPage : Fragment() { recyclerView.setHasFixedSize(true) recyclerView.layoutManager = LinearLayoutManager(view.context) recyclerView.adapter = TopMangaAdapter(mangaList) + (recyclerView.adapter as TopMangaAdapter).notifyDataSetChanged() } private fun makeApiCall(view: View, BASE_URL: String) { @@ -104,10 +105,10 @@ class TopMangaPage : Fragment() { val service = retrofit.create(TopMangaApi::class.java) val call = service.getTopMangaData() - call.enqueue(object : Callback<RestTopMangaResponse> { + call.enqueue(object : Callback<TopMangaResponse> { override fun onResponse( - call: Call<RestTopMangaResponse>, - response: Response<RestTopMangaResponse> + call: Call<TopMangaResponse>, + response: Response<TopMangaResponse> ) { if (response.isSuccessful && response.body() != null) { //if the code returned is >= 200 and < 300 AND the the body ain't empty @@ -124,7 +125,7 @@ class TopMangaPage : Fragment() { } } - override fun onFailure(call: Call<RestTopMangaResponse>, t: Throwable) { + override fun onFailure(call: Call<TopMangaResponse>, t: Throwable) { showError() } @@ -135,9 +136,9 @@ class TopMangaPage : Fragment() { val jsonString: String = gson.toJson(mangaList) sharedPreferences - ?.edit() - ?.putString("jsonMangaList", jsonString) - ?.apply() + .edit() + .putString("jsonMangaList", jsonString) + .apply() } private fun showError() { diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt index 87c5cfb..8577050 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt @@ -2,12 +2,12 @@ package xyz.adjutor.aniki.manga.topmanga import com.google.gson.annotations.SerializedName -class RestTopMangaResponse { +class TopMangaResponse { @SerializedName("top") - var top: List<TopManga>? = null + private lateinit var top: List<TopManga> fun getResults(): List<TopManga> { - return top!! + return top } }
\ No newline at end of file |