package xyz.adjutor.aniki.topanime import android.content.Context import android.content.SharedPreferences import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Button import androidx.fragment.app.Fragment import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.snackbar.Snackbar import com.google.gson.GsonBuilder import com.google.gson.reflect.TypeToken import retrofit2.Call import retrofit2.Callback import retrofit2.Response import retrofit2.Retrofit import retrofit2.converter.gson.GsonConverterFactory import xyz.adjutor.aniki.R import java.lang.reflect.Type class TopAnimePage : Fragment() { var sharedPreferences: SharedPreferences? = null val gson = GsonBuilder() .setLenient() .create() var base_url = "https://api.jikan.moe/" //the api's base url override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.top_anime_page, container, false) sharedPreferences = view.context.getSharedPreferences("app_aniki", Context.MODE_PRIVATE) val animeList: List? = getDataFromCache() if(animeList != null ){ showList(view, animeList) } else { makeApiCall(view, base_url) } return view } private fun getDataFromCache(): List? { //the value of the animeList json, if nothing is found, return null val jsonAnime: String? = sharedPreferences?.getString("jsonAnimeList", null) //if it's null, well, return null if(jsonAnime == null) { return null } else { //else deserialize the list and return it val listType: Type = object : TypeToken>() {}.type return gson.fromJson(jsonAnime, listType) } } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) //button to return to the home page view.findViewById