aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/java/xyz/adjutor/aniki/manga/topmanga
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2021-03-02 10:46:48 +0100
committerClyhtsuriva <aimeric@adjutor.xyz>2021-03-02 10:46:48 +0100
commit848c8bf1ba4f0f3ecf2eeae0b9be2d6a664db2b4 (patch)
tree7bb4ae9a74d637364a19955bc44bff8811cdbe2e /app/src/main/java/xyz/adjutor/aniki/manga/topmanga
parentf9f079eea806454d49d6088089511d72e1c28f86 (diff)
Creating the APIs and the responses.
Diffstat (limited to 'app/src/main/java/xyz/adjutor/aniki/manga/topmanga')
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/manga/topmanga/DetailTopMangaActivity.kt34
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaAdapter.kt1
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaApi.kt2
-rw-r--r--app/src/main/java/xyz/adjutor/aniki/manga/topmanga/TopMangaPage.kt19
-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
5 files changed, 32 insertions, 30 deletions
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