fix bug of func config

This commit is contained in:
zhongchao
2022-10-27 12:07:06 +08:00
parent b91f1d0675
commit fa31960b9c
8 changed files with 76 additions and 45 deletions

View File

@@ -11,6 +11,7 @@ object CallerDevaToolsFuncConfigListenerManager {
ConcurrentHashMap()
private val cacheMap = mutableMapOf<String, MutableList<SubBiz>>()
private val viewCacheMap = mutableMapOf<String, Boolean>()
/**
* 添加监听
@@ -20,16 +21,18 @@ object CallerDevaToolsFuncConfigListenerManager {
fun registerDevaToolsFuncConfigListener(
@Nullable biz: String,
@Nullable tag: String,
onlyViewRegister:Boolean = false,
@Nullable listener: IMoGoDevaToolsFuncConfigListener
) {
if (M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.containsKey("$biz'_'$tag")) {
return
}
M_DEVA_TOOLS_FUNC_CONFIG_LISTENER["$biz'_'$tag"] = listener
viewCacheMap["$biz'_'$tag"] = onlyViewRegister
cacheMap[biz]?.let {
if (it.size > 0) {
invokeDevaToolsFuncConfigBizUpdate(biz, it)
invokeDevaToolsFuncConfigBizUpdate(biz, it, tag)
}
}
}
@@ -43,6 +46,7 @@ object CallerDevaToolsFuncConfigListenerManager {
return
}
M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.remove("$biz'_'$tag")
viewCacheMap.remove("$biz'_'$tag")
}
/**
@@ -63,15 +67,32 @@ object CallerDevaToolsFuncConfigListenerManager {
/**
* 由订阅方判断Type类型聚合一些
*/
fun invokeDevaToolsFuncConfigBizUpdate(biz: String, list: MutableList<SubBiz>) {
fun invokeDevaToolsFuncConfigBizUpdate(
biz: String,
list: MutableList<SubBiz>,
tag: String = ""
) {
cacheMap[biz] = list
M_DEVA_TOOLS_FUNC_CONFIG_LISTENER.forEach {
val key = it.key
if (key.contains(biz)) {
//全量更新
if (tag.isEmpty()) {
list.forEach { subBiz ->
val listener = it.value
listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data)
}
return@forEach
}
// 根据biz_tag选择行下发
val key = it.key
if (key.contains("$biz'_'$tag")) {
list.forEach { subBiz ->
val listener = it.value
if(viewCacheMap["$biz'_'$tag"] == true){
listener.updateBizView(subBiz.type,subBiz.lock)
}else{
listener.updateBizData(subBiz.type, subBiz.state, subBiz.lock, subBiz.data)
}
}
}
}
}