[6.1.0] refactor: 使用FlowBus解耦TaxiFragment和TaxiCurrentTaskFragment ;

This commit is contained in:
aibingbing
2023-09-18 17:05:17 +08:00
parent a05dab3097
commit 1437d34a4a
5 changed files with 69 additions and 32 deletions

View File

@@ -0,0 +1,16 @@
package com.mogo.och.taxi.constant;
public interface TaxiDriverEventConst {
interface TaxiFragmentEvent {
String EVENT_TYPE_SHOW_DEBUG_VIEW = "event_type_taxi_fragment_show_debug_view";
String EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_amap_navi_to_station_fragment";
String EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT = "event_type_taxi_fragment_show_routing_to_station_fragment";
String EVENT_TYPE_START_NAVI_TO_END_STATION = "event_type_taxi_fragment_start_navi_to_end_station";
}
interface TabFragmentEvent {
String EVENT_TYPE_SHOW_RED_POINT = "event_type_tab_fragment_show_red_point";
String EVENT_TYPE_TASK_WITH_ORDER_CHANGED = "event_type_tab_fragment_task_with_order_changed";
}
}

View File

@@ -1,6 +0,0 @@
package com.mogo.och.taxi.constant
object TaxiDriverEventConst {
val EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT = "event_type_tab_fragment_show_red_point"
val EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED = "event_type_tab_fragment_task_with_order_changed"
}

View File

