diff options
Diffstat (limited to 'app/src/main/java/xyz/adjutor/aniki/manga')
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/MangaApi.kt | 2 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/MangaResponse.kt (renamed from app/src/main/java/xyz/adjutor/aniki/manga/RestMangaResponse.kt) | 2 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/search/SearchManga.kt | 34 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaApi.kt | 12 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/search/SearchMangaResponse.kt | 13 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt | 34 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt | 1 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt | 2 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt | 19 | ||||
-rw-r--r-- | app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaResponse.kt (renamed from app/src/main/java/xyz/adjutor/aniki/manga/topmanga/RestTopMangaResponse.kt) | 6 |
10 files changed, 93 insertions, 32 deletions
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 |