improve tor notification
This commit is contained in:
+2
-2
@@ -91,8 +91,8 @@ class FlutterTorPlugin : FlutterPlugin, TorApi {
|
||||
serviceConnection = connection
|
||||
|
||||
val intent = Intent(ctx, TorService::class.java)
|
||||
intent.action = TorService.ACTION_START
|
||||
ctx.startService(intent)
|
||||
// Only bind to service, don't start it yet
|
||||
// Service will be started when startTor() is called
|
||||
ctx.bindService(intent, connection, Context.BIND_AUTO_CREATE)
|
||||
}
|
||||
|
||||
|
||||
+17
-12
@@ -55,18 +55,15 @@ class TorService : Service() {
|
||||
Log.d(TAG, "onStartCommand: ${intent?.action}")
|
||||
|
||||
when (intent?.action) {
|
||||
ACTION_START -> {
|
||||
// Start in foreground immediately
|
||||
startForeground(NOTIFICATION_ID, createNotification("Starting Tor..."))
|
||||
// Actual start will be handled via binder methods
|
||||
}
|
||||
|
||||
ACTION_STOP -> {
|
||||
scope.launch {
|
||||
stopTor()
|
||||
stopSelf()
|
||||
}
|
||||
}
|
||||
else -> {
|
||||
Log.d(TAG, "Service started via binding, waiting for startTor() call")
|
||||
}
|
||||
}
|
||||
|
||||
return START_STICKY
|
||||
@@ -94,17 +91,23 @@ class TorService : Service() {
|
||||
*/
|
||||
suspend fun startTor(config: TorConfiguration): Int {
|
||||
Log.d(TAG, "Starting Tor...")
|
||||
updateNotification("Starting Tor...")
|
||||
|
||||
// Start foreground service with notification
|
||||
// This keeps the service alive even when the app is backgrounded
|
||||
startForeground(NOTIFICATION_ID, createNotification("Tor is connecting..."))
|
||||
Log.d(TAG, "Started foreground service")
|
||||
|
||||
val manager = torManager ?: throw IllegalStateException("Service not initialized")
|
||||
|
||||
try {
|
||||
val socksPort = manager.start(config)
|
||||
updateNotification("Tor is running (SOCKS: $socksPort)")
|
||||
updateNotification("Tor connected")
|
||||
return socksPort
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "Failed to start Tor", e)
|
||||
updateNotification("Failed to start Tor")
|
||||
// Stop foreground on failure
|
||||
stopForeground(STOP_FOREGROUND_REMOVE)
|
||||
throw e
|
||||
}
|
||||
}
|
||||
@@ -114,10 +117,12 @@ class TorService : Service() {
|
||||
*/
|
||||
suspend fun stopTor() {
|
||||
Log.d(TAG, "Stopping Tor...")
|
||||
updateNotification("Stopping Tor...")
|
||||
|
||||
torManager?.stop()
|
||||
updateNotification("Tor stopped")
|
||||
|
||||
// Stop foreground service and remove notification
|
||||
stopForeground(STOP_FOREGROUND_REMOVE)
|
||||
Log.d(TAG, "Stopped foreground service")
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -162,9 +167,9 @@ class TorService : Service() {
|
||||
)
|
||||
|
||||
return NotificationCompat.Builder(this, CHANNEL_ID)
|
||||
.setContentTitle("Tor Service")
|
||||
.setContentTitle("WebLibre Tor")
|
||||
.setContentText(text)
|
||||
.setSmallIcon(android.R.drawable.ic_dialog_info) // TODO: Use custom icon
|
||||
.setSmallIcon(R.drawable.ic_onion)
|
||||
.setContentIntent(pendingIntent)
|
||||
.setOngoing(true)
|
||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8 0,-4.41 3.59,-8 8,-8s8,3.59 8,8c0,4.41 -3.59,8 -8,8z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6 6,-2.69 6,-6 -2.69,-6 -6,-6zM12,16c-2.21,0 -4,-1.79 -4,-4s1.79,-4 4,-4 4,1.79 4,4 -1.79,4 -4,4z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z"/>
|
||||
</vector>
|
||||
Reference in New Issue
Block a user