diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt index 685439ef..de9d3b51 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/client/ClientsFragment.kt @@ -36,18 +36,15 @@ import be.mygod.vpnhotspot.room.AppDatabase import be.mygod.vpnhotspot.room.ClientStats import be.mygod.vpnhotspot.room.TrafficRecord import be.mygod.vpnhotspot.room.macToString -import be.mygod.vpnhotspot.util.MainScope import be.mygod.vpnhotspot.util.SpanFormatter import be.mygod.vpnhotspot.util.computeIfAbsentCompat import be.mygod.vpnhotspot.util.toPluralInt import be.mygod.vpnhotspot.widget.SmartSnackbar import kotlinx.android.parcel.Parcelize -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.launch +import kotlinx.coroutines.* import java.text.NumberFormat -class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { +class ClientsFragment : Fragment() { @Parcelize data class NicknameArg(val mac: Long, val nickname: CharSequence) : Parcelable class NicknameDialogFragment : AlertDialogFragment() { @@ -140,7 +137,9 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { val wasWorking = TrafficRecorder.isWorking(client.mac) client.obtainRecord().apply { blocked = !blocked - launch(Dispatchers.Unconfined) { AppDatabase.instance.clientRecordDao.update(this@apply) } + GlobalScope.launch(Dispatchers.Unconfined) { + AppDatabase.instance.clientRecordDao.update(this@apply) + } } IpNeighbourMonitor.instance?.flush() if (!wasWorking && item.itemId == R.id.block) { @@ -150,7 +149,7 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { } R.id.stats -> { binding.client?.let { client -> - launch(Dispatchers.Unconfined) { + scope.launch { StatsDialogFragment().withArg(StatsArg( client.title.value ?: return@launch, AppDatabase.instance.trafficRecordDao.queryStats(client.mac) @@ -205,6 +204,7 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { } } + private val scope = MainScope() + Dispatchers.Unconfined private lateinit var binding: FragmentClientsBinding private val adapter = ClientAdapter() private var rates = HashMap, TrafficRate>() @@ -237,7 +237,7 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { } override fun onDestroy() { - job.cancel() + scope.cancel() super.onDestroy() } } diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/util/MainScope.kt b/mobile/src/main/java/be/mygod/vpnhotspot/util/MainScope.kt deleted file mode 100644 index 01760f85..00000000 --- a/mobile/src/main/java/be/mygod/vpnhotspot/util/MainScope.kt +++ /dev/null @@ -1,14 +0,0 @@ -package be.mygod.vpnhotspot.util - -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.SupervisorJob - -interface MainScope : CoroutineScope { - class Supervisor : MainScope { - override val job = SupervisorJob() - } - val job: Job - override val coroutineContext get() = Dispatchers.Main + job -}