diff --git a/android/src/main/java/com/tailscale/ipn/App.kt b/android/src/main/java/com/tailscale/ipn/App.kt index 7443a4a..e86bcfb 100644 --- a/android/src/main/java/com/tailscale/ipn/App.kt +++ b/android/src/main/java/com/tailscale/ipn/App.kt @@ -131,7 +131,7 @@ class App : Application(), libtailscale.AppContext { fun setWantRunning(wantRunning: Boolean) { val callback: (Result) -> Unit = { result -> result.fold( - onSuccess = { }, + onSuccess = {}, onFailure = { error -> Log.d("TAG", "Set want running: failed to update preferences: ${error.message}") }) @@ -181,7 +181,6 @@ class App : Application(), libtailscale.AppContext { startService(intent) } - // encryptToPref a byte array of data using the Jetpack Security // library and writes it to a global encrypted preference store. @Throws(IOException::class, GeneralSecurityException::class) @@ -215,26 +214,17 @@ class App : Application(), libtailscale.AppContext { QuickToggleService.setReady(this, ready) Log.d("App", "Set Tile Ready: $ready") val action = if (ready) IPNReceiver.INTENT_DISCONNECT_VPN else IPNReceiver.INTENT_CONNECT_VPN - val intent = Intent(this, IPNReceiver::class.java).apply { - this.action = action - } - val pendingIntent : PendingIntent = PendingIntent.getBroadcast( - this, - 0, - intent, - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE - ) - if (ready){ + val intent = Intent(this, IPNReceiver::class.java).apply { this.action = action } + val pendingIntent: PendingIntent = + PendingIntent.getBroadcast( + this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE) + if (ready) { startVPN() } - val notificationMessage = if (ready) getString(R.string.connected) else getString(R.string.not_connected) + val notificationMessage = + if (ready) getString(R.string.connected) else getString(R.string.not_connected) notify( - "Tailscale", - notificationMessage, - STATUS_CHANNEL_ID, - pendingIntent, - STATUS_NOTIFICATION_ID -) + "Tailscale", notificationMessage, ready, STATUS_CHANNEL_ID, pendingIntent, STATUS_NOTIFICATION_ID) } fun getHostname(): String { @@ -337,7 +327,8 @@ class App : Application(), libtailscale.AppContext { } val pending: PendingIntent = PendingIntent.getActivity(this, 0, viewIntent, PendingIntent.FLAG_UPDATE_CURRENT) - notify(getString(R.string.file_notification), msg, FILE_CHANNEL_ID, pending, FILE_NOTIFICATION_ID) + notify( + getString(R.string.file_notification), msg, true, FILE_CHANNEL_ID, pending, FILE_NOTIFICATION_ID) } fun createNotificationChannel(id: String?, name: String?, importance: Int) { @@ -346,10 +337,18 @@ class App : Application(), libtailscale.AppContext { nm.createNotificationChannel(channel) } - fun notify(title: String?, message: String?, channel: String, intent: PendingIntent?, notificationID: Int) { + fun notify( + title: String?, + message: String?, + usesEnabledIcon: Boolean, + channel: String, + intent: PendingIntent?, + notificationID: Int + ) { + val icon = if (usesEnabledIcon) R.drawable.ic_notification else R.drawable.ic_notification_disabled val builder: NotificationCompat.Builder = NotificationCompat.Builder(this, channel) - .setSmallIcon(R.drawable.ic_notification) + .setSmallIcon(icon) .setContentTitle(title) .setContentText(message) .setContentIntent(intent) diff --git a/android/src/main/res/drawable-hdpi/ic_notification.png b/android/src/main/res/drawable-hdpi/ic_notification.png deleted file mode 100644 index e6aec75..0000000 Binary files a/android/src/main/res/drawable-hdpi/ic_notification.png and /dev/null differ diff --git a/android/src/main/res/drawable-mdpi/ic_notification.png b/android/src/main/res/drawable-mdpi/ic_notification.png deleted file mode 100644 index 129824e..0000000 Binary files a/android/src/main/res/drawable-mdpi/ic_notification.png and /dev/null differ diff --git a/android/src/main/res/drawable-xhdpi/ic_notification.png b/android/src/main/res/drawable-xhdpi/ic_notification.png deleted file mode 100644 index 8066819..0000000 Binary files a/android/src/main/res/drawable-xhdpi/ic_notification.png and /dev/null differ diff --git a/android/src/main/res/drawable-xxhdpi/ic_notification.png b/android/src/main/res/drawable-xxhdpi/ic_notification.png deleted file mode 100644 index 615f569..0000000 Binary files a/android/src/main/res/drawable-xxhdpi/ic_notification.png and /dev/null differ diff --git a/android/src/main/res/drawable-xxxhdpi/ic_notification.png b/android/src/main/res/drawable-xxxhdpi/ic_notification.png deleted file mode 100644 index a45d73c..0000000 Binary files a/android/src/main/res/drawable-xxxhdpi/ic_notification.png and /dev/null differ diff --git a/android/src/main/res/drawable/ic_notification.xml b/android/src/main/res/drawable/ic_notification.xml new file mode 100644 index 0000000..7ed7e21 --- /dev/null +++ b/android/src/main/res/drawable/ic_notification.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + diff --git a/android/src/main/res/drawable/ic_notification_disabled.xml b/android/src/main/res/drawable/ic_notification_disabled.xml new file mode 100644 index 0000000..68eb971 --- /dev/null +++ b/android/src/main/res/drawable/ic_notification_disabled.xml @@ -0,0 +1,46 @@ + + + + + + + + + + +