From 848c8bf1ba4f0f3ecf2eeae0b9be2d6a664db2b4 Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Tue, 2 Mar 2021 10:46:48 +0100 Subject: Creating the APIs and the responses. --- .../aniki/manga/topmanga/DetailTopMangaActivity.kt | 34 +++++++++++----------- .../aniki/manga/topmanga/RestTopMangaResponse.kt | 13 --------- .../aniki/manga/topmanga/TopMangaAdapter.kt | 1 + .../adjutor/aniki/manga/topmanga/TopMangaApi.kt | 2 +- .../adjutor/aniki/manga/topmanga/TopMangaPage.kt | 19 ++++++------ .../aniki/manga/topmanga/TopMangaResponse.kt | 13 +++++++++ 6 files changed, 42 insertions(+), 40 deletions(-) delete mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt create mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt (limited to 'app/src/main/java/xyz/adjutor/aniki/manga/topmanga') 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..fc10e89 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,13 +18,13 @@ 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() @@ -95,7 +95,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 +105,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() {}.type + val type: Type = object : TypeToken() {}.type gson.fromJson(jsonManga, type) } } @@ -126,14 +126,14 @@ class DetailTopMangaActivity : AppCompatActivity() { val service = retrofit.create(MangaApi::class.java) val call = service.getMangaData(mangaId) //based on the id - call.enqueue(object : Callback { + call.enqueue(object : Callback { override fun onResponse( - call: Call, - response: Response + 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 - val manga = response.body() //getting the RestMangaResponse fields + val manga = response.body() //getting the MangaResponse fields saveList(manga) showDetail(manga!!) @@ -142,15 +142,15 @@ class DetailTopMangaActivity : AppCompatActivity() { } } - override fun onFailure(call: Call, t: Throwable) { + override fun onFailure(call: Call, 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 +179,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/RestTopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt deleted file mode 100644 index 87c5cfb..0000000 --- a/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt +++ /dev/null @@ -1,13 +0,0 @@ -package xyz.adjutor.aniki.manga.topmanga - -import com.google.gson.annotations.SerializedName - -class RestTopMangaResponse { - - @SerializedName("top") - var top: List? = null - - fun getResults(): List { - return top!! - } -} \ 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) : 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 + fun getTopMangaData(): Call } \ 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? { //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 { + call.enqueue(object : Callback { override fun onResponse( - call: Call, - response: Response + 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 @@ -124,7 +125,7 @@ class TopMangaPage : Fragment() { } } - override fun onFailure(call: Call, t: Throwable) { + override fun onFailure(call: Call, 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/TopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt new file mode 100644 index 0000000..8577050 --- /dev/null +++ b/app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt @@ -0,0 +1,13 @@ +package xyz.adjutor.aniki.manga.topmanga + +import com.google.gson.annotations.SerializedName + +class TopMangaResponse { + + @SerializedName("top") + private lateinit var top: List + + fun getResults(): List { + return top + } +} \ No newline at end of file -- cgit v1.2.3