Fix nullability issues
This commit is contained in:
@@ -27,7 +27,7 @@ open class Client(val mac: Long, val iface: String) {
|
||||
|
||||
val ip = TreeMap<InetAddress, IpNeighbour.State>(InetAddressComparator)
|
||||
val macString by lazy { mac.macToString() }
|
||||
private val record = AppDatabase.instance.clientRecordDao.lookupSync(mac)
|
||||
private val record = AppDatabase.instance.clientRecordDao.lookupOrDefaultSync(mac)
|
||||
private val macIface get() = SpannableStringBuilder(makeMacSpan(macString)).apply {
|
||||
append('%')
|
||||
append(iface)
|
||||
|
||||
@@ -200,9 +200,9 @@ class Routing(private val caller: Any, private val downstream: String) : IpNeigh
|
||||
override fun onIpNeighbourAvailable(neighbours: List<IpNeighbour>) = synchronized(this) {
|
||||
val toRemove = HashSet(clients.keys)
|
||||
for (neighbour in neighbours) {
|
||||
if (neighbour.dev != downstream || neighbour.ip !is Inet4Address ||
|
||||
runBlocking { AppDatabase.instance.clientRecordDao.lookup(neighbour.lladdr) }
|
||||
?.blocked == true) continue
|
||||
if (neighbour.dev != downstream || neighbour.ip !is Inet4Address || runBlocking {
|
||||
AppDatabase.instance.clientRecordDao.lookupOrDefault(neighbour.lladdr)
|
||||
}.blocked) continue
|
||||
toRemove.remove(neighbour.ip)
|
||||
try {
|
||||
clients.computeIfAbsentCompat(neighbour.ip) { Client(neighbour.ip, neighbour.lladdr) }
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package be.mygod.vpnhotspot.room
|
||||
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.map
|
||||
import androidx.room.*
|
||||
|
||||
@Entity
|
||||
@@ -12,12 +13,12 @@ data class ClientRecord(@PrimaryKey
|
||||
@androidx.room.Dao
|
||||
abstract class Dao {
|
||||
@Query("SELECT * FROM `ClientRecord` WHERE `mac` = :mac")
|
||||
abstract suspend fun lookup(mac: Long): ClientRecord?
|
||||
|
||||
protected abstract suspend fun lookup(mac: Long): ClientRecord?
|
||||
suspend fun lookupOrDefault(mac: Long) = lookup(mac) ?: ClientRecord(mac)
|
||||
|
||||
@Query("SELECT * FROM `ClientRecord` WHERE `mac` = :mac")
|
||||
abstract fun lookupSync(mac: Long): LiveData<ClientRecord>
|
||||
protected abstract fun lookupSync(mac: Long): LiveData<ClientRecord?>
|
||||
fun lookupOrDefaultSync(mac: Long) = lookupSync(mac).map { it ?: ClientRecord(mac) }
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
protected abstract suspend fun updateInternal(value: ClientRecord): Long
|
||||
|
||||
Reference in New Issue
Block a user