[宣传视频] refactor: 非Sass环境默认只从本地读取配置数据;

feat: 请求数据成功但是数据为空时,使用本地配置数据,保证有内容能展示;
This commit is contained in:
aibingbing
2023-12-18 19:29:20 +08:00
parent 1da1520122
commit 365bd4ca2e

View File

@@ -5,6 +5,7 @@ import android.content.Context
import android.text.TextUtils
import com.google.gson.reflect.TypeToken
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
@@ -75,7 +76,22 @@ object MediaDataSourceManager {
if (!mMediaDataSourceListenerMap.containsKey(tag)) {
mMediaDataSourceListenerMap[tag] = dataSourceListener
}
startGetMediaDataSourceLoop()
val isSassProject = isSassProject()
CallerLogger.i(
TAG,
"init, 初始化环境 isSassProject=$isSassProject"
)
if (isSassProject) {
startGetMediaDataSourceLoop()
} else {
CallerLogger.i(
TAG,
"init, 使用本地配置数据"
)
//非Sass环境下后端没有实现可配置默认只走本地配置
val localAdDataList = getMediaDataFromLocalConfig()
updateMediaDataSource(localAdDataList)
}
}
fun unInit(tag: String) {
@@ -85,6 +101,13 @@ object MediaDataSourceManager {
}
}
/**
* 是否是Sass环境
*/
private fun isSassProject(): Boolean {
return DebugConfig.getProjectFlavor().lowercase().contains("saas")
}
@SuppressLint("MissingPermission")
private fun startGetMediaDataSourceLoop() {
removeGetMediaDataSourceLoop()
@@ -92,19 +115,22 @@ object MediaDataSourceManager {
if (mRetryCount == RETRY_MAX_COUNT && !mHasEverGetMediaDataFromMis) {
val localAdDataList = getMediaDataFromLocalConfig()
updateMediaDataSource(localAdDataList)
CallerLogger.e(TAG,
CallerLogger.e(
TAG,
"startGetMediaDataSourceLoop失败${mRetryCount}次,先使用本地数据播放"
)
}
if (driverSn.isBlank()) {
CallerLogger.e(TAG, "startGetMediaDataSourceLoop司机屏sn为空跳过本次查询"
CallerLogger.e(
TAG, "startGetMediaDataSourceLoop司机屏sn为空跳过本次查询"
)
mRetryCount++
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
return
}
if (!NetworkUtils.isConnected()) {
CallerLogger.e(TAG, "startGetMediaDataSourceLoop当前无网络跳过本次查询"
CallerLogger.e(
TAG, "startGetMediaDataSourceLoop当前无网络跳过本次查询"
)
mRetryCount++
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 1000L)
@@ -113,7 +139,8 @@ object MediaDataSourceManager {
getMediaDataFromMis(object : OchCommonServiceCallback<MediaDataResp> {
override fun onSuccess(data: MediaDataResp?) {
mHasEverGetMediaDataFromMis = true
CallerLogger.e(TAG,
CallerLogger.e(
TAG,
"startGetMediaDataSourceLoopsuccess, 从管理后台获取到数据MediaData=${
GsonUtils.toJson(
data
@@ -125,21 +152,30 @@ object MediaDataSourceManager {
if (newDataList.isNotEmpty()) {
if (compareMediaDataSource(newDataList)) {
updateMediaDataSource(newDataList)
CallerLogger.e(TAG,
CallerLogger.e(
TAG,
"startGetMediaDataSourceLoopsuccess, 从管理后台获取到数据,更新数据"
)
} else {
CallerLogger.e(TAG,
CallerLogger.e(
TAG,
"startGetMediaDataSourceLoopsuccess, 从管理后台获取到数据,数据无变化"
)
}
} else {
//请求成功获取到后台配置数据了,但是数据为空,此时为了有内容展示,还是使用本地数据更新播放
if (mLastMediaDataSourceList.isEmpty()) {
val localAdDataList = getMediaDataFromLocalConfig()
updateMediaDataSource(localAdDataList)
}
}
// 获取成功后延迟5分钟再查询
UiThreadHandler.postDelayed(getAdDataSourceLoopRunnable, 5 * 60 * 1000L)
}
override fun onFail(code: Int, msg: String?) {
CallerLogger.e(TAG,
CallerLogger.e(
TAG,
"startGetMediaDataSourceLoopfailed, code=$code, msg=$msg"
)
mRetryCount++
@@ -149,7 +185,8 @@ object MediaDataSourceManager {
override fun onError() {
super.onError()
CallerLogger.e(TAG, "startGetMediaDataSourceLooperror, 网络异常"
CallerLogger.e(
TAG, "startGetMediaDataSourceLooperror, 网络异常"
)
mRetryCount++
val delay = if (mHasEverGetMediaDataFromMis) 5000L else 1000L
@@ -163,7 +200,8 @@ object MediaDataSourceManager {
}
private fun getMediaDataFromMis(callback: OchCommonServiceCallback<MediaDataResp>) {
CallerLogger.d(TAG, "getMediaDataFromMis准备发送请求driverSn=$driverSn"
CallerLogger.d(
TAG, "getMediaDataFromMis准备发送请求driverSn=$driverSn"
)
mNetworkService.queryMediaDataFromMis(
sn = driverSn,