refs #6530 feat:refactorOnBackPressed
This commit is contained in:
parent
51d5bcf6ae
commit
387905e89c
|
@ -6,6 +6,7 @@ import es.verdnatura.presentation.view.feature.articulo.model.BarcodeVO
|
|||
import es.verdnatura.presentation.view.feature.articulo.model.ItemCardRowVO
|
||||
import es.verdnatura.presentation.view.feature.articulo.model.ItemProposal
|
||||
import es.verdnatura.presentation.view.feature.buscaritem.model.ItemLocationVO
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ExpeditionInfoSummary
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.RouteInfo
|
||||
|
@ -18,12 +19,15 @@ import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionS
|
|||
import es.verdnatura.presentation.view.feature.paletizador.model.ItemExpeditionTruckVO
|
||||
import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
|
||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
|
||||
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
|
||||
import es.verdnatura.presentation.view.feature.sacador.model.Sale
|
||||
import es.verdnatura.presentation.view.feature.sacador.model.SaleVO
|
||||
import es.verdnatura.presentation.view.feature.smarttag.model.SmartTag
|
||||
import es.verdnatura.presentation.view.feature.truck.model.RoadMapTruck
|
||||
import es.verdnatura.presentation.view.feature.truck.model.StopMapTruck
|
||||
import es.verdnatura.presentation.view.feature.truck.model.StopMapTruckPallet
|
||||
import es.verdnatura.presentation.view.feature.truck.model.TruckAction
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicador
|
||||
import es.verdnatura.presentation.view.feature.ubicador.model.ItemUbicadorVO
|
||||
import es.verdnatura.presentation.view.feature.workermistake.model.WorkerFromMistake
|
||||
|
@ -152,6 +156,23 @@ interface OnMoreClickListenerNew {
|
|||
interface OnTruckClickListener {
|
||||
fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String)
|
||||
}
|
||||
interface OnRoadMapClickListener {
|
||||
fun onRoadMapClickListener(item: RoadMapTruck, entryPoint: String)
|
||||
}
|
||||
interface OnStopMapClickListener {
|
||||
fun onStopMapClickListener(item: StopMapTruck, entryPoint: String, action:TruckAction)
|
||||
}
|
||||
interface OnStopMapLoadClickListener {
|
||||
fun onStopMapClickListener(item: StopMapTruck, entryPoint: String)
|
||||
}
|
||||
interface OnStopMapUnloadClickListener {
|
||||
fun onStopMapClickListener(item: StopMapTruck, entryPoint: String)
|
||||
}
|
||||
|
||||
interface OnPrintClickListener {
|
||||
fun onPrintClickListener(item: StopMapTruckPallet, entryPoint: String)
|
||||
}
|
||||
|
||||
|
||||
interface OnPalletClickListener {
|
||||
fun onPalletClickListener(itemTruck: ItemExpeditionTruckVO, itemPallet: ItemPalletVO)
|
||||
|
@ -247,3 +268,7 @@ interface LoginListener {
|
|||
interface SignListener {
|
||||
fun onApplicationEventAnimation(visibility: Int)
|
||||
}
|
||||
|
||||
interface OnBackPressedListener {
|
||||
fun onBackPressedHandled(): Boolean
|
||||
}
|
|
@ -17,8 +17,10 @@ import es.verdnatura.domain.toDateString
|
|||
import es.verdnatura.domain.toast
|
||||
import es.verdnatura.presentation.base.BaseFragment
|
||||
import es.verdnatura.presentation.base.database
|
||||
import es.verdnatura.presentation.common.OnBackPressedListener
|
||||
import es.verdnatura.presentation.common.OnOptionsSelectedListener
|
||||
import es.verdnatura.presentation.common.ToolBarAdapterTooltip
|
||||
import es.verdnatura.presentation.view.component.CustomDialog
|
||||
import es.verdnatura.presentation.view.feature.delivery.activity.SignedActivity
|
||||
import es.verdnatura.presentation.view.feature.delivery.adapters.ExpeditionLoadUnloadAdapter
|
||||
import es.verdnatura.presentation.view.feature.delivery.model.ClientTicketSalix
|
||||
|
@ -41,7 +43,7 @@ class LoadUnloadFragment(
|
|||
|
||||
) : BaseFragment<FragmentExpeditionLoadunloadDeliveryBinding, DeliveryViewModel>(
|
||||
DeliveryViewModel::class
|
||||
) {
|
||||
), OnBackPressedListener {
|
||||
|
||||
private var adapter: ExpeditionLoadUnloadAdapter? = null
|
||||
private var originalItem: Int = 0
|
||||
|
@ -508,4 +510,23 @@ class LoadUnloadFragment(
|
|||
}
|
||||
adapter!!.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
override fun onBackPressedHandled(): Boolean {
|
||||
|
||||
if (scanned) {
|
||||
var customDialog = CustomDialog(requireContext())
|
||||
customDialog.setTitle(getString(R.string.packagesNotScanned))
|
||||
.setDescription(getString(R.string.savePackages))
|
||||
.setOkButton(getString(R.string.yes)) {
|
||||
customDialog.dismiss()
|
||||
}.setKoButton(getString(R.string.no)) {
|
||||
customDialog.dismiss()
|
||||
ma.onMyBackPressed()
|
||||
}.show()
|
||||
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
}
|
|
@ -1,6 +1,5 @@
|
|||
package es.verdnatura.presentation.view.feature.main.activity
|
||||
|
||||
import es.verdnatura.presentation.view.feature.photos.fragment.PhotosFragment
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.media.MediaPlayer
|
||||
|
@ -11,6 +10,7 @@ import android.view.Menu
|
|||
import android.view.View
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.activity.OnBackPressedDispatcherOwner
|
||||
import androidx.annotation.RequiresApi
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
|
@ -36,11 +36,14 @@ import es.verdnatura.domain.toast
|
|||
import es.verdnatura.presentation.base.BaseActivity
|
||||
import es.verdnatura.presentation.common.MainActivityListener
|
||||
import es.verdnatura.presentation.common.NetworkUtilsApp
|
||||
import es.verdnatura.presentation.common.OnBackPressedListener
|
||||
import es.verdnatura.presentation.common.OnCollectionSelectedListener
|
||||
import es.verdnatura.presentation.common.OnCollectionTicketSelectedListener
|
||||
import es.verdnatura.presentation.common.OnComprobarPalletViewClickListener
|
||||
import es.verdnatura.presentation.common.OnPalletClickListener
|
||||
import es.verdnatura.presentation.common.OnPasillerosItemClickListener
|
||||
import es.verdnatura.presentation.common.OnRoadMapClickListener
|
||||
import es.verdnatura.presentation.common.OnStopMapClickListener
|
||||
import es.verdnatura.presentation.common.OnTruckClickListener
|
||||
import es.verdnatura.presentation.common.TAG
|
||||
import es.verdnatura.presentation.common.addFragment
|
||||
|
@ -51,6 +54,10 @@ import es.verdnatura.presentation.view.feature.articulo.fragment.ItemProposalFra
|
|||
import es.verdnatura.presentation.view.feature.buffer.fragment.BufferFragment
|
||||
import es.verdnatura.presentation.view.feature.buffer.fragment.BufferLoadFragment
|
||||
import es.verdnatura.presentation.view.feature.buscaritem.fragment.BuscarItemFragment
|
||||
import es.verdnatura.presentation.view.feature.category.ChangeCategoryFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.fragment.ReubicationCollectionFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.fragment.ReubicationFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.ubication.ClaimUbicationFragment
|
||||
import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragment
|
||||
import es.verdnatura.presentation.view.feature.collection.fragment.CollectionFragmentPicker
|
||||
|
@ -97,13 +104,11 @@ import es.verdnatura.presentation.view.feature.paletizador.model.ItemPalletVO
|
|||
import es.verdnatura.presentation.view.feature.parking.fragment.ParkingFragment
|
||||
import es.verdnatura.presentation.view.feature.pasillero.fragment.PasilleroFragment
|
||||
import es.verdnatura.presentation.view.feature.pasillero.model.PasillerosItemVO
|
||||
import es.verdnatura.presentation.view.feature.photos.fragment.PhotosFragment
|
||||
import es.verdnatura.presentation.view.feature.precontrol.PreControladorFragment
|
||||
import es.verdnatura.presentation.view.feature.presacador.fragment.EndSacadorFragment
|
||||
import es.verdnatura.presentation.view.feature.presacador.fragment.SectorCollectionReserveFragment
|
||||
import es.verdnatura.presentation.view.feature.qr.QrFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.fragment.ReubicationCollectionFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.fragment.ReubicationFragment
|
||||
import es.verdnatura.presentation.view.feature.claim.fragment.reubication.model.Reubication
|
||||
import es.verdnatura.presentation.view.feature.sacador.fragment.PickerHelperFragment
|
||||
import es.verdnatura.presentation.view.feature.sacador.fragment.SacadorFragment
|
||||
import es.verdnatura.presentation.view.feature.sacador.fragment.SacadorFragmentNew
|
||||
|
@ -111,6 +116,12 @@ import es.verdnatura.presentation.view.feature.sacador.fragment.showticket.ShowT
|
|||
import es.verdnatura.presentation.view.feature.sacador.model.CollectionTicket
|
||||
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO
|
||||
import es.verdnatura.presentation.view.feature.ticket.fragment.TicketAdvanceFragment
|
||||
import es.verdnatura.presentation.view.feature.truck.fragment.RoadMapListFragment
|
||||
import es.verdnatura.presentation.view.feature.truck.fragment.StopMapListFragment
|
||||
import es.verdnatura.presentation.view.feature.truck.fragment.StopMapPalletListFragment
|
||||
import es.verdnatura.presentation.view.feature.truck.model.RoadMapTruck
|
||||
import es.verdnatura.presentation.view.feature.truck.model.StopMapTruck
|
||||
import es.verdnatura.presentation.view.feature.truck.model.TruckAction
|
||||
import es.verdnatura.presentation.view.feature.ubicador.fragment.AutomaticAddItemFragment
|
||||
import es.verdnatura.presentation.view.feature.ubicador.fragment.UbicadorFragmentNew
|
||||
import es.verdnatura.presentation.view.feature.workermistake.fragment.PackingMistakeFragment
|
||||
|
@ -129,7 +140,8 @@ import java.util.concurrent.TimeUnit
|
|||
|
||||
class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickListener,
|
||||
OnTruckClickListener, OnPalletClickListener, OnComprobarPalletViewClickListener,
|
||||
OnCollectionSelectedListener, OnCollectionTicketSelectedListener, MainActivityListener {
|
||||
OnRoadMapClickListener, OnStopMapClickListener, OnCollectionSelectedListener,
|
||||
OnCollectionTicketSelectedListener, MainActivityListener, OnBackPressedDispatcherOwner {
|
||||
|
||||
private var lastBottomMenuItemSelected: ItemMenuVO? = null
|
||||
private lateinit var customDialog: CustomDialogMainActivity
|
||||
|
@ -169,8 +181,13 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
override fun onCreateView(name: String, context: Context, attrs: AttributeSet): View? {
|
||||
|
||||
backDispatcher.addCallback(object : OnBackPressedCallback(true) {
|
||||
backDispatcher.addCallback(object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
|
||||
val fragment = supportFragmentManager.findFragmentById(R.id.main_frame_layout)
|
||||
if (fragment is OnBackPressedListener && fragment.onBackPressedHandled()) {
|
||||
return
|
||||
}
|
||||
onMyBackPressed()
|
||||
}
|
||||
})
|
||||
|
@ -508,6 +525,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
)
|
||||
}
|
||||
|
||||
getString(R.string.titleChangeCategory) -> {
|
||||
addFragmentOnTop(
|
||||
ChangeCategoryFragment.newInstance(item.title),
|
||||
)
|
||||
}
|
||||
|
||||
getString(R.string.titleChecker) -> {/* mainActivityViewmodel.workerActivityAdd(
|
||||
WorkerActionSalix(
|
||||
workerFk = mobileApplication!!.userId!!,
|
||||
|
@ -752,11 +775,17 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
}
|
||||
|
||||
getString(R.string.titleDeliveryTruck) -> {
|
||||
addFragmentOnTop(
|
||||
RoadMapListFragment.newInstance(getString(R.string.titleDeliveryTruck)),
|
||||
getString(R.string.titleDeliveryTruck)
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
getString(R.string.titleInfo) -> {
|
||||
addFragmentOnTop(
|
||||
InfoFragment.newInstance(item.title),
|
||||
getString(R.string.titleInfo)
|
||||
|
||||
InfoFragment.newInstance(item.title), getString(R.string.titleInfo)
|
||||
)
|
||||
|
||||
}
|
||||
|
@ -764,8 +793,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
getString(R.string.titleLog) -> {
|
||||
|
||||
addFragmentOnTop(
|
||||
LogExpeditionFragment.newInstance(item.title),
|
||||
getString(R.string.titleLog)
|
||||
LogExpeditionFragment.newInstance(item.title), getString(R.string.titleLog)
|
||||
)
|
||||
|
||||
}
|
||||
|
@ -773,7 +801,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
getString(R.string.titleLoadTruck) -> {
|
||||
addFragmentOnTop(
|
||||
LoadUnloadFragment.newInstance(item.title, "ON DELIVERY", entryPoint),
|
||||
getString(R.string.titleLoadTruck)
|
||||
getString(R.string.titleLoadTruck)
|
||||
|
||||
)
|
||||
|
||||
|
@ -788,9 +816,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
} else {
|
||||
null
|
||||
}
|
||||
),
|
||||
getString(R.string.titleUnLoadTruck)
|
||||
, delete = true
|
||||
), getString(R.string.titleUnLoadTruck), delete = true
|
||||
)
|
||||
|
||||
}
|
||||
|
@ -799,7 +825,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
addFragmentOnTop(
|
||||
SummaryFragment.newInstance(item.title, "ON DELIVERY", entryPoint.toInt()),
|
||||
getString(R.string.titleDeliverySummary)
|
||||
getString(R.string.titleDeliverySummary)
|
||||
)
|
||||
|
||||
}
|
||||
|
@ -807,8 +833,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
getString(R.string.titleDeliveryRoute) -> {
|
||||
|
||||
addFragmentOnTop(
|
||||
RoutesFragment.newInstance(item.title),
|
||||
getString(R.string.titleDeliverySummary)
|
||||
RoutesFragment.newInstance(item.title), getString(R.string.titleDeliverySummary)
|
||||
)
|
||||
|
||||
}
|
||||
|
@ -874,81 +899,33 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
}
|
||||
|
||||
fun onMyBackPressed() {
|
||||
|
||||
val index = supportFragmentManager.backStackEntryCount - 1
|
||||
var backEntry = ""
|
||||
|
||||
if (index >= 0) {
|
||||
backEntry = supportFragmentManager.getBackStackEntryAt(index).name.toString()
|
||||
/* println("onback LOadUnload $backEntry")
|
||||
if (backEntry.contains("itemShelvingLog")){
|
||||
|
||||
}*/
|
||||
if (backEntry.contains(getString(R.string.titleLoadTruck)) || backEntry.contains(
|
||||
getString(R.string.titleUnLoadTruck)
|
||||
)
|
||||
) {
|
||||
if (LoadUnloadFragment.scanned) {
|
||||
customDialog.setTitle(getString(R.string.packagesNotScanned))
|
||||
.setDescription(getString(R.string.savePackages))
|
||||
.setOkButton(getString(R.string.yes)) {
|
||||
customDialog.dismiss()
|
||||
}.setKoButton(getString(R.string.no)) {
|
||||
backStackFragments(backEntry)
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
|
||||
} else {
|
||||
backStackFragments(backEntry)
|
||||
}
|
||||
} else {
|
||||
backStackFragments(backEntry)
|
||||
}
|
||||
} else {
|
||||
backStackFragments(backEntry)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun backStackFragments(backEntry: String) {
|
||||
try {
|
||||
fm.executePendingTransactions()
|
||||
if (fm.backStackEntryCount > 0) {
|
||||
fm.popBackStackImmediate()
|
||||
|
||||
} else {
|
||||
showCloseSesion()
|
||||
|
||||
}
|
||||
} catch (ex: Exception) {
|
||||
d("$ex")
|
||||
}
|
||||
|
||||
if (fm.backStackEntryCount > 0) {
|
||||
}
|
||||
|
||||
fm.popBackStackImmediate()
|
||||
|
||||
if (!backEntry.isNullOrBlank())
|
||||
|
||||
if (backEntry.contains("fragment.ExpeditionPalletDetailFragment.Companion")) {
|
||||
addFragmentOnTop(ExpeditionTruckListFragment.newInstance())
|
||||
}
|
||||
/* if (backEntry.contains(getString(R.string.titleLog)) || backEntry.contains(
|
||||
getString(
|
||||
R.string.titleInfo
|
||||
)
|
||||
)
|
||||
) {
|
||||
println("backk finish ?? ")
|
||||
private fun showCloseSesion() {
|
||||
customDialog.setTitle(getString(R.string.closeSession))
|
||||
.setDescription(getString(R.string.sureCloseSession))
|
||||
.setOkButton(getString(R.string.exit)) {
|
||||
customDialog.dismiss()
|
||||
//Borrar Token
|
||||
runBlocking { mobileApplication.dataStoreApp.editDataStoreKey(TOKEN, "") }
|
||||
finish()
|
||||
}*/
|
||||
|
||||
} else {
|
||||
customDialog.setTitle(getString(R.string.closeSession))
|
||||
.setDescription(getString(R.string.sureCloseSession))
|
||||
.setOkButton(getString(R.string.exit)) {
|
||||
customDialog.dismiss()
|
||||
//Borrar Token
|
||||
runBlocking { mobileApplication.dataStoreApp.editDataStoreKey(TOKEN, "") }
|
||||
finish()
|
||||
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}
|
||||
}.setKoButton(getString(R.string.cancel)) {
|
||||
customDialog.dismiss()
|
||||
}.show()
|
||||
}
|
||||
|
||||
override fun onTruckClickListener(item: ItemExpeditionTruckVO, entryPoint: String) {
|
||||
|
@ -956,6 +933,10 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
}
|
||||
|
||||
override fun onRoadMapClickListener(item: RoadMapTruck, entryPoint: String) {
|
||||
addFragmentOnTop(StopMapListFragment.newInstance(getString(R.string.stops), item))
|
||||
}
|
||||
|
||||
override fun onPalletClickListener(
|
||||
itemTruck: ItemExpeditionTruckVO, itemPallet: ItemPalletVO
|
||||
) {
|
||||
|
@ -986,9 +967,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
}
|
||||
|
||||
override fun onCollectionSelected(
|
||||
collection: CollectionTicket,
|
||||
type: String,
|
||||
hasPicking: Boolean
|
||||
collection: CollectionTicket, type: String, hasPicking: Boolean
|
||||
) {
|
||||
when (type) {
|
||||
"PREITEMPICKERTEST" -> {
|
||||
|
@ -996,8 +975,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
//addFragmentOnTop(EndSacadorFragment.newInstance(collection, type))
|
||||
addFragmentOnTop(
|
||||
SectorCollectionReserveFragment.newInstance(
|
||||
"PREITEMPICKERTEST",
|
||||
collection.collectionFk
|
||||
"PREITEMPICKERTEST", collection.collectionFk
|
||||
)
|
||||
)
|
||||
|
||||
|
@ -1006,9 +984,7 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
else -> {
|
||||
addFragmentOnTop(
|
||||
CollectionFragmentPickerNew.newInstance(
|
||||
collection,
|
||||
type,
|
||||
hasPicking
|
||||
collection, type, hasPicking
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -1108,6 +1084,12 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
|
||||
}
|
||||
|
||||
fun openFragmentTruckFragment() {
|
||||
onMyBackPressed()
|
||||
addFragmentOnTop(ExpeditionTruckListFragment.newInstance())
|
||||
|
||||
}
|
||||
|
||||
fun hideBottomNavigation(visible: Int) {
|
||||
binding.mainBottomNavigation.visibility = visible
|
||||
}
|
||||
|
@ -1189,4 +1171,18 @@ class MainActivity : BaseActivity<ActivityMainBinding>(), OnPasillerosItemClickL
|
|||
binding.splashAnimation.visibility = visibility
|
||||
}
|
||||
|
||||
override fun onStopMapClickListener(
|
||||
item: StopMapTruck, entryPoint: String, action: TruckAction
|
||||
) {
|
||||
println("stopMapList ${item.description}")
|
||||
println("stopMapList id ${item.id}")
|
||||
println("action $action")
|
||||
addFragmentOnTop(
|
||||
StopMapPalletListFragment.newInstance(
|
||||
title = item.description ?: "", item, action
|
||||
)
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue