From 848c8bf1ba4f0f3ecf2eeae0b9be2d6a664db2b4 Mon Sep 17 00:00:00 2001
From: Clyhtsuriva <aimeric@adjutor.xyz>
Date: Tue, 2 Mar 2021 10:46:48 +0100
Subject: Creating the APIs and the responses.

---
 .../main/java/xyz/adjutor/aniki/anime/AnimeApi.kt  |  2 +-
 .../java/xyz/adjutor/aniki/anime/AnimeResponse.kt  | 12 ++++++++
 .../xyz/adjutor/aniki/anime/RestAnimeResponse.kt   | 12 --------
 .../xyz/adjutor/aniki/anime/search/SearchAnime.kt  | 31 ++++++++++++++++++++
 .../adjutor/aniki/anime/search/SearchAnimeApi.kt   | 12 ++++++++
 .../aniki/anime/search/SearchAnimeResponse.kt      | 13 +++++++++
 .../aniki/anime/topanime/DetailTopAnimeActivity.kt | 34 +++++++++++-----------
 .../aniki/anime/topanime/RestTopAnimeResponse.kt   | 13 ---------
 .../adjutor/aniki/anime/topanime/TopAnimeApi.kt    |  2 +-
 .../adjutor/aniki/anime/topanime/TopAnimePage.kt   | 34 ++++++++++++----------
 .../aniki/anime/topanime/TopAnimeResponse.kt       | 13 +++++++++
 .../main/java/xyz/adjutor/aniki/manga/MangaApi.kt  |  2 +-
 .../java/xyz/adjutor/aniki/manga/MangaResponse.kt  | 19 ++++++++++++
 .../xyz/adjutor/aniki/manga/RestMangaResponse.kt   | 19 ------------
 .../xyz/adjutor/aniki/manga/search/SearchManga.kt  | 34 ++++++++++++++++++++++
 .../adjutor/aniki/manga/search/SearchMangaApi.kt   | 12 ++++++++
 .../aniki/manga/search/SearchMangaResponse.kt      | 13 +++++++++
 .../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 +++++++++
 23 files changed, 239 insertions(+), 120 deletions(-)
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt
 delete mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/RestAnimeResponse.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnime.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeApi.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeResponse.kt
 delete mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/topanime/RestTopAnimeResponse.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt
 delete mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/search/SearchManga.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaApi.kt
 create mode 100644 app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaResponse.kt
 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')

diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/AnimeApi.kt b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeApi.kt
index 028097a..52ca2ba 100644
--- a/app/src/main/java/xyz/adjutor/aniki/anime/AnimeApi.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeApi.kt
@@ -7,6 +7,6 @@ import retrofit2.http.Path
 interface AnimeApi {
 
     @GET("v3/anime/{id}")
-    fun getAnimeData(@Path("id") id: String): Call<RestAnimeResponse>
+    fun getAnimeData(@Path("id") id: String): Call<AnimeResponse>
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt
new file mode 100644
index 0000000..8d801d6
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt
@@ -0,0 +1,12 @@
+package xyz.adjutor.aniki.anime
+
+import com.google.gson.annotations.SerializedName
+
+class AnimeResponse { //only kept the infos I didn't have and that were interesting to me.
+
+    @SerializedName("mal_id")
+    var mal_id: Int? = null
+
+    @SerializedName("synopsis")
+    var synopsis: String? = null
+}
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/RestAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/RestAnimeResponse.kt
deleted file mode 100644
index b449b31..0000000
--- a/app/src/main/java/xyz/adjutor/aniki/anime/RestAnimeResponse.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package xyz.adjutor.aniki.anime
-
-import com.google.gson.annotations.SerializedName
-
-class RestAnimeResponse { //only kept the infos I didn't have and that were interesting to me.
-
-    @SerializedName("mal_id")
-    var mal_id: Int? = null
-
-    @SerializedName("synopsis")
-    var synopsis: String? = null
-}
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnime.kt b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnime.kt
new file mode 100644
index 0000000..7771646
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnime.kt
@@ -0,0 +1,31 @@
+package xyz.adjutor.aniki.anime.search
+
+import com.google.gson.annotations.SerializedName
+
+class SearchAnime {
+
+    @SerializedName("mal_id")
+    var mal_id: Int? = null
+
+    @SerializedName("url")
+    var url: String? = null
+
+    @SerializedName("image_url")
+    var image_url: String? = null
+
+    @SerializedName("title")
+    var title: String? = null
+
+    @SerializedName("episodes")
+    var episodes: Int? = null
+
+    @SerializedName("score")
+    var score: Float? = null
+
+    @SerializedName("start_date") //we'll maybe remove this later
+    var start_date: String? = null
+
+    @SerializedName("end_date") //we'll maybe remove this later
+    var end_date: String? = null
+
+}
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeApi.kt b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeApi.kt
new file mode 100644
index 0000000..5512636
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeApi.kt
@@ -0,0 +1,12 @@
+package xyz.adjutor.aniki.anime.search
+
+import retrofit2.Call
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface SearchAnimeApi {
+
+    @GET("v3/search/anime")
+    fun getSearchAnimeData(@Query("q") q: String): Call<SearchAnimeResponse>
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeResponse.kt
new file mode 100644
index 0000000..92100ba
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/search/SearchAnimeResponse.kt
@@ -0,0 +1,13 @@
+package xyz.adjutor.aniki.anime.search
+
+import com.google.gson.annotations.SerializedName
+
+class SearchAnimeResponse { //only kept the infos I didn't have and that were interesting to me.
+
+    @SerializedName("results")
+    private lateinit var results: List<SearchAnime>
+
+    fun getResults(): List<SearchAnime> {
+        return results
+    }
+}
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/DetailTopAnimeActivity.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/DetailTopAnimeActivity.kt
index acbbd4d..661937f 100644
--- a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/DetailTopAnimeActivity.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/DetailTopAnimeActivity.kt
@@ -18,13 +18,13 @@ import retrofit2.Retrofit
 import retrofit2.converter.gson.GsonConverterFactory
 import xyz.adjutor.aniki.R
 import xyz.adjutor.aniki.anime.AnimeApi
-import xyz.adjutor.aniki.anime.RestAnimeResponse
+import xyz.adjutor.aniki.anime.AnimeResponse
 import java.lang.reflect.Type
 
 class DetailTopAnimeActivity : 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 DetailTopAnimeActivity : AppCompatActivity() {
 
         tvUrl.text = animeUrl
 
-        val anime: RestAnimeResponse? = getDataFromCache(animeId.toString())
+        val anime: AnimeResponse? = getDataFromCache(animeId.toString())
         if (anime != null) {
             showDetail(anime)
         } else {
@@ -105,13 +105,13 @@ class DetailTopAnimeActivity : AppCompatActivity() {
 
     }
 
-    private fun getDataFromCache(animeId: String): RestAnimeResponse? {
-        val jsonAnime: String? = sharedPreferences?.getString(animeId, null)
+    private fun getDataFromCache(animeId: String): AnimeResponse? {
+        val jsonAnime: String? = sharedPreferences.getString(animeId, null)
 
         return if (jsonAnime == null) {
             null
         } else {
-            val type: Type = object : TypeToken<RestAnimeResponse>() {}.type
+            val type: Type = object : TypeToken<AnimeResponse>() {}.type
             gson.fromJson(jsonAnime, type)
         }
     }
@@ -126,14 +126,14 @@ class DetailTopAnimeActivity : AppCompatActivity() {
         val service = retrofit.create(AnimeApi::class.java)
         val call = service.getAnimeData(animeId) //based on the id
 
-        call.enqueue(object : Callback<RestAnimeResponse> {
+        call.enqueue(object : Callback<AnimeResponse> {
             override fun onResponse(
-                call: Call<RestAnimeResponse>,
-                response: Response<RestAnimeResponse>
+                call: Call<AnimeResponse>,
+                response: Response<AnimeResponse>
             ) {
                 if (response.isSuccessful && response.body() != null) { //if the code returned is >= 200 and < 300 AND the the body ain't empty
 
-                    val anime = response.body() //getting the RestAnimeResponse fields
+                    val anime = response.body() //getting the AnimeResponse fields
                     saveList(anime)
                     showDetail(anime!!)
 
@@ -142,15 +142,15 @@ class DetailTopAnimeActivity : AppCompatActivity() {
                 }
             }
 
-            override fun onFailure(call: Call<RestAnimeResponse>, t: Throwable) {
+            override fun onFailure(call: Call<AnimeResponse>, t: Throwable) {
                 showError("API ERROR : onFailure")
             }
 
         })
     }
 
-    private fun showDetail(anime: RestAnimeResponse) {
-        //elements from RestAnimeResponse
+    private fun showDetail(anime: AnimeResponse) {
+        //elements from AnimeResponse
         val tvSynopsis: TextView = findViewById(R.id.tv_synopsis)
 
         tvSynopsis.text = anime.synopsis.toString()
@@ -165,12 +165,12 @@ class DetailTopAnimeActivity : AppCompatActivity() {
         return "Unknown"
     }
 
-    fun saveList(anime: RestAnimeResponse?) {
+    fun saveList(anime: AnimeResponse?) {
         val jsonString: String = gson.toJson(anime)
 
         sharedPreferences
-            ?.edit()
-            ?.putString(anime?.mal_id.toString(), jsonString)
-            ?.apply()
+            .edit()
+            .putString(anime?.mal_id.toString(), jsonString)
+            .apply()
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/RestTopAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/RestTopAnimeResponse.kt
deleted file mode 100644
index edc11cf..0000000
--- a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/RestTopAnimeResponse.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package xyz.adjutor.aniki.anime.topanime
-
-import com.google.gson.annotations.SerializedName
-
-class RestTopAnimeResponse {
-
-    @SerializedName("top")
-    var top: List<TopAnime>? = null
-
-    fun getResults(): List<TopAnime> {
-        return top!!
-    }
-}
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeApi.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeApi.kt
index a5b3b59..8e44e77 100644
--- a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeApi.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeApi.kt
@@ -6,6 +6,6 @@ import retrofit2.http.GET
 interface TopAnimeApi {
 
     @GET("v3/top/anime")
-    fun getTopAnimeData(): Call<RestTopAnimeResponse>
+    fun getTopAnimeData(): Call<TopAnimeResponse>
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimePage.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimePage.kt
index ccae2fa..d62e5b2 100644
--- a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimePage.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimePage.kt
@@ -13,6 +13,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
 import com.google.android.material.snackbar.Snackbar
+import com.google.gson.Gson
 import com.google.gson.GsonBuilder
 import com.google.gson.reflect.TypeToken
 import retrofit2.Call
@@ -25,11 +26,11 @@ import java.lang.reflect.Type
 
 class TopAnimePage : Fragment() {
 
-    var sharedPreferences: SharedPreferences? = null
-    val gson = GsonBuilder()
+    private lateinit var sharedPreferences: SharedPreferences
+    val gson: Gson = GsonBuilder()
         .setLenient()
         .create()
-    var base_url = "https://api.jikan.moe/" //the api's base url
+    var baseUrl = "https://api.jikan.moe/" //the api's base url
 
     override fun onCreateView(
         inflater: LayoutInflater, container: ViewGroup?,
@@ -44,7 +45,7 @@ class TopAnimePage : Fragment() {
         if (animeList != null) {
             showList(view, animeList)
         } else {
-            makeApiCall(view, base_url)
+            makeApiCall(view, baseUrl)
         }
 
         return view
@@ -52,14 +53,14 @@ class TopAnimePage : Fragment() {
 
     private fun getDataFromCache(): List<TopAnime>? {
         //the value of the animeList json, if nothing is found, return null
-        val jsonAnime: String? = sharedPreferences?.getString("jsonAnimeList", null)
+        val jsonAnime: String? = sharedPreferences.getString("jsonAnimeList", null)
 
         //if it's null, well, return null
-        if (jsonAnime == null) {
-            return null
+        return if (jsonAnime == null) {
+            null
         } else { //else deserialize the list and return it
             val listType: Type = object : TypeToken<List<TopAnime>>() {}.type
-            return gson.fromJson(jsonAnime, listType)
+            gson.fromJson(jsonAnime, listType)
         }
     }
 
@@ -72,7 +73,7 @@ class TopAnimePage : Fragment() {
         }
 
         fun updateList() {
-            makeApiCall(view, base_url)
+            makeApiCall(view, baseUrl)
             Snackbar.make(requireView(), "Data refreshed", Snackbar.LENGTH_LONG)
                 .setAction("Action", null).show()
         }
@@ -91,6 +92,7 @@ class TopAnimePage : Fragment() {
         recyclerView.setHasFixedSize(true)
         recyclerView.layoutManager = LinearLayoutManager(view.context)
         recyclerView.adapter = TopAnimeAdapter(animeList)
+        (recyclerView.adapter as TopAnimeAdapter).notifyDataSetChanged()
     }
 
     private fun makeApiCall(view: View, BASE_URL: String) {
@@ -103,10 +105,10 @@ class TopAnimePage : Fragment() {
         val service = retrofit.create(TopAnimeApi::class.java)
         val call = service.getTopAnimeData()
 
-        call.enqueue(object : Callback<RestTopAnimeResponse> {
+        call.enqueue(object : Callback<TopAnimeResponse> {
             override fun onResponse(
-                call: Call<RestTopAnimeResponse>,
-                response: Response<RestTopAnimeResponse>
+                call: Call<TopAnimeResponse>,
+                response: Response<TopAnimeResponse>
             ) {
                 if (response.isSuccessful && response.body() != null) { //if the code returned is >= 200 and < 300 AND the the body ain't empty
 
@@ -123,7 +125,7 @@ class TopAnimePage : Fragment() {
                 }
             }
 
-            override fun onFailure(call: Call<RestTopAnimeResponse>, t: Throwable) {
+            override fun onFailure(call: Call<TopAnimeResponse>, t: Throwable) {
                 showError()
             }
 
@@ -134,9 +136,9 @@ class TopAnimePage : Fragment() {
         val jsonString: String = gson.toJson(animeList)
 
         sharedPreferences
-            ?.edit()
-            ?.putString("jsonAnimeList", jsonString)
-            ?.apply()
+            .edit()
+            .putString("jsonAnimeList", jsonString)
+            .apply()
     }
 
     private fun showError() {
diff --git a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt
new file mode 100644
index 0000000..2fe69d6
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt
@@ -0,0 +1,13 @@
+package xyz.adjutor.aniki.anime.topanime
+
+import com.google.gson.annotations.SerializedName
+
+class TopAnimeResponse {
+
+    @SerializedName("top")
+    var top: List<TopAnime>? = null
+
+    fun getResults(): List<TopAnime> {
+        return top!!
+    }
+}
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/MangaApi.kt b/app/src/main/java/xyz/adjutor/aniki/manga/MangaApi.kt
index 419d510..f1b51a4 100644
--- a/app/src/main/java/xyz/adjutor/aniki/manga/MangaApi.kt
+++ b/app/src/main/java/xyz/adjutor/aniki/manga/MangaApi.kt
@@ -7,6 +7,6 @@ import retrofit2.http.Path
 interface MangaApi {
 
     @GET("v3/manga/{id}")
-    fun getMangaData(@Path("id") id: String): Call<RestMangaResponse>
+    fun getMangaData(@Path("id") id: String): Call<MangaResponse>
 
 }
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt
new file mode 100644
index 0000000..9b75aec
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt
@@ -0,0 +1,19 @@
+package xyz.adjutor.aniki.manga
+
+import com.google.gson.annotations.SerializedName
+
+class MangaResponse { //only kept the infos I didn't have and that were interesting to me.
+
+    @SerializedName("mal_id")
+    var mal_id: Int? = null
+
+    @SerializedName("chapters")
+    var chapters: Int? = null
+
+    @SerializedName("synopsis")
+    var synopsis: String? = null
+
+    @SerializedName("background")
+    var background: String? = null //a bit of background story about the manga
+
+}
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt
deleted file mode 100644
index 10df7a5..0000000
--- a/app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package xyz.adjutor.aniki.manga
-
-import com.google.gson.annotations.SerializedName
-
-class RestMangaResponse { //only kept the infos I didn't have and that were interesting to me.
-
-    @SerializedName("mal_id")
-    var mal_id: Int? = null
-
-    @SerializedName("chapters")
-    var chapters: Int? = null
-
-    @SerializedName("synopsis")
-    var synopsis: String? = null
-
-    @SerializedName("background")
-    var background: String? = null //a bit of background story about the manga
-
-}
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchManga.kt b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchManga.kt
new file mode 100644
index 0000000..53899e2
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchManga.kt
@@ -0,0 +1,34 @@
+package xyz.adjutor.aniki.manga.search
+
+import com.google.gson.annotations.SerializedName
+
+class SearchManga {
+
+    @SerializedName("mal_id")
+    var mal_id: Int? = null
+
+    @SerializedName("url")
+    var url: String? = null
+
+    @SerializedName("image_url")
+    var image_url: String? = null
+
+    @SerializedName("title")
+    var title: String? = null
+
+    @SerializedName("chapters")
+    var chapters: Int? = null
+
+    @SerializedName("volumes")
+    var volumes: Int? = null
+
+    @SerializedName("score")
+    var score: Float? = null
+
+    @SerializedName("start_date") //we'll maybe remove this later
+    var start_date: String? = null
+
+    @SerializedName("end_date") //we'll maybe remove this later
+    var end_date: String? = null
+
+}
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaApi.kt b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaApi.kt
new file mode 100644
index 0000000..6f3e63d
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaApi.kt
@@ -0,0 +1,12 @@
+package xyz.adjutor.aniki.manga.search
+
+import retrofit2.Call
+import retrofit2.http.GET
+import retrofit2.http.Query
+
+interface SearchMangaApi {
+
+    @GET("v3/search/manga")
+    fun getSearchMangaData(@Query("q") q: String): Call<SearchMangaResponse>
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaResponse.kt
new file mode 100644
index 0000000..7721258
--- /dev/null
+++ b/app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaResponse.kt
@@ -0,0 +1,13 @@
+package xyz.adjutor.aniki.manga.search
+
+import com.google.gson.annotations.SerializedName
+
+class SearchMangaResponse { //only kept the infos I didn't have and that were interesting to me.
+
+    @SerializedName("results")
+    private lateinit var results: List<SearchManga>
+
+    fun getResults(): List<SearchManga> {
+        return results
+    }
+}
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<RestMangaResponse>() {}.type
+            val type: Type = object : TypeToken<MangaResponse>() {}.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<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 +142,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 +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<TopManga>? = null
-
-    fun getResults(): List<TopManga> {
-        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<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/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<TopManga>
+
+    fun getResults(): List<TopManga> {
+        return top
+    }
+}
\ No newline at end of file
-- 
cgit v1.2.3