Skip to content

Commit 3c38d4f

Browse files
authored
refactor(service): inject ProfileRepository via Hilt in vpn and tile services (#43)
MasterDnsVpnService and VpnTileService now use @androidentrypoint with @Inject lateinit var profileRepository: ProfileRepository instead of bypassing Hilt via AppDatabase.getInstance(...).profileDao(). Removes the now-unused AppDatabase import from both service files. Plan 016.
1 parent 6d28566 commit 3c38d4f

2 files changed

Lines changed: 16 additions & 7 deletions

File tree

android/app/src/main/java/com/masterdns/vpn/service/MasterDnsVpnService.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import com.google.gson.reflect.TypeToken
1515
import com.masterdns.vpn.App
1616
import com.masterdns.vpn.MainActivity
1717
import com.masterdns.vpn.R
18-
import com.masterdns.vpn.data.local.AppDatabase
18+
import com.masterdns.vpn.data.repository.ProfileRepository
1919
import com.masterdns.vpn.util.ConfigGenerator
2020
import com.masterdns.vpn.util.GlobalSettingsStore
2121
import com.masterdns.vpn.util.VpnManager
22+
import dagger.hilt.android.AndroidEntryPoint
2223
import kotlinx.coroutines.*
2324
import java.io.File
2425
import java.io.FileInputStream
@@ -28,8 +29,10 @@ import java.net.InetAddress
2829
import java.net.InetSocketAddress
2930
import java.net.ServerSocket
3031
import java.net.Socket
32+
import javax.inject.Inject
3133
import kotlin.coroutines.coroutineContext
3234

35+
@AndroidEntryPoint
3336
class MasterDnsVpnService : VpnService() {
3437

3538
companion object {
@@ -83,6 +86,9 @@ class MasterDnsVpnService : VpnService() {
8386
@Volatile
8487
private var activeLocalSocksPort: Int = DEFAULT_SOCKS_PORT
8588

89+
@Inject
90+
lateinit var profileRepository: ProfileRepository
91+
8692
/**
8793
* Close any ParcelFileDescriptor left from a previous session before we
8894
* attempt establish() again. The fd must be closed AFTER the Go core
@@ -136,8 +142,7 @@ class MasterDnsVpnService : VpnService() {
136142
acquireWakeLock()
137143

138144
// Load profile from DB
139-
val db = AppDatabase.getInstance(this@MasterDnsVpnService)
140-
val profile = db.profileDao().getProfileById(profileId)
145+
val profile = profileRepository.getProfileById(profileId)
141146
?: throw IllegalStateException("Profile not found")
142147
val socksPort = profile.listenPort.takeIf { it in 1..65535 } ?: DEFAULT_SOCKS_PORT
143148
activeLocalSocksPort = socksPort

android/app/src/main/java/com/masterdns/vpn/service/VpnTileService.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,19 +8,25 @@ import android.service.quicksettings.TileService
88
import androidx.annotation.RequiresApi
99
import com.masterdns.vpn.MainActivity
1010
import com.masterdns.vpn.R
11-
import com.masterdns.vpn.data.local.AppDatabase
11+
import com.masterdns.vpn.data.repository.ProfileRepository
1212
import com.masterdns.vpn.util.VpnManager
13+
import dagger.hilt.android.AndroidEntryPoint
1314
import kotlinx.coroutines.CoroutineScope
1415
import kotlinx.coroutines.Dispatchers
1516
import kotlinx.coroutines.SupervisorJob
1617
import kotlinx.coroutines.cancel
1718
import kotlinx.coroutines.launch
19+
import javax.inject.Inject
1820

21+
@AndroidEntryPoint
1922
@RequiresApi(Build.VERSION_CODES.N)
2023
class VpnTileService : TileService() {
2124

2225
private val tileScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
2326

27+
@Inject
28+
lateinit var profileRepository: ProfileRepository
29+
2430
override fun onStartListening() {
2531
super.onStartListening()
2632
updateTile()
@@ -50,9 +56,7 @@ class VpnTileService : TileService() {
5056
}
5157

5258
tileScope.launch(Dispatchers.IO) {
53-
val selectedProfile = AppDatabase.getInstance(this@VpnTileService)
54-
.profileDao()
55-
.getSelectedProfile()
59+
val selectedProfile = profileRepository.getSelectedProfile()
5660

5761
launch(Dispatchers.Main) {
5862
if (selectedProfile != null) {

0 commit comments

Comments
 (0)