diff options
| author | Clyhtsuriva <aimeric@adjutor.xyz> | 2021-03-02 10:46:48 +0100 | 
|---|---|---|
| committer | Clyhtsuriva <aimeric@adjutor.xyz> | 2021-03-02 10:46:48 +0100 | 
| commit | 848c8bf1ba4f0f3ecf2eeae0b9be2d6a664db2b4 (patch) | |
| tree | 7bb4ae9a74d637364a19955bc44bff8811cdbe2e | |
| parent | f9f079eea806454d49d6088089511d72e1c28f86 (diff) | |
Creating the APIs and the responses.
20 files changed, 189 insertions, 69 deletions
| diff --git a/app/build.gradle b/app/build.gradle index 6a990f2..0251555 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -34,6 +34,7 @@ android {  dependencies { +    //noinspection GradleDependency      implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"      implementation 'androidx.core:core-ktx:1.3.2'      implementation 'androidx.appcompat:appcompat:1.2.0' 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/RestAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt index b449b31..8d801d6 100644 --- a/app/src/main/java/xyz/adjutor/aniki/anime/RestAnimeResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/anime/AnimeResponse.kt @@ -2,7 +2,7 @@ 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. +class AnimeResponse { //only kept the infos I didn't have and that were interesting to me.      @SerializedName("mal_id")      var mal_id: Int? = 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/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/RestTopAnimeResponse.kt b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt index edc11cf..2fe69d6 100644 --- a/app/src/main/java/xyz/adjutor/aniki/anime/topanime/RestTopAnimeResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimeResponse.kt @@ -2,7 +2,7 @@ package xyz.adjutor.aniki.anime.topanime  import com.google.gson.annotations.SerializedName -class RestTopAnimeResponse { +class TopAnimeResponse {      @SerializedName("top")      var top: List<TopAnime>? = null 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/RestMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt index 10df7a5..9b75aec 100644 --- a/app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt @@ -2,7 +2,7 @@ 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. +class MangaResponse { //only kept the infos I didn't have and that were interesting to me.      @SerializedName("mal_id")      var mal_id: Int? = null 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/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 | 
