From a3106ca93e55c53243c8310309a1c8ffc175f357 Mon Sep 17 00:00:00 2001 From: Kirill Ruban Date: Sun, 16 Feb 2025 13:53:09 +0300 Subject: [PATCH] Coroutines homework --- app/build.gradle | 2 + .../otus/homework/coroutines/CatsPresenter.kt | 35 ------------ .../otus/homework/coroutines/CatsService.kt | 8 ++- .../java/otus/homework/coroutines/CatsView.kt | 36 ++++++++++-- .../otus/homework/coroutines/CatsViewModel.kt | 55 +++++++++++++++++++ .../otus/homework/coroutines/DiContainer.kt | 14 +++-- .../otus/homework/coroutines/MainActivity.kt | 25 +++++---- app/src/main/res/layout/activity_main.xml | 9 +++ app/src/main/res/values/strings.xml | 2 + 9 files changed, 129 insertions(+), 57 deletions(-) delete mode 100644 app/src/main/java/otus/homework/coroutines/CatsPresenter.kt create mode 100644 app/src/main/java/otus/homework/coroutines/CatsViewModel.kt diff --git a/app/build.gradle b/app/build.gradle index a414e0e8..06a9e121 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -41,4 +41,6 @@ dependencies { implementation 'com.google.android.material:material:1.11.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'com.squareup.picasso:picasso:2.71828' + implementation 'androidx.activity:activity-ktx:1.9.2' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.6' } \ No newline at end of file diff --git a/app/src/main/java/otus/homework/coroutines/CatsPresenter.kt b/app/src/main/java/otus/homework/coroutines/CatsPresenter.kt deleted file mode 100644 index e4b05120..00000000 --- a/app/src/main/java/otus/homework/coroutines/CatsPresenter.kt +++ /dev/null @@ -1,35 +0,0 @@ -package otus.homework.coroutines - -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response - -class CatsPresenter( - private val catsService: CatsService -) { - - private var _catsView: ICatsView? = null - - fun onInitComplete() { - catsService.getCatFact().enqueue(object : Callback { - - override fun onResponse(call: Call, response: Response) { - if (response.isSuccessful && response.body() != null) { - _catsView?.populate(response.body()!!) - } - } - - override fun onFailure(call: Call, t: Throwable) { - CrashMonitor.trackWarning() - } - }) - } - - fun attachView(catsView: ICatsView) { - _catsView = catsView - } - - fun detachView() { - _catsView = null - } -} \ No newline at end of file diff --git a/app/src/main/java/otus/homework/coroutines/CatsService.kt b/app/src/main/java/otus/homework/coroutines/CatsService.kt index 479b2cfb..774a9957 100644 --- a/app/src/main/java/otus/homework/coroutines/CatsService.kt +++ b/app/src/main/java/otus/homework/coroutines/CatsService.kt @@ -6,5 +6,11 @@ import retrofit2.http.GET interface CatsService { @GET("fact") - fun getCatFact() : Call + suspend fun getCatFact() : Fact +} + +interface CatsImageService { + + @GET("search") + suspend fun getCatImage(): List } \ No newline at end of file diff --git a/app/src/main/java/otus/homework/coroutines/CatsView.kt b/app/src/main/java/otus/homework/coroutines/CatsView.kt index be04b2a8..2e0a7980 100644 --- a/app/src/main/java/otus/homework/coroutines/CatsView.kt +++ b/app/src/main/java/otus/homework/coroutines/CatsView.kt @@ -1,10 +1,16 @@ package otus.homework.coroutines import android.content.Context + import android.util.AttributeSet import android.widget.Button +import android.widget.ImageView import android.widget.TextView +import android.widget.Toast import androidx.constraintlayout.widget.ConstraintLayout +import com.google.gson.annotations.SerializedName +import com.squareup.picasso.Picasso + class CatsView @JvmOverloads constructor( context: Context, @@ -12,21 +18,39 @@ class CatsView @JvmOverloads constructor( defStyleAttr: Int = 0 ) : ConstraintLayout(context, attrs, defStyleAttr), ICatsView { - var presenter :CatsPresenter? = null + var catsViewModel: CatsViewModel? = null override fun onFinishInflate() { super.onFinishInflate() findViewById