diff --git a/app/build.gradle b/app/build.gradle index 716f09f..9299ffa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -11,8 +11,8 @@ android { applicationId "id.husni.sultengcovid" minSdkVersion 22 targetSdkVersion 29 - versionCode 2 - versionName "1.3" + versionCode 3 + versionName "1.5" //TODO : INSERT YOUR API FROM NEWSAPI.ORG HERE buildConfigField("String", "KEY_NEWS_API", '"{API_KEY_HERE}"') testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -37,7 +37,7 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.core:core-ktx:1.2.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' - implementation 'com.google.firebase:firebase-messaging:20.1.5' + implementation 'com.google.firebase:firebase-messaging:20.1.6' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' @@ -48,7 +48,7 @@ dependencies { //Gson implementation 'com.squareup.retrofit2:converter-gson:2.8.0' //Retrofit - implementation 'com.squareup.retrofit2:retrofit:2.8.0' + implementation 'com.squareup.retrofit2:retrofit:2.8.1' // ViewModel implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0" // LiveData @@ -59,4 +59,10 @@ dependencies { //Glide implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + //Rx Android + implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' + //Rx Java + implementation 'io.reactivex.rxjava3:rxjava:3.0.3' + //Rx Java 3 Adapter + implementation 'com.github.akarnokd:rxjava3-retrofit-adapter:3.0.0' } diff --git a/app/src/main/java/id/husni/sultengcovid/activity/MainActivity.kt b/app/src/main/java/id/husni/sultengcovid/activity/MainActivity.kt index ab5d802..cef3b4f 100644 --- a/app/src/main/java/id/husni/sultengcovid/activity/MainActivity.kt +++ b/app/src/main/java/id/husni/sultengcovid/activity/MainActivity.kt @@ -14,15 +14,15 @@ import android.view.Menu import android.view.MenuItem import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity -import androidx.lifecycle.Observer -import androidx.lifecycle.ViewModelProvider -import androidx.lifecycle.ViewModelProvider.NewInstanceFactory import com.google.firebase.iid.FirebaseInstanceId import com.google.firebase.messaging.FirebaseMessaging import id.husni.sultengcovid.R import id.husni.sultengcovid.model.Province -import id.husni.sultengcovid.viewmodel.ProvinceViewModel +import id.husni.sultengcovid.serviceapi.ApiEndpoint +import id.husni.sultengcovid.serviceapi.RetrofitServiceApi import id.husni.sultengcovid.viewpager.MainPagerAdapter +import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.schedulers.Schedulers import kotlinx.android.synthetic.main.activity_main.* @@ -42,14 +42,19 @@ class MainActivity : AppCompatActivity() { mainViewPager.adapter = MainPagerAdapter(this,supportFragmentManager) mainTabLayout.setupWithViewPager(mainViewPager) - val viewModel : ProvinceViewModel = ViewModelProvider(this, NewInstanceFactory()).get(ProvinceViewModel::class.java) - viewModel.setProvinceData() - viewModel.getProvinceLiveData().observe(this, Observer { provinceModel -> - tvProvinceName.text = provinceModel.dataProvince.provinceName - tvProvincePositive.text = provinceModel.dataProvince.provincePositive.toString() - tvProvinceRecovered.text = provinceModel.dataProvince.provinceRecovered.toString() - tvProvinceDeath.text = provinceModel.dataProvince.provinceDeath.toString() - }) + val retrofit = RetrofitServiceApi.retrofit + val endPoint = retrofit.create(ApiEndpoint::class.java) + endPoint.getProvinceData() + .subscribeOn(Schedulers.newThread()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { getProvinceData(it) } + } + + private fun getProvinceData(province: Province?) { + tvProvinceName.text = province?.dataProvince?.provinceName + tvProvincePositive.text = province?.dataProvince?.provincePositive.toString() + tvProvinceRecovered.text = province?.dataProvince?.provinceRecovered.toString() + tvProvinceDeath.text = province?.dataProvince?.provinceDeath.toString() } override fun onCreateOptionsMenu(menu: Menu?): Boolean { @@ -85,12 +90,12 @@ class MainActivity : AppCompatActivity() { val alertDialogBuilder= AlertDialog.Builder(this) .setTitle(getString(R.string.exit)) .setMessage(getString(R.string.exit_message)) - .setPositiveButton(getString(R.string.yes),DialogInterface.OnClickListener { _, _ -> + .setPositiveButton(getString(R.string.yes)) { _, _ -> finish() - }) - .setNegativeButton(getString(R.string.no), DialogInterface.OnClickListener { dialog, _ -> + } + .setNegativeButton(getString(R.string.no)) { dialog, _ -> dialog.dismiss() - }) + } val dialog : AlertDialog = alertDialogBuilder.create() dialog.show() diff --git a/app/src/main/java/id/husni/sultengcovid/adapter/DistrictAdapter.kt b/app/src/main/java/id/husni/sultengcovid/adapter/DistrictAdapter.kt index 80bf8c2..b8503ac 100644 --- a/app/src/main/java/id/husni/sultengcovid/adapter/DistrictAdapter.kt +++ b/app/src/main/java/id/husni/sultengcovid/adapter/DistrictAdapter.kt @@ -43,7 +43,7 @@ class DistrictAdapter(val context: Context?) : } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): DistrictAdapter.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view : View = LayoutInflater.from(context).inflate(R.layout.district_item_holder, parent, false) return ViewHolder(view) } @@ -52,7 +52,7 @@ class DistrictAdapter(val context: Context?) : return districtArray.size } - override fun onBindViewHolder(holder: DistrictAdapter.ViewHolder, position: Int) { + override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bindData(districtArray[position]) } diff --git a/app/src/main/java/id/husni/sultengcovid/adapter/HospitalAdapter.kt b/app/src/main/java/id/husni/sultengcovid/adapter/HospitalAdapter.kt index 2d86ee4..a30d2c9 100644 --- a/app/src/main/java/id/husni/sultengcovid/adapter/HospitalAdapter.kt +++ b/app/src/main/java/id/husni/sultengcovid/adapter/HospitalAdapter.kt @@ -49,7 +49,7 @@ class HospitalAdapter (val context: Context?) : } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): HospitalAdapter.ViewHolder { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val view : View = LayoutInflater.from(context).inflate(R.layout.hospital_item_holder, parent, false) return ViewHolder(view) } @@ -58,7 +58,7 @@ class HospitalAdapter (val context: Context?) : return hospitalArray.size } - override fun onBindViewHolder(holder: HospitalAdapter.ViewHolder, position: Int) { + override fun onBindViewHolder(holder: ViewHolder, position: Int) { holder.bindData(hospitalArray[position]) } } \ No newline at end of file diff --git a/app/src/main/java/id/husni/sultengcovid/adapter/NewsAdapter.kt b/app/src/main/java/id/husni/sultengcovid/adapter/NewsAdapter.kt index 68131fa..57358b0 100644 --- a/app/src/main/java/id/husni/sultengcovid/adapter/NewsAdapter.kt +++ b/app/src/main/java/id/husni/sultengcovid/adapter/NewsAdapter.kt @@ -46,7 +46,7 @@ class NewsAdapter (val context : Context) : RecyclerView.Adapter + fun getProvinceData() : Observable //District @GET(AppsUtilities.ENDPOINT_DISTRICT) fun getDistrictData() : Call diff --git a/app/src/main/java/id/husni/sultengcovid/serviceapi/RetrofitServiceApi.kt b/app/src/main/java/id/husni/sultengcovid/serviceapi/RetrofitServiceApi.kt index 8eb240a..6e3a9bc 100644 --- a/app/src/main/java/id/husni/sultengcovid/serviceapi/RetrofitServiceApi.kt +++ b/app/src/main/java/id/husni/sultengcovid/serviceapi/RetrofitServiceApi.kt @@ -6,6 +6,7 @@ package id.husni.sultengcovid.serviceapi +import hu.akarnokd.rxjava3.retrofit.RxJava3CallAdapterFactory import id.husni.sultengcovid.utilities.AppsUtilities import okhttp3.OkHttpClient import retrofit2.Retrofit @@ -14,6 +15,7 @@ import java.util.concurrent.TimeUnit object RetrofitServiceApi { private val gson = GsonConverterFactory.create() + private val rxJava3Adapter = RxJava3CallAdapterFactory.create() private val okHttpClient = OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) @@ -21,6 +23,7 @@ object RetrofitServiceApi { val retrofit = Retrofit.Builder() .baseUrl(AppsUtilities.BASE_URL) .addConverterFactory(gson) + .addCallAdapterFactory(rxJava3Adapter) .client(okHttpClient) .build() as Retrofit val retrofitNews = Retrofit.Builder() diff --git a/app/src/main/java/id/husni/sultengcovid/viewmodel/ProvinceViewModel.kt b/app/src/main/java/id/husni/sultengcovid/viewmodel/ProvinceViewModel.kt deleted file mode 100644 index af219ad..0000000 --- a/app/src/main/java/id/husni/sultengcovid/viewmodel/ProvinceViewModel.kt +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2020. - * Made with ❤ by Moh Husni Mubaraq - * Not For Commercial Purpose - */ - -package id.husni.sultengcovid.viewmodel - -import androidx.lifecycle.MutableLiveData -import androidx.lifecycle.ViewModel -import id.husni.sultengcovid.serviceapi.ApiEndpoint -import id.husni.sultengcovid.serviceapi.RetrofitServiceApi -import id.husni.sultengcovid.model.Province -import retrofit2.Call -import retrofit2.Callback -import retrofit2.Response - - -class ProvinceViewModel : ViewModel() { - val provinceMute = MutableLiveData() - fun setProvinceData() { - val retrofit = RetrofitServiceApi.retrofit - val apiEndpoint = retrofit.create(ApiEndpoint::class.java) - val call: Call = apiEndpoint.getProvinceData() - call.enqueue(object : Callback { - override fun onResponse(call: Call, response: Response) { - provinceMute.value = response.body() - } - - override fun onFailure(call: Call, t: Throwable) { - - } - }) - } - - fun getProvinceLiveData(): MutableLiveData { - return provinceMute - } -} \ No newline at end of file diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index afc4a6b..b1ca85c 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -40,4 +40,5 @@ 5. Better at Home NewsApi News + Message diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 2458a97..8f8bc4b 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -40,4 +40,5 @@ 5. Lebih Baik Dirumah Saja NewsApi Berita + Pesan diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c16d6fc..b1ca85c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,5 +40,5 @@ 5. Better at Home NewsApi News - \" Message\" + Message diff --git a/build.gradle b/build.gradle index 2281c16..436a50f 100644 --- a/build.gradle +++ b/build.gradle @@ -21,6 +21,7 @@ allprojects { repositories { google() jcenter() + maven { url "https://oss.jfrog.org/libs-snapshot" } } }