Deprecate MainScope

This commit is contained in:
Mygod
2019-04-14 10:24:30 +08:00
parent 5d3ec351c5
commit f034abfa07
2 changed files with 8 additions and 22 deletions

View File

@@ -36,18 +36,15 @@ import be.mygod.vpnhotspot.room.AppDatabase
import be.mygod.vpnhotspot.room.ClientStats import be.mygod.vpnhotspot.room.ClientStats
import be.mygod.vpnhotspot.room.TrafficRecord import be.mygod.vpnhotspot.room.TrafficRecord
import be.mygod.vpnhotspot.room.macToString import be.mygod.vpnhotspot.room.macToString
import be.mygod.vpnhotspot.util.MainScope
import be.mygod.vpnhotspot.util.SpanFormatter import be.mygod.vpnhotspot.util.SpanFormatter
import be.mygod.vpnhotspot.util.computeIfAbsentCompat import be.mygod.vpnhotspot.util.computeIfAbsentCompat
import be.mygod.vpnhotspot.util.toPluralInt import be.mygod.vpnhotspot.util.toPluralInt
import be.mygod.vpnhotspot.widget.SmartSnackbar import be.mygod.vpnhotspot.widget.SmartSnackbar
import kotlinx.android.parcel.Parcelize import kotlinx.android.parcel.Parcelize
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.*
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import java.text.NumberFormat import java.text.NumberFormat
class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() { class ClientsFragment : Fragment() {
@Parcelize @Parcelize
data class NicknameArg(val mac: Long, val nickname: CharSequence) : Parcelable data class NicknameArg(val mac: Long, val nickname: CharSequence) : Parcelable
class NicknameDialogFragment : AlertDialogFragment<NicknameArg, Empty>() { class NicknameDialogFragment : AlertDialogFragment<NicknameArg, Empty>() {
@@ -140,7 +137,9 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() {
val wasWorking = TrafficRecorder.isWorking(client.mac) val wasWorking = TrafficRecorder.isWorking(client.mac)
client.obtainRecord().apply { client.obtainRecord().apply {
blocked = !blocked blocked = !blocked
launch(Dispatchers.Unconfined) { AppDatabase.instance.clientRecordDao.update(this@apply) } GlobalScope.launch(Dispatchers.Unconfined) {
AppDatabase.instance.clientRecordDao.update(this@apply)
}
} }
IpNeighbourMonitor.instance?.flush() IpNeighbourMonitor.instance?.flush()
if (!wasWorking && item.itemId == R.id.block) { if (!wasWorking && item.itemId == R.id.block) {
@@ -150,7 +149,7 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() {
} }
R.id.stats -> { R.id.stats -> {
binding.client?.let { client -> binding.client?.let { client ->
launch(Dispatchers.Unconfined) { scope.launch {
StatsDialogFragment().withArg(StatsArg( StatsDialogFragment().withArg(StatsArg(
client.title.value ?: return@launch, client.title.value ?: return@launch,
AppDatabase.instance.trafficRecordDao.queryStats(client.mac) 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 lateinit var binding: FragmentClientsBinding
private val adapter = ClientAdapter() private val adapter = ClientAdapter()
private var rates = HashMap<Pair<String, Long>, TrafficRate>() private var rates = HashMap<Pair<String, Long>, TrafficRate>()
@@ -237,7 +237,7 @@ class ClientsFragment : Fragment(), MainScope by MainScope.Supervisor() {
} }
override fun onDestroy() { override fun onDestroy() {
job.cancel() scope.cancel()
super.onDestroy() super.onDestroy()
} }
} }

View File

@@ -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
}