@@ -15,7 +15,9 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.provider.LoginService
import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.taxi.R
import com.mogo.och.taxi.constant.TaxiDriverEventConst
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.network.TaxiDriverLoginImpl
import com.mogo.och.taxi.ui.personal.TaxiPersonalDialogFragment
@@ -115,6 +117,7 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
override fun initViews() {
super.initViews()
initFlowEvent()
initFragment()
hideDebugPanel()
switchVRFlatMode(MogoStatusManager.getInstance().isVrMode)
@@ -122,6 +125,25 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
initOrderDebugView()
}
private fun initFlowEvent() {
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW)
.register(this) { _ ->
clickOrderDebugView()
}
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
.register(this) { show ->
showAmapNaviToStationFragment(show)
}
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT)
.register(this) { show ->
showRoutingToStationFragment(show)
}
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION)
.register(this) { show ->
startNaviToEndStation(show)
}
}
private fun initFragment() {
taskTabFragment = WeakReference(TaxiTaskTabFragment.newInstance())
val transaction: FragmentTransaction = childFragmentManager.beginTransaction()

View File

@@ -41,7 +41,6 @@ import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_END_MAP_MAKER
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TAXI_START_MAP_MAKER
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.TYPE_MARKER_TAXI_ORDER
import com.mogo.och.taxi.ui.base.TaxiFragment
import com.mogo.och.taxi.utils.MapMakerManager
import com.mogo.och.taxi.utils.TaskUtils
import kotlinx.android.synthetic.main.task_fragment_current.cancelOrder
@@ -76,10 +75,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
companion object {
const val TAG = M_TAXI + "TaxiCurrentTaskFragment"
private var mTaxiFragment: TaxiFragment? = null
fun newInstance(taxiFragment: TaxiFragment?): TaxiCurrentTaskFragment {
mTaxiFragment = taxiFragment
fun newInstance(): TaxiCurrentTaskFragment {
val args = Bundle()
val fragment = TaxiCurrentTaskFragment()
fragment.arguments = args
@@ -146,7 +143,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
private fun initTaskDebugViewListener() {
taskStatus.setOnLongClickListener {
mTaxiFragment?.clickOrderDebugView()
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_DEBUG_VIEW)
.post(this.lifecycleScope, true)
false
}
}
@@ -296,7 +294,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
}
private fun updateNextTaskFragment(result: QueryCurrentTaskRespBean.Result?) {
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED)
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED)
.post(this.lifecycleScope, result)
if (result != null
@@ -305,10 +303,10 @@ class TaxiCurrentTaskFragment : BaseFragment(),
&& result.currentStatus != TaskStatusEnum.CompleteTask.code
) {
VoiceNotice.showNotice("已为您提前接到下一订单,待完成当前任务后服务")
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
.post(this.lifecycleScope, true)
} else {
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
.post(this.lifecycleScope, false)
}
}
@@ -327,7 +325,7 @@ class TaxiCurrentTaskFragment : BaseFragment(),
private fun updateRemainDistanceAndTime(isVoicePlay: Boolean) {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
d(TAG, "updateRemainDistanceAndTime ${currentTaskWithOrder.currentStatus}")
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code){
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code) {
if (currentTaskWithOrder.endSite != null) {
startNaviToStation(
isVoicePlay, currentTaskWithOrder.endSite!!.gcjLat,
@@ -335,10 +333,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
)
}
}else if(currentTaskWithOrder.currentStatus == TaskStatusEnum.CompleteTask.code &&
currentTaskWithOrder.taskType <= TaskTypeEnum.ToOrderStartTask.code){
} else if (currentTaskWithOrder.currentStatus == TaskStatusEnum.CompleteTask.code &&
currentTaskWithOrder.taskType <= TaskTypeEnum.ToOrderStartTask.code
) {
taskOtherInfo.text = "已到达 ${currentTaskWithOrder.endSite?.siteName}"
}else {
} else {
taskOtherInfo.text = "距离 -- 公里, 用时 -- 分钟"
}
}
@@ -588,8 +587,11 @@ class TaxiCurrentTaskFragment : BaseFragment(),
naviToStart.visibility = View.GONE
naviToEnd.visibility = View.GONE
AmapNaviToDestinationModel.getInstance(context).destroyAmaNavi()
mTaxiFragment?.showAmapNaviToStationFragment(false)
mTaxiFragment?.showRoutingToStationFragment(false)
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
.post(this.lifecycleScope, false)
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_ROUTING_TO_STATION_FRAGMENT)
.post(this.lifecycleScope, false)
}
private fun startNaviToStation(isVoicePlay: Boolean, stationLat: Double, stationLng: Double) {
@@ -713,7 +715,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
* @param isShow
*/
private fun showNaviToEndStationFragment(isShow: Boolean) {
mTaxiFragment?.startNaviToEndStation(isShow)
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_START_NAVI_TO_END_STATION)
.post(this.lifecycleScope, isShow)
}
override fun onCurrentNaviDistAndTimeChanged(meters: Int, timeInSecond: Long) {
@@ -723,7 +726,8 @@ class TaxiCurrentTaskFragment : BaseFragment(),
override fun reInitNaviAmap(isPlay: Boolean, isRestart: Boolean) {
d(TAG, "isPlay = $isPlay, isRestart=$isRestart")
if (!isRestart) {
mTaxiFragment?.showAmapNaviToStationFragment(false)
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
.post(this.lifecycleScope, false)
return
}
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder()
@@ -753,10 +757,14 @@ class TaxiCurrentTaskFragment : BaseFragment(),
fun onNaviToEndStationByAmap(isShow: Boolean) {
val currentTaskWithOrder = TaxiTaskModel.getCurrentTaskWithOrder() ?: return
mTaxiFragment?.showAmapNaviToStationFragment(
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
isShow else true
)
FlowBus.with<Boolean>(TaxiDriverEventConst.TaxiFragmentEvent.EVENT_TYPE_SHOW_AMAP_NAVI_TO_STATION_FRAGMENT)
.post(
this.lifecycleScope,
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
isShow
else
true
)
updateRemainDistanceAndTime(
if (currentTaskWithOrder.currentStatus == TaskStatusEnum.StartTask.code)
isShow else true

View File

@@ -19,7 +19,6 @@ import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.QueryCurrentTaskRespBean
import com.mogo.och.taxi.constant.TaxiDriverEventConst
import com.mogo.och.taxi.ui.base.TaxiFragment
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_tab
import kotlinx.android.synthetic.main.taxi_server_orders_panel.module_och_taxi_view_pager
import kotlinx.android.synthetic.main.taxi_server_orders_panel.wait_order_num
@@ -84,9 +83,7 @@ class TaxiTaskTabFragment : BaseFragment() {
if (TAB_POSITION_CURRENT == position) {
module_och_taxi_tab.addTab(tab, true)
changeTabLayoutUI(tab, true)
currentTaskFragment = TaxiCurrentTaskFragment.newInstance(
parentFragment as TaxiFragment?
)
currentTaskFragment = TaxiCurrentTaskFragment.newInstance()
mFragments.add(currentTaskFragment!!)
} else if (TAB_POSITION_NEXT == position) {
module_och_taxi_tab.addTab(tab)
@@ -184,11 +181,11 @@ class TaxiTaskTabFragment : BaseFragment() {
}
private fun initEventBus() {
FlowBus.with<Boolean>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_SHOW_RED_POINT)
FlowBus.with<Boolean>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_SHOW_RED_POINT)
.register(this) { show ->
wait_order_num.visibility = if (show) View.VISIBLE else View.GONE
}
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.EVENT_TYPE_TAB_FRAGMENT_TASK_WITH_ORDER_CHANGED)
FlowBus.with<QueryCurrentTaskRespBean.Result?>(TaxiDriverEventConst.TabFragmentEvent.EVENT_TYPE_TASK_WITH_ORDER_CHANGED)
.register(this) { taskWithOrder ->
nextTaskFragment?.onTaskDataChanged(taskWithOrder)
}