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. --- .../adjutor/aniki/anime/topanime/TopAnimePage.kt | 34 ++++++++++++---------- 1 file changed, 18 insertions(+), 16 deletions(-) (limited to 'app/src/main/java/xyz/adjutor/aniki/anime/topanime/TopAnimePage.kt') 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? { //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>() {}.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 { + 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 @@ -123,7 +125,7 @@ class TopAnimePage : Fragment() { } } - override fun onFailure(call: Call, t: Throwable) { + override fun onFailure(call: Call, 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() { -- cgit v1.2.3