TP-62634 | Mqtt fixes (#10554)
This commit is contained in:
@@ -10,14 +10,15 @@ import com.navi.mqtt.model.MqttSdkInitParams
|
||||
import com.naviapp.BuildConfig
|
||||
import com.naviapp.app.NaviApplication
|
||||
import com.naviapp.common.repository.ConfigRepository
|
||||
import com.naviapp.home.activity.NewDashboardActivity.Companion.PAGE_HOME
|
||||
import com.naviapp.utils.COMMA
|
||||
import com.naviapp.utils.Constants
|
||||
import com.naviapp.utils.MqttMessageProviderImpl
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.SupervisorJob
|
||||
import kotlinx.coroutines.launch
|
||||
import javax.inject.Inject
|
||||
|
||||
class MqttSdkInitUseCase
|
||||
@Inject
|
||||
@@ -56,7 +57,11 @@ constructor(
|
||||
topics = clientIdWithTopics
|
||||
)
|
||||
)
|
||||
MqttManager.subscribe(clientIdWithTopics, mqttMessageProviderImpl)
|
||||
MqttManager.subscribe(
|
||||
clientIdWithTopics,
|
||||
PAGE_HOME,
|
||||
mqttMessageProviderImpl
|
||||
)
|
||||
NaviTrackEvent.trackEvent("mqtt_sdk_init_triggered")
|
||||
} else {
|
||||
NaviTrackEvent.trackEvent("mqtt_config_enabled_false")
|
||||
|
||||
@@ -38,6 +38,8 @@ object MqttManager {
|
||||
private lateinit var courierService: CourierService
|
||||
private val addToQueue = arrayListOf<String>()
|
||||
private val mqttListeners = hashMapOf<String, ArrayList<MqttMessageProvider>>()
|
||||
private val mqttListenersScreen = hashSetOf<String>()
|
||||
private val mqttSubscribeTopics = hashSetOf<String>()
|
||||
private val analyticsEventTracker by lazy { MqttAnalytics.mqttAnalytics }
|
||||
|
||||
fun init(context: Context, mqttSdkInitParams: MqttSdkInitParams?) {
|
||||
@@ -102,16 +104,22 @@ object MqttManager {
|
||||
mqttSdkInitParams?.let { params -> mqttConnector.connectMqtt(params) }
|
||||
}
|
||||
|
||||
fun subscribe(topic: String, listener: MqttMessageProvider) {
|
||||
fun subscribe(topic: String, screenName: String, listener: MqttMessageProvider) {
|
||||
var listeners = mqttListeners[topic]
|
||||
if (listeners.isNullOrEmpty()) {
|
||||
listeners = arrayListOf(listener)
|
||||
} else {
|
||||
listeners.add(listener)
|
||||
if (mqttListenersScreen.contains(screenName).not()) {
|
||||
listeners.add(listener)
|
||||
}
|
||||
}
|
||||
mqttListeners[topic] = listeners
|
||||
mqttListenersScreen.add(screenName)
|
||||
if (isConnected()) {
|
||||
subscribeToTopics(topic)
|
||||
if (mqttSubscribeTopics.contains(topic).not()) {
|
||||
subscribeToTopics(topic)
|
||||
mqttSubscribeTopics.add(topic)
|
||||
}
|
||||
} else {
|
||||
addToQueue.add(topic)
|
||||
}
|
||||
@@ -155,7 +163,10 @@ object MqttManager {
|
||||
private fun subscribePendingTopics() {
|
||||
val pendingTopics = ArrayList(addToQueue)
|
||||
pendingTopics.forEach {
|
||||
subscribeToTopics(it)
|
||||
if (mqttSubscribeTopics.contains(it).not()) {
|
||||
subscribeToTopics(it)
|
||||
mqttSubscribeTopics.add(it)
|
||||
}
|
||||
addToQueue.remove(it)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user