diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt index ead34f9..d2a95a8 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt @@ -3,6 +3,8 @@ import android.content.Context import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject import com.google.gson.JsonParser import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.utils.SaveKeyValues @@ -32,6 +34,18 @@ return jsonObject.get("message").asString } +val gson by lazy { Gson() } + +fun String.getResponseHeader(): Pair { + if (this.isBlank()) { + return Pair(404, "Invalid Response") + } + val jsonObject = gson.fromJson(this, JsonObject::class.java) + val code = jsonObject.get("code").asInt + val message = jsonObject.get("message").asString + return Pair(code, message) +} + //拼接图片地址 fun String.combineImagePath(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt index ead34f9..d2a95a8 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt @@ -3,6 +3,8 @@ import android.content.Context import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject import com.google.gson.JsonParser import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.utils.SaveKeyValues @@ -32,6 +34,18 @@ return jsonObject.get("message").asString } +val gson by lazy { Gson() } + +fun String.getResponseHeader(): Pair { + if (this.isBlank()) { + return Pair(404, "Invalid Response") + } + val jsonObject = gson.fromJson(this, JsonObject::class.java) + val code = jsonObject.get("code").asInt + val message = jsonObject.get("message").asString + return Pair(code, message) +} + //拼接图片地址 fun String.combineImagePath(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 13f14d4..4e5dfcc 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -22,19 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog -import com.pengxh.kt.lite.widget.EmptyView import com.pengxh.kt.lite.widget.TitleBarView class AlarmListActivity : KotlinBaseActivity() { - private val kTag = "AlarmListActivity" - private val context = this@AlarmListActivity + private val context = this private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter private var dictModels: MutableList = ArrayList() + private var type = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -60,7 +58,9 @@ .setOnDialogButtonClickListener(object : ConditionalFilterDialog.OnDialogButtonClickListener { override fun onConfirmClick(type: String) { - alarmViewModel.getAlarmListByPage(context, type, 1) + this@AlarmListActivity.type = type + this@AlarmListActivity.page = 1 + getAlarmListByPage() } override fun onCancelClick() {} @@ -80,40 +80,85 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel.alarmModel.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } + getAlarmListByPage() + } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe + override fun observeRequestState() { + + } + + override fun initEvent() { + binding.refreshView.setOnRefreshListener { + if (!isNetworkConnected()) { + binding.refreshView.finishRefresh() + "网络似乎已经断开,请检查网络".show(this) + return@setOnRefreshListener + } + isRefresh = true + page = 1 + getAlarmListByPage() + } + binding.refreshView.setOnLoadMoreListener { + if (!isNetworkConnected()) { + binding.refreshView.finishLoadMore() + "网络似乎已经断开,请检查网络".show(this) + return@setOnLoadMoreListener + } + isLoadMore = true + page++ + getAlarmListByPage() + } + } + + private fun getAlarmListByPage() { + alarmViewModel.getAlarmListByPage( + type, + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getAlarmListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - alarmAdapter.loadMore(dataRows) - } - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - initRecyclerView(dataRows) + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) + } + + else -> { + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + initRecyclerView(dataRows) + } } } } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) } - } - getAlarmListByPage() + ) } private fun initRecyclerView(dataRows: MutableList) { @@ -187,57 +232,4 @@ } }) } - - override fun observeRequestState() { - alarmViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } - } - - override fun initEvent() { - binding.refreshView.setOnRefreshListener { - if (!isNetworkConnected()) { - binding.refreshView.finishRefresh() - "网络似乎已经断开,请检查网络".show(this) - return@setOnRefreshListener - } - isRefresh = true - page = 1 - getAlarmListByPage() - } - binding.refreshView.setOnLoadMoreListener { - if (!isNetworkConnected()) { - binding.refreshView.finishLoadMore() - "网络似乎已经断开,请检查网络".show(this) - return@setOnLoadMoreListener - } - isLoadMore = true - page++ - getAlarmListByPage() - } - - binding.emptyView.setOnClickListener(object : EmptyView.OnClickListener { - override fun onReloadButtonClicked() { - getAlarmListByPage() - } - }) - } - - private fun getAlarmListByPage() { - alarmViewModel.getAlarmListByPage(this, "", page) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt index ead34f9..d2a95a8 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt @@ -3,6 +3,8 @@ import android.content.Context import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject import com.google.gson.JsonParser import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.utils.SaveKeyValues @@ -32,6 +34,18 @@ return jsonObject.get("message").asString } +val gson by lazy { Gson() } + +fun String.getResponseHeader(): Pair { + if (this.isBlank()) { + return Pair(404, "Invalid Response") + } + val jsonObject = gson.fromJson(this, JsonObject::class.java) + val code = jsonObject.get("code").asInt + val message = jsonObject.get("message").asString + return Pair(code, message) +} + //拼接图片地址 fun String.combineImagePath(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 13f14d4..4e5dfcc 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -22,19 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog -import com.pengxh.kt.lite.widget.EmptyView import com.pengxh.kt.lite.widget.TitleBarView class AlarmListActivity : KotlinBaseActivity() { - private val kTag = "AlarmListActivity" - private val context = this@AlarmListActivity + private val context = this private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter private var dictModels: MutableList = ArrayList() + private var type = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -60,7 +58,9 @@ .setOnDialogButtonClickListener(object : ConditionalFilterDialog.OnDialogButtonClickListener { override fun onConfirmClick(type: String) { - alarmViewModel.getAlarmListByPage(context, type, 1) + this@AlarmListActivity.type = type + this@AlarmListActivity.page = 1 + getAlarmListByPage() } override fun onCancelClick() {} @@ -80,40 +80,85 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel.alarmModel.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } + getAlarmListByPage() + } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe + override fun observeRequestState() { + + } + + override fun initEvent() { + binding.refreshView.setOnRefreshListener { + if (!isNetworkConnected()) { + binding.refreshView.finishRefresh() + "网络似乎已经断开,请检查网络".show(this) + return@setOnRefreshListener + } + isRefresh = true + page = 1 + getAlarmListByPage() + } + binding.refreshView.setOnLoadMoreListener { + if (!isNetworkConnected()) { + binding.refreshView.finishLoadMore() + "网络似乎已经断开,请检查网络".show(this) + return@setOnLoadMoreListener + } + isLoadMore = true + page++ + getAlarmListByPage() + } + } + + private fun getAlarmListByPage() { + alarmViewModel.getAlarmListByPage( + type, + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getAlarmListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - alarmAdapter.loadMore(dataRows) - } - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - initRecyclerView(dataRows) + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) + } + + else -> { + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + initRecyclerView(dataRows) + } } } } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) } - } - getAlarmListByPage() + ) } private fun initRecyclerView(dataRows: MutableList) { @@ -187,57 +232,4 @@ } }) } - - override fun observeRequestState() { - alarmViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } - } - - override fun initEvent() { - binding.refreshView.setOnRefreshListener { - if (!isNetworkConnected()) { - binding.refreshView.finishRefresh() - "网络似乎已经断开,请检查网络".show(this) - return@setOnRefreshListener - } - isRefresh = true - page = 1 - getAlarmListByPage() - } - binding.refreshView.setOnLoadMoreListener { - if (!isNetworkConnected()) { - binding.refreshView.finishLoadMore() - "网络似乎已经断开,请检查网络".show(this) - return@setOnLoadMoreListener - } - isLoadMore = true - page++ - getAlarmListByPage() - } - - binding.emptyView.setOnClickListener(object : EmptyView.OnClickListener { - override fun onReloadButtonClicked() { - getAlarmListByPage() - } - }) - } - - private fun getAlarmListByPage() { - alarmViewModel.getAlarmListByPage(this, "", page) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index d1bd1b8..514b74c 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -1,41 +1,29 @@ package com.casic.br.operationsite.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage +import com.casic.br.operationsite.extensions.getResponseHeader import com.casic.br.operationsite.model.AlarmListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.unpackingResponse class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val alarmModel = MutableLiveData() - - fun getAlarmListByPage(context: Context, alarmType: String, page: Int) = launch({ - loadState.value = LoadState.Loading + fun getAlarmListByPage( + alarmType: String, + page: Int, + onLoading: () -> Unit, + onSuccess: (AlarmListModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() val response = RetrofitServiceManager.getAlarmListByPage(alarmType, page) - when (response.getResponseCode()) { - 200 -> { - alarmModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { - loadState.value = LoadState.Fail - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt index ead34f9..d2a95a8 100644 --- a/app/src/main/java/com/casic/br/operationsite/extensions/String.kt +++ b/app/src/main/java/com/casic/br/operationsite/extensions/String.kt @@ -3,6 +3,8 @@ import android.content.Context import com.casic.br.operationsite.callback.OnImageCompressListener import com.casic.br.operationsite.utils.LocaleConstant +import com.google.gson.Gson +import com.google.gson.JsonObject import com.google.gson.JsonParser import com.pengxh.kt.lite.extensions.createCompressImageDir import com.pengxh.kt.lite.utils.SaveKeyValues @@ -32,6 +34,18 @@ return jsonObject.get("message").asString } +val gson by lazy { Gson() } + +fun String.getResponseHeader(): Pair { + if (this.isBlank()) { + return Pair(404, "Invalid Response") + } + val jsonObject = gson.fromJson(this, JsonObject::class.java) + val code = jsonObject.get("code").asInt + val message = jsonObject.get("message").asString + return Pair(code, message) +} + //拼接图片地址 fun String.combineImagePath(): String { if (this.isEmpty()) return this diff --git a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt index 13f14d4..4e5dfcc 100644 --- a/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt +++ b/app/src/main/java/com/casic/br/operationsite/view/AlarmListActivity.kt @@ -22,19 +22,17 @@ import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.extensions.toJson import com.pengxh.kt.lite.utils.ActivityStackManager -import com.pengxh.kt.lite.utils.LoadState import com.pengxh.kt.lite.utils.LoadingDialog -import com.pengxh.kt.lite.widget.EmptyView import com.pengxh.kt.lite.widget.TitleBarView class AlarmListActivity : KotlinBaseActivity() { - private val kTag = "AlarmListActivity" - private val context = this@AlarmListActivity + private val context = this private val systemViewModel by lazy { ViewModelProvider(this)[SystemViewModel::class.java] } private val alarmViewModel by lazy { ViewModelProvider(this)[AlarmViewModel::class.java] } private lateinit var alarmAdapter: NormalRecyclerAdapter private var dictModels: MutableList = ArrayList() + private var type = "" private var page = 1 private var isRefresh = false private var isLoadMore = false @@ -60,7 +58,9 @@ .setOnDialogButtonClickListener(object : ConditionalFilterDialog.OnDialogButtonClickListener { override fun onConfirmClick(type: String) { - alarmViewModel.getAlarmListByPage(context, type, 1) + this@AlarmListActivity.type = type + this@AlarmListActivity.page = 1 + getAlarmListByPage() } override fun onCancelClick() {} @@ -80,40 +80,85 @@ } systemViewModel.getSystemDict(this, "alarmType") - alarmViewModel.alarmModel.observe(this) { - if (it.code == 200) { - val dataRows = it.data?.rows!! - when { - isRefresh -> { - binding.refreshView.finishRefresh() - isRefresh = false - alarmAdapter.refresh(dataRows) - } + getAlarmListByPage() + } - isLoadMore -> { - binding.refreshView.finishLoadMore() - isLoadMore = false - if (dataRows.isEmpty()) { - "到底了,别拉了".show(this) - return@observe + override fun observeRequestState() { + + } + + override fun initEvent() { + binding.refreshView.setOnRefreshListener { + if (!isNetworkConnected()) { + binding.refreshView.finishRefresh() + "网络似乎已经断开,请检查网络".show(this) + return@setOnRefreshListener + } + isRefresh = true + page = 1 + getAlarmListByPage() + } + binding.refreshView.setOnLoadMoreListener { + if (!isNetworkConnected()) { + binding.refreshView.finishLoadMore() + "网络似乎已经断开,请检查网络".show(this) + return@setOnLoadMoreListener + } + isLoadMore = true + page++ + getAlarmListByPage() + } + } + + private fun getAlarmListByPage() { + alarmViewModel.getAlarmListByPage( + type, + page, + onLoading = { + if (isRefresh || isLoadMore) { + return@getAlarmListByPage + } + LoadingDialog.show(this, "数据加载中,请稍后...") + }, + onSuccess = { + LoadingDialog.dismiss() + if (it.code == 200) { + val dataRows = it.data?.rows!! + when { + isRefresh -> { + binding.refreshView.finishRefresh() + isRefresh = false + alarmAdapter.refresh(dataRows) } - alarmAdapter.loadMore(dataRows) - } - else -> { - if (dataRows.isEmpty()) { - binding.emptyView.visibility = View.VISIBLE - binding.recyclerView.visibility = View.GONE - } else { - binding.emptyView.visibility = View.GONE - binding.recyclerView.visibility = View.VISIBLE - initRecyclerView(dataRows) + isLoadMore -> { + binding.refreshView.finishLoadMore() + isLoadMore = false + if (dataRows.isEmpty()) { + "到底了,别拉了".show(this) + return@getAlarmListByPage + } + alarmAdapter.loadMore(dataRows) + } + + else -> { + if (dataRows.isEmpty()) { + binding.emptyView.visibility = View.VISIBLE + binding.recyclerView.visibility = View.GONE + } else { + binding.emptyView.visibility = View.GONE + binding.recyclerView.visibility = View.VISIBLE + initRecyclerView(dataRows) + } } } } + }, + onFailed = { + LoadingDialog.dismiss() + it.show(this) } - } - getAlarmListByPage() + ) } private fun initRecyclerView(dataRows: MutableList) { @@ -187,57 +232,4 @@ } }) } - - override fun observeRequestState() { - alarmViewModel.loadState.observe(this) { - if (isRefresh || isLoadMore) { - return@observe - } - when (it) { - LoadState.Loading -> LoadingDialog.show(this, "数据加载中,请稍后...") - - LoadState.Success -> { - LoadingDialog.dismiss() - } - - LoadState.Fail -> { - LoadingDialog.dismiss() - "数据加载失败,请重试".show(this) - } - } - } - } - - override fun initEvent() { - binding.refreshView.setOnRefreshListener { - if (!isNetworkConnected()) { - binding.refreshView.finishRefresh() - "网络似乎已经断开,请检查网络".show(this) - return@setOnRefreshListener - } - isRefresh = true - page = 1 - getAlarmListByPage() - } - binding.refreshView.setOnLoadMoreListener { - if (!isNetworkConnected()) { - binding.refreshView.finishLoadMore() - "网络似乎已经断开,请检查网络".show(this) - return@setOnLoadMoreListener - } - isLoadMore = true - page++ - getAlarmListByPage() - } - - binding.emptyView.setOnClickListener(object : EmptyView.OnClickListener { - override fun onReloadButtonClicked() { - getAlarmListByPage() - } - }) - } - - private fun getAlarmListByPage() { - alarmViewModel.getAlarmListByPage(this, "", page) - } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt index d1bd1b8..514b74c 100644 --- a/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt +++ b/app/src/main/java/com/casic/br/operationsite/vm/AlarmViewModel.kt @@ -1,41 +1,29 @@ package com.casic.br.operationsite.vm -import android.content.Context -import androidx.lifecycle.MutableLiveData -import com.casic.br.operationsite.extensions.getResponseCode -import com.casic.br.operationsite.extensions.getResponseMessage +import com.casic.br.operationsite.extensions.getResponseHeader import com.casic.br.operationsite.model.AlarmListModel import com.casic.br.operationsite.retrofit.RetrofitServiceManager -import com.google.gson.Gson -import com.google.gson.reflect.TypeToken import com.pengxh.kt.lite.base.BaseViewModel import com.pengxh.kt.lite.extensions.launch -import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.utils.LoadState +import com.pengxh.kt.lite.extensions.unpackingResponse class AlarmViewModel : BaseViewModel() { - - private val gson = Gson() - val alarmModel = MutableLiveData() - - fun getAlarmListByPage(context: Context, alarmType: String, page: Int) = launch({ - loadState.value = LoadState.Loading + fun getAlarmListByPage( + alarmType: String, + page: Int, + onLoading: () -> Unit, + onSuccess: (AlarmListModel) -> Unit, + onFailed: (String) -> Unit + ) = launch({ + onLoading() val response = RetrofitServiceManager.getAlarmListByPage(alarmType, page) - when (response.getResponseCode()) { - 200 -> { - alarmModel.value = gson.fromJson( - response, object : TypeToken() {}.type - ) - loadState.value = LoadState.Success - } - - else -> { - loadState.value = LoadState.Fail - response.getResponseMessage().show(context) - } + val header = response.getResponseHeader() + if (header.first == 200) { + onSuccess(unpackingResponse(response)) + } else { + onFailed(header.second) } }, { - loadState.value = LoadState.Fail - it.printStackTrace() + onFailed(it.message ?: "Unknown error") }) } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_alarm_list.xml b/app/src/main/res/layout/activity_alarm_list.xml index 4365604..d1bf9c8 100644 --- a/app/src/main/res/layout/activity_alarm_list.xml +++ b/app/src/main/res/layout/activity_alarm_list.xml @@ -25,7 +25,8 @@ + android:layout_height="match_parent" + app:show_reload_button="false" />